@eventcatalog/sdk 0.0.3 → 0.0.4
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/docs.d.mts +1 -0
- package/dist/docs.d.ts +1 -0
- package/dist/docs.js +80 -2
- package/dist/docs.js.map +1 -1
- package/dist/docs.mjs +73 -1
- package/dist/docs.mjs.map +1 -1
- package/dist/events.d.mts +2 -1
- package/dist/events.d.ts +2 -1
- package/dist/events.js.map +1 -1
- package/dist/events.mjs.map +1 -1
- package/dist/index.d.mts +53 -1
- package/dist/index.d.ts +53 -1
- package/dist/index.js +121 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +121 -8
- package/dist/index.mjs.map +1 -1
- package/dist/services.d.mts +133 -0
- package/dist/services.d.ts +133 -0
- package/dist/services.js +173 -0
- package/dist/services.js.map +1 -0
- package/dist/services.mjs +133 -0
- package/dist/services.mjs.map +1 -0
- package/dist/test/events.test.js +147 -33
- package/dist/test/events.test.js.map +1 -1
- package/dist/test/events.test.mjs +149 -35
- package/dist/test/events.test.mjs.map +1 -1
- package/dist/test/services.test.d.mts +2 -0
- package/dist/test/services.test.d.ts +2 -0
- package/dist/test/services.test.js +16888 -0
- package/dist/test/services.test.js.map +1 -0
- package/dist/test/services.test.mjs +16873 -0
- package/dist/test/services.test.mjs.map +1 -0
- package/dist/types.d.d.mts +53 -12
- package/dist/types.d.d.ts +53 -12
- package/dist/types.d.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts","../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/src/strings.ts","../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/src/scopes.ts","../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/BitSet.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/Chunk.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/SourceMap.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/utils/guessIndent.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/utils/getRelativePath.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/utils/isObject.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/utils/getLocator.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/utils/Mappings.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/MagicString.js","../../node_modules/.pnpm/magic-string@0.30.10/node_modules/magic-string/src/Bundle.js","../../node_modules/.pnpm/@vitest+utils@2.0.3/node_modules/@vitest/utils/dist/helpers.js","../../node_modules/.pnpm/tinyrainbow@1.2.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js","../../node_modules/.pnpm/tinyrainbow@1.2.0/node_modules/tinyrainbow/dist/node.js","../../node_modules/.pnpm/@vitest+pretty-format@2.0.3/node_modules/@vitest/pretty-format/dist/index.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/helpers.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/array.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/typedarray.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/date.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/function.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/map.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/number.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/bigint.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/regexp.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/set.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/string.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/symbol.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/promise.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/object.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/class.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/arguments.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/error.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/html.js","../../node_modules/.pnpm/loupe@3.1.1/node_modules/loupe/lib/index.js","../../node_modules/.pnpm/@vitest+utils@2.0.3/node_modules/@vitest/utils/dist/chunk-display.js","../../node_modules/.pnpm/@vitest+utils@2.0.3/node_modules/@vitest/utils/dist/index.js","../../node_modules/.pnpm/@vitest+utils@2.0.3/node_modules/@vitest/utils/dist/diff.js","../../node_modules/.pnpm/@vitest+utils@2.0.3/node_modules/@vitest/utils/dist/error.js","../../node_modules/.pnpm/pathe@1.1.2/node_modules/pathe/dist/shared/pathe.ff20891b.mjs","../../node_modules/.pnpm/@vitest+runner@2.0.3/node_modules/@vitest/runner/dist/chunk-tasks.js","../../node_modules/.pnpm/@vitest+utils@2.0.3/node_modules/@vitest/utils/dist/source-map.js","../../node_modules/.pnpm/@vitest+runner@2.0.3/node_modules/@vitest/runner/dist/index.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/global.7bFbnyXl.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/index.BJmtb_7W.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/benchmark.B6pblCp2.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/run-once.Db8Hgq9X.js","../../node_modules/.pnpm/chai@5.1.1/node_modules/chai/chai.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/_commonjsHelpers.BFTU3MAI.js","../../node_modules/.pnpm/tinyspy@3.0.0/node_modules/tinyspy/dist/index.js","../../node_modules/.pnpm/@vitest+spy@2.0.3/node_modules/@vitest/spy/dist/index.js","../../node_modules/.pnpm/@vitest+expect@2.0.3/node_modules/@vitest/expect/dist/index.js","../../node_modules/.pnpm/@vitest+snapshot@2.0.3/node_modules/@vitest/snapshot/dist/index.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/tasks.DhVtQBtW.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/base.CTYV4Gnz.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/date.W2xKR2qe.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/vi.DXACdGTu.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/vendor/index.Hqvcg1pf.js","../../node_modules/.pnpm/vitest@2.0.3_@types+node@20.14.11/node_modules/vitest/dist/index.js","../../src/index.ts","../../src/events.ts","../../src/internal/utils.ts","../../src/services.ts","../../src/test/services.test.ts"],"sourcesContent":["import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n","const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n private declare buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n","import { StringReader, StringWriter } from './strings';\nimport { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix<A, B, O> = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,\n );\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0,\n );\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n state[1] = encodeInteger(writer, range[1], state[1]);\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);\n encodeInteger(writer, expRange[0]!, 0);\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n","import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n","export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n","export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + '' \n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n","import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n","export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n","export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n","const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n","export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n","const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t} else {\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n","import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\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\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t); // eslint-disable-line no-console\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t); // eslint-disable-line no-console\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\twhile (start < 0) start += this.original.length;\n\t\twhile (end < 0) end += this.original.length;\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t); // eslint-disable-line no-console\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\twhile (start < 0) start += this.original.length;\n\t\twhile (end < 0) end += this.original.length;\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\twhile (start < 0) start += this.original.length;\n\t\twhile (end < 0) end += this.original.length;\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length) {\n\t\twhile (start < 0) start += this.original.length;\n\t\twhile (end < 0) end += this.original.length;\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(\n\t\t\t\t\t\t\tmatch.index,\n\t\t\t\t\t\t\tmatch.index + match[0].length,\n\t\t\t\t\t\t\treplacement\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(\n\t\t\t\t\t\tmatch.index,\n\t\t\t\t\t\tmatch.index + match[0].length,\n\t\t\t\t\t\treplacement\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement)\n\t\t\t\tthis.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n","import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n","function notNullish(v) {\n return v != null;\n}\nfunction assertTypes(value, name, types) {\n const receivedType = typeof value;\n const pass = types.includes(receivedType);\n if (!pass) {\n throw new TypeError(\n `${name} value must be ${types.join(\" or \")}, received \"${receivedType}\"`\n );\n }\n}\nfunction isPrimitive(value) {\n return value === null || typeof value !== \"function\" && typeof value !== \"object\";\n}\nfunction slash(path) {\n return path.replace(/\\\\/g, \"/\");\n}\nfunction parseRegexp(input) {\n const m = input.match(/(\\/?)(.+)\\1([a-z]*)/i);\n if (!m) {\n return /$^/;\n }\n if (m[3] && !/^(?!.*?(.).*?\\1)[gmixXsuUAJ]+$/.test(m[3])) {\n return RegExp(input);\n }\n return new RegExp(m[2], m[3]);\n}\nfunction toArray(array) {\n if (array === null || array === void 0) {\n array = [];\n }\n if (Array.isArray(array)) {\n return array;\n }\n return [array];\n}\nfunction isObject(item) {\n return item != null && typeof item === \"object\" && !Array.isArray(item);\n}\nfunction isFinalObj(obj) {\n return obj === Object.prototype || obj === Function.prototype || obj === RegExp.prototype;\n}\nfunction getType(value) {\n return Object.prototype.toString.apply(value).slice(8, -1);\n}\nfunction collectOwnProperties(obj, collector) {\n const collect = typeof collector === \"function\" ? collector : (key) => collector.add(key);\n Object.getOwnPropertyNames(obj).forEach(collect);\n Object.getOwnPropertySymbols(obj).forEach(collect);\n}\nfunction getOwnProperties(obj) {\n const ownProps = /* @__PURE__ */ new Set();\n if (isFinalObj(obj)) {\n return [];\n }\n collectOwnProperties(obj, ownProps);\n return Array.from(ownProps);\n}\nconst defaultCloneOptions = { forceWritable: false };\nfunction deepClone(val, options = defaultCloneOptions) {\n const seen = /* @__PURE__ */ new WeakMap();\n return clone(val, seen, options);\n}\nfunction clone(val, seen, options = defaultCloneOptions) {\n let k, out;\n if (seen.has(val)) {\n return seen.get(val);\n }\n if (Array.isArray(val)) {\n out = Array(k = val.length);\n seen.set(val, out);\n while (k--) {\n out[k] = clone(val[k], seen, options);\n }\n return out;\n }\n if (Object.prototype.toString.call(val) === \"[object Object]\") {\n out = Object.create(Object.getPrototypeOf(val));\n seen.set(val, out);\n const props = getOwnProperties(val);\n for (const k2 of props) {\n const descriptor = Object.getOwnPropertyDescriptor(val, k2);\n if (!descriptor) {\n continue;\n }\n const cloned = clone(val[k2], seen, options);\n if (options.forceWritable) {\n Object.defineProperty(out, k2, {\n enumerable: descriptor.enumerable,\n configurable: true,\n writable: true,\n value: cloned\n });\n } else if (\"get\" in descriptor) {\n Object.defineProperty(out, k2, {\n ...descriptor,\n get() {\n return cloned;\n }\n });\n } else {\n Object.defineProperty(out, k2, {\n ...descriptor,\n value: cloned\n });\n }\n }\n return out;\n }\n return val;\n}\nfunction noop() {\n}\nfunction objectAttr(source, path, defaultValue = void 0) {\n const paths = path.replace(/\\[(\\d+)\\]/g, \".$1\").split(\".\");\n let result = source;\n for (const p of paths) {\n result = Object(result)[p];\n if (result === void 0) {\n return defaultValue;\n }\n }\n return result;\n}\nfunction createDefer() {\n let resolve = null;\n let reject = null;\n const p = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n p.resolve = resolve;\n p.reject = reject;\n return p;\n}\nfunction getCallLastIndex(code) {\n let charIndex = -1;\n let inString = null;\n let startedBracers = 0;\n let endedBracers = 0;\n let beforeChar = null;\n while (charIndex <= code.length) {\n beforeChar = code[charIndex];\n charIndex++;\n const char = code[charIndex];\n const isCharString = char === '\"' || char === \"'\" || char === \"`\";\n if (isCharString && beforeChar !== \"\\\\\") {\n if (inString === char) {\n inString = null;\n } else if (!inString) {\n inString = char;\n }\n }\n if (!inString) {\n if (char === \"(\") {\n startedBracers++;\n }\n if (char === \")\") {\n endedBracers++;\n }\n }\n if (startedBracers && endedBracers && startedBracers === endedBracers) {\n return charIndex;\n }\n }\n return null;\n}\nfunction isNegativeNaN(val) {\n if (!Number.isNaN(val)) {\n return false;\n }\n const f64 = new Float64Array(1);\n f64[0] = val;\n const u32 = new Uint32Array(f64.buffer);\n const isNegative = u32[1] >>> 31 === 1;\n return isNegative;\n}\n\nexport { assertTypes, clone, createDefer, deepClone, getCallLastIndex, getOwnProperties, getType, isNegativeNaN, isObject, isPrimitive, noop, notNullish, objectAttr, parseRegexp, slash, toArray };\n","// src/index.ts\nvar f = {\n reset: [0, 0],\n bold: [1, 22, \"\\x1B[22m\\x1B[1m\"],\n dim: [2, 22, \"\\x1B[22m\\x1B[2m\"],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n gray: [90, 39],\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39],\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n}, h = Object.entries(f);\nfunction a(n) {\n return String(n);\n}\na.open = \"\";\na.close = \"\";\nvar B = /* @__PURE__ */ h.reduce(\n (n, [e]) => (n[e] = a, n),\n { isColorSupported: !1 }\n);\nfunction m() {\n return { ...B };\n}\nfunction C(n = !1) {\n let e = typeof process != \"undefined\" ? process : void 0, i = (e == null ? void 0 : e.env) || {}, g = (e == null ? void 0 : e.argv) || [];\n return !(\"NO_COLOR\" in i || g.includes(\"--no-color\")) && (\"FORCE_COLOR\" in i || g.includes(\"--color\") || (e == null ? void 0 : e.platform) === \"win32\" || n && i.TERM !== \"dumb\" || \"CI\" in i) || typeof window != \"undefined\" && !!window.chrome;\n}\nfunction p(n = !1) {\n let e = C(n), i = (r, t, c, o) => {\n let l = \"\", s = 0;\n do\n l += r.substring(s, o) + c, s = o + t.length, o = r.indexOf(t, s);\n while (~o);\n return l + r.substring(s);\n }, g = (r, t, c = r) => {\n let o = (l) => {\n let s = String(l), b = s.indexOf(t, r.length);\n return ~b ? r + i(s, t, c, b) + t : r + s + t;\n };\n return o.open = r, o.close = t, o;\n }, u = {\n isColorSupported: e\n }, d = (r) => `\\x1B[${r}m`;\n for (let [r, t] of h)\n u[r] = e ? g(\n d(t[0]),\n d(t[1]),\n t[2]\n ) : a;\n return u;\n}\n\nexport {\n m as a,\n C as b,\n p as c\n};\n","import {\n a as t,\n b as e,\n c as o\n} from \"./chunk-BVHSVHOK.js\";\n\n// src/node.ts\nimport { isatty as r } from \"tty\";\nvar p = o(r(1));\nexport {\n o as createColors,\n p as default,\n t as getDefaultColors,\n e as isSupported\n};\n","import styles from 'tinyrainbow';\n\nfunction getKeysOfEnumerableProperties(object, compareKeys) {\n const rawKeys = Object.keys(object);\n const keys = compareKeys === null ? rawKeys : rawKeys.sort(compareKeys);\n if (Object.getOwnPropertySymbols) {\n for (const symbol of Object.getOwnPropertySymbols(object)) {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n }\n }\n return keys;\n}\nfunction printIteratorEntries(iterator, config, indentation, depth, refs, printer, separator = \": \") {\n let result = \"\";\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += \"\\u2026\";\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += \",\";\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\nfunction printIteratorValues(iterator, config, indentation, depth, refs, printer) {\n let result = \"\";\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += \"\\u2026\";\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += \",\";\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = \"\";\n list = list instanceof ArrayBuffer ? new DataView(list) : list;\n const isDataView = (l) => l instanceof DataView;\n const length = isDataView(list) ? list.byteLength : list.length;\n if (length > 0) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += \"\\u2026\";\n break;\n }\n if (isDataView(list) || i in list) {\n result += printer(\n isDataView(list) ? list.getInt8(i) : list[i],\n config,\n indentationNext,\n depth,\n refs\n );\n }\n if (i < length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += \",\";\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = \"\";\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length > 0) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += \",\";\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\nconst asymmetricMatcher = typeof Symbol === \"function\" && Symbol.for ? Symbol.for(\"jest.asymmetricMatcher\") : 1267621;\nconst SPACE$2 = \" \";\nconst serialize$5 = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (stringedValue === \"ArrayContaining\" || stringedValue === \"ArrayNotContaining\") {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE$2}[${printListItems(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (stringedValue === \"ObjectContaining\" || stringedValue === \"ObjectNotContaining\") {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE$2}{${printObjectProperties(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (stringedValue === \"StringMatching\" || stringedValue === \"StringNotMatching\") {\n return stringedValue + SPACE$2 + printer(val.sample, config, indentation, depth, refs);\n }\n if (stringedValue === \"StringContaining\" || stringedValue === \"StringNotContaining\") {\n return stringedValue + SPACE$2 + printer(val.sample, config, indentation, depth, refs);\n }\n if (typeof val.toAsymmetricMatcher !== \"function\") {\n throw new TypeError(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nconst test$5 = (val) => val && val.$$typeof === asymmetricMatcher;\nconst plugin$5 = { serialize: serialize$5, test: test$5 };\n\nconst SPACE$1 = \" \";\nconst OBJECT_NAMES = /* @__PURE__ */ new Set([\"DOMStringMap\", \"NamedNodeMap\"]);\nconst ARRAY_REGEXP = /^(?:HTML\\w*Collection|NodeList)$/;\nfunction testName(name) {\n return OBJECT_NAMES.has(name) || ARRAY_REGEXP.test(name);\n}\nconst test$4 = (val) => val && val.constructor && !!val.constructor.name && testName(val.constructor.name);\nfunction isNamedNodeMap(collection) {\n return collection.constructor.name === \"NamedNodeMap\";\n}\nconst serialize$4 = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (config.min ? \"\" : name + SPACE$1) + (OBJECT_NAMES.has(name) ? `{${printObjectProperties(\n isNamedNodeMap(collection) ? [...collection].reduce(\n (props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n },\n {}\n ) : { ...collection },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}` : `[${printListItems(\n [...collection],\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`);\n};\nconst plugin$4 = { serialize: serialize$4, test: test$4 };\n\nfunction escapeHTML(str) {\n return str.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n}\n\nfunction 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.includes(\"\\n\")) {\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}\nfunction printChildren(children, config, indentation, depth, refs, printer) {\n return children.map(\n (child) => config.spacingOuter + indentation + (typeof child === \"string\" ? printText(child, config) : printer(child, config, indentation, depth, refs))\n ).join(\"\");\n}\nfunction printText(text, config) {\n const contentColor = config.colors.content;\n return contentColor.open + escapeHTML(text) + contentColor.close;\n}\nfunction printComment(comment, config) {\n const commentColor = config.colors.comment;\n return `${commentColor.open}<!--${escapeHTML(comment)}-->${commentColor.close}`;\n}\nfunction 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}\nfunction printElementAsLeaf(type, config) {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \\u2026${tagColor.open} />${tagColor.close}`;\n}\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^(?:(?:HTML|SVG)\\w*)?Element$/;\nfunction testHasAttribute(val) {\n try {\n return typeof val.hasAttribute === \"function\" && val.hasAttribute(\"is\");\n } catch {\n return false;\n }\n}\nfunction testNode(val) {\n const constructorName = val.constructor.name;\n const { nodeType, tagName } = val;\n const isCustomElement = typeof tagName === \"string\" && tagName.includes(\"-\") || testHasAttribute(val);\n return nodeType === ELEMENT_NODE && (ELEMENT_REGEXP.test(constructorName) || isCustomElement) || nodeType === TEXT_NODE && constructorName === \"Text\" || nodeType === COMMENT_NODE && constructorName === \"Comment\" || nodeType === FRAGMENT_NODE && constructorName === \"DocumentFragment\";\n}\nconst test$3 = (val) => {\n var _a;\n return ((_a = val == null ? void 0 : val.constructor) == null ? void 0 : _a.name) && testNode(val);\n};\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize$3 = (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(\n type,\n printProps(\n nodeIsFragment(node) ? [] : Array.from(node.attributes, (attr) => attr.name).sort(),\n nodeIsFragment(node) ? {} : [...node.attributes].reduce(\n (props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n },\n {}\n ),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n printChildren(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nconst plugin$3 = { serialize: serialize$3, test: test$3 };\n\nconst IS_ITERABLE_SENTINEL = \"@@__IMMUTABLE_ITERABLE__@@\";\nconst IS_LIST_SENTINEL = \"@@__IMMUTABLE_LIST__@@\";\nconst IS_KEYED_SENTINEL = \"@@__IMMUTABLE_KEYED__@@\";\nconst IS_MAP_SENTINEL = \"@@__IMMUTABLE_MAP__@@\";\nconst IS_ORDERED_SENTINEL = \"@@__IMMUTABLE_ORDERED__@@\";\nconst IS_RECORD_SENTINEL = \"@@__IMMUTABLE_RECORD__@@\";\nconst IS_SEQ_SENTINEL = \"@@__IMMUTABLE_SEQ__@@\";\nconst IS_SET_SENTINEL = \"@@__IMMUTABLE_SET__@@\";\nconst IS_STACK_SENTINEL = \"@@__IMMUTABLE_STACK__@@\";\nconst getImmutableName = (name) => `Immutable.${name}`;\nconst printAsLeaf = (name) => `[${name}]`;\nconst SPACE = \" \";\nconst LAZY = \"\\u2026\";\nfunction printImmutableEntries(val, config, indentation, depth, refs, printer, type) {\n return ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}{${printIteratorEntries(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return { done: false, value: [key, val.get(key)] };\n }\n return { done: true, value: void 0 };\n }\n };\n}\nfunction printImmutableRecord(val, config, indentation, depth, refs, printer) {\n const name = getImmutableName(val._name || \"Record\");\n return ++depth > config.maxDepth ? printAsLeaf(name) : `${name + SPACE}{${printIteratorEntries(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction printImmutableSeq(val, config, indentation, depth, refs, printer) {\n const name = getImmutableName(\"Seq\");\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${// from Immutable collection of entries or from ECMAScript object\n val._iter || val._object ? printIteratorEntries(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n ) : LAZY}}`;\n }\n return `${name + SPACE}[${val._iter || val._array || val._collection || val._iterable ? printIteratorValues(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n ) : LAZY}]`;\n}\nfunction printImmutableValues(val, config, indentation, depth, refs, printer, type) {\n return ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}[${printIteratorValues(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n}\nconst serialize$2 = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? \"OrderedMap\" : \"Map\"\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n \"List\"\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? \"OrderedSet\" : \"Set\"\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n \"Stack\"\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\nconst test$2 = (val) => val && (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nconst plugin$2 = { serialize: serialize$2, test: test$2 };\n\nvar reactIs = {exports: {}};\n\nvar reactIs_production_min = {};\n\n/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_production_min;\n\nfunction requireReactIs_production_min () {\n\tif (hasRequiredReactIs_production_min) return reactIs_production_min;\n\thasRequiredReactIs_production_min = 1;\nvar b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\n\tfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}reactIs_production_min.ContextConsumer=h;reactIs_production_min.ContextProvider=g;reactIs_production_min.Element=b;reactIs_production_min.ForwardRef=l;reactIs_production_min.Fragment=d;reactIs_production_min.Lazy=q;reactIs_production_min.Memo=p;reactIs_production_min.Portal=c;reactIs_production_min.Profiler=f;reactIs_production_min.StrictMode=e;reactIs_production_min.Suspense=m;\n\treactIs_production_min.SuspenseList=n;reactIs_production_min.isAsyncMode=function(){return !1};reactIs_production_min.isConcurrentMode=function(){return !1};reactIs_production_min.isContextConsumer=function(a){return v(a)===h};reactIs_production_min.isContextProvider=function(a){return v(a)===g};reactIs_production_min.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===b};reactIs_production_min.isForwardRef=function(a){return v(a)===l};reactIs_production_min.isFragment=function(a){return v(a)===d};reactIs_production_min.isLazy=function(a){return v(a)===q};reactIs_production_min.isMemo=function(a){return v(a)===p};\n\treactIs_production_min.isPortal=function(a){return v(a)===c};reactIs_production_min.isProfiler=function(a){return v(a)===f};reactIs_production_min.isStrictMode=function(a){return v(a)===e};reactIs_production_min.isSuspense=function(a){return v(a)===m};reactIs_production_min.isSuspenseList=function(a){return v(a)===n};\n\treactIs_production_min.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};reactIs_production_min.typeOf=v;\n\treturn reactIs_production_min;\n}\n\nvar reactIs_development = {};\n\n/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar hasRequiredReactIs_development;\n\nfunction requireReactIs_development () {\n\tif (hasRequiredReactIs_development) return reactIs_development;\n\thasRequiredReactIs_development = 1;\n\n\tif (process.env.NODE_ENV !== \"production\") {\n\t (function() {\n\n\t// ATTENTION\n\t// When adding new symbols to this file,\n\t// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n\t// The Symbol used to tag the ReactElement-like types.\n\tvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\n\tvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\n\tvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\n\tvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\n\tvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\n\tvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\n\tvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\n\tvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\n\tvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\n\tvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\n\tvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\n\tvar REACT_MEMO_TYPE = Symbol.for('react.memo');\n\tvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\n\tvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n\t// -----------------------------------------------------------------------------\n\n\tvar enableScopeAPI = false; // Experimental Create Event Handle API.\n\tvar enableCacheElement = false;\n\tvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\n\tvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n\t// stuff. Intended to enable React core members to more easily debug scheduling\n\t// issues in DEV builds.\n\n\tvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\n\tvar REACT_MODULE_REFERENCE;\n\n\t{\n\t REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n\t}\n\n\tfunction isValidElementType(type) {\n\t if (typeof type === 'string' || typeof type === 'function') {\n\t return true;\n\t } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n\t if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n\t return true;\n\t }\n\n\t if (typeof type === 'object' && type !== null) {\n\t if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n\t // types supported by any Flight configuration anywhere since\n\t // we don't know which Flight build this will end up being used\n\t // with.\n\t type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t}\n\n\tfunction typeOf(object) {\n\t if (typeof object === 'object' && object !== null) {\n\t var $$typeof = object.$$typeof;\n\n\t switch ($$typeof) {\n\t case REACT_ELEMENT_TYPE:\n\t var type = object.type;\n\n\t switch (type) {\n\t case REACT_FRAGMENT_TYPE:\n\t case REACT_PROFILER_TYPE:\n\t case REACT_STRICT_MODE_TYPE:\n\t case REACT_SUSPENSE_TYPE:\n\t case REACT_SUSPENSE_LIST_TYPE:\n\t return type;\n\n\t default:\n\t var $$typeofType = type && type.$$typeof;\n\n\t switch ($$typeofType) {\n\t case REACT_SERVER_CONTEXT_TYPE:\n\t case REACT_CONTEXT_TYPE:\n\t case REACT_FORWARD_REF_TYPE:\n\t case REACT_LAZY_TYPE:\n\t case REACT_MEMO_TYPE:\n\t case REACT_PROVIDER_TYPE:\n\t return $$typeofType;\n\n\t default:\n\t return $$typeof;\n\t }\n\n\t }\n\n\t case REACT_PORTAL_TYPE:\n\t return $$typeof;\n\t }\n\t }\n\n\t return undefined;\n\t}\n\tvar ContextConsumer = REACT_CONTEXT_TYPE;\n\tvar ContextProvider = REACT_PROVIDER_TYPE;\n\tvar Element = REACT_ELEMENT_TYPE;\n\tvar ForwardRef = REACT_FORWARD_REF_TYPE;\n\tvar Fragment = REACT_FRAGMENT_TYPE;\n\tvar Lazy = REACT_LAZY_TYPE;\n\tvar Memo = REACT_MEMO_TYPE;\n\tvar Portal = REACT_PORTAL_TYPE;\n\tvar Profiler = REACT_PROFILER_TYPE;\n\tvar StrictMode = REACT_STRICT_MODE_TYPE;\n\tvar Suspense = REACT_SUSPENSE_TYPE;\n\tvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n\tvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\tvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\n\tfunction isAsyncMode(object) {\n\t {\n\t if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n\t hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n\t console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n\t }\n\t }\n\n\t return false;\n\t}\n\tfunction isConcurrentMode(object) {\n\t {\n\t if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n\t hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n\t console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n\t }\n\t }\n\n\t return false;\n\t}\n\tfunction isContextConsumer(object) {\n\t return typeOf(object) === REACT_CONTEXT_TYPE;\n\t}\n\tfunction isContextProvider(object) {\n\t return typeOf(object) === REACT_PROVIDER_TYPE;\n\t}\n\tfunction isElement(object) {\n\t return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n\t}\n\tfunction isForwardRef(object) {\n\t return typeOf(object) === REACT_FORWARD_REF_TYPE;\n\t}\n\tfunction isFragment(object) {\n\t return typeOf(object) === REACT_FRAGMENT_TYPE;\n\t}\n\tfunction isLazy(object) {\n\t return typeOf(object) === REACT_LAZY_TYPE;\n\t}\n\tfunction isMemo(object) {\n\t return typeOf(object) === REACT_MEMO_TYPE;\n\t}\n\tfunction isPortal(object) {\n\t return typeOf(object) === REACT_PORTAL_TYPE;\n\t}\n\tfunction isProfiler(object) {\n\t return typeOf(object) === REACT_PROFILER_TYPE;\n\t}\n\tfunction isStrictMode(object) {\n\t return typeOf(object) === REACT_STRICT_MODE_TYPE;\n\t}\n\tfunction isSuspense(object) {\n\t return typeOf(object) === REACT_SUSPENSE_TYPE;\n\t}\n\tfunction isSuspenseList(object) {\n\t return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n\t}\n\n\treactIs_development.ContextConsumer = ContextConsumer;\n\treactIs_development.ContextProvider = ContextProvider;\n\treactIs_development.Element = Element;\n\treactIs_development.ForwardRef = ForwardRef;\n\treactIs_development.Fragment = Fragment;\n\treactIs_development.Lazy = Lazy;\n\treactIs_development.Memo = Memo;\n\treactIs_development.Portal = Portal;\n\treactIs_development.Profiler = Profiler;\n\treactIs_development.StrictMode = StrictMode;\n\treactIs_development.Suspense = Suspense;\n\treactIs_development.SuspenseList = SuspenseList;\n\treactIs_development.isAsyncMode = isAsyncMode;\n\treactIs_development.isConcurrentMode = isConcurrentMode;\n\treactIs_development.isContextConsumer = isContextConsumer;\n\treactIs_development.isContextProvider = isContextProvider;\n\treactIs_development.isElement = isElement;\n\treactIs_development.isForwardRef = isForwardRef;\n\treactIs_development.isFragment = isFragment;\n\treactIs_development.isLazy = isLazy;\n\treactIs_development.isMemo = isMemo;\n\treactIs_development.isPortal = isPortal;\n\treactIs_development.isProfiler = isProfiler;\n\treactIs_development.isStrictMode = isStrictMode;\n\treactIs_development.isSuspense = isSuspense;\n\treactIs_development.isSuspenseList = isSuspenseList;\n\treactIs_development.isValidElementType = isValidElementType;\n\treactIs_development.typeOf = typeOf;\n\t })();\n\t}\n\treturn reactIs_development;\n}\n\nif (process.env.NODE_ENV === 'production') {\n reactIs.exports = requireReactIs_production_min();\n} else {\n reactIs.exports = requireReactIs_development();\n}\n\nvar reactIsExports = reactIs.exports;\n\nfunction getChildren(arg, children = []) {\n if (Array.isArray(arg)) {\n for (const item of arg) {\n getChildren(item, children);\n }\n } else if (arg != null && arg !== false && arg !== \"\") {\n children.push(arg);\n }\n return children;\n}\nfunction getType(element) {\n const type = element.type;\n if (typeof type === \"string\") {\n return type;\n }\n if (typeof type === \"function\") {\n return type.displayName || type.name || \"Unknown\";\n }\n if (reactIsExports.isFragment(element)) {\n return \"React.Fragment\";\n }\n if (reactIsExports.isSuspense(element)) {\n return \"React.Suspense\";\n }\n if (typeof type === \"object\" && type !== null) {\n if (reactIsExports.isContextProvider(element)) {\n return \"Context.Provider\";\n }\n if (reactIsExports.isContextConsumer(element)) {\n return \"Context.Consumer\";\n }\n if (reactIsExports.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || \"\";\n return functionName === \"\" ? \"ForwardRef\" : `ForwardRef(${functionName})`;\n }\n if (reactIsExports.isMemo(element)) {\n const functionName = type.displayName || type.type.displayName || type.type.name || \"\";\n return functionName === \"\" ? \"Memo\" : `Memo(${functionName})`;\n }\n }\n return \"UNDEFINED\";\n}\nfunction getPropKeys$1(element) {\n const { props } = element;\n return Object.keys(props).filter((key) => key !== \"children\" && props[key] !== void 0).sort();\n}\nconst serialize$1 = (element, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? printElementAsLeaf(getType(element), config) : printElement(\n getType(element),\n printProps(\n getPropKeys$1(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n printChildren(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n);\nconst test$1 = (val) => val != null && reactIsExports.isElement(val);\nconst plugin$1 = { serialize: serialize$1, test: test$1 };\n\nconst testSymbol = typeof Symbol === \"function\" && Symbol.for ? Symbol.for(\"react.test.json\") : 245830487;\nfunction getPropKeys(object) {\n const { props } = object;\n return props ? Object.keys(props).filter((key) => props[key] !== void 0).sort() : [];\n}\nconst serialize = (object, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? printElementAsLeaf(object.type, config) : printElement(\n object.type,\n object.props ? printProps(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ) : \"\",\n object.children ? printChildren(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ) : \"\",\n config,\n indentation\n);\nconst test = (val) => val && val.$$typeof === testSymbol;\nconst plugin = { serialize, test };\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nfunction getConstructorName(val) {\n return typeof val.constructor === \"function\" && val.constructor.name || \"Object\";\n}\nfunction isWindow(val) {\n return typeof window !== \"undefined\" && val === window;\n}\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/g;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return toStringed === \"[object Array]\" || toStringed === \"[object ArrayBuffer]\" || toStringed === \"[object DataView]\" || toStringed === \"[object Float32Array]\" || toStringed === \"[object Float64Array]\" || toStringed === \"[object Int8Array]\" || toStringed === \"[object Int16Array]\" || toStringed === \"[object Int32Array]\" || toStringed === \"[object Uint8Array]\" || toStringed === \"[object Uint8ClampedArray]\" || toStringed === \"[object Uint16Array]\" || toStringed === \"[object Uint32Array]\";\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? \"-0\" : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return \"[Function]\";\n }\n return `[Function ${val.name || \"anonymous\"}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, \"Symbol($1)\");\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === void 0) {\n return \"undefined\";\n }\n if (val === null) {\n return \"null\";\n }\n const typeOf = typeof val;\n if (typeOf === \"number\") {\n return printNumber(val);\n }\n if (typeOf === \"bigint\") {\n return printBigInt(val);\n }\n if (typeOf === \"string\") {\n if (escapeString) {\n return `\"${val.replaceAll(/\"|\\\\/g, \"\\\\$&\")}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === \"function\") {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === \"symbol\") {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === \"[object WeakMap]\") {\n return \"WeakMap {}\";\n }\n if (toStringed === \"[object WeakSet]\") {\n return \"WeakSet {}\";\n }\n if (toStringed === \"[object Function]\" || toStringed === \"[object GeneratorFunction]\") {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === \"[object Symbol]\") {\n return printSymbol(val);\n }\n if (toStringed === \"[object Date]\") {\n return Number.isNaN(+val) ? \"Date { NaN }\" : toISOString.call(val);\n }\n if (toStringed === \"[object Error]\") {\n return printError(val);\n }\n if (toStringed === \"[object RegExp]\") {\n if (escapeRegex) {\n return regExpToString.call(val).replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, \"\\\\$&\");\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\nfunction printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON) {\n if (refs.includes(val)) {\n return \"[Circular]\";\n }\n refs = [...refs];\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (config.callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === \"function\" && !hasCalledToJSON) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === \"[object Arguments]\") {\n return hitMaxDepth ? \"[Arguments]\" : `${min ? \"\" : \"Arguments \"}[${printListItems(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth ? `[${val.constructor.name}]` : `${min ? \"\" : !config.printBasicPrototype && val.constructor.name === \"Array\" ? \"\" : `${val.constructor.name} `}[${printListItems(val, config, indentation, depth, refs, printer)}]`;\n }\n if (toStringed === \"[object Map]\") {\n return hitMaxDepth ? \"[Map]\" : `Map {${printIteratorEntries(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n \" => \"\n )}}`;\n }\n if (toStringed === \"[object Set]\") {\n return hitMaxDepth ? \"[Set]\" : `Set {${printIteratorValues(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n return hitMaxDepth || isWindow(val) ? `[${getConstructorName(val)}]` : `${min ? \"\" : !config.printBasicPrototype && getConstructorName(val) === \"Object\" ? \"\" : `${getConstructorName(val)} `}{${printObjectProperties(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin) ? plugin.serialize(val, config, indentation, depth, refs, printer) : plugin.print(\n val,\n (valChild) => printer(valChild, config, indentation, depth, refs),\n (str) => {\n const indentationNext = indentation + config.indent;\n return indentationNext + str.replaceAll(NEWLINE_REGEXP, `\n${indentationNext}`);\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== \"string\") {\n throw new TypeError(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins2, val) {\n for (const plugin of plugins2) {\n try {\n if (plugin.test(val)) {\n return plugin;\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: \"gray\",\n content: \"reset\",\n prop: \"yellow\",\n tag: \"cyan\",\n value: \"green\"\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\nconst DEFAULT_OPTIONS = {\n callToJSON: true,\n compareKeys: void 0,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Number.POSITIVE_INFINITY,\n maxWidth: Number.POSITIVE_INFINITY,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n};\nfunction validateOptions(options) {\n for (const key of Object.keys(options)) {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n }\n if (options.min && options.indent !== void 0 && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n}\nfunction getColorsHighlight() {\n return DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value = DEFAULT_THEME[key];\n const color = value && styles[value];\n if (color && typeof color.close === \"string\" && typeof color.open === \"string\") {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, /* @__PURE__ */ Object.create(null));\n}\nfunction getColorsEmpty() {\n return DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = { close: \"\", open: \"\" };\n return colors;\n }, /* @__PURE__ */ Object.create(null));\n}\nfunction getPrintFunctionName(options) {\n return (options == null ? void 0 : options.printFunctionName) ?? DEFAULT_OPTIONS.printFunctionName;\n}\nfunction getEscapeRegex(options) {\n return (options == null ? void 0 : options.escapeRegex) ?? DEFAULT_OPTIONS.escapeRegex;\n}\nfunction getEscapeString(options) {\n return (options == null ? void 0 : options.escapeString) ?? DEFAULT_OPTIONS.escapeString;\n}\nfunction getConfig(options) {\n return {\n callToJSON: (options == null ? void 0 : options.callToJSON) ?? DEFAULT_OPTIONS.callToJSON,\n colors: (options == null ? void 0 : options.highlight) ? getColorsHighlight() : getColorsEmpty(),\n compareKeys: typeof (options == null ? void 0 : options.compareKeys) === \"function\" || (options == null ? void 0 : options.compareKeys) === null ? options.compareKeys : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: (options == null ? void 0 : options.min) ? \"\" : createIndent((options == null ? void 0 : options.indent) ?? DEFAULT_OPTIONS.indent),\n maxDepth: (options == null ? void 0 : options.maxDepth) ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: (options == null ? void 0 : options.maxWidth) ?? DEFAULT_OPTIONS.maxWidth,\n min: (options == null ? void 0 : options.min) ?? DEFAULT_OPTIONS.min,\n plugins: (options == null ? void 0 : options.plugins) ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: (options == null ? void 0 : options.printBasicPrototype) ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: (options == null ? void 0 : options.min) ? \" \" : \"\\n\",\n spacingOuter: (options == null ? void 0 : options.min) ? \"\" : \"\\n\"\n };\n}\nfunction createIndent(indent) {\n return Array.from({ length: indent + 1 }).join(\" \");\n}\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), \"\", 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), \"\", 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: plugin$5,\n DOMCollection: plugin$4,\n DOMElement: plugin$3,\n Immutable: plugin$2,\n ReactElement: plugin$1,\n ReactTestComponent: plugin\n};\n\nexport { DEFAULT_OPTIONS, format, plugins };\n","const ansiColors = {\n bold: ['1', '22'],\n dim: ['2', '22'],\n italic: ['3', '23'],\n underline: ['4', '24'],\n // 5 & 6 are blinking\n inverse: ['7', '27'],\n hidden: ['8', '28'],\n strike: ['9', '29'],\n // 10-20 are fonts\n // 21-29 are resets for 1-9\n black: ['30', '39'],\n red: ['31', '39'],\n green: ['32', '39'],\n yellow: ['33', '39'],\n blue: ['34', '39'],\n magenta: ['35', '39'],\n cyan: ['36', '39'],\n white: ['37', '39'],\n brightblack: ['30;1', '39'],\n brightred: ['31;1', '39'],\n brightgreen: ['32;1', '39'],\n brightyellow: ['33;1', '39'],\n brightblue: ['34;1', '39'],\n brightmagenta: ['35;1', '39'],\n brightcyan: ['36;1', '39'],\n brightwhite: ['37;1', '39'],\n grey: ['90', '39'],\n};\nconst styles = {\n special: 'cyan',\n number: 'yellow',\n bigint: 'yellow',\n boolean: 'yellow',\n undefined: 'grey',\n null: 'bold',\n string: 'green',\n symbol: 'green',\n date: 'magenta',\n regexp: 'red',\n};\nexport const truncator = '…';\nfunction colorise(value, styleType) {\n const color = ansiColors[styles[styleType]] || ansiColors[styleType] || '';\n if (!color) {\n return String(value);\n }\n return `\\u001b[${color[0]}m${String(value)}\\u001b[${color[1]}m`;\n}\nexport function normaliseOptions({ showHidden = false, depth = 2, colors = false, customInspect = true, showProxy = false, maxArrayLength = Infinity, breakLength = Infinity, seen = [], \n// eslint-disable-next-line no-shadow\ntruncate = Infinity, stylize = String, } = {}, inspect) {\n const options = {\n showHidden: Boolean(showHidden),\n depth: Number(depth),\n colors: Boolean(colors),\n customInspect: Boolean(customInspect),\n showProxy: Boolean(showProxy),\n maxArrayLength: Number(maxArrayLength),\n breakLength: Number(breakLength),\n truncate: Number(truncate),\n seen,\n inspect,\n stylize,\n };\n if (options.colors) {\n options.stylize = colorise;\n }\n return options;\n}\nfunction isHighSurrogate(char) {\n return char >= '\\ud800' && char <= '\\udbff';\n}\nexport function truncate(string, length, tail = truncator) {\n string = String(string);\n const tailLength = tail.length;\n const stringLength = string.length;\n if (tailLength > length && stringLength > tailLength) {\n return tail;\n }\n if (stringLength > length && stringLength > tailLength) {\n let end = length - tailLength;\n if (end > 0 && isHighSurrogate(string[end - 1])) {\n end = end - 1;\n }\n return `${string.slice(0, end)}${tail}`;\n }\n return string;\n}\n// eslint-disable-next-line complexity\nexport function inspectList(list, options, inspectItem, separator = ', ') {\n inspectItem = inspectItem || options.inspect;\n const size = list.length;\n if (size === 0)\n return '';\n const originalLength = options.truncate;\n let output = '';\n let peek = '';\n let truncated = '';\n for (let i = 0; i < size; i += 1) {\n const last = i + 1 === list.length;\n const secondToLast = i + 2 === list.length;\n truncated = `${truncator}(${list.length - i})`;\n const value = list[i];\n // If there is more than one remaining we need to account for a separator of `, `\n options.truncate = originalLength - output.length - (last ? 0 : separator.length);\n const string = peek || inspectItem(value, options) + (last ? '' : separator);\n const nextLength = output.length + string.length;\n const truncatedLength = nextLength + truncated.length;\n // If this is the last element, and adding it would\n // take us over length, but adding the truncator wouldn't - then break now\n if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) {\n break;\n }\n // If this isn't the last or second to last element to scan,\n // but the string is already over length then break here\n if (!last && !secondToLast && truncatedLength > originalLength) {\n break;\n }\n // Peek at the next string to determine if we should\n // break early before adding this item to the output\n peek = last ? '' : inspectItem(list[i + 1], options) + (secondToLast ? '' : separator);\n // If we have one element left, but this element and\n // the next takes over length, the break early\n if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) {\n break;\n }\n output += string;\n // If the next element takes us to length -\n // but there are more after that, then we should truncate now\n if (!last && !secondToLast && nextLength + peek.length >= originalLength) {\n truncated = `${truncator}(${list.length - i - 1})`;\n break;\n }\n truncated = '';\n }\n return `${output}${truncated}`;\n}\nfunction quoteComplexKey(key) {\n if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) {\n return key;\n }\n return JSON.stringify(key)\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n}\nexport function inspectProperty([key, value], options) {\n options.truncate -= 2;\n if (typeof key === 'string') {\n key = quoteComplexKey(key);\n }\n else if (typeof key !== 'number') {\n key = `[${options.inspect(key, options)}]`;\n }\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key}: ${value}`;\n}\n","import { inspectList, inspectProperty } from './helpers.js';\nexport default function inspectArray(array, options) {\n // Object.keys will always output the Array indices first, so we can slice by\n // `array.length` to get non-index properties\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return '[]';\n options.truncate -= 4;\n const listContents = inspectList(array, options);\n options.truncate -= listContents.length;\n let propertyContents = '';\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map(key => [key, array[key]]), options, inspectProperty);\n }\n return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : ''} ]`;\n}\n","import { inspectList, inspectProperty, truncate, truncator } from './helpers.js';\nconst getArrayName = (array) => {\n // We need to special case Node.js' Buffers, which report to be Uint8Array\n // @ts-ignore\n if (typeof Buffer === 'function' && array instanceof Buffer) {\n return 'Buffer';\n }\n if (array[Symbol.toStringTag]) {\n return array[Symbol.toStringTag];\n }\n return array.constructor.name;\n};\nexport default function inspectTypedArray(array, options) {\n const name = getArrayName(array);\n options.truncate -= name.length + 4;\n // Object.keys will always output the Array indices first, so we can slice by\n // `array.length` to get non-index properties\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return `${name}[]`;\n // As we know TypedArrays only contain Unsigned Integers, we can skip inspecting each one and simply\n // stylise the toString() value of them\n let output = '';\n for (let i = 0; i < array.length; i++) {\n const string = `${options.stylize(truncate(array[i], options.truncate), 'number')}${i === array.length - 1 ? '' : ', '}`;\n options.truncate -= string.length;\n if (array[i] !== array.length && options.truncate <= 3) {\n output += `${truncator}(${array.length - array[i] + 1})`;\n break;\n }\n output += string;\n }\n let propertyContents = '';\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map(key => [key, array[key]]), options, inspectProperty);\n }\n return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : ''} ]`;\n}\n","import { truncate } from './helpers.js';\nexport default function inspectDate(dateObject, options) {\n const stringRepresentation = dateObject.toJSON();\n if (stringRepresentation === null) {\n return 'Invalid Date';\n }\n const split = stringRepresentation.split('T');\n const date = split[0];\n // If we need to - truncate the time portion, but never the date\n return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, 'date');\n}\n","import { truncate } from './helpers.js';\nexport default function inspectFunction(func, options) {\n const functionType = func[Symbol.toStringTag] || 'Function';\n const name = func.name;\n if (!name) {\n return options.stylize(`[${functionType}]`, 'special');\n }\n return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, 'special');\n}\n","import { inspectList } from './helpers.js';\nfunction inspectMapEntry([key, value], options) {\n options.truncate -= 4;\n key = options.inspect(key, options);\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key} => ${value}`;\n}\n// IE11 doesn't support `map.entries()`\nfunction mapToEntries(map) {\n const entries = [];\n map.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n}\nexport default function inspectMap(map, options) {\n const size = map.size - 1;\n if (size <= 0) {\n return 'Map{}';\n }\n options.truncate -= 7;\n return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`;\n}\n","import { truncate } from './helpers.js';\nconst isNaN = Number.isNaN || (i => i !== i); // eslint-disable-line no-self-compare\nexport default function inspectNumber(number, options) {\n if (isNaN(number)) {\n return options.stylize('NaN', 'number');\n }\n if (number === Infinity) {\n return options.stylize('Infinity', 'number');\n }\n if (number === -Infinity) {\n return options.stylize('-Infinity', 'number');\n }\n if (number === 0) {\n return options.stylize(1 / number === Infinity ? '+0' : '-0', 'number');\n }\n return options.stylize(truncate(String(number), options.truncate), 'number');\n}\n","import { truncate, truncator } from './helpers.js';\nexport default function inspectBigInt(number, options) {\n let nums = truncate(number.toString(), options.truncate - 1);\n if (nums !== truncator)\n nums += 'n';\n return options.stylize(nums, 'bigint');\n}\n","import { truncate } from './helpers.js';\nexport default function inspectRegExp(value, options) {\n const flags = value.toString().split('/')[2];\n const sourceLength = options.truncate - (2 + flags.length);\n const source = value.source;\n return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, 'regexp');\n}\n","import { inspectList } from './helpers.js';\n// IE11 doesn't support `Array.from(set)`\nfunction arrayFromSet(set) {\n const values = [];\n set.forEach(value => {\n values.push(value);\n });\n return values;\n}\nexport default function inspectSet(set, options) {\n if (set.size === 0)\n return 'Set{}';\n options.truncate -= 7;\n return `Set{ ${inspectList(arrayFromSet(set), options)} }`;\n}\n","import { truncate } from './helpers.js';\nconst stringEscapeChars = new RegExp(\"['\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\" +\n '\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]', 'g');\nconst escapeCharacters = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n \"'\": \"\\\\'\",\n '\\\\': '\\\\\\\\',\n};\nconst hex = 16;\nconst unicodeLength = 4;\nfunction escape(char) {\n return (escapeCharacters[char] ||\n `\\\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`);\n}\nexport default function inspectString(string, options) {\n if (stringEscapeChars.test(string)) {\n string = string.replace(stringEscapeChars, escape);\n }\n return options.stylize(`'${truncate(string, options.truncate - 2)}'`, 'string');\n}\n","export default function inspectSymbol(value) {\n if ('description' in Symbol.prototype) {\n return value.description ? `Symbol(${value.description})` : 'Symbol()';\n }\n return value.toString();\n}\n","let getPromiseValue = () => 'Promise{…}';\ntry {\n // @ts-ignore\n const { getPromiseDetails, kPending, kRejected } = process.binding('util');\n if (Array.isArray(getPromiseDetails(Promise.resolve()))) {\n getPromiseValue = (value, options) => {\n const [state, innerValue] = getPromiseDetails(value);\n if (state === kPending) {\n return 'Promise{<pending>}';\n }\n return `Promise${state === kRejected ? '!' : ''}{${options.inspect(innerValue, options)}}`;\n };\n }\n}\ncatch (notNode) {\n /* ignore */\n}\nexport default getPromiseValue;\n","import { inspectList, inspectProperty } from './helpers.js';\nexport default function inspectObject(object, options) {\n const properties = Object.getOwnPropertyNames(object);\n const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [];\n if (properties.length === 0 && symbols.length === 0) {\n return '{}';\n }\n options.truncate -= 4;\n options.seen = options.seen || [];\n if (options.seen.indexOf(object) >= 0) {\n return '[Circular]';\n }\n options.seen.push(object);\n const propertyContents = inspectList(properties.map(key => [key, object[key]]), options, inspectProperty);\n const symbolContents = inspectList(symbols.map(key => [key, object[key]]), options, inspectProperty);\n options.seen.pop();\n let sep = '';\n if (propertyContents && symbolContents) {\n sep = ', ';\n }\n return `{ ${propertyContents}${sep}${symbolContents} }`;\n}\n","import inspectObject from './object.js';\nconst toStringTag = typeof Symbol !== 'undefined' && Symbol.toStringTag ? Symbol.toStringTag : false;\nexport default function inspectClass(value, options) {\n let name = '';\n if (toStringTag && toStringTag in value) {\n name = value[toStringTag];\n }\n name = name || value.constructor.name;\n // Babel transforms anonymous classes to the name `_class`\n if (!name || name === '_class') {\n name = '<Anonymous Class>';\n }\n options.truncate -= name.length;\n return `${name}${inspectObject(value, options)}`;\n}\n","import { inspectList } from './helpers.js';\nexport default function inspectArguments(args, options) {\n if (args.length === 0)\n return 'Arguments[]';\n options.truncate -= 13;\n return `Arguments[ ${inspectList(args, options)} ]`;\n}\n","import { inspectList, inspectProperty, truncate } from './helpers.js';\nconst errorKeys = [\n 'stack',\n 'line',\n 'column',\n 'name',\n 'message',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'number',\n 'description',\n];\nexport default function inspectObject(error, options) {\n const properties = Object.getOwnPropertyNames(error).filter(key => errorKeys.indexOf(key) === -1);\n const name = error.name;\n options.truncate -= name.length;\n let message = '';\n if (typeof error.message === 'string') {\n message = truncate(error.message, options.truncate);\n }\n else {\n properties.unshift('message');\n }\n message = message ? `: ${message}` : '';\n options.truncate -= message.length + 5;\n const propertyContents = inspectList(properties.map(key => [key, error[key]]), options, inspectProperty);\n return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ''}`;\n}\n","import { inspectList, truncator } from './helpers.js';\nexport function inspectAttribute([key, value], options) {\n options.truncate -= 3;\n if (!value) {\n return `${options.stylize(String(key), 'yellow')}`;\n }\n return `${options.stylize(String(key), 'yellow')}=${options.stylize(`\"${value}\"`, 'string')}`;\n}\n// @ts-ignore (Deno doesn't have Element)\nexport function inspectHTMLCollection(collection, options) {\n // eslint-disable-next-line no-use-before-define\n return inspectList(collection, options, inspectHTML, '\\n');\n}\n// @ts-ignore (Deno doesn't have Element)\nexport default function inspectHTML(element, options) {\n const properties = element.getAttributeNames();\n const name = element.tagName.toLowerCase();\n const head = options.stylize(`<${name}`, 'special');\n const headClose = options.stylize(`>`, 'special');\n const tail = options.stylize(`</${name}>`, 'special');\n options.truncate -= name.length * 2 + 5;\n let propertyContents = '';\n if (properties.length > 0) {\n propertyContents += ' ';\n propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, ' ');\n }\n options.truncate -= propertyContents.length;\n const truncate = options.truncate;\n let children = inspectHTMLCollection(element.children, options);\n if (children && children.length > truncate) {\n children = `${truncator}(${element.children.length})`;\n }\n return `${head}${propertyContents}${headClose}${children}${tail}`;\n}\n","/* !\n * loupe\n * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\nimport inspectArray from './array.js';\nimport inspectTypedArray from './typedarray.js';\nimport inspectDate from './date.js';\nimport inspectFunction from './function.js';\nimport inspectMap from './map.js';\nimport inspectNumber from './number.js';\nimport inspectBigInt from './bigint.js';\nimport inspectRegExp from './regexp.js';\nimport inspectSet from './set.js';\nimport inspectString from './string.js';\nimport inspectSymbol from './symbol.js';\nimport inspectPromise from './promise.js';\nimport inspectClass from './class.js';\nimport inspectObject from './object.js';\nimport inspectArguments from './arguments.js';\nimport inspectError from './error.js';\nimport inspectHTMLElement, { inspectHTMLCollection } from './html.js';\nimport { normaliseOptions } from './helpers.js';\nconst symbolsSupported = typeof Symbol === 'function' && typeof Symbol.for === 'function';\nconst chaiInspect = symbolsSupported ? Symbol.for('chai/inspect') : '@@chai/inspect';\nlet nodeInspect = false;\ntry {\n // eslint-disable-next-line global-require\n // @ts-ignore\n const nodeUtil = require('util');\n nodeInspect = nodeUtil.inspect ? nodeUtil.inspect.custom : false;\n}\ncatch (noNodeInspect) {\n nodeInspect = false;\n}\nconst constructorMap = new WeakMap();\nconst stringTagMap = {};\nconst baseTypesMap = {\n undefined: (value, options) => options.stylize('undefined', 'undefined'),\n null: (value, options) => options.stylize('null', 'null'),\n boolean: (value, options) => options.stylize(String(value), 'boolean'),\n Boolean: (value, options) => options.stylize(String(value), 'boolean'),\n number: inspectNumber,\n Number: inspectNumber,\n bigint: inspectBigInt,\n BigInt: inspectBigInt,\n string: inspectString,\n String: inspectString,\n function: inspectFunction,\n Function: inspectFunction,\n symbol: inspectSymbol,\n // A Symbol polyfill will return `Symbol` not `symbol` from typedetect\n Symbol: inspectSymbol,\n Array: inspectArray,\n Date: inspectDate,\n Map: inspectMap,\n Set: inspectSet,\n RegExp: inspectRegExp,\n Promise: inspectPromise,\n // WeakSet, WeakMap are totally opaque to us\n WeakSet: (value, options) => options.stylize('WeakSet{…}', 'special'),\n WeakMap: (value, options) => options.stylize('WeakMap{…}', 'special'),\n Arguments: inspectArguments,\n Int8Array: inspectTypedArray,\n Uint8Array: inspectTypedArray,\n Uint8ClampedArray: inspectTypedArray,\n Int16Array: inspectTypedArray,\n Uint16Array: inspectTypedArray,\n Int32Array: inspectTypedArray,\n Uint32Array: inspectTypedArray,\n Float32Array: inspectTypedArray,\n Float64Array: inspectTypedArray,\n Generator: () => '',\n DataView: () => '',\n ArrayBuffer: () => '',\n Error: inspectError,\n HTMLCollection: inspectHTMLCollection,\n NodeList: inspectHTMLCollection,\n};\n// eslint-disable-next-line complexity\nconst inspectCustom = (value, options, type) => {\n if (chaiInspect in value && typeof value[chaiInspect] === 'function') {\n return value[chaiInspect](options);\n }\n if (nodeInspect && nodeInspect in value && typeof value[nodeInspect] === 'function') {\n return value[nodeInspect](options.depth, options);\n }\n if ('inspect' in value && typeof value.inspect === 'function') {\n return value.inspect(options.depth, options);\n }\n if ('constructor' in value && constructorMap.has(value.constructor)) {\n return constructorMap.get(value.constructor)(value, options);\n }\n if (stringTagMap[type]) {\n return stringTagMap[type](value, options);\n }\n return '';\n};\nconst toString = Object.prototype.toString;\n// eslint-disable-next-line complexity\nexport function inspect(value, opts = {}) {\n const options = normaliseOptions(opts, inspect);\n const { customInspect } = options;\n let type = value === null ? 'null' : typeof value;\n if (type === 'object') {\n type = toString.call(value).slice(8, -1);\n }\n // If it is a base value that we already support, then use Loupe's inspector\n if (type in baseTypesMap) {\n return baseTypesMap[type](value, options);\n }\n // If `options.customInspect` is set to true then try to use the custom inspector\n if (customInspect && value) {\n const output = inspectCustom(value, options, type);\n if (output) {\n if (typeof output === 'string')\n return output;\n return inspect(output, options);\n }\n }\n const proto = value ? Object.getPrototypeOf(value) : false;\n // If it's a plain Object then use Loupe's inspector\n if (proto === Object.prototype || proto === null) {\n return inspectObject(value, options);\n }\n // Specifically account for HTMLElements\n // @ts-ignore\n if (value && typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n return inspectHTMLElement(value, options);\n }\n if ('constructor' in value) {\n // If it is a class, inspect it like an object but add the constructor name\n if (value.constructor !== Object) {\n return inspectClass(value, options);\n }\n // If it is an object with an anonymous prototype, display it as an object.\n return inspectObject(value, options);\n }\n // last chance to check if it's an object\n if (value === Object(value)) {\n return inspectObject(value, options);\n }\n // We have run out of options! Just stringify the value\n return options.stylize(String(value), type);\n}\nexport function registerConstructor(constructor, inspector) {\n if (constructorMap.has(constructor)) {\n return false;\n }\n constructorMap.set(constructor, inspector);\n return true;\n}\nexport function registerStringTag(stringTag, inspector) {\n if (stringTag in stringTagMap) {\n return false;\n }\n stringTagMap[stringTag] = inspector;\n return true;\n}\nexport const custom = chaiInspect;\nexport default inspect;\n","import { format as format$1, plugins } from '@vitest/pretty-format';\nimport * as loupe from 'loupe';\n\nconst {\n AsymmetricMatcher,\n DOMCollection,\n DOMElement,\n Immutable,\n ReactElement,\n ReactTestComponent\n} = plugins;\nconst PLUGINS = [\n ReactTestComponent,\n ReactElement,\n DOMElement,\n DOMCollection,\n Immutable,\n AsymmetricMatcher\n];\nfunction stringify(object, maxDepth = 10, { maxLength, ...options } = {}) {\n const MAX_LENGTH = maxLength ?? 1e4;\n let result;\n try {\n result = format$1(object, {\n maxDepth,\n escapeString: false,\n // min: true,\n plugins: PLUGINS,\n ...options\n });\n } catch {\n result = format$1(object, {\n callToJSON: false,\n maxDepth,\n escapeString: false,\n // min: true,\n plugins: PLUGINS,\n ...options\n });\n }\n return result.length >= MAX_LENGTH && maxDepth > 1 ? stringify(object, Math.floor(maxDepth / 2)) : result;\n}\n\nconst formatRegExp = /%[sdjifoOc%]/g;\nfunction format(...args) {\n if (typeof args[0] !== \"string\") {\n const objects = [];\n for (let i2 = 0; i2 < args.length; i2++) {\n objects.push(inspect(args[i2], { depth: 0, colors: false }));\n }\n return objects.join(\" \");\n }\n const len = args.length;\n let i = 1;\n const template = args[0];\n let str = String(template).replace(formatRegExp, (x) => {\n if (x === \"%%\") {\n return \"%\";\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case \"%s\": {\n const value = args[i++];\n if (typeof value === \"bigint\") {\n return `${value.toString()}n`;\n }\n if (typeof value === \"number\" && value === 0 && 1 / value < 0) {\n return \"-0\";\n }\n if (typeof value === \"object\" && value !== null) {\n return inspect(value, { depth: 0, colors: false });\n }\n return String(value);\n }\n case \"%d\": {\n const value = args[i++];\n if (typeof value === \"bigint\") {\n return `${value.toString()}n`;\n }\n return Number(value).toString();\n }\n case \"%i\": {\n const value = args[i++];\n if (typeof value === \"bigint\") {\n return `${value.toString()}n`;\n }\n return Number.parseInt(String(value)).toString();\n }\n case \"%f\":\n return Number.parseFloat(String(args[i++])).toString();\n case \"%o\":\n return inspect(args[i++], { showHidden: true, showProxy: true });\n case \"%O\":\n return inspect(args[i++]);\n case \"%c\": {\n i++;\n return \"\";\n }\n case \"%j\":\n try {\n return JSON.stringify(args[i++]);\n } catch (err) {\n const m = err.message;\n if (\n // chromium\n m.includes(\"circular structure\") || m.includes(\"cyclic structures\") || m.includes(\"cyclic object\")\n ) {\n return \"[Circular]\";\n }\n throw err;\n }\n default:\n return x;\n }\n });\n for (let x = args[i]; i < len; x = args[++i]) {\n if (x === null || typeof x !== \"object\") {\n str += ` ${x}`;\n } else {\n str += ` ${inspect(x)}`;\n }\n }\n return str;\n}\nfunction inspect(obj, options = {}) {\n if (options.truncate === 0) {\n options.truncate = Number.POSITIVE_INFINITY;\n }\n return loupe.inspect(obj, options);\n}\nfunction objDisplay(obj, options = {}) {\n if (typeof options.truncate === \"undefined\") {\n options.truncate = 40;\n }\n const str = inspect(obj, options);\n const type = Object.prototype.toString.call(obj);\n if (options.truncate && str.length >= options.truncate) {\n if (type === \"[object Function]\") {\n const fn = obj;\n return !fn.name ? \"[Function]\" : `[Function: ${fn.name}]`;\n } else if (type === \"[object Array]\") {\n return `[ Array(${obj.length}) ]`;\n } else if (type === \"[object Object]\") {\n const keys = Object.keys(obj);\n const kstr = keys.length > 2 ? `${keys.splice(0, 2).join(\", \")}, ...` : keys.join(\", \");\n return `{ Object (${kstr}) }`;\n } else {\n return str;\n }\n }\n return str;\n}\n\nexport { format as f, inspect as i, objDisplay as o, stringify as s };\n","export { assertTypes, clone, createDefer, deepClone, getCallLastIndex, getOwnProperties, getType, isNegativeNaN, isObject, isPrimitive, noop, notNullish, objectAttr, parseRegexp, slash, toArray } from './helpers.js';\nexport { f as format, i as inspect, o as objDisplay, s as stringify } from './chunk-display.js';\nimport c from 'tinyrainbow';\nimport '@vitest/pretty-format';\nimport 'loupe';\n\nconst SAFE_TIMERS_SYMBOL = Symbol(\"vitest:SAFE_TIMERS\");\nconst SAFE_COLORS_SYMBOL = Symbol(\"vitest:SAFE_COLORS\");\n\nfunction getSafeTimers() {\n const {\n setTimeout: safeSetTimeout,\n setInterval: safeSetInterval,\n clearInterval: safeClearInterval,\n clearTimeout: safeClearTimeout,\n setImmediate: safeSetImmediate,\n clearImmediate: safeClearImmediate\n } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis;\n const { nextTick: safeNextTick } = globalThis[SAFE_TIMERS_SYMBOL] || globalThis.process || { nextTick: (cb) => cb() };\n return {\n nextTick: safeNextTick,\n setTimeout: safeSetTimeout,\n setInterval: safeSetInterval,\n clearInterval: safeClearInterval,\n clearTimeout: safeClearTimeout,\n setImmediate: safeSetImmediate,\n clearImmediate: safeClearImmediate\n };\n}\nfunction setSafeTimers() {\n const {\n setTimeout: safeSetTimeout,\n setInterval: safeSetInterval,\n clearInterval: safeClearInterval,\n clearTimeout: safeClearTimeout,\n setImmediate: safeSetImmediate,\n clearImmediate: safeClearImmediate\n } = globalThis;\n const { nextTick: safeNextTick } = globalThis.process || {\n nextTick: (cb) => cb()\n };\n const timers = {\n nextTick: safeNextTick,\n setTimeout: safeSetTimeout,\n setInterval: safeSetInterval,\n clearInterval: safeClearInterval,\n clearTimeout: safeClearTimeout,\n setImmediate: safeSetImmediate,\n clearImmediate: safeClearImmediate\n };\n globalThis[SAFE_TIMERS_SYMBOL] = timers;\n}\n\nconst RealDate = Date;\nfunction random(seed) {\n const x = Math.sin(seed++) * 1e4;\n return x - Math.floor(x);\n}\nfunction shuffle(array, seed = RealDate.now()) {\n let length = array.length;\n while (length) {\n const index = Math.floor(random(seed) * length--);\n const previous = array[length];\n array[length] = array[index];\n array[index] = previous;\n ++seed;\n }\n return array;\n}\n\nfunction createSimpleStackTrace(options) {\n const { message = \"$$stack trace error\", stackTraceLimit = 1 } = options || {};\n const limit = Error.stackTraceLimit;\n const prepareStackTrace = Error.prepareStackTrace;\n Error.stackTraceLimit = stackTraceLimit;\n Error.prepareStackTrace = (e) => e.stack;\n const err = new Error(message);\n const stackTrace = err.stack || \"\";\n Error.prepareStackTrace = prepareStackTrace;\n Error.stackTraceLimit = limit;\n return stackTrace;\n}\n\nconst lineSplitRE = /\\r?\\n/;\nfunction positionToOffset(source, lineNumber, columnNumber) {\n const lines = source.split(lineSplitRE);\n const nl = /\\r\\n/.test(source) ? 2 : 1;\n let start = 0;\n if (lineNumber > lines.length) {\n return source.length;\n }\n for (let i = 0; i < lineNumber - 1; i++) {\n start += lines[i].length + nl;\n }\n return start + columnNumber;\n}\nfunction offsetToLineNumber(source, offset) {\n if (offset > source.length) {\n throw new Error(\n `offset is longer than source length! offset ${offset} > length ${source.length}`\n );\n }\n const lines = source.split(lineSplitRE);\n const nl = /\\r\\n/.test(source) ? 2 : 1;\n let counted = 0;\n let line = 0;\n for (; line < lines.length; line++) {\n const lineLength = lines[line].length + nl;\n if (counted + lineLength >= offset) {\n break;\n }\n counted += lineLength;\n }\n return line + 1;\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n// Copyright 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Simon Lydell\n// License: MIT.\nvar Identifier, JSXIdentifier, JSXPunctuator, JSXString, JSXText, KeywordsWithExpressionAfter, KeywordsWithNoLineTerminatorAfter, LineTerminatorSequence, MultiLineComment, Newline, NumericLiteral, Punctuator, RegularExpressionLiteral, SingleLineComment, StringLiteral, Template, TokensNotPrecedingObjectLiteral, TokensPrecedingExpression, WhiteSpace;\nRegularExpressionLiteral = /\\/(?![*\\/])(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\\\]).|\\\\.)*(\\/[$_\\u200C\\u200D\\p{ID_Continue}]*|\\\\)?/yu;\nPunctuator = /--|\\+\\+|=>|\\.{3}|\\??\\.(?!\\d)|(?:&&|\\|\\||\\?\\?|[+\\-%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\\/(?![\\/*]))=?|[?~,:;[\\](){}]/y;\nIdentifier = /(\\x23?)(?=[$_\\p{ID_Start}\\\\])(?:[$_\\u200C\\u200D\\p{ID_Continue}]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+/yu;\nStringLiteral = /(['\"])(?:(?!\\1)[^\\\\\\n\\r]|\\\\(?:\\r\\n|[^]))*(\\1)?/y;\nNumericLiteral = /(?:0[xX][\\da-fA-F](?:_?[\\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\\d)*n|(?:(?:0(?!\\d)|0\\d*[89]\\d*|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?|\\.\\d(?:_?\\d)*)(?:[eE][+-]?\\d(?:_?\\d)*)?|0[0-7]+/y;\nTemplate = /[`}](?:[^`\\\\$]|\\\\[^]|\\$(?!\\{))*(`|\\$\\{)?/y;\nWhiteSpace = /[\\t\\v\\f\\ufeff\\p{Zs}]+/yu;\nLineTerminatorSequence = /\\r?\\n|[\\r\\u2028\\u2029]/y;\nMultiLineComment = /\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?/y;\nSingleLineComment = /\\/\\/.*/y;\nJSXPunctuator = /[<>.:={}]|\\/(?![\\/*])/y;\nJSXIdentifier = /[$_\\p{ID_Start}][$_\\u200C\\u200D\\p{ID_Continue}-]*/yu;\nJSXString = /(['\"])(?:(?!\\1)[^])*(\\1)?/y;\nJSXText = /[^<>{}]+/y;\nTokensPrecedingExpression = /^(?:[\\/+-]|\\.{3}|\\?(?:InterpolationIn(?:JSX|Template)|NoLineTerminatorHere|NonExpressionParenEnd|UnaryIncDec))?$|[{}([,;<>=*%&|^!~?:]$/;\nTokensNotPrecedingObjectLiteral = /^(?:=>|[;\\]){}]|else|\\?(?:NoLineTerminatorHere|NonExpressionParenEnd))?$/;\nKeywordsWithExpressionAfter = /^(?:await|case|default|delete|do|else|instanceof|new|return|throw|typeof|void|yield)$/;\nKeywordsWithNoLineTerminatorAfter = /^(?:return|throw|yield)$/;\nNewline = RegExp(LineTerminatorSequence.source);\nvar jsTokens_1 = function*(input, {jsx = false} = {}) {\n\tvar braces, firstCodePoint, isExpression, lastIndex, lastSignificantToken, length, match, mode, nextLastIndex, nextLastSignificantToken, parenNesting, postfixIncDec, punctuator, stack;\n\t({length} = input);\n\tlastIndex = 0;\n\tlastSignificantToken = \"\";\n\tstack = [\n\t\t{tag: \"JS\"}\n\t];\n\tbraces = [];\n\tparenNesting = 0;\n\tpostfixIncDec = false;\n\twhile (lastIndex < length) {\n\t\tmode = stack[stack.length - 1];\n\t\tswitch (mode.tag) {\n\t\t\tcase \"JS\":\n\t\t\tcase \"JSNonExpressionParen\":\n\t\t\tcase \"InterpolationInTemplate\":\n\t\t\tcase \"InterpolationInJSX\":\n\t\t\t\tif (input[lastIndex] === \"/\" && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken))) {\n\t\t\t\t\tRegularExpressionLiteral.lastIndex = lastIndex;\n\t\t\t\t\tif (match = RegularExpressionLiteral.exec(input)) {\n\t\t\t\t\t\tlastIndex = RegularExpressionLiteral.lastIndex;\n\t\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"RegularExpressionLiteral\",\n\t\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\t\tclosed: match[1] !== void 0 && match[1] !== \"\\\\\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tPunctuator.lastIndex = lastIndex;\n\t\t\t\tif (match = Punctuator.exec(input)) {\n\t\t\t\t\tpunctuator = match[0];\n\t\t\t\t\tnextLastIndex = Punctuator.lastIndex;\n\t\t\t\t\tnextLastSignificantToken = punctuator;\n\t\t\t\t\tswitch (punctuator) {\n\t\t\t\t\t\tcase \"(\":\n\t\t\t\t\t\t\tif (lastSignificantToken === \"?NonExpressionParenKeyword\") {\n\t\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\t\ttag: \"JSNonExpressionParen\",\n\t\t\t\t\t\t\t\t\tnesting: parenNesting\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparenNesting++;\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \")\":\n\t\t\t\t\t\t\tparenNesting--;\n\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\tif (mode.tag === \"JSNonExpressionParen\" && parenNesting === mode.nesting) {\n\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\tnextLastSignificantToken = \"?NonExpressionParenEnd\";\n\t\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"{\":\n\t\t\t\t\t\t\tPunctuator.lastIndex = 0;\n\t\t\t\t\t\t\tisExpression = !TokensNotPrecedingObjectLiteral.test(lastSignificantToken) && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken));\n\t\t\t\t\t\t\tbraces.push(isExpression);\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"}\":\n\t\t\t\t\t\t\tswitch (mode.tag) {\n\t\t\t\t\t\t\t\tcase \"InterpolationInTemplate\":\n\t\t\t\t\t\t\t\t\tif (braces.length === mode.nesting) {\n\t\t\t\t\t\t\t\t\t\tTemplate.lastIndex = lastIndex;\n\t\t\t\t\t\t\t\t\t\tmatch = Template.exec(input);\n\t\t\t\t\t\t\t\t\t\tlastIndex = Template.lastIndex;\n\t\t\t\t\t\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\t\t\t\t\t\tif (match[1] === \"${\") {\n\t\t\t\t\t\t\t\t\t\t\tlastSignificantToken = \"?InterpolationInTemplate\";\n\t\t\t\t\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"TemplateMiddle\",\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"TemplateTail\",\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\t\t\t\t\t\t\tclosed: match[1] === \"`\"\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"InterpolationInJSX\":\n\t\t\t\t\t\t\t\t\tif (braces.length === mode.nesting) {\n\t\t\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\t\t\tlastIndex += 1;\n\t\t\t\t\t\t\t\t\t\tlastSignificantToken = \"}\";\n\t\t\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"}\"\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpostfixIncDec = braces.pop();\n\t\t\t\t\t\t\tnextLastSignificantToken = postfixIncDec ? \"?ExpressionBraceEnd\" : \"}\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"]\":\n\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"++\":\n\t\t\t\t\t\tcase \"--\":\n\t\t\t\t\t\t\tnextLastSignificantToken = postfixIncDec ? \"?PostfixIncDec\" : \"?UnaryIncDec\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\t\tif (jsx && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken))) {\n\t\t\t\t\t\t\t\tstack.push({tag: \"JSXTag\"});\n\t\t\t\t\t\t\t\tlastIndex += 1;\n\t\t\t\t\t\t\t\tlastSignificantToken = \"<\";\n\t\t\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\t\t\tvalue: punctuator\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t}\n\t\t\t\t\tlastIndex = nextLastIndex;\n\t\t\t\t\tlastSignificantToken = nextLastSignificantToken;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"Punctuator\",\n\t\t\t\t\t\tvalue: punctuator\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tIdentifier.lastIndex = lastIndex;\n\t\t\t\tif (match = Identifier.exec(input)) {\n\t\t\t\t\tlastIndex = Identifier.lastIndex;\n\t\t\t\t\tnextLastSignificantToken = match[0];\n\t\t\t\t\tswitch (match[0]) {\n\t\t\t\t\t\tcase \"for\":\n\t\t\t\t\t\tcase \"if\":\n\t\t\t\t\t\tcase \"while\":\n\t\t\t\t\t\tcase \"with\":\n\t\t\t\t\t\t\tif (lastSignificantToken !== \".\" && lastSignificantToken !== \"?.\") {\n\t\t\t\t\t\t\t\tnextLastSignificantToken = \"?NonExpressionParenKeyword\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastSignificantToken = nextLastSignificantToken;\n\t\t\t\t\tpostfixIncDec = !KeywordsWithExpressionAfter.test(match[0]);\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: match[1] === \"#\" ? \"PrivateIdentifier\" : \"IdentifierName\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tStringLiteral.lastIndex = lastIndex;\n\t\t\t\tif (match = StringLiteral.exec(input)) {\n\t\t\t\t\tlastIndex = StringLiteral.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"StringLiteral\",\n\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\tclosed: match[2] !== void 0\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tNumericLiteral.lastIndex = lastIndex;\n\t\t\t\tif (match = NumericLiteral.exec(input)) {\n\t\t\t\t\tlastIndex = NumericLiteral.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"NumericLiteral\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tTemplate.lastIndex = lastIndex;\n\t\t\t\tif (match = Template.exec(input)) {\n\t\t\t\t\tlastIndex = Template.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tif (match[1] === \"${\") {\n\t\t\t\t\t\tlastSignificantToken = \"?InterpolationInTemplate\";\n\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\ttag: \"InterpolationInTemplate\",\n\t\t\t\t\t\t\tnesting: braces.length\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"TemplateHead\",\n\t\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"NoSubstitutionTemplate\",\n\t\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\t\tclosed: match[1] === \"`\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"JSXTag\":\n\t\t\tcase \"JSXTagEnd\":\n\t\t\t\tJSXPunctuator.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXPunctuator.exec(input)) {\n\t\t\t\t\tlastIndex = JSXPunctuator.lastIndex;\n\t\t\t\t\tnextLastSignificantToken = match[0];\n\t\t\t\t\tswitch (match[0]) {\n\t\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\t\tstack.push({tag: \"JSXTag\"});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \">\":\n\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\tif (lastSignificantToken === \"/\" || mode.tag === \"JSXTagEnd\") {\n\t\t\t\t\t\t\t\tnextLastSignificantToken = \"?JSX\";\n\t\t\t\t\t\t\t\tpostfixIncDec = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstack.push({tag: \"JSXChildren\"});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"{\":\n\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\ttag: \"InterpolationInJSX\",\n\t\t\t\t\t\t\t\tnesting: braces.length\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tnextLastSignificantToken = \"?InterpolationInJSX\";\n\t\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"/\":\n\t\t\t\t\t\t\tif (lastSignificantToken === \"<\") {\n\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\tif (stack[stack.length - 1].tag === \"JSXChildren\") {\n\t\t\t\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstack.push({tag: \"JSXTagEnd\"});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastSignificantToken = nextLastSignificantToken;\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tJSXIdentifier.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXIdentifier.exec(input)) {\n\t\t\t\t\tlastIndex = JSXIdentifier.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXIdentifier\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tJSXString.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXString.exec(input)) {\n\t\t\t\t\tlastIndex = JSXString.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXString\",\n\t\t\t\t\t\tvalue: match[0],\n\t\t\t\t\t\tclosed: match[2] !== void 0\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"JSXChildren\":\n\t\t\t\tJSXText.lastIndex = lastIndex;\n\t\t\t\tif (match = JSXText.exec(input)) {\n\t\t\t\t\tlastIndex = JSXText.lastIndex;\n\t\t\t\t\tlastSignificantToken = match[0];\n\t\t\t\t\tyield ({\n\t\t\t\t\t\ttype: \"JSXText\",\n\t\t\t\t\t\tvalue: match[0]\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tswitch (input[lastIndex]) {\n\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\tstack.push({tag: \"JSXTag\"});\n\t\t\t\t\t\tlastIndex++;\n\t\t\t\t\t\tlastSignificantToken = \"<\";\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\tvalue: \"<\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"{\":\n\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\ttag: \"InterpolationInJSX\",\n\t\t\t\t\t\t\tnesting: braces.length\n\t\t\t\t\t\t});\n\t\t\t\t\t\tlastIndex++;\n\t\t\t\t\t\tlastSignificantToken = \"?InterpolationInJSX\";\n\t\t\t\t\t\tpostfixIncDec = false;\n\t\t\t\t\t\tyield ({\n\t\t\t\t\t\t\ttype: \"JSXPunctuator\",\n\t\t\t\t\t\t\tvalue: \"{\"\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t}\n\t\tWhiteSpace.lastIndex = lastIndex;\n\t\tif (match = WhiteSpace.exec(input)) {\n\t\t\tlastIndex = WhiteSpace.lastIndex;\n\t\t\tyield ({\n\t\t\t\ttype: \"WhiteSpace\",\n\t\t\t\tvalue: match[0]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tLineTerminatorSequence.lastIndex = lastIndex;\n\t\tif (match = LineTerminatorSequence.exec(input)) {\n\t\t\tlastIndex = LineTerminatorSequence.lastIndex;\n\t\t\tpostfixIncDec = false;\n\t\t\tif (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) {\n\t\t\t\tlastSignificantToken = \"?NoLineTerminatorHere\";\n\t\t\t}\n\t\t\tyield ({\n\t\t\t\ttype: \"LineTerminatorSequence\",\n\t\t\t\tvalue: match[0]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tMultiLineComment.lastIndex = lastIndex;\n\t\tif (match = MultiLineComment.exec(input)) {\n\t\t\tlastIndex = MultiLineComment.lastIndex;\n\t\t\tif (Newline.test(match[0])) {\n\t\t\t\tpostfixIncDec = false;\n\t\t\t\tif (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) {\n\t\t\t\t\tlastSignificantToken = \"?NoLineTerminatorHere\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tyield ({\n\t\t\t\ttype: \"MultiLineComment\",\n\t\t\t\tvalue: match[0],\n\t\t\t\tclosed: match[1] !== void 0\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tSingleLineComment.lastIndex = lastIndex;\n\t\tif (match = SingleLineComment.exec(input)) {\n\t\t\tlastIndex = SingleLineComment.lastIndex;\n\t\t\tpostfixIncDec = false;\n\t\t\tyield ({\n\t\t\t\ttype: \"SingleLineComment\",\n\t\t\t\tvalue: match[0]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tfirstCodePoint = String.fromCodePoint(input.codePointAt(lastIndex));\n\t\tlastIndex += firstCodePoint.length;\n\t\tlastSignificantToken = firstCodePoint;\n\t\tpostfixIncDec = false;\n\t\tyield ({\n\t\t\ttype: mode.tag.startsWith(\"JSX\") ? \"JSXInvalid\" : \"Invalid\",\n\t\t\tvalue: firstCodePoint\n\t\t});\n\t}\n\treturn void 0;\n};\n\nvar jsTokens = /*@__PURE__*/getDefaultExportFromCjs(jsTokens_1);\n\n// src/index.ts\nvar reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\"\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\"\n ]\n}, keywords = new Set(reservedWords.keyword), reservedWordsStrictSet = new Set(reservedWords.strict), sometimesKeywords = /* @__PURE__ */ new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\nfunction isReservedWord(word) {\n return word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word) {\n return isReservedWord(word) || reservedWordsStrictSet.has(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\nvar BRACKET = /^[()[\\]{}]$/, getTokenType = function(token) {\n if (token.type === \"IdentifierName\") {\n if (isKeyword(token.value) || isStrictReservedWord(token.value) || sometimesKeywords.has(token.value))\n return \"Keyword\";\n if (token.value[0] && token.value[0] !== token.value[0].toLowerCase())\n return \"IdentifierCapitalized\";\n }\n return token.type === \"Punctuator\" && BRACKET.test(token.value) ? \"Bracket\" : token.type === \"Invalid\" && (token.value === \"@\" || token.value === \"#\") ? \"Punctuator\" : token.type;\n};\nfunction getCallableType(token) {\n if (token.type === \"IdentifierName\")\n return \"IdentifierCallable\";\n if (token.type === \"PrivateIdentifier\")\n return \"PrivateIdentifierCallable\";\n throw new Error(\"Not a callable token\");\n}\nvar colorize = (defs, type, value) => {\n let colorize2 = defs[type];\n return colorize2 ? colorize2(value) : value;\n}, highlightTokens = (defs, text, jsx) => {\n let highlighted = \"\", lastPotentialCallable = null, stackedHighlight = \"\";\n for (let token of jsTokens(text, { jsx })) {\n let type = getTokenType(token);\n if (type === \"IdentifierName\" || type === \"PrivateIdentifier\") {\n lastPotentialCallable && (highlighted += colorize(defs, getTokenType(lastPotentialCallable), lastPotentialCallable.value) + stackedHighlight, stackedHighlight = \"\"), lastPotentialCallable = token;\n continue;\n }\n if (lastPotentialCallable && (token.type === \"WhiteSpace\" || token.type === \"LineTerminatorSequence\" || token.type === \"Punctuator\" && (token.value === \"?.\" || token.value === \"!\"))) {\n stackedHighlight += colorize(defs, type, token.value);\n continue;\n }\n if (stackedHighlight && !lastPotentialCallable && (highlighted += stackedHighlight, stackedHighlight = \"\"), lastPotentialCallable) {\n let type2 = token.type === \"Punctuator\" && token.value === \"(\" ? getCallableType(lastPotentialCallable) : getTokenType(lastPotentialCallable);\n highlighted += colorize(defs, type2, lastPotentialCallable.value) + stackedHighlight, stackedHighlight = \"\", lastPotentialCallable = null;\n }\n highlighted += colorize(defs, type, token.value);\n }\n return highlighted;\n};\nfunction highlight$1(code, options = { jsx: !1, colors: {} }) {\n return code && highlightTokens(options.colors || {}, code, options.jsx);\n}\n\nfunction getDefs(c2) {\n const Invalid = (text) => c2.white(c2.bgRed(c2.bold(text)));\n return {\n Keyword: c2.magenta,\n IdentifierCapitalized: c2.yellow,\n Punctuator: c2.yellow,\n StringLiteral: c2.green,\n NoSubstitutionTemplate: c2.green,\n MultiLineComment: c2.gray,\n SingleLineComment: c2.gray,\n RegularExpressionLiteral: c2.cyan,\n NumericLiteral: c2.blue,\n TemplateHead: (text) => c2.green(text.slice(0, text.length - 2)) + c2.cyan(text.slice(-2)),\n TemplateTail: (text) => c2.cyan(text.slice(0, 1)) + c2.green(text.slice(1)),\n TemplateMiddle: (text) => c2.cyan(text.slice(0, 1)) + c2.green(text.slice(1, text.length - 2)) + c2.cyan(text.slice(-2)),\n IdentifierCallable: c2.blue,\n PrivateIdentifierCallable: (text) => `#${c2.blue(text.slice(1))}`,\n Invalid,\n JSXString: c2.green,\n JSXIdentifier: c2.yellow,\n JSXInvalid: Invalid,\n JSXPunctuator: c2.yellow\n };\n}\nfunction highlight(code, options = { jsx: false }) {\n return highlight$1(code, {\n jsx: options.jsx,\n colors: getDefs(options.colors || c)\n });\n}\n\nexport { SAFE_COLORS_SYMBOL, SAFE_TIMERS_SYMBOL, createSimpleStackTrace, getSafeTimers, highlight, lineSplitRE, offsetToLineNumber, positionToOffset, setSafeTimers, shuffle };\n","import { format, plugins } from '@vitest/pretty-format';\nimport c from 'tinyrainbow';\n\nfunction getType(value) {\n if (value === void 0) {\n return \"undefined\";\n } else if (value === null) {\n return \"null\";\n } else if (Array.isArray(value)) {\n return \"array\";\n } else if (typeof value === \"boolean\") {\n return \"boolean\";\n } else if (typeof value === \"function\") {\n return \"function\";\n } else if (typeof value === \"number\") {\n return \"number\";\n } else if (typeof value === \"string\") {\n return \"string\";\n } else if (typeof value === \"bigint\") {\n return \"bigint\";\n } else if (typeof value === \"object\") {\n if (value != null) {\n if (value.constructor === RegExp) {\n return \"regexp\";\n } else if (value.constructor === Map) {\n return \"map\";\n } else if (value.constructor === Set) {\n return \"set\";\n } else if (value.constructor === Date) {\n return \"date\";\n }\n }\n return \"object\";\n } else if (typeof value === \"symbol\") {\n return \"symbol\";\n }\n throw new Error(`value of unknown type: ${value}`);\n}\n\nconst DIFF_DELETE = -1;\nconst DIFF_INSERT = 1;\nconst DIFF_EQUAL = 0;\nclass Diff {\n 0;\n 1;\n constructor(op, text) {\n this[0] = op;\n this[1] = text;\n }\n}\nconst diff_commonPrefix = function(text1, text2) {\n if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) {\n return 0;\n }\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) === text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\nconst diff_commonSuffix = function(text1, text2) {\n if (!text1 || !text2 || text1.charAt(text1.length - 1) !== text2.charAt(text2.length - 1)) {\n return 0;\n }\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) === text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\nconst diff_commonOverlap_ = function(text1, text2) {\n const text1_length = text1.length;\n const text2_length = text2.length;\n if (text1_length === 0 || text2_length === 0) {\n return 0;\n }\n if (text1_length > text2_length) {\n text1 = text1.substring(text1_length - text2_length);\n } else if (text1_length < text2_length) {\n text2 = text2.substring(0, text1_length);\n }\n const text_length = Math.min(text1_length, text2_length);\n if (text1 === text2) {\n return text_length;\n }\n let best = 0;\n let length = 1;\n while (true) {\n const pattern = text1.substring(text_length - length);\n const found = text2.indexOf(pattern);\n if (found === -1) {\n return best;\n }\n length += found;\n if (found === 0 || text1.substring(text_length - length) === text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n};\nconst diff_cleanupSemantic = function(diffs) {\n let changes = false;\n const equalities = [];\n let equalitiesLength = 0;\n let lastEquality = null;\n let pointer = 0;\n let length_insertions1 = 0;\n let length_deletions1 = 0;\n let length_insertions2 = 0;\n let length_deletions2 = 0;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] === DIFF_EQUAL) {\n equalities[equalitiesLength++] = pointer;\n length_insertions1 = length_insertions2;\n length_deletions1 = length_deletions2;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = diffs[pointer][1];\n } else {\n if (diffs[pointer][0] === DIFF_INSERT) {\n length_insertions2 += diffs[pointer][1].length;\n } else {\n length_deletions2 += diffs[pointer][1].length;\n }\n if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(length_insertions2, length_deletions2)) {\n diffs.splice(\n equalities[equalitiesLength - 1],\n 0,\n new Diff(DIFF_DELETE, lastEquality)\n );\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--;\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n length_insertions1 = 0;\n length_deletions1 = 0;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = null;\n changes = true;\n }\n }\n pointer++;\n }\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n diff_cleanupSemanticLossless(diffs);\n pointer = 1;\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) {\n const deletion = diffs[pointer - 1][1];\n const insertion = diffs[pointer][1];\n const overlap_length1 = diff_commonOverlap_(deletion, insertion);\n const overlap_length2 = diff_commonOverlap_(insertion, deletion);\n if (overlap_length1 >= overlap_length2) {\n if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {\n diffs.splice(\n pointer,\n 0,\n new Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1))\n );\n diffs[pointer - 1][1] = deletion.substring(\n 0,\n deletion.length - overlap_length1\n );\n diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n pointer++;\n }\n } else {\n if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {\n diffs.splice(\n pointer,\n 0,\n new Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2))\n );\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] = insertion.substring(\n 0,\n insertion.length - overlap_length2\n );\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n pointer++;\n }\n }\n pointer++;\n }\n pointer++;\n }\n};\nconst nonAlphaNumericRegex_ = /[^a-z0-9]/i;\nconst whitespaceRegex_ = /\\s/;\nconst linebreakRegex_ = /[\\r\\n]/;\nconst blanklineEndRegex_ = /\\n\\r?\\n$/;\nconst blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\nfunction diff_cleanupSemanticLossless(diffs) {\n function diff_cleanupSemanticScore_(one, two) {\n if (!one || !two) {\n return 6;\n }\n const char1 = one.charAt(one.length - 1);\n const char2 = two.charAt(0);\n const nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex_);\n const nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex_);\n const whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex_);\n const whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex_);\n const lineBreak1 = whitespace1 && char1.match(linebreakRegex_);\n const lineBreak2 = whitespace2 && char2.match(linebreakRegex_);\n const blankLine1 = lineBreak1 && one.match(blanklineEndRegex_);\n const blankLine2 = lineBreak2 && two.match(blanklineStartRegex_);\n if (blankLine1 || blankLine2) {\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n return 3;\n } else if (whitespace1 || whitespace2) {\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n return 1;\n }\n return 0;\n }\n let pointer = 1;\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) {\n let equality1 = diffs[pointer - 1][1];\n let edit = diffs[pointer][1];\n let equality2 = diffs[pointer + 1][1];\n const commonOffset = diff_commonSuffix(equality1, edit);\n if (commonOffset) {\n const commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n }\n let bestEquality1 = equality1;\n let bestEdit = edit;\n let bestEquality2 = equality2;\n let bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n const score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n if (diffs[pointer - 1][1] !== bestEquality1) {\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n diffs[pointer][1] = bestEdit;\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n pointer++;\n }\n}\nfunction diff_cleanupMerge(diffs) {\n diffs.push(new Diff(DIFF_EQUAL, \"\"));\n let pointer = 0;\n let count_delete = 0;\n let count_insert = 0;\n let text_delete = \"\";\n let text_insert = \"\";\n let commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] === DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(\n 0,\n 0,\n new Diff(DIFF_EQUAL, text_insert.substring(0, commonlength))\n );\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(\n 0,\n text_insert.length - commonlength\n );\n text_delete = text_delete.substring(\n 0,\n text_delete.length - commonlength\n );\n }\n }\n pointer -= count_delete + count_insert;\n diffs.splice(pointer, count_delete + count_insert);\n if (text_delete.length) {\n diffs.splice(pointer, 0, new Diff(DIFF_DELETE, text_delete));\n pointer++;\n }\n if (text_insert.length) {\n diffs.splice(pointer, 0, new Diff(DIFF_INSERT, text_insert));\n pointer++;\n }\n pointer++;\n } else if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = \"\";\n text_insert = \"\";\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === \"\") {\n diffs.pop();\n }\n let changes = false;\n pointer = 1;\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) {\n if (diffs[pointer][1].substring(\n diffs[pointer][1].length - diffs[pointer - 1][1].length\n ) === diffs[pointer - 1][1]) {\n diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(\n 0,\n diffs[pointer][1].length - diffs[pointer - 1][1].length\n );\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1]) {\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n}\n\nconst NO_DIFF_MESSAGE = \"Compared values have no visual difference.\";\nconst SIMILAR_MESSAGE = \"Compared values serialize to the same structure.\\nPrinting internal object structure without calling `toJSON` instead.\";\n\nvar build = {};\n\nObject.defineProperty(build, '__esModule', {\n value: true\n});\nvar _default = build.default = diffSequence;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// This diff-sequences package implements the linear space variation in\n// An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers\n\n// Relationship in notation between Myers paper and this package:\n// A is a\n// N is aLength, aEnd - aStart, and so on\n// x is aIndex, aFirst, aLast, and so on\n// B is b\n// M is bLength, bEnd - bStart, and so on\n// y is bIndex, bFirst, bLast, and so on\n// Δ = N - M is negative of baDeltaLength = bLength - aLength\n// D is d\n// k is kF\n// k + Δ is kF = kR - baDeltaLength\n// V is aIndexesF or aIndexesR (see comment below about Indexes type)\n// index intervals [1, N] and [1, M] are [0, aLength) and [0, bLength)\n// starting point in forward direction (0, 0) is (-1, -1)\n// starting point in reverse direction (N + 1, M + 1) is (aLength, bLength)\n\n// The “edit graph” for sequences a and b corresponds to items:\n// in a on the horizontal axis\n// in b on the vertical axis\n//\n// Given a-coordinate of a point in a diagonal, you can compute b-coordinate.\n//\n// Forward diagonals kF:\n// zero diagonal intersects top left corner\n// positive diagonals intersect top edge\n// negative diagonals insersect left edge\n//\n// Reverse diagonals kR:\n// zero diagonal intersects bottom right corner\n// positive diagonals intersect right edge\n// negative diagonals intersect bottom edge\n\n// The graph contains a directed acyclic graph of edges:\n// horizontal: delete an item from a\n// vertical: insert an item from b\n// diagonal: common item in a and b\n//\n// The algorithm solves dual problems in the graph analogy:\n// Find longest common subsequence: path with maximum number of diagonal edges\n// Find shortest edit script: path with minimum number of non-diagonal edges\n\n// Input callback function compares items at indexes in the sequences.\n\n// Output callback function receives the number of adjacent items\n// and starting indexes of each common subsequence.\n// Either original functions or wrapped to swap indexes if graph is transposed.\n// Indexes in sequence a of last point of forward or reverse paths in graph.\n// Myers algorithm indexes by diagonal k which for negative is bad deopt in V8.\n// This package indexes by iF and iR which are greater than or equal to zero.\n// and also updates the index arrays in place to cut memory in half.\n// kF = 2 * iF - d\n// kR = d - 2 * iR\n// Division of index intervals in sequences a and b at the middle change.\n// Invariant: intervals do not have common items at the start or end.\nconst pkg = 'diff-sequences'; // for error messages\nconst NOT_YET_SET = 0; // small int instead of undefined to avoid deopt in V8\n\n// Return the number of common items that follow in forward direction.\n// The length of what Myers paper calls a “snake” in a forward path.\nconst countCommonItemsF = (aIndex, aEnd, bIndex, bEnd, isCommon) => {\n let nCommon = 0;\n while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) {\n aIndex += 1;\n bIndex += 1;\n nCommon += 1;\n }\n return nCommon;\n};\n\n// Return the number of common items that precede in reverse direction.\n// The length of what Myers paper calls a “snake” in a reverse path.\nconst countCommonItemsR = (aStart, aIndex, bStart, bIndex, isCommon) => {\n let nCommon = 0;\n while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) {\n aIndex -= 1;\n bIndex -= 1;\n nCommon += 1;\n }\n return nCommon;\n};\n\n// A simple function to extend forward paths from (d - 1) to d changes\n// when forward and reverse paths cannot yet overlap.\nconst extendPathsF = (\n d,\n aEnd,\n bEnd,\n bF,\n isCommon,\n aIndexesF,\n iMaxF // return the value because optimization might decrease it\n) => {\n // Unroll the first iteration.\n let iF = 0;\n let kF = -d; // kF = 2 * iF - d\n let aFirst = aIndexesF[iF]; // in first iteration always insert\n let aIndexPrev1 = aFirst; // prev value of [iF - 1] in next iteration\n aIndexesF[iF] += countCommonItemsF(\n aFirst + 1,\n aEnd,\n bF + aFirst - kF + 1,\n bEnd,\n isCommon\n );\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nF = d < iMaxF ? d : iMaxF;\n\n // The diagonals kF are odd when d is odd and even when d is even.\n for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) {\n // To get first point of path segment, move one change in forward direction\n // from last point of previous path segment in an adjacent diagonal.\n // In last possible iteration when iF === d and kF === d always delete.\n if (iF !== d && aIndexPrev1 < aIndexesF[iF]) {\n aFirst = aIndexesF[iF]; // vertical to insert from b\n } else {\n aFirst = aIndexPrev1 + 1; // horizontal to delete from a\n\n if (aEnd <= aFirst) {\n // Optimization: delete moved past right of graph.\n return iF - 1;\n }\n }\n\n // To get last point of path segment, move along diagonal of common items.\n aIndexPrev1 = aIndexesF[iF];\n aIndexesF[iF] =\n aFirst +\n countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon);\n }\n return iMaxF;\n};\n\n// A simple function to extend reverse paths from (d - 1) to d changes\n// when reverse and forward paths cannot yet overlap.\nconst extendPathsR = (\n d,\n aStart,\n bStart,\n bR,\n isCommon,\n aIndexesR,\n iMaxR // return the value because optimization might decrease it\n) => {\n // Unroll the first iteration.\n let iR = 0;\n let kR = d; // kR = d - 2 * iR\n let aFirst = aIndexesR[iR]; // in first iteration always insert\n let aIndexPrev1 = aFirst; // prev value of [iR - 1] in next iteration\n aIndexesR[iR] -= countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bR + aFirst - kR - 1,\n isCommon\n );\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nR = d < iMaxR ? d : iMaxR;\n\n // The diagonals kR are odd when d is odd and even when d is even.\n for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) {\n // To get first point of path segment, move one change in reverse direction\n // from last point of previous path segment in an adjacent diagonal.\n // In last possible iteration when iR === d and kR === -d always delete.\n if (iR !== d && aIndexesR[iR] < aIndexPrev1) {\n aFirst = aIndexesR[iR]; // vertical to insert from b\n } else {\n aFirst = aIndexPrev1 - 1; // horizontal to delete from a\n\n if (aFirst < aStart) {\n // Optimization: delete moved past left of graph.\n return iR - 1;\n }\n }\n\n // To get last point of path segment, move along diagonal of common items.\n aIndexPrev1 = aIndexesR[iR];\n aIndexesR[iR] =\n aFirst -\n countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bR + aFirst - kR - 1,\n isCommon\n );\n }\n return iMaxR;\n};\n\n// A complete function to extend forward paths from (d - 1) to d changes.\n// Return true if a path overlaps reverse path of (d - 1) changes in its diagonal.\nconst extendOverlappablePathsF = (\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division // update prop values if return true\n) => {\n const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n const baDeltaLength = bLength - aLength; // kF = kR - baDeltaLength\n\n // Range of diagonals in which forward and reverse paths might overlap.\n const kMinOverlapF = -baDeltaLength - (d - 1); // -(d - 1) <= kR\n const kMaxOverlapF = -baDeltaLength + (d - 1); // kR <= (d - 1)\n\n let aIndexPrev1 = NOT_YET_SET; // prev value of [iF - 1] in next iteration\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nF = d < iMaxF ? d : iMaxF;\n\n // The diagonals kF = 2 * iF - d are odd when d is odd and even when d is even.\n for (let iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) {\n // To get first point of path segment, move one change in forward direction\n // from last point of previous path segment in an adjacent diagonal.\n // In first iteration when iF === 0 and kF === -d always insert.\n // In last possible iteration when iF === d and kF === d always delete.\n const insert = iF === 0 || (iF !== d && aIndexPrev1 < aIndexesF[iF]);\n const aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1;\n const aFirst = insert\n ? aLastPrev // vertical to insert from b\n : aLastPrev + 1; // horizontal to delete from a\n\n // To get last point of path segment, move along diagonal of common items.\n const bFirst = bF + aFirst - kF;\n const nCommonF = countCommonItemsF(\n aFirst + 1,\n aEnd,\n bFirst + 1,\n bEnd,\n isCommon\n );\n const aLast = aFirst + nCommonF;\n aIndexPrev1 = aIndexesF[iF];\n aIndexesF[iF] = aLast;\n if (kMinOverlapF <= kF && kF <= kMaxOverlapF) {\n // Solve for iR of reverse path with (d - 1) changes in diagonal kF:\n // kR = kF + baDeltaLength\n // kR = (d - 1) - 2 * iR\n const iR = (d - 1 - (kF + baDeltaLength)) / 2;\n\n // If this forward path overlaps the reverse path in this diagonal,\n // then this is the middle change of the index intervals.\n if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) {\n // Unlike the Myers algorithm which finds only the middle “snake”\n // this package can find two common subsequences per division.\n // Last point of previous path segment is on an adjacent diagonal.\n const bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1);\n\n // Because of invariant that intervals preceding the middle change\n // cannot have common items at the end,\n // move in reverse direction along a diagonal of common items.\n const nCommonR = countCommonItemsR(\n aStart,\n aLastPrev,\n bStart,\n bLastPrev,\n isCommon\n );\n const aIndexPrevFirst = aLastPrev - nCommonR;\n const bIndexPrevFirst = bLastPrev - nCommonR;\n const aEndPreceding = aIndexPrevFirst + 1;\n const bEndPreceding = bIndexPrevFirst + 1;\n division.nChangePreceding = d - 1;\n if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) {\n // Optimization: number of preceding changes in forward direction\n // is equal to number of items in preceding interval,\n // therefore it cannot contain any common items.\n division.aEndPreceding = aStart;\n division.bEndPreceding = bStart;\n } else {\n division.aEndPreceding = aEndPreceding;\n division.bEndPreceding = bEndPreceding;\n }\n division.nCommonPreceding = nCommonR;\n if (nCommonR !== 0) {\n division.aCommonPreceding = aEndPreceding;\n division.bCommonPreceding = bEndPreceding;\n }\n division.nCommonFollowing = nCommonF;\n if (nCommonF !== 0) {\n division.aCommonFollowing = aFirst + 1;\n division.bCommonFollowing = bFirst + 1;\n }\n const aStartFollowing = aLast + 1;\n const bStartFollowing = bFirst + nCommonF + 1;\n division.nChangeFollowing = d - 1;\n if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n // Optimization: number of changes in reverse direction\n // is equal to number of items in following interval,\n // therefore it cannot contain any common items.\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n division.aStartFollowing = aStartFollowing;\n division.bStartFollowing = bStartFollowing;\n }\n return true;\n }\n }\n }\n return false;\n};\n\n// A complete function to extend reverse paths from (d - 1) to d changes.\n// Return true if a path overlaps forward path of d changes in its diagonal.\nconst extendOverlappablePathsR = (\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division // update prop values if return true\n) => {\n const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n const baDeltaLength = bLength - aLength; // kR = kF + baDeltaLength\n\n // Range of diagonals in which forward and reverse paths might overlap.\n const kMinOverlapR = baDeltaLength - d; // -d <= kF\n const kMaxOverlapR = baDeltaLength + d; // kF <= d\n\n let aIndexPrev1 = NOT_YET_SET; // prev value of [iR - 1] in next iteration\n\n // Optimization: skip diagonals in which paths cannot ever overlap.\n const nR = d < iMaxR ? d : iMaxR;\n\n // The diagonals kR = d - 2 * iR are odd when d is odd and even when d is even.\n for (let iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) {\n // To get first point of path segment, move one change in reverse direction\n // from last point of previous path segment in an adjacent diagonal.\n // In first iteration when iR === 0 and kR === d always insert.\n // In last possible iteration when iR === d and kR === -d always delete.\n const insert = iR === 0 || (iR !== d && aIndexesR[iR] < aIndexPrev1);\n const aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1;\n const aFirst = insert\n ? aLastPrev // vertical to insert from b\n : aLastPrev - 1; // horizontal to delete from a\n\n // To get last point of path segment, move along diagonal of common items.\n const bFirst = bR + aFirst - kR;\n const nCommonR = countCommonItemsR(\n aStart,\n aFirst - 1,\n bStart,\n bFirst - 1,\n isCommon\n );\n const aLast = aFirst - nCommonR;\n aIndexPrev1 = aIndexesR[iR];\n aIndexesR[iR] = aLast;\n if (kMinOverlapR <= kR && kR <= kMaxOverlapR) {\n // Solve for iF of forward path with d changes in diagonal kR:\n // kF = kR - baDeltaLength\n // kF = 2 * iF - d\n const iF = (d + (kR - baDeltaLength)) / 2;\n\n // If this reverse path overlaps the forward path in this diagonal,\n // then this is a middle change of the index intervals.\n if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) {\n const bLast = bFirst - nCommonR;\n division.nChangePreceding = d;\n if (d === aLast + bLast - aStart - bStart) {\n // Optimization: number of changes in reverse direction\n // is equal to number of items in preceding interval,\n // therefore it cannot contain any common items.\n division.aEndPreceding = aStart;\n division.bEndPreceding = bStart;\n } else {\n division.aEndPreceding = aLast;\n division.bEndPreceding = bLast;\n }\n division.nCommonPreceding = nCommonR;\n if (nCommonR !== 0) {\n // The last point of reverse path segment is start of common subsequence.\n division.aCommonPreceding = aLast;\n division.bCommonPreceding = bLast;\n }\n division.nChangeFollowing = d - 1;\n if (d === 1) {\n // There is no previous path segment.\n division.nCommonFollowing = 0;\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n // Unlike the Myers algorithm which finds only the middle “snake”\n // this package can find two common subsequences per division.\n // Last point of previous path segment is on an adjacent diagonal.\n const bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1);\n\n // Because of invariant that intervals following the middle change\n // cannot have common items at the start,\n // move in forward direction along a diagonal of common items.\n const nCommonF = countCommonItemsF(\n aLastPrev,\n aEnd,\n bLastPrev,\n bEnd,\n isCommon\n );\n division.nCommonFollowing = nCommonF;\n if (nCommonF !== 0) {\n // The last point of reverse path segment is start of common subsequence.\n division.aCommonFollowing = aLastPrev;\n division.bCommonFollowing = bLastPrev;\n }\n const aStartFollowing = aLastPrev + nCommonF; // aFirstPrev\n const bStartFollowing = bLastPrev + nCommonF; // bFirstPrev\n\n if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n // Optimization: number of changes in forward direction\n // is equal to number of items in following interval,\n // therefore it cannot contain any common items.\n division.aStartFollowing = aEnd;\n division.bStartFollowing = bEnd;\n } else {\n division.aStartFollowing = aStartFollowing;\n division.bStartFollowing = bStartFollowing;\n }\n }\n return true;\n }\n }\n }\n return false;\n};\n\n// Given index intervals and input function to compare items at indexes,\n// divide at the middle change.\n//\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because this function will throw the “no overlap” error.\nconst divide = (\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n aIndexesR,\n division // output\n) => {\n const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n const aLength = aEnd - aStart;\n const bLength = bEnd - bStart;\n\n // Because graph has square or portrait orientation,\n // length difference is minimum number of items to insert from b.\n // Corresponding forward and reverse diagonals in graph\n // depend on length difference of the sequences:\n // kF = kR - baDeltaLength\n // kR = kF + baDeltaLength\n const baDeltaLength = bLength - aLength;\n\n // Optimization: max diagonal in graph intersects corner of shorter side.\n let iMaxF = aLength;\n let iMaxR = aLength;\n\n // Initialize no changes yet in forward or reverse direction:\n aIndexesF[0] = aStart - 1; // at open start of interval, outside closed start\n aIndexesR[0] = aEnd; // at open end of interval\n\n if (baDeltaLength % 2 === 0) {\n // The number of changes in paths is 2 * d if length difference is even.\n const dMin = (nChange || baDeltaLength) / 2;\n const dMax = (aLength + bLength) / 2;\n for (let d = 1; d <= dMax; d += 1) {\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n if (d < dMin) {\n iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR);\n } else if (\n // If a reverse path overlaps a forward path in the same diagonal,\n // return a division of the index intervals at the middle change.\n extendOverlappablePathsR(\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division\n )\n ) {\n return;\n }\n }\n } else {\n // The number of changes in paths is 2 * d - 1 if length difference is odd.\n const dMin = ((nChange || baDeltaLength) + 1) / 2;\n const dMax = (aLength + bLength + 1) / 2;\n\n // Unroll first half iteration so loop extends the relevant pairs of paths.\n // Because of invariant that intervals have no common items at start or end,\n // and limitation not to call divide with empty intervals,\n // therefore it cannot be called if a forward path with one change\n // would overlap a reverse path with no changes, even if dMin === 1.\n let d = 1;\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n for (d += 1; d <= dMax; d += 1) {\n iMaxR = extendPathsR(\n d - 1,\n aStart,\n bStart,\n bR,\n isCommon,\n aIndexesR,\n iMaxR\n );\n if (d < dMin) {\n iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n } else if (\n // If a forward path overlaps a reverse path in the same diagonal,\n // return a division of the index intervals at the middle change.\n extendOverlappablePathsF(\n d,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n iMaxF,\n aIndexesR,\n iMaxR,\n division\n )\n ) {\n return;\n }\n }\n }\n\n /* istanbul ignore next */\n throw new Error(\n `${pkg}: no overlap aStart=${aStart} aEnd=${aEnd} bStart=${bStart} bEnd=${bEnd}`\n );\n};\n\n// Given index intervals and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence. Divide and conquer with only linear space.\n//\n// The index intervals are half open [start, end) like array slice method.\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because divide function will throw the “no overlap” error.\nconst findSubsequences = (\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division // temporary memory, not input nor output\n) => {\n if (bEnd - bStart < aEnd - aStart) {\n // Transpose graph so it has portrait instead of landscape orientation.\n // Always compare shorter to longer sequence for consistency and optimization.\n transposed = !transposed;\n if (transposed && callbacks.length === 1) {\n // Lazily wrap callback functions to swap args if graph is transposed.\n const {foundSubsequence, isCommon} = callbacks[0];\n callbacks[1] = {\n foundSubsequence: (nCommon, bCommon, aCommon) => {\n foundSubsequence(nCommon, aCommon, bCommon);\n },\n isCommon: (bIndex, aIndex) => isCommon(aIndex, bIndex)\n };\n }\n const tStart = aStart;\n const tEnd = aEnd;\n aStart = bStart;\n aEnd = bEnd;\n bStart = tStart;\n bEnd = tEnd;\n }\n const {foundSubsequence, isCommon} = callbacks[transposed ? 1 : 0];\n\n // Divide the index intervals at the middle change.\n divide(\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n isCommon,\n aIndexesF,\n aIndexesR,\n division\n );\n const {\n nChangePreceding,\n aEndPreceding,\n bEndPreceding,\n nCommonPreceding,\n aCommonPreceding,\n bCommonPreceding,\n nCommonFollowing,\n aCommonFollowing,\n bCommonFollowing,\n nChangeFollowing,\n aStartFollowing,\n bStartFollowing\n } = division;\n\n // Unless either index interval is empty, they might contain common items.\n if (aStart < aEndPreceding && bStart < bEndPreceding) {\n // Recursely find and return common subsequences preceding the division.\n findSubsequences(\n nChangePreceding,\n aStart,\n aEndPreceding,\n bStart,\n bEndPreceding,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n\n // Return common subsequences that are adjacent to the middle change.\n if (nCommonPreceding !== 0) {\n foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding);\n }\n if (nCommonFollowing !== 0) {\n foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing);\n }\n\n // Unless either index interval is empty, they might contain common items.\n if (aStartFollowing < aEnd && bStartFollowing < bEnd) {\n // Recursely find and return common subsequences following the division.\n findSubsequences(\n nChangeFollowing,\n aStartFollowing,\n aEnd,\n bStartFollowing,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n};\nconst validateLength = (name, arg) => {\n if (typeof arg !== 'number') {\n throw new TypeError(`${pkg}: ${name} typeof ${typeof arg} is not a number`);\n }\n if (!Number.isSafeInteger(arg)) {\n throw new RangeError(`${pkg}: ${name} value ${arg} is not a safe integer`);\n }\n if (arg < 0) {\n throw new RangeError(`${pkg}: ${name} value ${arg} is a negative integer`);\n }\n};\nconst validateCallback = (name, arg) => {\n const type = typeof arg;\n if (type !== 'function') {\n throw new TypeError(`${pkg}: ${name} typeof ${type} is not a function`);\n }\n};\n\n// Compare items in two sequences to find a longest common subsequence.\n// Given lengths of sequences and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence.\nfunction diffSequence(aLength, bLength, isCommon, foundSubsequence) {\n validateLength('aLength', aLength);\n validateLength('bLength', bLength);\n validateCallback('isCommon', isCommon);\n validateCallback('foundSubsequence', foundSubsequence);\n\n // Count common items from the start in the forward direction.\n const nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon);\n if (nCommonF !== 0) {\n foundSubsequence(nCommonF, 0, 0);\n }\n\n // Unless both sequences consist of common items only,\n // find common items in the half-trimmed index intervals.\n if (aLength !== nCommonF || bLength !== nCommonF) {\n // Invariant: intervals do not have common items at the start.\n // The start of an index interval is closed like array slice method.\n const aStart = nCommonF;\n const bStart = nCommonF;\n\n // Count common items from the end in the reverse direction.\n const nCommonR = countCommonItemsR(\n aStart,\n aLength - 1,\n bStart,\n bLength - 1,\n isCommon\n );\n\n // Invariant: intervals do not have common items at the end.\n // The end of an index interval is open like array slice method.\n const aEnd = aLength - nCommonR;\n const bEnd = bLength - nCommonR;\n\n // Unless one sequence consists of common items only,\n // therefore the other trimmed index interval consists of changes only,\n // find common items in the trimmed index intervals.\n const nCommonFR = nCommonF + nCommonR;\n if (aLength !== nCommonFR && bLength !== nCommonFR) {\n const nChange = 0; // number of change items is not yet known\n const transposed = false; // call the original unwrapped functions\n const callbacks = [\n {\n foundSubsequence,\n isCommon\n }\n ];\n\n // Indexes in sequence a of last points in furthest reaching paths\n // from outside the start at top left in the forward direction:\n const aIndexesF = [NOT_YET_SET];\n // from the end at bottom right in the reverse direction:\n const aIndexesR = [NOT_YET_SET];\n\n // Initialize one object as output of all calls to divide function.\n const division = {\n aCommonFollowing: NOT_YET_SET,\n aCommonPreceding: NOT_YET_SET,\n aEndPreceding: NOT_YET_SET,\n aStartFollowing: NOT_YET_SET,\n bCommonFollowing: NOT_YET_SET,\n bCommonPreceding: NOT_YET_SET,\n bEndPreceding: NOT_YET_SET,\n bStartFollowing: NOT_YET_SET,\n nChangeFollowing: NOT_YET_SET,\n nChangePreceding: NOT_YET_SET,\n nCommonFollowing: NOT_YET_SET,\n nCommonPreceding: NOT_YET_SET\n };\n\n // Find and return common subsequences in the trimmed index intervals.\n findSubsequences(\n nChange,\n aStart,\n aEnd,\n bStart,\n bEnd,\n transposed,\n callbacks,\n aIndexesF,\n aIndexesR,\n division\n );\n }\n if (nCommonR !== 0) {\n foundSubsequence(nCommonR, aEnd, bEnd);\n }\n }\n}\n\nfunction formatTrailingSpaces(line, trailingSpaceFormatter) {\n return line.replace(/\\s+$/, (match) => trailingSpaceFormatter(match));\n}\nfunction printDiffLine(line, isFirstOrLast, color, indicator, trailingSpaceFormatter, emptyFirstOrLastLinePlaceholder) {\n return line.length !== 0 ? color(\n `${indicator} ${formatTrailingSpaces(line, trailingSpaceFormatter)}`\n ) : indicator !== \" \" ? color(indicator) : isFirstOrLast && emptyFirstOrLastLinePlaceholder.length !== 0 ? color(`${indicator} ${emptyFirstOrLastLinePlaceholder}`) : \"\";\n}\nfunction printDeleteLine(line, isFirstOrLast, {\n aColor,\n aIndicator,\n changeLineTrailingSpaceColor,\n emptyFirstOrLastLinePlaceholder\n}) {\n return printDiffLine(\n line,\n isFirstOrLast,\n aColor,\n aIndicator,\n changeLineTrailingSpaceColor,\n emptyFirstOrLastLinePlaceholder\n );\n}\nfunction printInsertLine(line, isFirstOrLast, {\n bColor,\n bIndicator,\n changeLineTrailingSpaceColor,\n emptyFirstOrLastLinePlaceholder\n}) {\n return printDiffLine(\n line,\n isFirstOrLast,\n bColor,\n bIndicator,\n changeLineTrailingSpaceColor,\n emptyFirstOrLastLinePlaceholder\n );\n}\nfunction printCommonLine(line, isFirstOrLast, {\n commonColor,\n commonIndicator,\n commonLineTrailingSpaceColor,\n emptyFirstOrLastLinePlaceholder\n}) {\n return printDiffLine(\n line,\n isFirstOrLast,\n commonColor,\n commonIndicator,\n commonLineTrailingSpaceColor,\n emptyFirstOrLastLinePlaceholder\n );\n}\nfunction createPatchMark(aStart, aEnd, bStart, bEnd, { patchColor }) {\n return patchColor(\n `@@ -${aStart + 1},${aEnd - aStart} +${bStart + 1},${bEnd - bStart} @@`\n );\n}\nfunction joinAlignedDiffsNoExpand(diffs, options) {\n const iLength = diffs.length;\n const nContextLines = options.contextLines;\n const nContextLines2 = nContextLines + nContextLines;\n let jLength = iLength;\n let hasExcessAtStartOrEnd = false;\n let nExcessesBetweenChanges = 0;\n let i = 0;\n while (i !== iLength) {\n const iStart = i;\n while (i !== iLength && diffs[i][0] === DIFF_EQUAL) {\n i += 1;\n }\n if (iStart !== i) {\n if (iStart === 0) {\n if (i > nContextLines) {\n jLength -= i - nContextLines;\n hasExcessAtStartOrEnd = true;\n }\n } else if (i === iLength) {\n const n = i - iStart;\n if (n > nContextLines) {\n jLength -= n - nContextLines;\n hasExcessAtStartOrEnd = true;\n }\n } else {\n const n = i - iStart;\n if (n > nContextLines2) {\n jLength -= n - nContextLines2;\n nExcessesBetweenChanges += 1;\n }\n }\n }\n while (i !== iLength && diffs[i][0] !== DIFF_EQUAL) {\n i += 1;\n }\n }\n const hasPatch = nExcessesBetweenChanges !== 0 || hasExcessAtStartOrEnd;\n if (nExcessesBetweenChanges !== 0) {\n jLength += nExcessesBetweenChanges + 1;\n } else if (hasExcessAtStartOrEnd) {\n jLength += 1;\n }\n const jLast = jLength - 1;\n const lines = [];\n let jPatchMark = 0;\n if (hasPatch) {\n lines.push(\"\");\n }\n let aStart = 0;\n let bStart = 0;\n let aEnd = 0;\n let bEnd = 0;\n const pushCommonLine = (line) => {\n const j = lines.length;\n lines.push(printCommonLine(line, j === 0 || j === jLast, options));\n aEnd += 1;\n bEnd += 1;\n };\n const pushDeleteLine = (line) => {\n const j = lines.length;\n lines.push(printDeleteLine(line, j === 0 || j === jLast, options));\n aEnd += 1;\n };\n const pushInsertLine = (line) => {\n const j = lines.length;\n lines.push(printInsertLine(line, j === 0 || j === jLast, options));\n bEnd += 1;\n };\n i = 0;\n while (i !== iLength) {\n let iStart = i;\n while (i !== iLength && diffs[i][0] === DIFF_EQUAL) {\n i += 1;\n }\n if (iStart !== i) {\n if (iStart === 0) {\n if (i > nContextLines) {\n iStart = i - nContextLines;\n aStart = iStart;\n bStart = iStart;\n aEnd = aStart;\n bEnd = bStart;\n }\n for (let iCommon = iStart; iCommon !== i; iCommon += 1) {\n pushCommonLine(diffs[iCommon][1]);\n }\n } else if (i === iLength) {\n const iEnd = i - iStart > nContextLines ? iStart + nContextLines : i;\n for (let iCommon = iStart; iCommon !== iEnd; iCommon += 1) {\n pushCommonLine(diffs[iCommon][1]);\n }\n } else {\n const nCommon = i - iStart;\n if (nCommon > nContextLines2) {\n const iEnd = iStart + nContextLines;\n for (let iCommon = iStart; iCommon !== iEnd; iCommon += 1) {\n pushCommonLine(diffs[iCommon][1]);\n }\n lines[jPatchMark] = createPatchMark(\n aStart,\n aEnd,\n bStart,\n bEnd,\n options\n );\n jPatchMark = lines.length;\n lines.push(\"\");\n const nOmit = nCommon - nContextLines2;\n aStart = aEnd + nOmit;\n bStart = bEnd + nOmit;\n aEnd = aStart;\n bEnd = bStart;\n for (let iCommon = i - nContextLines; iCommon !== i; iCommon += 1) {\n pushCommonLine(diffs[iCommon][1]);\n }\n } else {\n for (let iCommon = iStart; iCommon !== i; iCommon += 1) {\n pushCommonLine(diffs[iCommon][1]);\n }\n }\n }\n }\n while (i !== iLength && diffs[i][0] === DIFF_DELETE) {\n pushDeleteLine(diffs[i][1]);\n i += 1;\n }\n while (i !== iLength && diffs[i][0] === DIFF_INSERT) {\n pushInsertLine(diffs[i][1]);\n i += 1;\n }\n }\n if (hasPatch) {\n lines[jPatchMark] = createPatchMark(aStart, aEnd, bStart, bEnd, options);\n }\n return lines.join(\"\\n\");\n}\nfunction joinAlignedDiffsExpand(diffs, options) {\n return diffs.map((diff, i, diffs2) => {\n const line = diff[1];\n const isFirstOrLast = i === 0 || i === diffs2.length - 1;\n switch (diff[0]) {\n case DIFF_DELETE:\n return printDeleteLine(line, isFirstOrLast, options);\n case DIFF_INSERT:\n return printInsertLine(line, isFirstOrLast, options);\n default:\n return printCommonLine(line, isFirstOrLast, options);\n }\n }).join(\"\\n\");\n}\n\nconst noColor = (string) => string;\nconst DIFF_CONTEXT_DEFAULT = 5;\nconst DIFF_TRUNCATE_THRESHOLD_DEFAULT = 0;\nfunction getDefaultOptions() {\n return {\n aAnnotation: \"Expected\",\n aColor: c.green,\n aIndicator: \"-\",\n bAnnotation: \"Received\",\n bColor: c.red,\n bIndicator: \"+\",\n changeColor: c.inverse,\n changeLineTrailingSpaceColor: noColor,\n commonColor: c.dim,\n commonIndicator: \" \",\n commonLineTrailingSpaceColor: noColor,\n compareKeys: void 0,\n contextLines: DIFF_CONTEXT_DEFAULT,\n emptyFirstOrLastLinePlaceholder: \"\",\n expand: true,\n includeChangeCounts: false,\n omitAnnotationLines: false,\n patchColor: c.yellow,\n truncateThreshold: DIFF_TRUNCATE_THRESHOLD_DEFAULT,\n truncateAnnotation: \"... Diff result is truncated\",\n truncateAnnotationColor: noColor\n };\n}\nfunction getCompareKeys(compareKeys) {\n return compareKeys && typeof compareKeys === \"function\" ? compareKeys : void 0;\n}\nfunction getContextLines(contextLines) {\n return typeof contextLines === \"number\" && Number.isSafeInteger(contextLines) && contextLines >= 0 ? contextLines : DIFF_CONTEXT_DEFAULT;\n}\nfunction normalizeDiffOptions(options = {}) {\n return {\n ...getDefaultOptions(),\n ...options,\n compareKeys: getCompareKeys(options.compareKeys),\n contextLines: getContextLines(options.contextLines)\n };\n}\n\nfunction isEmptyString(lines) {\n return lines.length === 1 && lines[0].length === 0;\n}\nfunction countChanges(diffs) {\n let a = 0;\n let b = 0;\n diffs.forEach((diff) => {\n switch (diff[0]) {\n case DIFF_DELETE:\n a += 1;\n break;\n case DIFF_INSERT:\n b += 1;\n break;\n }\n });\n return { a, b };\n}\nfunction printAnnotation({\n aAnnotation,\n aColor,\n aIndicator,\n bAnnotation,\n bColor,\n bIndicator,\n includeChangeCounts,\n omitAnnotationLines\n}, changeCounts) {\n if (omitAnnotationLines) {\n return \"\";\n }\n let aRest = \"\";\n let bRest = \"\";\n if (includeChangeCounts) {\n const aCount = String(changeCounts.a);\n const bCount = String(changeCounts.b);\n const baAnnotationLengthDiff = bAnnotation.length - aAnnotation.length;\n const aAnnotationPadding = \" \".repeat(Math.max(0, baAnnotationLengthDiff));\n const bAnnotationPadding = \" \".repeat(Math.max(0, -baAnnotationLengthDiff));\n const baCountLengthDiff = bCount.length - aCount.length;\n const aCountPadding = \" \".repeat(Math.max(0, baCountLengthDiff));\n const bCountPadding = \" \".repeat(Math.max(0, -baCountLengthDiff));\n aRest = `${aAnnotationPadding} ${aIndicator} ${aCountPadding}${aCount}`;\n bRest = `${bAnnotationPadding} ${bIndicator} ${bCountPadding}${bCount}`;\n }\n const a = `${aIndicator} ${aAnnotation}${aRest}`;\n const b = `${bIndicator} ${bAnnotation}${bRest}`;\n return `${aColor(a)}\n${bColor(b)}\n\n`;\n}\nfunction printDiffLines(diffs, truncated, options) {\n return printAnnotation(options, countChanges(diffs)) + (options.expand ? joinAlignedDiffsExpand(diffs, options) : joinAlignedDiffsNoExpand(diffs, options)) + (truncated ? options.truncateAnnotationColor(`\n${options.truncateAnnotation}`) : \"\");\n}\nfunction diffLinesUnified(aLines, bLines, options) {\n const normalizedOptions = normalizeDiffOptions(options);\n const [diffs, truncated] = diffLinesRaw(\n isEmptyString(aLines) ? [] : aLines,\n isEmptyString(bLines) ? [] : bLines,\n normalizedOptions\n );\n return printDiffLines(diffs, truncated, normalizedOptions);\n}\nfunction diffLinesUnified2(aLinesDisplay, bLinesDisplay, aLinesCompare, bLinesCompare, options) {\n if (isEmptyString(aLinesDisplay) && isEmptyString(aLinesCompare)) {\n aLinesDisplay = [];\n aLinesCompare = [];\n }\n if (isEmptyString(bLinesDisplay) && isEmptyString(bLinesCompare)) {\n bLinesDisplay = [];\n bLinesCompare = [];\n }\n if (aLinesDisplay.length !== aLinesCompare.length || bLinesDisplay.length !== bLinesCompare.length) {\n return diffLinesUnified(aLinesDisplay, bLinesDisplay, options);\n }\n const [diffs, truncated] = diffLinesRaw(\n aLinesCompare,\n bLinesCompare,\n options\n );\n let aIndex = 0;\n let bIndex = 0;\n diffs.forEach((diff) => {\n switch (diff[0]) {\n case DIFF_DELETE:\n diff[1] = aLinesDisplay[aIndex];\n aIndex += 1;\n break;\n case DIFF_INSERT:\n diff[1] = bLinesDisplay[bIndex];\n bIndex += 1;\n break;\n default:\n diff[1] = bLinesDisplay[bIndex];\n aIndex += 1;\n bIndex += 1;\n }\n });\n return printDiffLines(diffs, truncated, normalizeDiffOptions(options));\n}\nfunction diffLinesRaw(aLines, bLines, options) {\n const truncate = (options == null ? void 0 : options.truncateThreshold) ?? false;\n const truncateThreshold = Math.max(\n Math.floor((options == null ? void 0 : options.truncateThreshold) ?? 0),\n 0\n );\n const aLength = truncate ? Math.min(aLines.length, truncateThreshold) : aLines.length;\n const bLength = truncate ? Math.min(bLines.length, truncateThreshold) : bLines.length;\n const truncated = aLength !== aLines.length || bLength !== bLines.length;\n const isCommon = (aIndex2, bIndex2) => aLines[aIndex2] === bLines[bIndex2];\n const diffs = [];\n let aIndex = 0;\n let bIndex = 0;\n const foundSubsequence = (nCommon, aCommon, bCommon) => {\n for (; aIndex !== aCommon; aIndex += 1) {\n diffs.push(new Diff(DIFF_DELETE, aLines[aIndex]));\n }\n for (; bIndex !== bCommon; bIndex += 1) {\n diffs.push(new Diff(DIFF_INSERT, bLines[bIndex]));\n }\n for (; nCommon !== 0; nCommon -= 1, aIndex += 1, bIndex += 1) {\n diffs.push(new Diff(DIFF_EQUAL, bLines[bIndex]));\n }\n };\n _default(aLength, bLength, isCommon, foundSubsequence);\n for (; aIndex !== aLength; aIndex += 1) {\n diffs.push(new Diff(DIFF_DELETE, aLines[aIndex]));\n }\n for (; bIndex !== bLength; bIndex += 1) {\n diffs.push(new Diff(DIFF_INSERT, bLines[bIndex]));\n }\n return [diffs, truncated];\n}\n\nfunction getNewLineSymbol(string) {\n return string.includes(\"\\r\\n\") ? \"\\r\\n\" : \"\\n\";\n}\nfunction diffStrings(a, b, options) {\n const truncate = (options == null ? void 0 : options.truncateThreshold) ?? false;\n const truncateThreshold = Math.max(\n Math.floor((options == null ? void 0 : options.truncateThreshold) ?? 0),\n 0\n );\n let aLength = a.length;\n let bLength = b.length;\n if (truncate) {\n const aMultipleLines = a.includes(\"\\n\");\n const bMultipleLines = b.includes(\"\\n\");\n const aNewLineSymbol = getNewLineSymbol(a);\n const bNewLineSymbol = getNewLineSymbol(b);\n const _a = aMultipleLines ? `${a.split(aNewLineSymbol, truncateThreshold).join(aNewLineSymbol)}\n` : a;\n const _b = bMultipleLines ? `${b.split(bNewLineSymbol, truncateThreshold).join(bNewLineSymbol)}\n` : b;\n aLength = _a.length;\n bLength = _b.length;\n }\n const truncated = aLength !== a.length || bLength !== b.length;\n const isCommon = (aIndex2, bIndex2) => a[aIndex2] === b[bIndex2];\n let aIndex = 0;\n let bIndex = 0;\n const diffs = [];\n const foundSubsequence = (nCommon, aCommon, bCommon) => {\n if (aIndex !== aCommon) {\n diffs.push(new Diff(DIFF_DELETE, a.slice(aIndex, aCommon)));\n }\n if (bIndex !== bCommon) {\n diffs.push(new Diff(DIFF_INSERT, b.slice(bIndex, bCommon)));\n }\n aIndex = aCommon + nCommon;\n bIndex = bCommon + nCommon;\n diffs.push(new Diff(DIFF_EQUAL, b.slice(bCommon, bIndex)));\n };\n _default(aLength, bLength, isCommon, foundSubsequence);\n if (aIndex !== aLength) {\n diffs.push(new Diff(DIFF_DELETE, a.slice(aIndex)));\n }\n if (bIndex !== bLength) {\n diffs.push(new Diff(DIFF_INSERT, b.slice(bIndex)));\n }\n return [diffs, truncated];\n}\n\nfunction concatenateRelevantDiffs(op, diffs, changeColor) {\n return diffs.reduce(\n (reduced, diff) => reduced + (diff[0] === DIFF_EQUAL ? diff[1] : diff[0] === op && diff[1].length !== 0 ? changeColor(diff[1]) : \"\"),\n \"\"\n );\n}\nclass ChangeBuffer {\n op;\n line;\n // incomplete line\n lines;\n // complete lines\n changeColor;\n constructor(op, changeColor) {\n this.op = op;\n this.line = [];\n this.lines = [];\n this.changeColor = changeColor;\n }\n pushSubstring(substring) {\n this.pushDiff(new Diff(this.op, substring));\n }\n pushLine() {\n this.lines.push(\n this.line.length !== 1 ? new Diff(\n this.op,\n concatenateRelevantDiffs(this.op, this.line, this.changeColor)\n ) : this.line[0][0] === this.op ? this.line[0] : new Diff(this.op, this.line[0][1])\n // was common diff\n );\n this.line.length = 0;\n }\n isLineEmpty() {\n return this.line.length === 0;\n }\n // Minor input to buffer.\n pushDiff(diff) {\n this.line.push(diff);\n }\n // Main input to buffer.\n align(diff) {\n const string = diff[1];\n if (string.includes(\"\\n\")) {\n const substrings = string.split(\"\\n\");\n const iLast = substrings.length - 1;\n substrings.forEach((substring, i) => {\n if (i < iLast) {\n this.pushSubstring(substring);\n this.pushLine();\n } else if (substring.length !== 0) {\n this.pushSubstring(substring);\n }\n });\n } else {\n this.pushDiff(diff);\n }\n }\n // Output from buffer.\n moveLinesTo(lines) {\n if (!this.isLineEmpty()) {\n this.pushLine();\n }\n lines.push(...this.lines);\n this.lines.length = 0;\n }\n}\nclass CommonBuffer {\n deleteBuffer;\n insertBuffer;\n lines;\n constructor(deleteBuffer, insertBuffer) {\n this.deleteBuffer = deleteBuffer;\n this.insertBuffer = insertBuffer;\n this.lines = [];\n }\n pushDiffCommonLine(diff) {\n this.lines.push(diff);\n }\n pushDiffChangeLines(diff) {\n const isDiffEmpty = diff[1].length === 0;\n if (!isDiffEmpty || this.deleteBuffer.isLineEmpty()) {\n this.deleteBuffer.pushDiff(diff);\n }\n if (!isDiffEmpty || this.insertBuffer.isLineEmpty()) {\n this.insertBuffer.pushDiff(diff);\n }\n }\n flushChangeLines() {\n this.deleteBuffer.moveLinesTo(this.lines);\n this.insertBuffer.moveLinesTo(this.lines);\n }\n // Input to buffer.\n align(diff) {\n const op = diff[0];\n const string = diff[1];\n if (string.includes(\"\\n\")) {\n const substrings = string.split(\"\\n\");\n const iLast = substrings.length - 1;\n substrings.forEach((substring, i) => {\n if (i === 0) {\n const subdiff = new Diff(op, substring);\n if (this.deleteBuffer.isLineEmpty() && this.insertBuffer.isLineEmpty()) {\n this.flushChangeLines();\n this.pushDiffCommonLine(subdiff);\n } else {\n this.pushDiffChangeLines(subdiff);\n this.flushChangeLines();\n }\n } else if (i < iLast) {\n this.pushDiffCommonLine(new Diff(op, substring));\n } else if (substring.length !== 0) {\n this.pushDiffChangeLines(new Diff(op, substring));\n }\n });\n } else {\n this.pushDiffChangeLines(diff);\n }\n }\n // Output from buffer.\n getLines() {\n this.flushChangeLines();\n return this.lines;\n }\n}\nfunction getAlignedDiffs(diffs, changeColor) {\n const deleteBuffer = new ChangeBuffer(DIFF_DELETE, changeColor);\n const insertBuffer = new ChangeBuffer(DIFF_INSERT, changeColor);\n const commonBuffer = new CommonBuffer(deleteBuffer, insertBuffer);\n diffs.forEach((diff) => {\n switch (diff[0]) {\n case DIFF_DELETE:\n deleteBuffer.align(diff);\n break;\n case DIFF_INSERT:\n insertBuffer.align(diff);\n break;\n default:\n commonBuffer.align(diff);\n }\n });\n return commonBuffer.getLines();\n}\n\nfunction hasCommonDiff(diffs, isMultiline) {\n if (isMultiline) {\n const iLast = diffs.length - 1;\n return diffs.some(\n (diff, i) => diff[0] === DIFF_EQUAL && (i !== iLast || diff[1] !== \"\\n\")\n );\n }\n return diffs.some((diff) => diff[0] === DIFF_EQUAL);\n}\nfunction diffStringsUnified(a, b, options) {\n if (a !== b && a.length !== 0 && b.length !== 0) {\n const isMultiline = a.includes(\"\\n\") || b.includes(\"\\n\");\n const [diffs, truncated] = diffStringsRaw(\n isMultiline ? `${a}\n` : a,\n isMultiline ? `${b}\n` : b,\n true,\n // cleanupSemantic\n options\n );\n if (hasCommonDiff(diffs, isMultiline)) {\n const optionsNormalized = normalizeDiffOptions(options);\n const lines = getAlignedDiffs(diffs, optionsNormalized.changeColor);\n return printDiffLines(lines, truncated, optionsNormalized);\n }\n }\n return diffLinesUnified(a.split(\"\\n\"), b.split(\"\\n\"), options);\n}\nfunction diffStringsRaw(a, b, cleanup, options) {\n const [diffs, truncated] = diffStrings(a, b, options);\n if (cleanup) {\n diff_cleanupSemantic(diffs);\n }\n return [diffs, truncated];\n}\n\nfunction getCommonMessage(message, options) {\n const { commonColor } = normalizeDiffOptions(options);\n return commonColor(message);\n}\nconst {\n AsymmetricMatcher,\n DOMCollection,\n DOMElement,\n Immutable,\n ReactElement,\n ReactTestComponent\n} = plugins;\nconst PLUGINS = [\n ReactTestComponent,\n ReactElement,\n DOMElement,\n DOMCollection,\n Immutable,\n AsymmetricMatcher\n];\nconst FORMAT_OPTIONS = {\n plugins: PLUGINS\n};\nconst FALLBACK_FORMAT_OPTIONS = {\n callToJSON: false,\n maxDepth: 10,\n plugins: PLUGINS\n};\nfunction diff(a, b, options) {\n if (Object.is(a, b)) {\n return \"\";\n }\n const aType = getType(a);\n let expectedType = aType;\n let omitDifference = false;\n if (aType === \"object\" && typeof a.asymmetricMatch === \"function\") {\n if (a.$$typeof !== Symbol.for(\"jest.asymmetricMatcher\")) {\n return null;\n }\n if (typeof a.getExpectedType !== \"function\") {\n return null;\n }\n expectedType = a.getExpectedType();\n omitDifference = expectedType === \"string\";\n }\n if (expectedType !== getType(b)) {\n const { aAnnotation, aColor, aIndicator, bAnnotation, bColor, bIndicator } = normalizeDiffOptions(options);\n const formatOptions = getFormatOptions(FALLBACK_FORMAT_OPTIONS, options);\n const aDisplay = format(a, formatOptions);\n const bDisplay = format(b, formatOptions);\n const aDiff = `${aColor(`${aIndicator} ${aAnnotation}:`)} \n${aDisplay}`;\n const bDiff = `${bColor(`${bIndicator} ${bAnnotation}:`)} \n${bDisplay}`;\n return `${aDiff}\n\n${bDiff}`;\n }\n if (omitDifference) {\n return null;\n }\n switch (aType) {\n case \"string\":\n return diffLinesUnified(a.split(\"\\n\"), b.split(\"\\n\"), options);\n case \"boolean\":\n case \"number\":\n return comparePrimitive(a, b, options);\n case \"map\":\n return compareObjects(sortMap(a), sortMap(b), options);\n case \"set\":\n return compareObjects(sortSet(a), sortSet(b), options);\n default:\n return compareObjects(a, b, options);\n }\n}\nfunction comparePrimitive(a, b, options) {\n const aFormat = format(a, FORMAT_OPTIONS);\n const bFormat = format(b, FORMAT_OPTIONS);\n return aFormat === bFormat ? \"\" : diffLinesUnified(aFormat.split(\"\\n\"), bFormat.split(\"\\n\"), options);\n}\nfunction sortMap(map) {\n return new Map(Array.from(map.entries()).sort());\n}\nfunction sortSet(set) {\n return new Set(Array.from(set.values()).sort());\n}\nfunction compareObjects(a, b, options) {\n let difference;\n let hasThrown = false;\n try {\n const formatOptions = getFormatOptions(FORMAT_OPTIONS, options);\n difference = getObjectsDifference(a, b, formatOptions, options);\n } catch {\n hasThrown = true;\n }\n const noDiffMessage = getCommonMessage(NO_DIFF_MESSAGE, options);\n if (difference === void 0 || difference === noDiffMessage) {\n const formatOptions = getFormatOptions(FALLBACK_FORMAT_OPTIONS, options);\n difference = getObjectsDifference(a, b, formatOptions, options);\n if (difference !== noDiffMessage && !hasThrown) {\n difference = `${getCommonMessage(\n SIMILAR_MESSAGE,\n options\n )}\n\n${difference}`;\n }\n }\n return difference;\n}\nfunction getFormatOptions(formatOptions, options) {\n const { compareKeys } = normalizeDiffOptions(options);\n return {\n ...formatOptions,\n compareKeys\n };\n}\nfunction getObjectsDifference(a, b, formatOptions, options) {\n const formatOptionsZeroIndent = { ...formatOptions, indent: 0 };\n const aCompare = format(a, formatOptionsZeroIndent);\n const bCompare = format(b, formatOptionsZeroIndent);\n if (aCompare === bCompare) {\n return getCommonMessage(NO_DIFF_MESSAGE, options);\n } else {\n const aDisplay = format(a, formatOptions);\n const bDisplay = format(b, formatOptions);\n return diffLinesUnified2(\n aDisplay.split(\"\\n\"),\n bDisplay.split(\"\\n\"),\n aCompare.split(\"\\n\"),\n bCompare.split(\"\\n\"),\n options\n );\n }\n}\n\nexport { DIFF_DELETE, DIFF_EQUAL, DIFF_INSERT, Diff, diff, diffLinesRaw, diffLinesUnified, diffLinesUnified2, diffStringsRaw, diffStringsUnified };\n","import { diff } from './diff.js';\nimport { f as format, s as stringify } from './chunk-display.js';\nimport { deepClone, getOwnProperties, getType } from './helpers.js';\nimport '@vitest/pretty-format';\nimport 'tinyrainbow';\nimport 'loupe';\n\nconst IS_RECORD_SYMBOL = \"@@__IMMUTABLE_RECORD__@@\";\nconst IS_COLLECTION_SYMBOL = \"@@__IMMUTABLE_ITERABLE__@@\";\nfunction isImmutable(v) {\n return v && (v[IS_COLLECTION_SYMBOL] || v[IS_RECORD_SYMBOL]);\n}\nconst OBJECT_PROTO = Object.getPrototypeOf({});\nfunction getUnserializableMessage(err) {\n if (err instanceof Error) {\n return `<unserializable>: ${err.message}`;\n }\n if (typeof err === \"string\") {\n return `<unserializable>: ${err}`;\n }\n return \"<unserializable>\";\n}\nfunction serializeError(val, seen = /* @__PURE__ */ new WeakMap()) {\n if (!val || typeof val === \"string\") {\n return val;\n }\n if (typeof val === \"function\") {\n return `Function<${val.name || \"anonymous\"}>`;\n }\n if (typeof val === \"symbol\") {\n return val.toString();\n }\n if (typeof val !== \"object\") {\n return val;\n }\n if (isImmutable(val)) {\n return serializeError(val.toJSON(), seen);\n }\n if (val instanceof Promise || val.constructor && val.constructor.prototype === \"AsyncFunction\") {\n return \"Promise\";\n }\n if (typeof Element !== \"undefined\" && val instanceof Element) {\n return val.tagName;\n }\n if (typeof val.asymmetricMatch === \"function\") {\n return `${val.toString()} ${format(val.sample)}`;\n }\n if (typeof val.toJSON === \"function\") {\n return serializeError(val.toJSON(), seen);\n }\n if (seen.has(val)) {\n return seen.get(val);\n }\n if (Array.isArray(val)) {\n const clone = new Array(val.length);\n seen.set(val, clone);\n val.forEach((e, i) => {\n try {\n clone[i] = serializeError(e, seen);\n } catch (err) {\n clone[i] = getUnserializableMessage(err);\n }\n });\n return clone;\n } else {\n const clone = /* @__PURE__ */ Object.create(null);\n seen.set(val, clone);\n let obj = val;\n while (obj && obj !== OBJECT_PROTO) {\n Object.getOwnPropertyNames(obj).forEach((key) => {\n if (key in clone) {\n return;\n }\n try {\n clone[key] = serializeError(val[key], seen);\n } catch (err) {\n delete clone[key];\n clone[key] = getUnserializableMessage(err);\n }\n });\n obj = Object.getPrototypeOf(obj);\n }\n return clone;\n }\n}\nfunction normalizeErrorMessage(message) {\n return message.replace(/__(vite_ssr_import|vi_import)_\\d+__\\./g, \"\");\n}\nfunction processError(err, diffOptions, seen = /* @__PURE__ */ new WeakSet()) {\n if (!err || typeof err !== \"object\") {\n return { message: err };\n }\n if (err.stack) {\n err.stackStr = String(err.stack);\n }\n if (err.name) {\n err.nameStr = String(err.name);\n }\n if (err.showDiff || err.showDiff === void 0 && err.expected !== void 0 && err.actual !== void 0) {\n const clonedActual = deepClone(err.actual, { forceWritable: true });\n const clonedExpected = deepClone(err.expected, { forceWritable: true });\n const { replacedActual, replacedExpected } = replaceAsymmetricMatcher(\n clonedActual,\n clonedExpected\n );\n err.diff = diff(replacedExpected, replacedActual, {\n ...diffOptions,\n ...err.diffOptions\n });\n }\n if (typeof err.expected !== \"string\") {\n err.expected = stringify(err.expected, 10);\n }\n if (typeof err.actual !== \"string\") {\n err.actual = stringify(err.actual, 10);\n }\n try {\n if (typeof err.message === \"string\") {\n err.message = normalizeErrorMessage(err.message);\n }\n } catch {\n }\n try {\n if (!seen.has(err) && typeof err.cause === \"object\") {\n seen.add(err);\n err.cause = processError(err.cause, diffOptions, seen);\n }\n } catch {\n }\n try {\n return serializeError(err);\n } catch (e) {\n return serializeError(\n new Error(\n `Failed to fully serialize error: ${e == null ? void 0 : e.message}\nInner error message: ${err == null ? void 0 : err.message}`\n )\n );\n }\n}\nfunction isAsymmetricMatcher(data) {\n const type = getType(data);\n return type === \"Object\" && typeof data.asymmetricMatch === \"function\";\n}\nfunction isReplaceable(obj1, obj2) {\n const obj1Type = getType(obj1);\n const obj2Type = getType(obj2);\n return obj1Type === obj2Type && (obj1Type === \"Object\" || obj1Type === \"Array\");\n}\nfunction replaceAsymmetricMatcher(actual, expected, actualReplaced = /* @__PURE__ */ new WeakSet(), expectedReplaced = /* @__PURE__ */ new WeakSet()) {\n if (!isReplaceable(actual, expected)) {\n return { replacedActual: actual, replacedExpected: expected };\n }\n if (actualReplaced.has(actual) || expectedReplaced.has(expected)) {\n return { replacedActual: actual, replacedExpected: expected };\n }\n actualReplaced.add(actual);\n expectedReplaced.add(expected);\n getOwnProperties(expected).forEach((key) => {\n const expectedValue = expected[key];\n const actualValue = actual[key];\n if (isAsymmetricMatcher(expectedValue)) {\n if (expectedValue.asymmetricMatch(actualValue)) {\n actual[key] = expectedValue;\n }\n } else if (isAsymmetricMatcher(actualValue)) {\n if (actualValue.asymmetricMatch(expectedValue)) {\n expected[key] = actualValue;\n }\n } else if (isReplaceable(actualValue, expectedValue)) {\n const replaced = replaceAsymmetricMatcher(\n actualValue,\n expectedValue,\n actualReplaced,\n expectedReplaced\n );\n actual[key] = replaced.replacedActual;\n expected[key] = replaced.replacedExpected;\n }\n });\n return {\n replacedActual: actual,\n replacedExpected: expected\n };\n}\n\nexport { processError, replaceAsymmetricMatcher, serializeError };\n","const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\\//;\nfunction normalizeWindowsPath(input = \"\") {\n if (!input) {\n return input;\n }\n return input.replace(/\\\\/g, \"/\").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());\n}\n\nconst _UNC_REGEX = /^[/\\\\]{2}/;\nconst _IS_ABSOLUTE_RE = /^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/;\nconst _DRIVE_LETTER_RE = /^[A-Za-z]:$/;\nconst _ROOT_FOLDER_RE = /^\\/([A-Za-z]:)?$/;\nconst sep = \"/\";\nconst delimiter = \":\";\nconst normalize = function(path) {\n if (path.length === 0) {\n return \".\";\n }\n path = normalizeWindowsPath(path);\n const isUNCPath = path.match(_UNC_REGEX);\n const isPathAbsolute = isAbsolute(path);\n const trailingSeparator = path[path.length - 1] === \"/\";\n path = normalizeString(path, !isPathAbsolute);\n if (path.length === 0) {\n if (isPathAbsolute) {\n return \"/\";\n }\n return trailingSeparator ? \"./\" : \".\";\n }\n if (trailingSeparator) {\n path += \"/\";\n }\n if (_DRIVE_LETTER_RE.test(path)) {\n path += \"/\";\n }\n if (isUNCPath) {\n if (!isPathAbsolute) {\n return `//./${path}`;\n }\n return `//${path}`;\n }\n return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;\n};\nconst join = function(...arguments_) {\n if (arguments_.length === 0) {\n return \".\";\n }\n let joined;\n for (const argument of arguments_) {\n if (argument && argument.length > 0) {\n if (joined === void 0) {\n joined = argument;\n } else {\n joined += `/${argument}`;\n }\n }\n }\n if (joined === void 0) {\n return \".\";\n }\n return normalize(joined.replace(/\\/\\/+/g, \"/\"));\n};\nfunction cwd() {\n if (typeof process !== \"undefined\" && typeof process.cwd === \"function\") {\n return process.cwd().replace(/\\\\/g, \"/\");\n }\n return \"/\";\n}\nconst resolve = function(...arguments_) {\n arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {\n const path = index >= 0 ? arguments_[index] : cwd();\n if (!path || path.length === 0) {\n continue;\n }\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = isAbsolute(path);\n }\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute && !isAbsolute(resolvedPath)) {\n return `/${resolvedPath}`;\n }\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n};\nfunction normalizeString(path, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let char = null;\n for (let index = 0; index <= path.length; ++index) {\n if (index < path.length) {\n char = path[index];\n } else if (char === \"/\") {\n break;\n } else {\n char = \"/\";\n }\n if (char === \"/\") {\n if (lastSlash === index - 1 || dots === 1) ; else if (dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== \".\" || res[res.length - 2] !== \".\") {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = index;\n dots = 0;\n continue;\n } else if (res.length > 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? \"/..\" : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path.slice(lastSlash + 1, index)}`;\n } else {\n res = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (char === \".\" && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst isAbsolute = function(p) {\n return _IS_ABSOLUTE_RE.test(p);\n};\nconst toNamespacedPath = function(p) {\n return normalizeWindowsPath(p);\n};\nconst _EXTNAME_RE = /.(\\.[^./]+)$/;\nconst extname = function(p) {\n const match = _EXTNAME_RE.exec(normalizeWindowsPath(p));\n return match && match[1] || \"\";\n};\nconst relative = function(from, to) {\n const _from = resolve(from).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\");\n const _to = resolve(to).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\");\n if (_to[0][1] === \":\" && _from[0][1] === \":\" && _from[0] !== _to[0]) {\n return _to.join(\"/\");\n }\n const _fromCopy = [..._from];\n for (const segment of _fromCopy) {\n if (_to[0] !== segment) {\n break;\n }\n _from.shift();\n _to.shift();\n }\n return [..._from.map(() => \"..\"), ..._to].join(\"/\");\n};\nconst dirname = function(p) {\n const segments = normalizeWindowsPath(p).replace(/\\/$/, \"\").split(\"/\").slice(0, -1);\n if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0])) {\n segments[0] += \"/\";\n }\n return segments.join(\"/\") || (isAbsolute(p) ? \"/\" : \".\");\n};\nconst format = function(p) {\n const segments = [p.root, p.dir, p.base ?? p.name + p.ext].filter(Boolean);\n return normalizeWindowsPath(\n p.root ? resolve(...segments) : segments.join(\"/\")\n );\n};\nconst basename = function(p, extension) {\n const lastSegment = normalizeWindowsPath(p).split(\"/\").pop();\n return extension && lastSegment.endsWith(extension) ? lastSegment.slice(0, -extension.length) : lastSegment;\n};\nconst parse = function(p) {\n const root = normalizeWindowsPath(p).split(\"/\").shift() || \"/\";\n const base = basename(p);\n const extension = extname(base);\n return {\n root,\n dir: dirname(p),\n base,\n ext: extension,\n name: base.slice(0, base.length - extension.length)\n };\n};\n\nconst path = {\n __proto__: null,\n basename: basename,\n delimiter: delimiter,\n dirname: dirname,\n extname: extname,\n format: format,\n isAbsolute: isAbsolute,\n join: join,\n normalize: normalize,\n normalizeString: normalizeString,\n parse: parse,\n relative: relative,\n resolve: resolve,\n sep: sep,\n toNamespacedPath: toNamespacedPath\n};\n\nexport { normalize as a, normalizeString as b, relative as c, delimiter as d, extname as e, dirname as f, format as g, basename as h, isAbsolute as i, join as j, parse as k, normalizeWindowsPath as n, path as p, resolve as r, sep as s, toNamespacedPath as t };\n","import { processError } from '@vitest/utils/error';\nimport { relative } from 'pathe';\nimport { toArray } from '@vitest/utils';\n\nfunction partitionSuiteChildren(suite) {\n let tasksGroup = [];\n const tasksGroups = [];\n for (const c of suite.tasks) {\n if (tasksGroup.length === 0 || c.concurrent === tasksGroup[0].concurrent) {\n tasksGroup.push(c);\n } else {\n tasksGroups.push(tasksGroup);\n tasksGroup = [c];\n }\n }\n if (tasksGroup.length > 0) {\n tasksGroups.push(tasksGroup);\n }\n return tasksGroups;\n}\n\nfunction limitConcurrency(concurrency = Infinity) {\n let count = 0;\n let head;\n let tail;\n const finish = () => {\n count--;\n if (head) {\n head[0]();\n head = head[1];\n tail = head && tail;\n }\n };\n return (func, ...args) => {\n return new Promise((resolve) => {\n if (count++ < concurrency) {\n resolve();\n } else if (tail) {\n tail = tail[1] = [resolve];\n } else {\n head = tail = [resolve];\n }\n }).then(() => {\n return func(...args);\n }).finally(finish);\n };\n}\n\nfunction interpretTaskModes(suite, namePattern, onlyMode, parentIsOnly, allowOnly) {\n const suiteIsOnly = parentIsOnly || suite.mode === \"only\";\n suite.tasks.forEach((t) => {\n const includeTask = suiteIsOnly || t.mode === \"only\";\n if (onlyMode) {\n if (t.type === \"suite\" && (includeTask || someTasksAreOnly(t))) {\n if (t.mode === \"only\") {\n checkAllowOnly(t, allowOnly);\n t.mode = \"run\";\n }\n } else if (t.mode === \"run\" && !includeTask) {\n t.mode = \"skip\";\n } else if (t.mode === \"only\") {\n checkAllowOnly(t, allowOnly);\n t.mode = \"run\";\n }\n }\n if (t.type === \"test\") {\n if (namePattern && !getTaskFullName(t).match(namePattern)) {\n t.mode = \"skip\";\n }\n } else if (t.type === \"suite\") {\n if (t.mode === \"skip\") {\n skipAllTasks(t);\n } else {\n interpretTaskModes(t, namePattern, onlyMode, includeTask, allowOnly);\n }\n }\n });\n if (suite.mode === \"run\") {\n if (suite.tasks.length && suite.tasks.every((i) => i.mode !== \"run\")) {\n suite.mode = \"skip\";\n }\n }\n}\nfunction getTaskFullName(task) {\n return `${task.suite ? `${getTaskFullName(task.suite)} ` : \"\"}${task.name}`;\n}\nfunction someTasksAreOnly(suite) {\n return suite.tasks.some(\n (t) => t.mode === \"only\" || t.type === \"suite\" && someTasksAreOnly(t)\n );\n}\nfunction skipAllTasks(suite) {\n suite.tasks.forEach((t) => {\n if (t.mode === \"run\") {\n t.mode = \"skip\";\n if (t.type === \"suite\") {\n skipAllTasks(t);\n }\n }\n });\n}\nfunction checkAllowOnly(task, allowOnly) {\n if (allowOnly) {\n return;\n }\n const error = processError(\n new Error(\n \"[Vitest] Unexpected .only modifier. Remove it or pass --allowOnly argument to bypass this error\"\n )\n );\n task.result = {\n state: \"fail\",\n errors: [error]\n };\n}\nfunction generateHash(str) {\n let hash = 0;\n if (str.length === 0) {\n return `${hash}`;\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return `${hash}`;\n}\nfunction calculateSuiteHash(parent) {\n parent.tasks.forEach((t, idx) => {\n t.id = `${parent.id}_${idx}`;\n if (t.type === \"suite\") {\n calculateSuiteHash(t);\n }\n });\n}\nfunction createFileTask(filepath, root, projectName, pool) {\n const path = relative(root, filepath);\n const file = {\n id: generateHash(`${path}${projectName || \"\"}`),\n name: path,\n type: \"suite\",\n mode: \"run\",\n filepath,\n tasks: [],\n meta: /* @__PURE__ */ Object.create(null),\n projectName,\n file: void 0,\n pool\n };\n file.file = file;\n return file;\n}\n\nfunction createChainable(keys, fn) {\n function create(context) {\n const chain2 = function(...args) {\n return fn.apply(context, args);\n };\n Object.assign(chain2, fn);\n chain2.withContext = () => chain2.bind(context);\n chain2.setContext = (key, value) => {\n context[key] = value;\n };\n chain2.mergeContext = (ctx) => {\n Object.assign(context, ctx);\n };\n for (const key of keys) {\n Object.defineProperty(chain2, key, {\n get() {\n return create({ ...context, [key]: true });\n }\n });\n }\n return chain2;\n }\n const chain = create({});\n chain.fn = fn;\n return chain;\n}\n\nfunction isAtomTest(s) {\n return s.type === \"test\" || s.type === \"custom\";\n}\nfunction getTests(suite) {\n const tests = [];\n const arraySuites = toArray(suite);\n for (const s of arraySuites) {\n if (isAtomTest(s)) {\n tests.push(s);\n } else {\n for (const task of s.tasks) {\n if (isAtomTest(task)) {\n tests.push(task);\n } else {\n const taskTests = getTests(task);\n for (const test of taskTests) {\n tests.push(test);\n }\n }\n }\n }\n }\n return tests;\n}\nfunction getTasks(tasks = []) {\n return toArray(tasks).flatMap(\n (s) => isAtomTest(s) ? [s] : [s, ...getTasks(s.tasks)]\n );\n}\nfunction getSuites(suite) {\n return toArray(suite).flatMap(\n (s) => s.type === \"suite\" ? [s, ...getSuites(s.tasks)] : []\n );\n}\nfunction hasTests(suite) {\n return toArray(suite).some(\n (s) => s.tasks.some((c) => isAtomTest(c) || hasTests(c))\n );\n}\nfunction hasFailed(suite) {\n return toArray(suite).some(\n (s) => {\n var _a;\n return ((_a = s.result) == null ? void 0 : _a.state) === \"fail\" || s.type === \"suite\" && hasFailed(s.tasks);\n }\n );\n}\nfunction getNames(task) {\n const names = [task.name];\n let current = task;\n while (current == null ? void 0 : current.suite) {\n current = current.suite;\n if (current == null ? void 0 : current.name) {\n names.unshift(current.name);\n }\n }\n if (current !== task.file) {\n names.unshift(task.file.name);\n }\n return names;\n}\n\nexport { createFileTask as a, isAtomTest as b, calculateSuiteHash as c, getTests as d, getTasks as e, getSuites as f, generateHash as g, hasTests as h, interpretTaskModes as i, hasFailed as j, getNames as k, createChainable as l, limitConcurrency as m, partitionSuiteChildren as p, someTasksAreOnly as s };\n","import { notNullish, isPrimitive } from './helpers.js';\n\nconst _DRIVE_LETTER_START_RE = /^[A-Za-z]:\\//;\nfunction normalizeWindowsPath(input = \"\") {\n if (!input) {\n return input;\n }\n return input.replace(/\\\\/g, \"/\").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());\n}\nconst _IS_ABSOLUTE_RE = /^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/;\nfunction cwd() {\n if (typeof process !== \"undefined\" && typeof process.cwd === \"function\") {\n return process.cwd().replace(/\\\\/g, \"/\");\n }\n return \"/\";\n}\nconst resolve$2 = function(...arguments_) {\n arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {\n const path = index >= 0 ? arguments_[index] : cwd();\n if (!path || path.length === 0) {\n continue;\n }\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = isAbsolute(path);\n }\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute && !isAbsolute(resolvedPath)) {\n return `/${resolvedPath}`;\n }\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n};\nfunction normalizeString(path, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let char = null;\n for (let index = 0; index <= path.length; ++index) {\n if (index < path.length) {\n char = path[index];\n } else if (char === \"/\") {\n break;\n } else {\n char = \"/\";\n }\n if (char === \"/\") {\n if (lastSlash === index - 1 || dots === 1) ; else if (dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== \".\" || res[res.length - 2] !== \".\") {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = index;\n dots = 0;\n continue;\n } else if (res.length > 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? \"/..\" : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path.slice(lastSlash + 1, index)}`;\n } else {\n res = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (char === \".\" && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst isAbsolute = function(p) {\n return _IS_ABSOLUTE_RE.test(p);\n};\n\nconst comma = ','.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decode(mappings) {\n const state = new Int32Array(5);\n const decoded = [];\n let index = 0;\n do {\n const semi = indexOf(mappings, index);\n const line = [];\n let sorted = true;\n let lastCol = 0;\n state[0] = 0;\n for (let i = index; i < semi; i++) {\n let seg;\n i = decodeInteger(mappings, i, state, 0); // genColumn\n const col = state[0];\n if (col < lastCol)\n sorted = false;\n lastCol = col;\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 1); // sourcesIndex\n i = decodeInteger(mappings, i, state, 2); // sourceLine\n i = decodeInteger(mappings, i, state, 3); // sourceColumn\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 4); // namesIndex\n seg = [col, state[1], state[2], state[3], state[4]];\n }\n else {\n seg = [col, state[1], state[2], state[3]];\n }\n }\n else {\n seg = [col];\n }\n line.push(seg);\n }\n if (!sorted)\n sort(line);\n decoded.push(line);\n index = semi + 1;\n } while (index <= mappings.length);\n return decoded;\n}\nfunction indexOf(mappings, index) {\n const idx = mappings.indexOf(';', index);\n return idx === -1 ? mappings.length : idx;\n}\nfunction decodeInteger(mappings, pos, state, j) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = mappings.charCodeAt(pos++);\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n state[j] += value;\n return pos;\n}\nfunction hasMoreVlq(mappings, i, length) {\n if (i >= length)\n return false;\n return mappings.charCodeAt(i) !== comma;\n}\nfunction sort(line) {\n line.sort(sortComparator$1);\n}\nfunction sortComparator$1(a, b) {\n return a[0] - b[0];\n}\n\n// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\nvar UrlType;\n(function (UrlType) {\n UrlType[UrlType[\"Empty\"] = 1] = \"Empty\";\n UrlType[UrlType[\"Hash\"] = 2] = \"Hash\";\n UrlType[UrlType[\"Query\"] = 3] = \"Query\";\n UrlType[UrlType[\"RelativePath\"] = 4] = \"RelativePath\";\n UrlType[UrlType[\"AbsolutePath\"] = 5] = \"AbsolutePath\";\n UrlType[UrlType[\"SchemeRelative\"] = 6] = \"SchemeRelative\";\n UrlType[UrlType[\"Absolute\"] = 7] = \"Absolute\";\n})(UrlType || (UrlType = {}));\nfunction isAbsoluteUrl(input) {\n return schemeRegex.test(input);\n}\nfunction isSchemeRelativeUrl(input) {\n return input.startsWith('//');\n}\nfunction isAbsolutePath(input) {\n return input.startsWith('/');\n}\nfunction isFileUrl(input) {\n return input.startsWith('file:');\n}\nfunction isRelative(input) {\n return /^[.?#]/.test(input);\n}\nfunction parseAbsoluteUrl(input) {\n const match = urlRegex.exec(input);\n return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || '');\n}\nfunction parseFileUrl(input) {\n const match = fileRegex.exec(input);\n const path = match[2];\n return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || '');\n}\nfunction makeUrl(scheme, user, host, port, path, query, hash) {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\nfunction parseUrl(input) {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n if (isFileUrl(input))\n return parseFileUrl(input);\n if (isAbsoluteUrl(input))\n return parseAbsoluteUrl(input);\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\nfunction stripPathFilename(path) {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..'))\n return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\nfunction mergePaths(url, base) {\n normalizePath(base, base.type);\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n }\n else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url, type) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n // A current directory, which we can always drop.\n if (piece === '.')\n continue;\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n }\n else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nfunction resolve$1(input, base) {\n if (!input && !base)\n return '';\n const url = parseUrl(input);\n let inputType = url.type;\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType)\n inputType = baseType;\n }\n normalizePath(url, inputType);\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n if (!path)\n return queryHash || '.';\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n return path + queryHash;\n }\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n\nfunction resolve(input, base) {\n // The base is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n if (base && !base.endsWith('/'))\n base += '/';\n return resolve$1(input, base);\n}\n\n/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nfunction stripFilename(path) {\n if (!path)\n return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nconst COLUMN = 0;\nconst SOURCES_INDEX = 1;\nconst SOURCE_LINE = 2;\nconst SOURCE_COLUMN = 3;\nconst NAMES_INDEX = 4;\nconst REV_GENERATED_LINE = 1;\nconst REV_GENERATED_COLUMN = 2;\n\nfunction maybeSort(mappings, owned) {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length)\n return mappings;\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned)\n mappings = mappings.slice();\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\nfunction nextUnsortedSegmentLine(mappings, start) {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i]))\n return i;\n }\n return mappings.length;\n}\nfunction isSorted(line) {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\nfunction sortSegments(line, owned) {\n if (!owned)\n line = line.slice();\n return line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[COLUMN] - b[COLUMN];\n}\n\nlet found = false;\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nfunction binarySearch(haystack, needle, low, high) {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n if (cmp === 0) {\n found = true;\n return mid;\n }\n if (cmp < 0) {\n low = mid + 1;\n }\n else {\n high = mid - 1;\n }\n }\n found = false;\n return low - 1;\n}\nfunction upperBound(haystack, needle, index) {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction lowerBound(haystack, needle, index) {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction memoizedState() {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nfunction memoizedBinarySearch(haystack, needle, state, key) {\n const { lastKey, lastNeedle, lastIndex } = state;\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n }\n else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n\n// Rebuilds the original source files, with mappings that are ordered by source line/column instead\n// of generated line/column.\nfunction buildBySources(decoded, memos) {\n const sources = memos.map(buildNullArray);\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1)\n continue;\n const sourceIndex = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n const originalSource = sources[sourceIndex];\n const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = []));\n const memo = memos[sourceIndex];\n // The binary search either found a match, or it found the left-index just before where the\n // segment should go. Either way, we want to insert after that. And there may be multiple\n // generated segments associated with an original location, so there may need to move several\n // indexes before we find where we need to insert.\n let index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));\n memo.lastIndex = ++index;\n insert(originalLine, index, [sourceColumn, i, seg[COLUMN]]);\n }\n }\n return sources;\n}\nfunction insert(array, index, value) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n// Null arrays allow us to use ordered index keys without actually allocating contiguous memory like\n// a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.\n// Numeric properties on objects are magically sorted in ascending order by the engine regardless of\n// the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending\n// order when iterating with for-in.\nfunction buildNullArray() {\n return { __proto__: null };\n}\n\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\nconst LEAST_UPPER_BOUND = -1;\nconst GREATEST_LOWER_BOUND = 1;\nclass TraceMap {\n constructor(map, mapUrl) {\n const isString = typeof map === 'string';\n if (!isString && map._decodedMemo)\n return map;\n const parsed = (isString ? JSON.parse(map) : map);\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names || [];\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || undefined;\n const from = resolve(sourceRoot || '', stripFilename(mapUrl));\n this.resolvedSources = sources.map((s) => resolve(s || '', from));\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n }\n else {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n }\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n }\n}\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map) {\n return map;\n}\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nfunction decodedMappings(map) {\n var _a;\n return ((_a = cast(map))._decoded || (_a._decoded = decode(cast(map)._encoded)));\n}\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nfunction originalPositionFor(map, needle) {\n let { line, column, bias } = needle;\n line--;\n if (line < 0)\n throw new Error(LINE_GTR_ZERO);\n if (column < 0)\n throw new Error(COL_GTR_EQ_ZERO);\n const decoded = decodedMappings(map);\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length)\n return OMapping(null, null, null, null);\n const segments = decoded[line];\n const index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);\n if (index === -1)\n return OMapping(null, null, null, null);\n const segment = segments[index];\n if (segment.length === 1)\n return OMapping(null, null, null, null);\n const { names, resolvedSources } = map;\n return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);\n}\n/**\n * Finds the generated line/column position of the provided source/line/column source position.\n */\nfunction generatedPositionFor(map, needle) {\n const { source, line, column, bias } = needle;\n return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n}\nfunction OMapping(source, line, column, name) {\n return { source, line, column, name };\n}\nfunction GMapping(line, column) {\n return { line, column };\n}\nfunction traceSegmentInternal(segments, memo, line, column, bias) {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (found) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n }\n else if (bias === LEAST_UPPER_BOUND)\n index++;\n if (index === -1 || index === segments.length)\n return -1;\n return index;\n}\nfunction sliceGeneratedPositions(segments, memo, line, column, bias) {\n let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in\n // insertion order) segment that matched. Even if we did respect the bias when tracing, we would\n // still need to call `lowerBound()` to find the first segment, which is slower than just looking\n // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the\n // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to\n // match LEAST_UPPER_BOUND.\n if (!found && bias === LEAST_UPPER_BOUND)\n min++;\n if (min === -1 || min === segments.length)\n return [];\n // We may have found the segment that started at an earlier column. If this is the case, then we\n // need to slice all generated segments that match _that_ column, because all such segments span\n // to our desired column.\n const matchedColumn = found ? column : segments[min][COLUMN];\n // The binary search is not guaranteed to find the lower bound when a match wasn't found.\n if (!found)\n min = lowerBound(segments, matchedColumn, min);\n const max = upperBound(segments, matchedColumn, min);\n const result = [];\n for (; min <= max; min++) {\n const segment = segments[min];\n result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n }\n return result;\n}\nfunction generatedPosition(map, source, line, column, bias, all) {\n var _a;\n line--;\n if (line < 0)\n throw new Error(LINE_GTR_ZERO);\n if (column < 0)\n throw new Error(COL_GTR_EQ_ZERO);\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1)\n sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1)\n return all ? [] : GMapping(null, null);\n const generated = ((_a = cast(map))._bySources || (_a._bySources = buildBySources(decodedMappings(map), (cast(map)._bySourceMemos = sources.map(memoizedState)))));\n const segments = generated[sourceIndex][line];\n if (segments == null)\n return all ? [] : GMapping(null, null);\n const memo = cast(map)._bySourceMemos[sourceIndex];\n if (all)\n return sliceGeneratedPositions(segments, memo, line, column, bias);\n const index = traceSegmentInternal(segments, memo, line, column, bias);\n if (index === -1)\n return GMapping(null, null);\n const segment = segments[index];\n return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n}\n\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(?:\\S:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(?:eval@)?(?:\\[native code\\])?$/;\nconst stackIgnorePatterns = [\n \"node:internal\",\n /\\/packages\\/\\w+\\/dist\\//,\n /\\/@vitest\\/\\w+\\/dist\\//,\n \"/vitest/dist/\",\n \"/vitest/src/\",\n \"/vite-node/dist/\",\n \"/vite-node/src/\",\n \"/node_modules/chai/\",\n \"/node_modules/tinypool/\",\n \"/node_modules/tinyspy/\",\n // browser related deps\n \"/deps/chunk-\",\n \"/deps/@vitest\",\n \"/deps/loupe\",\n \"/deps/chai\",\n /node:\\w+/,\n /__vitest_test__/,\n /__vitest_browser__/,\n /\\/deps\\/vitest_/\n];\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\")) {\n return [urlLike];\n }\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/^\\(|\\)$/g, \"\"));\n if (!parts) {\n return [urlLike];\n }\n let url = parts[1];\n if (url.startsWith(\"async \")) {\n url = url.slice(6);\n }\n if (url.startsWith(\"http:\") || url.startsWith(\"https:\")) {\n const urlObj = new URL(url);\n url = urlObj.pathname;\n }\n if (url.startsWith(\"/@fs/\")) {\n const isWindows = /^\\/@fs\\/[a-zA-Z]:\\//.test(url);\n url = url.slice(isWindows ? 5 : 4);\n }\n return [url, parts[2] || void 0, parts[3] || void 0];\n}\nfunction parseSingleFFOrSafariStack(raw) {\n let line = raw.trim();\n if (SAFARI_NATIVE_CODE_REGEXP.test(line)) {\n return null;\n }\n if (line.includes(\" > eval\")) {\n line = line.replace(\n / line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,\n \":$1\"\n );\n }\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return null;\n }\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(@)/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : void 0;\n const [url, lineNumber, columnNumber] = extractLocation(\n line.replace(functionNameRegex, \"\")\n );\n if (!url || !lineNumber || !columnNumber) {\n return null;\n }\n return {\n file: url,\n method: functionName || \"\",\n line: Number.parseInt(lineNumber),\n column: Number.parseInt(columnNumber)\n };\n}\nfunction parseSingleStack(raw) {\n const line = raw.trim();\n if (!CHROME_IE_STACK_REGEXP.test(line)) {\n return parseSingleFFOrSafariStack(line);\n }\n return parseSingleV8Stack(line);\n}\nfunction parseSingleV8Stack(raw) {\n let line = raw.trim();\n if (!CHROME_IE_STACK_REGEXP.test(line)) {\n return null;\n }\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const [url, lineNumber, columnNumber] = extractLocation(\n location ? location[1] : sanitizedLine\n );\n let method = location && sanitizedLine || \"\";\n let file = url && [\"eval\", \"<anonymous>\"].includes(url) ? void 0 : url;\n if (!file || !lineNumber || !columnNumber) {\n return null;\n }\n if (method.startsWith(\"async \")) {\n method = method.slice(6);\n }\n if (file.startsWith(\"file://\")) {\n file = file.slice(7);\n }\n file = resolve$2(file);\n if (method) {\n method = method.replace(/__vite_ssr_import_\\d+__\\./g, \"\");\n }\n return {\n method,\n file,\n line: Number.parseInt(lineNumber),\n column: Number.parseInt(columnNumber)\n };\n}\nfunction parseStacktrace(stack, options = {}) {\n const { ignoreStackEntries = stackIgnorePatterns } = options;\n let stacks = !CHROME_IE_STACK_REGEXP.test(stack) ? parseFFOrSafariStackTrace(stack) : parseV8Stacktrace(stack);\n if (ignoreStackEntries.length) {\n stacks = stacks.filter(\n (stack2) => !ignoreStackEntries.some((p) => stack2.file.match(p))\n );\n }\n return stacks.map((stack2) => {\n var _a;\n if (options.getFileName) {\n stack2.file = options.getFileName(stack2.file);\n }\n const map = (_a = options.getSourceMap) == null ? void 0 : _a.call(options, stack2.file);\n if (!map || typeof map !== \"object\" || !map.version) {\n return stack2;\n }\n const traceMap = new TraceMap(map);\n const { line, column } = originalPositionFor(traceMap, stack2);\n if (line != null && column != null) {\n return { ...stack2, line, column };\n }\n return stack2;\n });\n}\nfunction parseFFOrSafariStackTrace(stack) {\n return stack.split(\"\\n\").map((line) => parseSingleFFOrSafariStack(line)).filter(notNullish);\n}\nfunction parseV8Stacktrace(stack) {\n return stack.split(\"\\n\").map((line) => parseSingleV8Stack(line)).filter(notNullish);\n}\nfunction parseErrorStacktrace(e, options = {}) {\n if (!e || isPrimitive(e)) {\n return [];\n }\n if (e.stacks) {\n return e.stacks;\n }\n const stackStr = e.stack || e.stackStr || \"\";\n let stackFrames = parseStacktrace(stackStr, options);\n if (options.frameFilter) {\n stackFrames = stackFrames.filter(\n (f) => options.frameFilter(e, f) !== false\n );\n }\n e.stacks = stackFrames;\n return stackFrames;\n}\n\nexport { TraceMap, generatedPositionFor, originalPositionFor, parseErrorStacktrace, parseSingleFFOrSafariStack, parseSingleStack, parseSingleV8Stack, parseStacktrace };\n","import { getSafeTimers, isObject, createDefer, isNegativeNaN, format, objDisplay, objectAttr, toArray, shuffle } from '@vitest/utils';\nimport { processError } from '@vitest/utils/error';\nexport { processError } from '@vitest/utils/error';\nimport { l as createChainable, a as createFileTask, c as calculateSuiteHash, s as someTasksAreOnly, i as interpretTaskModes, m as limitConcurrency, p as partitionSuiteChildren, h as hasTests, j as hasFailed } from './chunk-tasks.js';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport 'pathe';\n\nconst fnMap = /* @__PURE__ */ new WeakMap();\nconst fixtureMap = /* @__PURE__ */ new WeakMap();\nconst hooksMap = /* @__PURE__ */ new WeakMap();\nfunction setFn(key, fn) {\n fnMap.set(key, fn);\n}\nfunction getFn(key) {\n return fnMap.get(key);\n}\nfunction setFixture(key, fixture) {\n fixtureMap.set(key, fixture);\n}\nfunction getFixture(key) {\n return fixtureMap.get(key);\n}\nfunction setHooks(key, hooks) {\n hooksMap.set(key, hooks);\n}\nfunction getHooks(key) {\n return hooksMap.get(key);\n}\n\nclass PendingError extends Error {\n constructor(message, task) {\n super(message);\n this.message = message;\n this.taskId = task.id;\n }\n code = \"VITEST_PENDING\";\n taskId;\n}\n\nconst collectorContext = {\n tasks: [],\n currentSuite: null\n};\nfunction collectTask(task) {\n var _a;\n (_a = collectorContext.currentSuite) == null ? void 0 : _a.tasks.push(task);\n}\nasync function runWithSuite(suite, fn) {\n const prev = collectorContext.currentSuite;\n collectorContext.currentSuite = suite;\n await fn();\n collectorContext.currentSuite = prev;\n}\nfunction withTimeout(fn, timeout, isHook = false) {\n if (timeout <= 0 || timeout === Number.POSITIVE_INFINITY) {\n return fn;\n }\n const { setTimeout, clearTimeout } = getSafeTimers();\n return (...args) => {\n return Promise.race([\n fn(...args),\n new Promise((resolve, reject) => {\n var _a;\n const timer = setTimeout(() => {\n clearTimeout(timer);\n reject(new Error(makeTimeoutMsg(isHook, timeout)));\n }, timeout);\n (_a = timer.unref) == null ? void 0 : _a.call(timer);\n })\n ]);\n };\n}\nfunction createTestContext(test, runner) {\n var _a;\n const context = function() {\n throw new Error(\"done() callback is deprecated, use promise instead\");\n };\n context.task = test;\n context.skip = () => {\n test.pending = true;\n throw new PendingError(\"test is skipped; abort execution\", test);\n };\n context.onTestFailed = (fn) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(fn);\n };\n context.onTestFinished = (fn) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(fn);\n };\n return ((_a = runner.extendTaskContext) == null ? void 0 : _a.call(runner, context)) || context;\n}\nfunction makeTimeoutMsg(isHook, timeout) {\n return `${isHook ? \"Hook\" : \"Test\"} timed out in ${timeout}ms.\nIf this is a long-running ${isHook ? \"hook\" : \"test\"}, pass a timeout value as the last argument or configure it globally with \"${isHook ? \"hookTimeout\" : \"testTimeout\"}\".`;\n}\n\nfunction mergeContextFixtures(fixtures, context = {}) {\n const fixtureOptionKeys = [\"auto\"];\n const fixtureArray = Object.entries(fixtures).map(\n ([prop, value]) => {\n const fixtureItem = { value };\n if (Array.isArray(value) && value.length >= 2 && isObject(value[1]) && Object.keys(value[1]).some((key) => fixtureOptionKeys.includes(key))) {\n Object.assign(fixtureItem, value[1]);\n fixtureItem.value = value[0];\n }\n fixtureItem.prop = prop;\n fixtureItem.isFn = typeof fixtureItem.value === \"function\";\n return fixtureItem;\n }\n );\n if (Array.isArray(context.fixtures)) {\n context.fixtures = context.fixtures.concat(fixtureArray);\n } else {\n context.fixtures = fixtureArray;\n }\n fixtureArray.forEach((fixture) => {\n if (fixture.isFn) {\n const usedProps = getUsedProps(fixture.value);\n if (usedProps.length) {\n fixture.deps = context.fixtures.filter(\n ({ prop }) => prop !== fixture.prop && usedProps.includes(prop)\n );\n }\n }\n });\n return context;\n}\nconst fixtureValueMaps = /* @__PURE__ */ new Map();\nconst cleanupFnArrayMap = /* @__PURE__ */ new Map();\nasync function callFixtureCleanup(context) {\n const cleanupFnArray = cleanupFnArrayMap.get(context) ?? [];\n for (const cleanup of cleanupFnArray.reverse()) {\n await cleanup();\n }\n cleanupFnArrayMap.delete(context);\n}\nfunction withFixtures(fn, testContext) {\n return (hookContext) => {\n const context = hookContext || testContext;\n if (!context) {\n return fn({});\n }\n const fixtures = getFixture(context);\n if (!(fixtures == null ? void 0 : fixtures.length)) {\n return fn(context);\n }\n const usedProps = getUsedProps(fn);\n const hasAutoFixture = fixtures.some(({ auto }) => auto);\n if (!usedProps.length && !hasAutoFixture) {\n return fn(context);\n }\n if (!fixtureValueMaps.get(context)) {\n fixtureValueMaps.set(context, /* @__PURE__ */ new Map());\n }\n const fixtureValueMap = fixtureValueMaps.get(context);\n if (!cleanupFnArrayMap.has(context)) {\n cleanupFnArrayMap.set(context, []);\n }\n const cleanupFnArray = cleanupFnArrayMap.get(context);\n const usedFixtures = fixtures.filter(\n ({ prop, auto }) => auto || usedProps.includes(prop)\n );\n const pendingFixtures = resolveDeps(usedFixtures);\n if (!pendingFixtures.length) {\n return fn(context);\n }\n async function resolveFixtures() {\n for (const fixture of pendingFixtures) {\n if (fixtureValueMap.has(fixture)) {\n continue;\n }\n const resolvedValue = fixture.isFn ? await resolveFixtureFunction(fixture.value, context, cleanupFnArray) : fixture.value;\n context[fixture.prop] = resolvedValue;\n fixtureValueMap.set(fixture, resolvedValue);\n cleanupFnArray.unshift(() => {\n fixtureValueMap.delete(fixture);\n });\n }\n }\n return resolveFixtures().then(() => fn(context));\n };\n}\nasync function resolveFixtureFunction(fixtureFn, context, cleanupFnArray) {\n const useFnArgPromise = createDefer();\n let isUseFnArgResolved = false;\n const fixtureReturn = fixtureFn(context, async (useFnArg) => {\n isUseFnArgResolved = true;\n useFnArgPromise.resolve(useFnArg);\n const useReturnPromise = createDefer();\n cleanupFnArray.push(async () => {\n useReturnPromise.resolve();\n await fixtureReturn;\n });\n await useReturnPromise;\n }).catch((e) => {\n if (!isUseFnArgResolved) {\n useFnArgPromise.reject(e);\n return;\n }\n throw e;\n });\n return useFnArgPromise;\n}\nfunction resolveDeps(fixtures, depSet = /* @__PURE__ */ new Set(), pendingFixtures = []) {\n fixtures.forEach((fixture) => {\n if (pendingFixtures.includes(fixture)) {\n return;\n }\n if (!fixture.isFn || !fixture.deps) {\n pendingFixtures.push(fixture);\n return;\n }\n if (depSet.has(fixture)) {\n throw new Error(\n `Circular fixture dependency detected: ${fixture.prop} <- ${[...depSet].reverse().map((d) => d.prop).join(\" <- \")}`\n );\n }\n depSet.add(fixture);\n resolveDeps(fixture.deps, depSet, pendingFixtures);\n pendingFixtures.push(fixture);\n depSet.clear();\n });\n return pendingFixtures;\n}\nfunction getUsedProps(fn) {\n const match = fn.toString().match(/[^(]*\\(([^)]*)/);\n if (!match) {\n return [];\n }\n const args = splitByComma(match[1]);\n if (!args.length) {\n return [];\n }\n let first = args[0];\n if (\"__VITEST_FIXTURE_INDEX__\" in fn) {\n first = args[fn.__VITEST_FIXTURE_INDEX__];\n if (!first) {\n return [];\n }\n }\n if (!(first.startsWith(\"{\") && first.endsWith(\"}\"))) {\n throw new Error(\n `The first argument inside a fixture must use object destructuring pattern, e.g. ({ test } => {}). Instead, received \"${first}\".`\n );\n }\n const _first = first.slice(1, -1).replace(/\\s/g, \"\");\n const props = splitByComma(_first).map((prop) => {\n return prop.replace(/:.*|=.*/g, \"\");\n });\n const last = props.at(-1);\n if (last && last.startsWith(\"...\")) {\n throw new Error(\n `Rest parameters are not supported in fixtures, received \"${last}\".`\n );\n }\n return props;\n}\nfunction splitByComma(s) {\n const result = [];\n const stack = [];\n let start = 0;\n for (let i = 0; i < s.length; i++) {\n if (s[i] === \"{\" || s[i] === \"[\") {\n stack.push(s[i] === \"{\" ? \"}\" : \"]\");\n } else if (s[i] === stack[stack.length - 1]) {\n stack.pop();\n } else if (!stack.length && s[i] === \",\") {\n const token = s.substring(start, i).trim();\n if (token) {\n result.push(token);\n }\n start = i + 1;\n }\n }\n const lastToken = s.substring(start).trim();\n if (lastToken) {\n result.push(lastToken);\n }\n return result;\n}\n\nlet _test;\nfunction setCurrentTest(test) {\n _test = test;\n}\nfunction getCurrentTest() {\n return _test;\n}\n\nconst suite = createSuite();\nconst test = createTest(function(name, optionsOrFn, optionsOrTest) {\n if (getCurrentTest()) {\n throw new Error(\n 'Calling the test function inside another test function is not allowed. Please put it inside \"describe\" or \"suite\" so it can be properly collected.'\n );\n }\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n});\nconst describe = suite;\nconst it = test;\nlet runner;\nlet defaultSuite;\nlet currentTestFilepath;\nfunction getDefaultSuite() {\n return defaultSuite;\n}\nfunction getTestFilepath() {\n return currentTestFilepath;\n}\nfunction getRunner() {\n return runner;\n}\nfunction createDefaultSuite(runner2) {\n const config = runner2.config.sequence;\n const api = config.shuffle ? suite.shuffle : suite;\n return api(\"\", { concurrent: config.concurrent }, () => {\n });\n}\nfunction clearCollectorContext(filepath, currentRunner) {\n if (!defaultSuite) {\n defaultSuite = createDefaultSuite(currentRunner);\n }\n runner = currentRunner;\n currentTestFilepath = filepath;\n collectorContext.tasks.length = 0;\n defaultSuite.clear();\n collectorContext.currentSuite = defaultSuite;\n}\nfunction getCurrentSuite() {\n return collectorContext.currentSuite || defaultSuite;\n}\nfunction createSuiteHooks() {\n return {\n beforeAll: [],\n afterAll: [],\n beforeEach: [],\n afterEach: []\n };\n}\nfunction parseArguments(optionsOrFn, optionsOrTest) {\n let options = {};\n let fn = () => {\n };\n if (typeof optionsOrTest === \"object\") {\n if (typeof optionsOrFn === \"object\") {\n throw new TypeError(\n \"Cannot use two objects as arguments. Please provide options and a function callback in that order.\"\n );\n }\n options = optionsOrTest;\n } else if (typeof optionsOrTest === \"number\") {\n options = { timeout: optionsOrTest };\n } else if (typeof optionsOrFn === \"object\") {\n options = optionsOrFn;\n }\n if (typeof optionsOrFn === \"function\") {\n if (typeof optionsOrTest === \"function\") {\n throw new TypeError(\n \"Cannot use two functions as arguments. Please use the second argument for options.\"\n );\n }\n fn = optionsOrFn;\n } else if (typeof optionsOrTest === \"function\") {\n fn = optionsOrTest;\n }\n return {\n options,\n handler: fn\n };\n}\nfunction createSuiteCollector(name, factory = () => {\n}, mode, shuffle, each, suiteOptions) {\n const tasks = [];\n const factoryQueue = [];\n let suite2;\n initSuite(true);\n const task = function(name2 = \"\", options = {}) {\n const task2 = {\n id: \"\",\n name: name2,\n suite: void 0,\n each: options.each,\n fails: options.fails,\n context: void 0,\n type: \"custom\",\n file: void 0,\n retry: options.retry ?? runner.config.retry,\n repeats: options.repeats,\n mode: options.only ? \"only\" : options.skip ? \"skip\" : options.todo ? \"todo\" : \"run\",\n meta: options.meta ?? /* @__PURE__ */ Object.create(null)\n };\n const handler = options.handler;\n if (options.concurrent || !options.sequential && runner.config.sequence.concurrent) {\n task2.concurrent = true;\n }\n if (shuffle) {\n task2.shuffle = true;\n }\n const context = createTestContext(task2, runner);\n Object.defineProperty(task2, \"context\", {\n value: context,\n enumerable: false\n });\n setFixture(context, options.fixtures);\n if (handler) {\n setFn(\n task2,\n withTimeout(\n withFixtures(handler, context),\n (options == null ? void 0 : options.timeout) ?? runner.config.testTimeout\n )\n );\n }\n if (runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, task2.each ?? false);\n if (stack) {\n task2.location = stack;\n }\n }\n tasks.push(task2);\n return task2;\n };\n const test2 = createTest(function(name2, optionsOrFn, optionsOrTest) {\n let { options, handler } = parseArguments(optionsOrFn, optionsOrTest);\n if (typeof suiteOptions === \"object\") {\n options = Object.assign({}, suiteOptions, options);\n }\n options.concurrent = this.concurrent || !this.sequential && (options == null ? void 0 : options.concurrent);\n options.sequential = this.sequential || !this.concurrent && (options == null ? void 0 : options.sequential);\n const test3 = task(formatName(name2), {\n ...this,\n ...options,\n handler\n });\n test3.type = \"test\";\n });\n const collector = {\n type: \"collector\",\n name,\n mode,\n options: suiteOptions,\n test: test2,\n tasks,\n collect,\n task,\n clear,\n on: addHook\n };\n function addHook(name2, ...fn) {\n getHooks(suite2)[name2].push(...fn);\n }\n function initSuite(includeLocation) {\n if (typeof suiteOptions === \"number\") {\n suiteOptions = { timeout: suiteOptions };\n }\n suite2 = {\n id: \"\",\n type: \"suite\",\n name,\n mode,\n each,\n file: void 0,\n shuffle,\n tasks: [],\n meta: /* @__PURE__ */ Object.create(null),\n concurrent: suiteOptions == null ? void 0 : suiteOptions.concurrent\n };\n if (runner && includeLocation && runner.config.includeTaskLocation) {\n const limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 15;\n const error = new Error(\"stacktrace\").stack;\n Error.stackTraceLimit = limit;\n const stack = findTestFileStackTrace(error, suite2.each ?? false);\n if (stack) {\n suite2.location = stack;\n }\n }\n setHooks(suite2, createSuiteHooks());\n }\n function clear() {\n tasks.length = 0;\n factoryQueue.length = 0;\n initSuite(false);\n }\n async function collect(file) {\n if (!file) {\n throw new TypeError(\"File is required to collect tasks.\");\n }\n factoryQueue.length = 0;\n if (factory) {\n await runWithSuite(collector, () => factory(test2));\n }\n const allChildren = [];\n for (const i of [...factoryQueue, ...tasks]) {\n allChildren.push(i.type === \"collector\" ? await i.collect(file) : i);\n }\n suite2.file = file;\n suite2.tasks = allChildren;\n allChildren.forEach((task2) => {\n task2.suite = suite2;\n task2.file = file;\n });\n return suite2;\n }\n collectTask(collector);\n return collector;\n}\nfunction createSuite() {\n function suiteFn(name, factoryOrOptions, optionsOrFactory = {}) {\n const mode = this.only ? \"only\" : this.skip ? \"skip\" : this.todo ? \"todo\" : \"run\";\n const currentSuite = getCurrentSuite();\n let { options, handler: factory } = parseArguments(\n factoryOrOptions,\n optionsOrFactory\n );\n if (currentSuite == null ? void 0 : currentSuite.options) {\n options = { ...currentSuite.options, ...options };\n }\n const isConcurrent = options.concurrent || this.concurrent && !this.sequential;\n const isSequential = options.sequential || this.sequential && !this.concurrent;\n options.concurrent = isConcurrent && !isSequential;\n options.sequential = isSequential && !isConcurrent;\n return createSuiteCollector(\n formatName(name),\n factory,\n mode,\n this.shuffle,\n this.each,\n options\n );\n }\n suiteFn.each = function(cases, ...args) {\n const suite2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n arrayOnlyCases ? suite2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n ) : suite2(formatTitle(_name, items, idx), () => handler(i), options);\n } else {\n arrayOnlyCases ? suite2(formatTitle(_name, items, idx), options, () => handler(...items)) : suite2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n suiteFn.skipIf = (condition) => condition ? suite.skip : suite;\n suiteFn.runIf = (condition) => condition ? suite : suite.skip;\n return createChainable(\n [\"concurrent\", \"sequential\", \"shuffle\", \"skip\", \"only\", \"todo\"],\n suiteFn\n );\n}\nfunction createTaskCollector(fn, context) {\n const taskFn = fn;\n taskFn.each = function(cases, ...args) {\n const test2 = this.withContext();\n this.setContext(\"each\", true);\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const arrayOnlyCases = cases.every(Array.isArray);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n const fnFirst = typeof optionsOrFn === \"function\";\n cases.forEach((i, idx) => {\n const items = Array.isArray(i) ? i : [i];\n if (fnFirst) {\n arrayOnlyCases ? test2(\n formatTitle(_name, items, idx),\n () => handler(...items),\n options\n ) : test2(formatTitle(_name, items, idx), () => handler(i), options);\n } else {\n arrayOnlyCases ? test2(formatTitle(_name, items, idx), options, () => handler(...items)) : test2(formatTitle(_name, items, idx), options, () => handler(i));\n }\n });\n this.setContext(\"each\", void 0);\n };\n };\n taskFn.for = function(cases, ...args) {\n const test2 = this.withContext();\n if (Array.isArray(cases) && args.length) {\n cases = formatTemplateString(cases, args);\n }\n return (name, optionsOrFn, fnOrOptions) => {\n const _name = formatName(name);\n const { options, handler } = parseArguments(optionsOrFn, fnOrOptions);\n cases.forEach((item, idx) => {\n const handlerWrapper = (ctx) => handler(item, ctx);\n handlerWrapper.__VITEST_FIXTURE_INDEX__ = 1;\n handlerWrapper.toString = () => handler.toString();\n test2(formatTitle(_name, toArray(item), idx), options, handlerWrapper);\n });\n };\n };\n taskFn.skipIf = function(condition) {\n return condition ? this.skip : this;\n };\n taskFn.runIf = function(condition) {\n return condition ? this : this.skip;\n };\n taskFn.extend = function(fixtures) {\n const _context = mergeContextFixtures(fixtures, context);\n return createTest(function fn2(name, optionsOrFn, optionsOrTest) {\n getCurrentSuite().test.fn.call(\n this,\n formatName(name),\n optionsOrFn,\n optionsOrTest\n );\n }, _context);\n };\n const _test = createChainable(\n [\"concurrent\", \"sequential\", \"skip\", \"only\", \"todo\", \"fails\"],\n taskFn\n );\n if (context) {\n _test.mergeContext(context);\n }\n return _test;\n}\nfunction createTest(fn, context) {\n return createTaskCollector(fn, context);\n}\nfunction formatName(name) {\n return typeof name === \"string\" ? name : name instanceof Function ? name.name || \"<anonymous>\" : String(name);\n}\nfunction formatTitle(template, items, idx) {\n if (template.includes(\"%#\")) {\n template = template.replace(/%%/g, \"__vitest_escaped_%__\").replace(/%#/g, `${idx}`).replace(/__vitest_escaped_%__/g, \"%%\");\n }\n const count = template.split(\"%\").length - 1;\n if (template.includes(\"%f\")) {\n const placeholders = template.match(/%f/g) || [];\n placeholders.forEach((_, i) => {\n if (isNegativeNaN(items[i]) || Object.is(items[i], -0)) {\n let occurrence = 0;\n template = template.replace(/%f/g, (match) => {\n occurrence++;\n return occurrence === i + 1 ? \"-%f\" : match;\n });\n }\n });\n }\n let formatted = format(template, ...items.slice(0, count));\n if (isObject(items[0])) {\n formatted = formatted.replace(\n /\\$([$\\w.]+)/g,\n // https://github.com/chaijs/chai/pull/1490\n (_, key) => {\n var _a, _b;\n return objDisplay(objectAttr(items[0], key), {\n truncate: (_b = (_a = runner == null ? void 0 : runner.config) == null ? void 0 : _a.chaiConfig) == null ? void 0 : _b.truncateThreshold\n });\n }\n );\n }\n return formatted;\n}\nfunction formatTemplateString(cases, args) {\n const header = cases.join(\"\").trim().replace(/ /g, \"\").split(\"\\n\").map((i) => i.split(\"|\"))[0];\n const res = [];\n for (let i = 0; i < Math.floor(args.length / header.length); i++) {\n const oneCase = {};\n for (let j = 0; j < header.length; j++) {\n oneCase[header[j]] = args[i * header.length + j];\n }\n res.push(oneCase);\n }\n return res;\n}\nfunction findTestFileStackTrace(error, each) {\n const lines = error.split(\"\\n\").slice(1);\n for (const line of lines) {\n const stack = parseSingleStack(line);\n if (stack && stack.file === getTestFilepath()) {\n return {\n line: stack.line,\n /**\n * test.each([1, 2])('name')\n * ^ leads here, but should\n * ^ lead here\n * in source maps it's the same boundary, so it just points to the start of it\n */\n column: each ? stack.column + 1 : stack.column\n };\n }\n }\n}\n\nasync function runSetupFiles(config, runner) {\n const files = toArray(config.setupFiles);\n if (config.sequence.setupFiles === \"parallel\") {\n await Promise.all(\n files.map(async (fsPath) => {\n await runner.importFile(fsPath, \"setup\");\n })\n );\n } else {\n for (const fsPath of files) {\n await runner.importFile(fsPath, \"setup\");\n }\n }\n}\n\nconst now$1 = Date.now;\nasync function collectTests(paths, runner) {\n var _a;\n const files = [];\n const config = runner.config;\n for (const filepath of paths) {\n const file = createFileTask(filepath, config.root, config.name, runner.pool);\n (_a = runner.onCollectStart) == null ? void 0 : _a.call(runner, file);\n clearCollectorContext(filepath, runner);\n try {\n const setupStart = now$1();\n await runSetupFiles(config, runner);\n const collectStart = now$1();\n file.setupDuration = collectStart - setupStart;\n await runner.importFile(filepath, \"collect\");\n const defaultTasks = await getDefaultSuite().collect(file);\n const fileHooks = createSuiteHooks();\n mergeHooks(fileHooks, getHooks(defaultTasks));\n for (const c of [...defaultTasks.tasks, ...collectorContext.tasks]) {\n if (c.type === \"test\" || c.type === \"custom\" || c.type === \"suite\") {\n file.tasks.push(c);\n } else if (c.type === \"collector\") {\n const suite = await c.collect(file);\n if (suite.name || suite.tasks.length) {\n mergeHooks(fileHooks, getHooks(suite));\n file.tasks.push(suite);\n }\n } else {\n c;\n }\n }\n setHooks(file, fileHooks);\n file.collectDuration = now$1() - collectStart;\n } catch (e) {\n const error = processError(e);\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n calculateSuiteHash(file);\n const hasOnlyTasks = someTasksAreOnly(file);\n interpretTaskModes(\n file,\n config.testNamePattern,\n hasOnlyTasks,\n false,\n config.allowOnly\n );\n file.tasks.forEach((task) => {\n var _a2;\n if (((_a2 = task.suite) == null ? void 0 : _a2.id) === \"\") {\n delete task.suite;\n }\n });\n files.push(file);\n }\n return files;\n}\nfunction mergeHooks(baseHooks, hooks) {\n for (const _key in hooks) {\n const key = _key;\n baseHooks[key].push(...hooks[key]);\n }\n return baseHooks;\n}\n\nconst now = Date.now;\nfunction updateSuiteHookState(suite, name, state, runner) {\n var _a;\n if (!suite.result) {\n suite.result = { state: \"run\" };\n }\n if (!((_a = suite.result) == null ? void 0 : _a.hooks)) {\n suite.result.hooks = {};\n }\n const suiteHooks = suite.result.hooks;\n if (suiteHooks) {\n suiteHooks[name] = state;\n updateTask(suite, runner);\n }\n}\nfunction getSuiteHooks(suite, name, sequence) {\n const hooks = getHooks(suite)[name];\n if (sequence === \"stack\" && (name === \"afterAll\" || name === \"afterEach\")) {\n return hooks.slice().reverse();\n }\n return hooks;\n}\nasync function callTaskHooks(task, hooks, sequence) {\n if (sequence === \"stack\") {\n hooks = hooks.slice().reverse();\n }\n if (sequence === \"parallel\") {\n await Promise.all(hooks.map((fn) => fn(task.result)));\n } else {\n for (const fn of hooks) {\n await fn(task.result);\n }\n }\n}\nasync function callSuiteHook(suite, currentTask, name, runner, args) {\n const sequence = runner.config.sequence.hooks;\n const callbacks = [];\n const parentSuite = \"filepath\" in suite ? null : suite.suite || suite.file;\n if (name === \"beforeEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n updateSuiteHookState(currentTask, name, \"run\", runner);\n const hooks = getSuiteHooks(suite, name, sequence);\n if (sequence === \"parallel\") {\n callbacks.push(\n ...await Promise.all(hooks.map((fn) => fn(...args)))\n );\n } else {\n for (const hook of hooks) {\n callbacks.push(await hook(...args));\n }\n }\n updateSuiteHookState(currentTask, name, \"pass\", runner);\n if (name === \"afterEach\" && parentSuite) {\n callbacks.push(\n ...await callSuiteHook(parentSuite, currentTask, name, runner, args)\n );\n }\n return callbacks;\n}\nconst packs = /* @__PURE__ */ new Map();\nlet updateTimer;\nlet previousUpdate;\nfunction updateTask(task, runner) {\n packs.set(task.id, [task.result, task.meta]);\n const { clearTimeout, setTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n updateTimer = setTimeout(() => {\n previousUpdate = sendTasksUpdate(runner);\n }, 10);\n}\nasync function sendTasksUpdate(runner) {\n var _a;\n const { clearTimeout } = getSafeTimers();\n clearTimeout(updateTimer);\n await previousUpdate;\n if (packs.size) {\n const taskPacks = Array.from(packs).map(([id, task]) => {\n return [id, task[0], task[1]];\n });\n const p = (_a = runner.onTaskUpdate) == null ? void 0 : _a.call(runner, taskPacks);\n packs.clear();\n return p;\n }\n}\nasync function callCleanupHooks(cleanups) {\n await Promise.all(\n cleanups.map(async (fn) => {\n if (typeof fn !== \"function\") {\n return;\n }\n await fn();\n })\n );\n}\nasync function runTest(test, runner) {\n var _a, _b, _c, _d, _e, _f, _g;\n await ((_a = runner.onBeforeRunTask) == null ? void 0 : _a.call(runner, test));\n if (test.mode !== \"run\") {\n return;\n }\n if (((_b = test.result) == null ? void 0 : _b.state) === \"fail\") {\n updateTask(test, runner);\n return;\n }\n const start = now();\n test.result = {\n state: \"run\",\n startTime: start,\n retryCount: 0\n };\n updateTask(test, runner);\n setCurrentTest(test);\n const suite = test.suite || test.file;\n const repeats = test.repeats ?? 0;\n for (let repeatCount = 0; repeatCount <= repeats; repeatCount++) {\n const retry = test.retry ?? 0;\n for (let retryCount = 0; retryCount <= retry; retryCount++) {\n let beforeEachCleanups = [];\n try {\n await ((_c = runner.onBeforeTryTask) == null ? void 0 : _c.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n test.result.repeatCount = repeatCount;\n beforeEachCleanups = await callSuiteHook(\n suite,\n test,\n \"beforeEach\",\n runner,\n [test.context, suite]\n );\n if (runner.runTask) {\n await runner.runTask(test);\n } else {\n const fn = getFn(test);\n if (!fn) {\n throw new Error(\n \"Test function is not found. Did you add it using `setFn`?\"\n );\n }\n await fn();\n }\n if (test.promises) {\n const result = await Promise.allSettled(test.promises);\n const errors = result.map((r) => r.status === \"rejected\" ? r.reason : void 0).filter(Boolean);\n if (errors.length) {\n throw errors;\n }\n }\n await ((_d = runner.onAfterTryTask) == null ? void 0 : _d.call(runner, test, {\n retry: retryCount,\n repeats: repeatCount\n }));\n if (test.result.state !== \"fail\") {\n if (!test.repeats) {\n test.result.state = \"pass\";\n } else if (test.repeats && retry === retryCount) {\n test.result.state = \"pass\";\n }\n }\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n if (test.pending || ((_e = test.result) == null ? void 0 : _e.state) === \"skip\") {\n test.mode = \"skip\";\n test.result = { state: \"skip\" };\n updateTask(test, runner);\n setCurrentTest(void 0);\n return;\n }\n try {\n await ((_f = runner.onTaskFinished) == null ? void 0 : _f.call(runner, test));\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, test, \"afterEach\", runner, [\n test.context,\n suite\n ]);\n await callCleanupHooks(beforeEachCleanups);\n await callFixtureCleanup(test.context);\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n if (test.result.state === \"pass\") {\n break;\n }\n if (retryCount < retry) {\n test.result.state = \"run\";\n test.result.retryCount = (test.result.retryCount ?? 0) + 1;\n }\n updateTask(test, runner);\n }\n }\n try {\n await callTaskHooks(test, test.onFinished || [], \"stack\");\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n if (test.result.state === \"fail\") {\n try {\n await callTaskHooks(\n test,\n test.onFailed || [],\n runner.config.sequence.hooks\n );\n } catch (e) {\n failTask(test.result, e, runner.config.diffOptions);\n }\n }\n if (test.fails) {\n if (test.result.state === \"pass\") {\n const error = processError(new Error(\"Expect test to fail\"));\n test.result.state = \"fail\";\n test.result.errors = [error];\n } else {\n test.result.state = \"pass\";\n test.result.errors = void 0;\n }\n }\n setCurrentTest(void 0);\n test.result.duration = now() - start;\n await ((_g = runner.onAfterRunTask) == null ? void 0 : _g.call(runner, test));\n updateTask(test, runner);\n}\nfunction failTask(result, err, diffOptions) {\n if (err instanceof PendingError) {\n result.state = \"skip\";\n return;\n }\n result.state = \"fail\";\n const errors = Array.isArray(err) ? err : [err];\n for (const e of errors) {\n const error = processError(e, diffOptions);\n result.errors ?? (result.errors = []);\n result.errors.push(error);\n }\n}\nfunction markTasksAsSkipped(suite, runner) {\n suite.tasks.forEach((t) => {\n t.mode = \"skip\";\n t.result = { ...t.result, state: \"skip\" };\n updateTask(t, runner);\n if (t.type === \"suite\") {\n markTasksAsSkipped(t, runner);\n }\n });\n}\nasync function runSuite(suite, runner) {\n var _a, _b, _c, _d;\n await ((_a = runner.onBeforeRunSuite) == null ? void 0 : _a.call(runner, suite));\n if (((_b = suite.result) == null ? void 0 : _b.state) === \"fail\") {\n markTasksAsSkipped(suite, runner);\n updateTask(suite, runner);\n return;\n }\n const start = now();\n suite.result = {\n state: \"run\",\n startTime: start\n };\n updateTask(suite, runner);\n let beforeAllCleanups = [];\n if (suite.mode === \"skip\") {\n suite.result.state = \"skip\";\n } else if (suite.mode === \"todo\") {\n suite.result.state = \"todo\";\n } else {\n try {\n beforeAllCleanups = await callSuiteHook(\n suite,\n suite,\n \"beforeAll\",\n runner,\n [suite]\n );\n if (runner.runSuite) {\n await runner.runSuite(suite);\n } else {\n for (let tasksGroup of partitionSuiteChildren(suite)) {\n if (tasksGroup[0].concurrent === true) {\n await Promise.all(tasksGroup.map((c) => runSuiteChild(c, runner)));\n } else {\n const { sequence } = runner.config;\n if (sequence.shuffle || suite.shuffle) {\n const suites = tasksGroup.filter(\n (group) => group.type === \"suite\"\n );\n const tests = tasksGroup.filter((group) => group.type === \"test\");\n const groups = shuffle([suites, tests], sequence.seed);\n tasksGroup = groups.flatMap(\n (group) => shuffle(group, sequence.seed)\n );\n }\n for (const c of tasksGroup) {\n await runSuiteChild(c, runner);\n }\n }\n }\n }\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n try {\n await callSuiteHook(suite, suite, \"afterAll\", runner, [suite]);\n await callCleanupHooks(beforeAllCleanups);\n } catch (e) {\n failTask(suite.result, e, runner.config.diffOptions);\n }\n if (suite.mode === \"run\") {\n if (!runner.config.passWithNoTests && !hasTests(suite)) {\n suite.result.state = \"fail\";\n if (!((_c = suite.result.errors) == null ? void 0 : _c.length)) {\n const error = processError(\n new Error(`No test found in suite ${suite.name}`)\n );\n suite.result.errors = [error];\n }\n } else if (hasFailed(suite)) {\n suite.result.state = \"fail\";\n } else {\n suite.result.state = \"pass\";\n }\n }\n updateTask(suite, runner);\n suite.result.duration = now() - start;\n await ((_d = runner.onAfterRunSuite) == null ? void 0 : _d.call(runner, suite));\n }\n}\nlet limitMaxConcurrency;\nasync function runSuiteChild(c, runner) {\n if (c.type === \"test\" || c.type === \"custom\") {\n return limitMaxConcurrency(() => runTest(c, runner));\n } else if (c.type === \"suite\") {\n return runSuite(c, runner);\n }\n}\nasync function runFiles(files, runner) {\n var _a, _b;\n limitMaxConcurrency ?? (limitMaxConcurrency = limitConcurrency(runner.config.maxConcurrency));\n for (const file of files) {\n if (!file.tasks.length && !runner.config.passWithNoTests) {\n if (!((_b = (_a = file.result) == null ? void 0 : _a.errors) == null ? void 0 : _b.length)) {\n const error = processError(\n new Error(`No test suite found in file ${file.filepath}`)\n );\n file.result = {\n state: \"fail\",\n errors: [error]\n };\n }\n }\n await runSuite(file, runner);\n }\n}\nasync function startTests(paths, runner) {\n var _a, _b, _c, _d;\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(paths, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n await ((_c = runner.onBeforeRunFiles) == null ? void 0 : _c.call(runner, files));\n await runFiles(files, runner);\n await ((_d = runner.onAfterRunFiles) == null ? void 0 : _d.call(runner, files));\n await sendTasksUpdate(runner);\n return files;\n}\nasync function publicCollect(paths, runner) {\n var _a, _b;\n await ((_a = runner.onBeforeCollect) == null ? void 0 : _a.call(runner, paths));\n const files = await collectTests(paths, runner);\n await ((_b = runner.onCollected) == null ? void 0 : _b.call(runner, files));\n return files;\n}\n\nfunction getDefaultHookTimeout() {\n return getRunner().config.hookTimeout;\n}\nfunction beforeAll(fn, timeout) {\n return getCurrentSuite().on(\n \"beforeAll\",\n withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)\n );\n}\nfunction afterAll(fn, timeout) {\n return getCurrentSuite().on(\n \"afterAll\",\n withTimeout(fn, timeout ?? getDefaultHookTimeout(), true)\n );\n}\nfunction beforeEach(fn, timeout) {\n return getCurrentSuite().on(\n \"beforeEach\",\n withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)\n );\n}\nfunction afterEach(fn, timeout) {\n return getCurrentSuite().on(\n \"afterEach\",\n withTimeout(withFixtures(fn), timeout ?? getDefaultHookTimeout(), true)\n );\n}\nconst onTestFailed = createTestHook(\n \"onTestFailed\",\n (test, handler) => {\n test.onFailed || (test.onFailed = []);\n test.onFailed.push(handler);\n }\n);\nconst onTestFinished = createTestHook(\n \"onTestFinished\",\n (test, handler) => {\n test.onFinished || (test.onFinished = []);\n test.onFinished.push(handler);\n }\n);\nfunction createTestHook(name, handler) {\n return (fn) => {\n const current = getCurrentTest();\n if (!current) {\n throw new Error(`Hook ${name}() can only be called inside a test`);\n }\n return handler(current, fn);\n };\n}\n\nexport { afterAll, afterEach, beforeAll, beforeEach, publicCollect as collectTests, createTaskCollector, describe, getCurrentSuite, getCurrentTest, getFn, getHooks, it, onTestFailed, onTestFinished, setFn, setHooks, startTests, suite, test, updateTask };\n","function getWorkerState() {\n const workerState = globalThis.__vitest_worker__;\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, \"__vitest_worker__\", {\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 == null ? void 0 : state.environment.name;\n}\n\nexport { getCurrentEnvironment as a, getWorkerState as g, provideWorkerState as p };\n","import { relative } from 'pathe';\nimport '@vitest/runner/utils';\nimport '@vitest/utils';\nimport { g as getWorkerState } from './global.7bFbnyXl.js';\nimport './env.2ltrQNq0.js';\n\nfunction getRunMode() {\n return getWorkerState().config.mode;\n}\nfunction isRunningInBenchmark() {\n return getRunMode() === \"benchmark\";\n}\nconst relativePath = relative;\nfunction removeUndefinedValues(obj) {\n for (const key in Object.keys(obj)) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\nexport { removeUndefinedValues as a, isRunningInBenchmark as i, relativePath as r };\n","import { getCurrentSuite } from '@vitest/runner';\nimport { createChainable } from '@vitest/runner/utils';\nimport { noop } from '@vitest/utils';\nimport { i as isRunningInBenchmark } from './index.BJmtb_7W.js';\n\nconst benchFns = /* @__PURE__ */ new WeakMap();\nconst benchOptsMap = /* @__PURE__ */ new WeakMap();\nfunction getBenchOptions(key) {\n return benchOptsMap.get(key);\n}\nfunction getBenchFn(key) {\n return benchFns.get(key);\n}\nconst bench = createBenchmark(function(name, fn = noop, options = {}) {\n if (!isRunningInBenchmark()) {\n throw new Error(\"`bench()` is only available in benchmark mode.\");\n }\n const task = getCurrentSuite().task(formatName(name), {\n ...this,\n meta: {\n benchmark: true\n }\n });\n benchFns.set(task, fn);\n benchOptsMap.set(task, options);\n});\nfunction createBenchmark(fn) {\n const benchmark = createChainable(\n [\"skip\", \"only\", \"todo\"],\n fn\n );\n benchmark.skipIf = (condition) => condition ? benchmark.skip : benchmark;\n benchmark.runIf = (condition) => condition ? benchmark : benchmark.skip;\n return benchmark;\n}\nfunction formatName(name) {\n return typeof name === \"string\" ? name : name instanceof Function ? name.name || \"<anonymous>\" : String(name);\n}\n\nexport { getBenchOptions as a, bench as b, getBenchFn as g };\n","import { g as getWorkerState } from './global.7bFbnyXl.js';\n\nconst filesCount = /* @__PURE__ */ new Map();\nconst cache = /* @__PURE__ */ new Map();\nfunction runOnce(fn, key) {\n const filepath = getWorkerState().filepath || \"__unknown_files__\";\n if (!key) {\n filesCount.set(filepath, (filesCount.get(filepath) || 0) + 1);\n key = String(filesCount.get(filepath));\n }\n const id = `${filepath}:${key}`;\n if (!cache.has(id)) {\n cache.set(id, fn());\n }\n return cache.get(id);\n}\nfunction isFirstRun() {\n let firstRun = false;\n runOnce(() => {\n firstRun = true;\n }, \"__vitest_first_run__\");\n return firstRun;\n}\nfunction resetRunOnceCounter() {\n filesCount.clear();\n}\n\nexport { runOnce as a, isFirstRun as i, resetRunOnceCounter as r };\n","var __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// (disabled):util\nvar require_util = __commonJS({\n \"(disabled):util\"() {\n }\n});\n\n// lib/chai/utils/index.js\nvar utils_exports = {};\n__export(utils_exports, {\n addChainableMethod: () => addChainableMethod,\n addLengthGuard: () => addLengthGuard,\n addMethod: () => addMethod,\n addProperty: () => addProperty,\n checkError: () => check_error_exports,\n compareByInspect: () => compareByInspect,\n eql: () => deep_eql_default,\n expectTypes: () => expectTypes,\n flag: () => flag,\n getActual: () => getActual,\n getMessage: () => getMessage2,\n getName: () => getName,\n getOperator: () => getOperator,\n getOwnEnumerableProperties: () => getOwnEnumerableProperties,\n getOwnEnumerablePropertySymbols: () => getOwnEnumerablePropertySymbols,\n getPathInfo: () => getPathInfo,\n hasProperty: () => hasProperty,\n inspect: () => inspect2,\n isNaN: () => isNaN2,\n isProxyEnabled: () => isProxyEnabled,\n isRegExp: () => isRegExp2,\n objDisplay: () => objDisplay,\n overwriteChainableMethod: () => overwriteChainableMethod,\n overwriteMethod: () => overwriteMethod,\n overwriteProperty: () => overwriteProperty,\n proxify: () => proxify,\n test: () => test,\n transferFlags: () => transferFlags,\n type: () => type\n});\n\n// node_modules/check-error/index.js\nvar check_error_exports = {};\n__export(check_error_exports, {\n compatibleConstructor: () => compatibleConstructor,\n compatibleInstance: () => compatibleInstance,\n compatibleMessage: () => compatibleMessage,\n getConstructorName: () => getConstructorName,\n getMessage: () => getMessage\n});\nfunction isErrorInstance(obj) {\n return obj instanceof Error || Object.prototype.toString.call(obj) === \"[object Error]\";\n}\n__name(isErrorInstance, \"isErrorInstance\");\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp, \"isRegExp\");\nfunction compatibleInstance(thrown, errorLike) {\n return isErrorInstance(errorLike) && thrown === errorLike;\n}\n__name(compatibleInstance, \"compatibleInstance\");\nfunction compatibleConstructor(thrown, errorLike) {\n if (isErrorInstance(errorLike)) {\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if ((typeof errorLike === \"object\" || typeof errorLike === \"function\") && errorLike.prototype) {\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n return false;\n}\n__name(compatibleConstructor, \"compatibleConstructor\");\nfunction compatibleMessage(thrown, errMatcher) {\n const comparisonString = typeof thrown === \"string\" ? thrown : thrown.message;\n if (isRegExp(errMatcher)) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === \"string\") {\n return comparisonString.indexOf(errMatcher) !== -1;\n }\n return false;\n}\n__name(compatibleMessage, \"compatibleMessage\");\nfunction getConstructorName(errorLike) {\n let constructorName = errorLike;\n if (isErrorInstance(errorLike)) {\n constructorName = errorLike.constructor.name;\n } else if (typeof errorLike === \"function\") {\n constructorName = errorLike.name;\n if (constructorName === \"\") {\n const newConstructorName = new errorLike().name;\n constructorName = newConstructorName || constructorName;\n }\n }\n return constructorName;\n}\n__name(getConstructorName, \"getConstructorName\");\nfunction getMessage(errorLike) {\n let msg = \"\";\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === \"string\") {\n msg = errorLike;\n }\n return msg;\n}\n__name(getMessage, \"getMessage\");\n\n// lib/chai/utils/flag.js\nfunction flag(obj, key, value) {\n var flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null));\n if (arguments.length === 3) {\n flags[key] = value;\n } else {\n return flags[key];\n }\n}\n__name(flag, \"flag\");\n\n// lib/chai/utils/test.js\nfunction test(obj, args) {\n var negate = flag(obj, \"negate\"), expr = args[0];\n return negate ? !expr : expr;\n}\n__name(test, \"test\");\n\n// lib/chai/utils/type-detect.js\nfunction type(obj) {\n if (typeof obj === \"undefined\") {\n return \"undefined\";\n }\n if (obj === null) {\n return \"null\";\n }\n const stringTag = obj[Symbol.toStringTag];\n if (typeof stringTag === \"string\") {\n return stringTag;\n }\n const type3 = Object.prototype.toString.call(obj).slice(8, -1);\n return type3;\n}\n__name(type, \"type\");\n\n// node_modules/assertion-error/index.js\nvar canElideFrames = \"captureStackTrace\" in Error;\nvar AssertionError = class _AssertionError extends Error {\n static {\n __name(this, \"AssertionError\");\n }\n message;\n get name() {\n return \"AssertionError\";\n }\n get ok() {\n return false;\n }\n constructor(message = \"Unspecified AssertionError\", props, ssf) {\n super(message);\n this.message = message;\n if (canElideFrames) {\n Error.captureStackTrace(this, ssf || _AssertionError);\n }\n for (const key in props) {\n if (!(key in this)) {\n this[key] = props[key];\n }\n }\n }\n toJSON(stack) {\n return {\n ...this,\n name: this.name,\n message: this.message,\n ok: false,\n stack: stack !== false ? this.stack : void 0\n };\n }\n};\n\n// lib/chai/utils/expectTypes.js\nfunction expectTypes(obj, types) {\n var flagMsg = flag(obj, \"message\");\n var ssfi = flag(obj, \"ssfi\");\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n obj = flag(obj, \"object\");\n types = types.map(function(t) {\n return t.toLowerCase();\n });\n types.sort();\n var str = types.map(function(t, index) {\n var art = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(t.charAt(0)) ? \"an\" : \"a\";\n var or = types.length > 1 && index === types.length - 1 ? \"or \" : \"\";\n return or + art + \" \" + t;\n }).join(\", \");\n var objType = type(obj).toLowerCase();\n if (!types.some(function(expected) {\n return objType === expected;\n })) {\n throw new AssertionError(\n flagMsg + \"object tested must be \" + str + \", but \" + objType + \" given\",\n void 0,\n ssfi\n );\n }\n}\n__name(expectTypes, \"expectTypes\");\n\n// lib/chai/utils/getActual.js\nfunction getActual(obj, args) {\n return args.length > 4 ? args[4] : obj._obj;\n}\n__name(getActual, \"getActual\");\n\n// node_modules/loupe/lib/helpers.js\nvar ansiColors = {\n bold: [\"1\", \"22\"],\n dim: [\"2\", \"22\"],\n italic: [\"3\", \"23\"],\n underline: [\"4\", \"24\"],\n // 5 & 6 are blinking\n inverse: [\"7\", \"27\"],\n hidden: [\"8\", \"28\"],\n strike: [\"9\", \"29\"],\n // 10-20 are fonts\n // 21-29 are resets for 1-9\n black: [\"30\", \"39\"],\n red: [\"31\", \"39\"],\n green: [\"32\", \"39\"],\n yellow: [\"33\", \"39\"],\n blue: [\"34\", \"39\"],\n magenta: [\"35\", \"39\"],\n cyan: [\"36\", \"39\"],\n white: [\"37\", \"39\"],\n brightblack: [\"30;1\", \"39\"],\n brightred: [\"31;1\", \"39\"],\n brightgreen: [\"32;1\", \"39\"],\n brightyellow: [\"33;1\", \"39\"],\n brightblue: [\"34;1\", \"39\"],\n brightmagenta: [\"35;1\", \"39\"],\n brightcyan: [\"36;1\", \"39\"],\n brightwhite: [\"37;1\", \"39\"],\n grey: [\"90\", \"39\"]\n};\nvar styles = {\n special: \"cyan\",\n number: \"yellow\",\n bigint: \"yellow\",\n boolean: \"yellow\",\n undefined: \"grey\",\n null: \"bold\",\n string: \"green\",\n symbol: \"green\",\n date: \"magenta\",\n regexp: \"red\"\n};\nvar truncator = \"\\u2026\";\nfunction colorise(value, styleType) {\n const color = ansiColors[styles[styleType]] || ansiColors[styleType] || \"\";\n if (!color) {\n return String(value);\n }\n return `\\x1B[${color[0]}m${String(value)}\\x1B[${color[1]}m`;\n}\n__name(colorise, \"colorise\");\nfunction normaliseOptions({\n showHidden = false,\n depth = 2,\n colors = false,\n customInspect = true,\n showProxy = false,\n maxArrayLength = Infinity,\n breakLength = Infinity,\n seen = [],\n // eslint-disable-next-line no-shadow\n truncate: truncate2 = Infinity,\n stylize = String\n} = {}, inspect3) {\n const options = {\n showHidden: Boolean(showHidden),\n depth: Number(depth),\n colors: Boolean(colors),\n customInspect: Boolean(customInspect),\n showProxy: Boolean(showProxy),\n maxArrayLength: Number(maxArrayLength),\n breakLength: Number(breakLength),\n truncate: Number(truncate2),\n seen,\n inspect: inspect3,\n stylize\n };\n if (options.colors) {\n options.stylize = colorise;\n }\n return options;\n}\n__name(normaliseOptions, \"normaliseOptions\");\nfunction truncate(string, length, tail = truncator) {\n string = String(string);\n const tailLength = tail.length;\n const stringLength = string.length;\n if (tailLength > length && stringLength > tailLength) {\n return tail;\n }\n if (stringLength > length && stringLength > tailLength) {\n return `${string.slice(0, length - tailLength)}${tail}`;\n }\n return string;\n}\n__name(truncate, \"truncate\");\nfunction inspectList(list, options, inspectItem, separator = \", \") {\n inspectItem = inspectItem || options.inspect;\n const size = list.length;\n if (size === 0)\n return \"\";\n const originalLength = options.truncate;\n let output = \"\";\n let peek = \"\";\n let truncated = \"\";\n for (let i = 0; i < size; i += 1) {\n const last = i + 1 === list.length;\n const secondToLast = i + 2 === list.length;\n truncated = `${truncator}(${list.length - i})`;\n const value = list[i];\n options.truncate = originalLength - output.length - (last ? 0 : separator.length);\n const string = peek || inspectItem(value, options) + (last ? \"\" : separator);\n const nextLength = output.length + string.length;\n const truncatedLength = nextLength + truncated.length;\n if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) {\n break;\n }\n if (!last && !secondToLast && truncatedLength > originalLength) {\n break;\n }\n peek = last ? \"\" : inspectItem(list[i + 1], options) + (secondToLast ? \"\" : separator);\n if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) {\n break;\n }\n output += string;\n if (!last && !secondToLast && nextLength + peek.length >= originalLength) {\n truncated = `${truncator}(${list.length - i - 1})`;\n break;\n }\n truncated = \"\";\n }\n return `${output}${truncated}`;\n}\n__name(inspectList, \"inspectList\");\nfunction quoteComplexKey(key) {\n if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) {\n return key;\n }\n return JSON.stringify(key).replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n}\n__name(quoteComplexKey, \"quoteComplexKey\");\nfunction inspectProperty([key, value], options) {\n options.truncate -= 2;\n if (typeof key === \"string\") {\n key = quoteComplexKey(key);\n } else if (typeof key !== \"number\") {\n key = `[${options.inspect(key, options)}]`;\n }\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key}: ${value}`;\n}\n__name(inspectProperty, \"inspectProperty\");\n\n// node_modules/loupe/lib/array.js\nfunction inspectArray(array, options) {\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return \"[]\";\n options.truncate -= 4;\n const listContents = inspectList(array, options);\n options.truncate -= listContents.length;\n let propertyContents = \"\";\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n }\n return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectArray, \"inspectArray\");\n\n// node_modules/loupe/lib/typedarray.js\nvar getArrayName = /* @__PURE__ */ __name((array) => {\n if (typeof Buffer === \"function\" && array instanceof Buffer) {\n return \"Buffer\";\n }\n if (array[Symbol.toStringTag]) {\n return array[Symbol.toStringTag];\n }\n return array.constructor.name;\n}, \"getArrayName\");\nfunction inspectTypedArray(array, options) {\n const name = getArrayName(array);\n options.truncate -= name.length + 4;\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return `${name}[]`;\n let output = \"\";\n for (let i = 0; i < array.length; i++) {\n const string = `${options.stylize(truncate(array[i], options.truncate), \"number\")}${i === array.length - 1 ? \"\" : \", \"}`;\n options.truncate -= string.length;\n if (array[i] !== array.length && options.truncate <= 3) {\n output += `${truncator}(${array.length - array[i] + 1})`;\n break;\n }\n output += string;\n }\n let propertyContents = \"\";\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n }\n return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectTypedArray, \"inspectTypedArray\");\n\n// node_modules/loupe/lib/date.js\nfunction inspectDate(dateObject, options) {\n const stringRepresentation = dateObject.toJSON();\n if (stringRepresentation === null) {\n return \"Invalid Date\";\n }\n const split = stringRepresentation.split(\"T\");\n const date = split[0];\n return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, \"date\");\n}\n__name(inspectDate, \"inspectDate\");\n\n// node_modules/loupe/lib/function.js\nfunction inspectFunction(func, options) {\n const functionType = func[Symbol.toStringTag] || \"Function\";\n const name = func.name;\n if (!name) {\n return options.stylize(`[${functionType}]`, \"special\");\n }\n return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, \"special\");\n}\n__name(inspectFunction, \"inspectFunction\");\n\n// node_modules/loupe/lib/map.js\nfunction inspectMapEntry([key, value], options) {\n options.truncate -= 4;\n key = options.inspect(key, options);\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key} => ${value}`;\n}\n__name(inspectMapEntry, \"inspectMapEntry\");\nfunction mapToEntries(map) {\n const entries = [];\n map.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n}\n__name(mapToEntries, \"mapToEntries\");\nfunction inspectMap(map, options) {\n const size = map.size - 1;\n if (size <= 0) {\n return \"Map{}\";\n }\n options.truncate -= 7;\n return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`;\n}\n__name(inspectMap, \"inspectMap\");\n\n// node_modules/loupe/lib/number.js\nvar isNaN = Number.isNaN || ((i) => i !== i);\nfunction inspectNumber(number, options) {\n if (isNaN(number)) {\n return options.stylize(\"NaN\", \"number\");\n }\n if (number === Infinity) {\n return options.stylize(\"Infinity\", \"number\");\n }\n if (number === -Infinity) {\n return options.stylize(\"-Infinity\", \"number\");\n }\n if (number === 0) {\n return options.stylize(1 / number === Infinity ? \"+0\" : \"-0\", \"number\");\n }\n return options.stylize(truncate(String(number), options.truncate), \"number\");\n}\n__name(inspectNumber, \"inspectNumber\");\n\n// node_modules/loupe/lib/bigint.js\nfunction inspectBigInt(number, options) {\n let nums = truncate(number.toString(), options.truncate - 1);\n if (nums !== truncator)\n nums += \"n\";\n return options.stylize(nums, \"bigint\");\n}\n__name(inspectBigInt, \"inspectBigInt\");\n\n// node_modules/loupe/lib/regexp.js\nfunction inspectRegExp(value, options) {\n const flags = value.toString().split(\"/\")[2];\n const sourceLength = options.truncate - (2 + flags.length);\n const source = value.source;\n return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, \"regexp\");\n}\n__name(inspectRegExp, \"inspectRegExp\");\n\n// node_modules/loupe/lib/set.js\nfunction arrayFromSet(set2) {\n const values = [];\n set2.forEach((value) => {\n values.push(value);\n });\n return values;\n}\n__name(arrayFromSet, \"arrayFromSet\");\nfunction inspectSet(set2, options) {\n if (set2.size === 0)\n return \"Set{}\";\n options.truncate -= 7;\n return `Set{ ${inspectList(arrayFromSet(set2), options)} }`;\n}\n__name(inspectSet, \"inspectSet\");\n\n// node_modules/loupe/lib/string.js\nvar stringEscapeChars = new RegExp(\"['\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]\", \"g\");\nvar escapeCharacters = {\n \"\\b\": \"\\\\b\",\n \"\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"'\": \"\\\\'\",\n \"\\\\\": \"\\\\\\\\\"\n};\nvar hex = 16;\nvar unicodeLength = 4;\nfunction escape(char) {\n return escapeCharacters[char] || `\\\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`;\n}\n__name(escape, \"escape\");\nfunction inspectString(string, options) {\n if (stringEscapeChars.test(string)) {\n string = string.replace(stringEscapeChars, escape);\n }\n return options.stylize(`'${truncate(string, options.truncate - 2)}'`, \"string\");\n}\n__name(inspectString, \"inspectString\");\n\n// node_modules/loupe/lib/symbol.js\nfunction inspectSymbol(value) {\n if (\"description\" in Symbol.prototype) {\n return value.description ? `Symbol(${value.description})` : \"Symbol()\";\n }\n return value.toString();\n}\n__name(inspectSymbol, \"inspectSymbol\");\n\n// node_modules/loupe/lib/promise.js\nvar getPromiseValue = /* @__PURE__ */ __name(() => \"Promise{\\u2026}\", \"getPromiseValue\");\ntry {\n const { getPromiseDetails, kPending, kRejected } = process.binding(\"util\");\n if (Array.isArray(getPromiseDetails(Promise.resolve()))) {\n getPromiseValue = /* @__PURE__ */ __name((value, options) => {\n const [state, innerValue] = getPromiseDetails(value);\n if (state === kPending) {\n return \"Promise{<pending>}\";\n }\n return `Promise${state === kRejected ? \"!\" : \"\"}{${options.inspect(innerValue, options)}}`;\n }, \"getPromiseValue\");\n }\n} catch (notNode) {\n}\nvar promise_default = getPromiseValue;\n\n// node_modules/loupe/lib/object.js\nfunction inspectObject(object, options) {\n const properties = Object.getOwnPropertyNames(object);\n const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [];\n if (properties.length === 0 && symbols.length === 0) {\n return \"{}\";\n }\n options.truncate -= 4;\n options.seen = options.seen || [];\n if (options.seen.indexOf(object) >= 0) {\n return \"[Circular]\";\n }\n options.seen.push(object);\n const propertyContents = inspectList(properties.map((key) => [key, object[key]]), options, inspectProperty);\n const symbolContents = inspectList(symbols.map((key) => [key, object[key]]), options, inspectProperty);\n options.seen.pop();\n let sep = \"\";\n if (propertyContents && symbolContents) {\n sep = \", \";\n }\n return `{ ${propertyContents}${sep}${symbolContents} }`;\n}\n__name(inspectObject, \"inspectObject\");\n\n// node_modules/loupe/lib/class.js\nvar toStringTag = typeof Symbol !== \"undefined\" && Symbol.toStringTag ? Symbol.toStringTag : false;\nfunction inspectClass(value, options) {\n let name = \"\";\n if (toStringTag && toStringTag in value) {\n name = value[toStringTag];\n }\n name = name || value.constructor.name;\n if (!name || name === \"_class\") {\n name = \"<Anonymous Class>\";\n }\n options.truncate -= name.length;\n return `${name}${inspectObject(value, options)}`;\n}\n__name(inspectClass, \"inspectClass\");\n\n// node_modules/loupe/lib/arguments.js\nfunction inspectArguments(args, options) {\n if (args.length === 0)\n return \"Arguments[]\";\n options.truncate -= 13;\n return `Arguments[ ${inspectList(args, options)} ]`;\n}\n__name(inspectArguments, \"inspectArguments\");\n\n// node_modules/loupe/lib/error.js\nvar errorKeys = [\n \"stack\",\n \"line\",\n \"column\",\n \"name\",\n \"message\",\n \"fileName\",\n \"lineNumber\",\n \"columnNumber\",\n \"number\",\n \"description\"\n];\nfunction inspectObject2(error, options) {\n const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1);\n const name = error.name;\n options.truncate -= name.length;\n let message = \"\";\n if (typeof error.message === \"string\") {\n message = truncate(error.message, options.truncate);\n } else {\n properties.unshift(\"message\");\n }\n message = message ? `: ${message}` : \"\";\n options.truncate -= message.length + 5;\n const propertyContents = inspectList(properties.map((key) => [key, error[key]]), options, inspectProperty);\n return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : \"\"}`;\n}\n__name(inspectObject2, \"inspectObject\");\n\n// node_modules/loupe/lib/html.js\nfunction inspectAttribute([key, value], options) {\n options.truncate -= 3;\n if (!value) {\n return `${options.stylize(String(key), \"yellow\")}`;\n }\n return `${options.stylize(String(key), \"yellow\")}=${options.stylize(`\"${value}\"`, \"string\")}`;\n}\n__name(inspectAttribute, \"inspectAttribute\");\nfunction inspectHTMLCollection(collection, options) {\n return inspectList(collection, options, inspectHTML, \"\\n\");\n}\n__name(inspectHTMLCollection, \"inspectHTMLCollection\");\nfunction inspectHTML(element, options) {\n const properties = element.getAttributeNames();\n const name = element.tagName.toLowerCase();\n const head = options.stylize(`<${name}`, \"special\");\n const headClose = options.stylize(`>`, \"special\");\n const tail = options.stylize(`</${name}>`, \"special\");\n options.truncate -= name.length * 2 + 5;\n let propertyContents = \"\";\n if (properties.length > 0) {\n propertyContents += \" \";\n propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, \" \");\n }\n options.truncate -= propertyContents.length;\n const truncate2 = options.truncate;\n let children = inspectHTMLCollection(element.children, options);\n if (children && children.length > truncate2) {\n children = `${truncator}(${element.children.length})`;\n }\n return `${head}${propertyContents}${headClose}${children}${tail}`;\n}\n__name(inspectHTML, \"inspectHTML\");\n\n// node_modules/loupe/lib/index.js\nvar symbolsSupported = typeof Symbol === \"function\" && typeof Symbol.for === \"function\";\nvar chaiInspect = symbolsSupported ? Symbol.for(\"chai/inspect\") : \"@@chai/inspect\";\nvar nodeInspect = false;\ntry {\n const nodeUtil = require_util();\n nodeInspect = nodeUtil.inspect ? nodeUtil.inspect.custom : false;\n} catch (noNodeInspect) {\n nodeInspect = false;\n}\nvar constructorMap = /* @__PURE__ */ new WeakMap();\nvar stringTagMap = {};\nvar baseTypesMap = {\n undefined: (value, options) => options.stylize(\"undefined\", \"undefined\"),\n null: (value, options) => options.stylize(\"null\", \"null\"),\n boolean: (value, options) => options.stylize(String(value), \"boolean\"),\n Boolean: (value, options) => options.stylize(String(value), \"boolean\"),\n number: inspectNumber,\n Number: inspectNumber,\n bigint: inspectBigInt,\n BigInt: inspectBigInt,\n string: inspectString,\n String: inspectString,\n function: inspectFunction,\n Function: inspectFunction,\n symbol: inspectSymbol,\n // A Symbol polyfill will return `Symbol` not `symbol` from typedetect\n Symbol: inspectSymbol,\n Array: inspectArray,\n Date: inspectDate,\n Map: inspectMap,\n Set: inspectSet,\n RegExp: inspectRegExp,\n Promise: promise_default,\n // WeakSet, WeakMap are totally opaque to us\n WeakSet: (value, options) => options.stylize(\"WeakSet{\\u2026}\", \"special\"),\n WeakMap: (value, options) => options.stylize(\"WeakMap{\\u2026}\", \"special\"),\n Arguments: inspectArguments,\n Int8Array: inspectTypedArray,\n Uint8Array: inspectTypedArray,\n Uint8ClampedArray: inspectTypedArray,\n Int16Array: inspectTypedArray,\n Uint16Array: inspectTypedArray,\n Int32Array: inspectTypedArray,\n Uint32Array: inspectTypedArray,\n Float32Array: inspectTypedArray,\n Float64Array: inspectTypedArray,\n Generator: () => \"\",\n DataView: () => \"\",\n ArrayBuffer: () => \"\",\n Error: inspectObject2,\n HTMLCollection: inspectHTMLCollection,\n NodeList: inspectHTMLCollection\n};\nvar inspectCustom = /* @__PURE__ */ __name((value, options, type3) => {\n if (chaiInspect in value && typeof value[chaiInspect] === \"function\") {\n return value[chaiInspect](options);\n }\n if (nodeInspect && nodeInspect in value && typeof value[nodeInspect] === \"function\") {\n return value[nodeInspect](options.depth, options);\n }\n if (\"inspect\" in value && typeof value.inspect === \"function\") {\n return value.inspect(options.depth, options);\n }\n if (\"constructor\" in value && constructorMap.has(value.constructor)) {\n return constructorMap.get(value.constructor)(value, options);\n }\n if (stringTagMap[type3]) {\n return stringTagMap[type3](value, options);\n }\n return \"\";\n}, \"inspectCustom\");\nvar toString = Object.prototype.toString;\nfunction inspect(value, opts = {}) {\n const options = normaliseOptions(opts, inspect);\n const { customInspect } = options;\n let type3 = value === null ? \"null\" : typeof value;\n if (type3 === \"object\") {\n type3 = toString.call(value).slice(8, -1);\n }\n if (type3 in baseTypesMap) {\n return baseTypesMap[type3](value, options);\n }\n if (customInspect && value) {\n const output = inspectCustom(value, options, type3);\n if (output) {\n if (typeof output === \"string\")\n return output;\n return inspect(output, options);\n }\n }\n const proto = value ? Object.getPrototypeOf(value) : false;\n if (proto === Object.prototype || proto === null) {\n return inspectObject(value, options);\n }\n if (value && typeof HTMLElement === \"function\" && value instanceof HTMLElement) {\n return inspectHTML(value, options);\n }\n if (\"constructor\" in value) {\n if (value.constructor !== Object) {\n return inspectClass(value, options);\n }\n return inspectObject(value, options);\n }\n if (value === Object(value)) {\n return inspectObject(value, options);\n }\n return options.stylize(String(value), type3);\n}\n__name(inspect, \"inspect\");\n\n// lib/chai/config.js\nvar config = {\n /**\n * ### config.includeStack\n *\n * User configurable property, influences whether stack trace\n * is included in Assertion error message. Default of false\n * suppresses stack trace in the error message.\n *\n * chai.config.includeStack = true; // enable stack on error\n *\n * @param {boolean}\n * @public\n */\n includeStack: false,\n /**\n * ### config.showDiff\n *\n * User configurable property, influences whether or not\n * the `showDiff` flag should be included in the thrown\n * AssertionErrors. `false` will always be `false`; `true`\n * will be true when the assertion has requested a diff\n * be shown.\n *\n * @param {boolean}\n * @public\n */\n showDiff: true,\n /**\n * ### config.truncateThreshold\n *\n * User configurable property, sets length threshold for actual and\n * expected values in assertion errors. If this threshold is exceeded, for\n * example for large data structures, the value is replaced with something\n * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.\n *\n * Set it to zero if you want to disable truncating altogether.\n *\n * This is especially userful when doing assertions on arrays: having this\n * set to a reasonable large value makes the failure messages readily\n * inspectable.\n *\n * chai.config.truncateThreshold = 0; // disable truncating\n *\n * @param {number}\n * @public\n */\n truncateThreshold: 40,\n /**\n * ### config.useProxy\n *\n * User configurable property, defines if chai will use a Proxy to throw\n * an error when a non-existent property is read, which protects users\n * from typos when using property-based assertions.\n *\n * Set it to false if you want to disable this feature.\n *\n * chai.config.useProxy = false; // disable use of Proxy\n *\n * This feature is automatically disabled regardless of this config value\n * in environments that don't support proxies.\n *\n * @param {boolean}\n * @public\n */\n useProxy: true,\n /**\n * ### config.proxyExcludedKeys\n *\n * User configurable property, defines which properties should be ignored\n * instead of throwing an error if they do not exist on the assertion.\n * This is only applied if the environment Chai is running in supports proxies and\n * if the `useProxy` configuration setting is enabled.\n * By default, `then` and `inspect` will not throw an error if they do not exist on the\n * assertion object because the `.inspect` property is read by `util.inspect` (for example, when\n * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking.\n *\n * // By default these keys will not throw an error if they do not exist on the assertion object\n * chai.config.proxyExcludedKeys = ['then', 'inspect'];\n *\n * @param {Array}\n * @public\n */\n proxyExcludedKeys: [\"then\", \"catch\", \"inspect\", \"toJSON\"],\n /**\n * ### config.deepEqual\n *\n * User configurable property, defines which a custom function to use for deepEqual\n * comparisons.\n * By default, the function used is the one from the `deep-eql` package without custom comparator.\n *\n * // use a custom comparator\n * chai.config.deepEqual = (expected, actual) => {\n * return chai.util.eql(expected, actual, {\n * comparator: (expected, actual) => {\n * // for non number comparison, use the default behavior\n * if(typeof expected !== 'number') return null;\n * // allow a difference of 10 between compared numbers\n * return typeof actual === 'number' && Math.abs(actual - expected) < 10\n * }\n * })\n * };\n *\n * @param {Function}\n * @public\n */\n deepEqual: null\n};\n\n// lib/chai/utils/inspect.js\nfunction inspect2(obj, showHidden, depth, colors) {\n var options = {\n colors,\n depth: typeof depth === \"undefined\" ? 2 : depth,\n showHidden,\n truncate: config.truncateThreshold ? config.truncateThreshold : Infinity\n };\n return inspect(obj, options);\n}\n__name(inspect2, \"inspect\");\n\n// lib/chai/utils/objDisplay.js\nfunction objDisplay(obj) {\n var str = inspect2(obj), type3 = Object.prototype.toString.call(obj);\n if (config.truncateThreshold && str.length >= config.truncateThreshold) {\n if (type3 === \"[object Function]\") {\n return !obj.name || obj.name === \"\" ? \"[Function]\" : \"[Function: \" + obj.name + \"]\";\n } else if (type3 === \"[object Array]\") {\n return \"[ Array(\" + obj.length + \") ]\";\n } else if (type3 === \"[object Object]\") {\n var keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(\", \") + \", ...\" : keys.join(\", \");\n return \"{ Object (\" + kstr + \") }\";\n } else {\n return str;\n }\n } else {\n return str;\n }\n}\n__name(objDisplay, \"objDisplay\");\n\n// lib/chai/utils/getMessage.js\nfunction getMessage2(obj, args) {\n var negate = flag(obj, \"negate\"), val = flag(obj, \"object\"), expected = args[3], actual = getActual(obj, args), msg = negate ? args[2] : args[1], flagMsg = flag(obj, \"message\");\n if (typeof msg === \"function\")\n msg = msg();\n msg = msg || \"\";\n msg = msg.replace(/#\\{this\\}/g, function() {\n return objDisplay(val);\n }).replace(/#\\{act\\}/g, function() {\n return objDisplay(actual);\n }).replace(/#\\{exp\\}/g, function() {\n return objDisplay(expected);\n });\n return flagMsg ? flagMsg + \": \" + msg : msg;\n}\n__name(getMessage2, \"getMessage\");\n\n// lib/chai/utils/transferFlags.js\nfunction transferFlags(assertion, object, includeAll) {\n var flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null));\n if (!object.__flags) {\n object.__flags = /* @__PURE__ */ Object.create(null);\n }\n includeAll = arguments.length === 3 ? includeAll : true;\n for (var flag3 in flags) {\n if (includeAll || flag3 !== \"object\" && flag3 !== \"ssfi\" && flag3 !== \"lockSsfi\" && flag3 != \"message\") {\n object.__flags[flag3] = flags[flag3];\n }\n }\n}\n__name(transferFlags, \"transferFlags\");\n\n// node_modules/deep-eql/index.js\nfunction type2(obj) {\n if (typeof obj === \"undefined\") {\n return \"undefined\";\n }\n if (obj === null) {\n return \"null\";\n }\n const stringTag = obj[Symbol.toStringTag];\n if (typeof stringTag === \"string\") {\n return stringTag;\n }\n const sliceStart = 8;\n const sliceEnd = -1;\n return Object.prototype.toString.call(obj).slice(sliceStart, sliceEnd);\n}\n__name(type2, \"type\");\nfunction FakeMap() {\n this._key = \"chai/deep-eql__\" + Math.random() + Date.now();\n}\n__name(FakeMap, \"FakeMap\");\nFakeMap.prototype = {\n get: /* @__PURE__ */ __name(function get(key) {\n return key[this._key];\n }, \"get\"),\n set: /* @__PURE__ */ __name(function set(key, value) {\n if (Object.isExtensible(key)) {\n Object.defineProperty(key, this._key, {\n value,\n configurable: true\n });\n }\n }, \"set\")\n};\nvar MemoizeMap = typeof WeakMap === \"function\" ? WeakMap : FakeMap;\nfunction memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) {\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return null;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n var result = leftHandMap.get(rightHandOperand);\n if (typeof result === \"boolean\") {\n return result;\n }\n }\n return null;\n}\n__name(memoizeCompare, \"memoizeCompare\");\nfunction memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) {\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n leftHandMap.set(rightHandOperand, result);\n } else {\n leftHandMap = new MemoizeMap();\n leftHandMap.set(rightHandOperand, result);\n memoizeMap.set(leftHandOperand, leftHandMap);\n }\n}\n__name(memoizeSet, \"memoizeSet\");\nvar deep_eql_default = deepEqual;\nfunction deepEqual(leftHandOperand, rightHandOperand, options) {\n if (options && options.comparator) {\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n }\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n}\n__name(deepEqual, \"deepEqual\");\nfunction simpleEqual(leftHandOperand, rightHandOperand) {\n if (leftHandOperand === rightHandOperand) {\n return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand;\n }\n if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare\n rightHandOperand !== rightHandOperand) {\n return true;\n }\n if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return false;\n }\n return null;\n}\n__name(simpleEqual, \"simpleEqual\");\nfunction extensiveDeepEqual(leftHandOperand, rightHandOperand, options) {\n options = options || {};\n options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap();\n var comparator = options && options.comparator;\n var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize);\n if (memoizeResultLeft !== null) {\n return memoizeResultLeft;\n }\n var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize);\n if (memoizeResultRight !== null) {\n return memoizeResultRight;\n }\n if (comparator) {\n var comparatorResult = comparator(leftHandOperand, rightHandOperand);\n if (comparatorResult === false || comparatorResult === true) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult);\n return comparatorResult;\n }\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n }\n var leftHandType = type2(leftHandOperand);\n if (leftHandType !== type2(rightHandOperand)) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false);\n return false;\n }\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true);\n var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options);\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result);\n return result;\n}\n__name(extensiveDeepEqual, \"extensiveDeepEqual\");\nfunction extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) {\n switch (leftHandType) {\n case \"String\":\n case \"Number\":\n case \"Boolean\":\n case \"Date\":\n return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf());\n case \"Promise\":\n case \"Symbol\":\n case \"function\":\n case \"WeakMap\":\n case \"WeakSet\":\n return leftHandOperand === rightHandOperand;\n case \"Error\":\n return keysEqual(leftHandOperand, rightHandOperand, [\"name\", \"message\", \"code\"], options);\n case \"Arguments\":\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"Array\":\n return iterableEqual(leftHandOperand, rightHandOperand, options);\n case \"RegExp\":\n return regexpEqual(leftHandOperand, rightHandOperand);\n case \"Generator\":\n return generatorEqual(leftHandOperand, rightHandOperand, options);\n case \"DataView\":\n return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options);\n case \"ArrayBuffer\":\n return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options);\n case \"Set\":\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case \"Map\":\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case \"Temporal.PlainDate\":\n case \"Temporal.PlainTime\":\n case \"Temporal.PlainDateTime\":\n case \"Temporal.Instant\":\n case \"Temporal.ZonedDateTime\":\n case \"Temporal.PlainYearMonth\":\n case \"Temporal.PlainMonthDay\":\n return leftHandOperand.equals(rightHandOperand);\n case \"Temporal.Duration\":\n return leftHandOperand.total(\"nanoseconds\") === rightHandOperand.total(\"nanoseconds\");\n case \"Temporal.TimeZone\":\n case \"Temporal.Calendar\":\n return leftHandOperand.toString() === rightHandOperand.toString();\n default:\n return objectEqual(leftHandOperand, rightHandOperand, options);\n }\n}\n__name(extensiveDeepEqualByType, \"extensiveDeepEqualByType\");\nfunction regexpEqual(leftHandOperand, rightHandOperand) {\n return leftHandOperand.toString() === rightHandOperand.toString();\n}\n__name(regexpEqual, \"regexpEqual\");\nfunction entriesEqual(leftHandOperand, rightHandOperand, options) {\n if (leftHandOperand.size !== rightHandOperand.size) {\n return false;\n }\n if (leftHandOperand.size === 0) {\n return true;\n }\n var leftHandItems = [];\n var rightHandItems = [];\n leftHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n leftHandItems.push([key, value]);\n }, \"gatherEntries\"));\n rightHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n rightHandItems.push([key, value]);\n }, \"gatherEntries\"));\n return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options);\n}\n__name(entriesEqual, \"entriesEqual\");\nfunction iterableEqual(leftHandOperand, rightHandOperand, options) {\n var length = leftHandOperand.length;\n if (length !== rightHandOperand.length) {\n return false;\n }\n if (length === 0) {\n return true;\n }\n var index = -1;\n while (++index < length) {\n if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) {\n return false;\n }\n }\n return true;\n}\n__name(iterableEqual, \"iterableEqual\");\nfunction generatorEqual(leftHandOperand, rightHandOperand, options) {\n return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options);\n}\n__name(generatorEqual, \"generatorEqual\");\nfunction hasIteratorFunction(target) {\n return typeof Symbol !== \"undefined\" && typeof target === \"object\" && typeof Symbol.iterator !== \"undefined\" && typeof target[Symbol.iterator] === \"function\";\n}\n__name(hasIteratorFunction, \"hasIteratorFunction\");\nfunction getIteratorEntries(target) {\n if (hasIteratorFunction(target)) {\n try {\n return getGeneratorEntries(target[Symbol.iterator]());\n } catch (iteratorError) {\n return [];\n }\n }\n return [];\n}\n__name(getIteratorEntries, \"getIteratorEntries\");\nfunction getGeneratorEntries(generator) {\n var generatorResult = generator.next();\n var accumulator = [generatorResult.value];\n while (generatorResult.done === false) {\n generatorResult = generator.next();\n accumulator.push(generatorResult.value);\n }\n return accumulator;\n}\n__name(getGeneratorEntries, \"getGeneratorEntries\");\nfunction getEnumerableKeys(target) {\n var keys = [];\n for (var key in target) {\n keys.push(key);\n }\n return keys;\n}\n__name(getEnumerableKeys, \"getEnumerableKeys\");\nfunction getEnumerableSymbols(target) {\n var keys = [];\n var allKeys = Object.getOwnPropertySymbols(target);\n for (var i = 0; i < allKeys.length; i += 1) {\n var key = allKeys[i];\n if (Object.getOwnPropertyDescriptor(target, key).enumerable) {\n keys.push(key);\n }\n }\n return keys;\n}\n__name(getEnumerableSymbols, \"getEnumerableSymbols\");\nfunction keysEqual(leftHandOperand, rightHandOperand, keys, options) {\n var length = keys.length;\n if (length === 0) {\n return true;\n }\n for (var i = 0; i < length; i += 1) {\n if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) {\n return false;\n }\n }\n return true;\n}\n__name(keysEqual, \"keysEqual\");\nfunction objectEqual(leftHandOperand, rightHandOperand, options) {\n var leftHandKeys = getEnumerableKeys(leftHandOperand);\n var rightHandKeys = getEnumerableKeys(rightHandOperand);\n var leftHandSymbols = getEnumerableSymbols(leftHandOperand);\n var rightHandSymbols = getEnumerableSymbols(rightHandOperand);\n leftHandKeys = leftHandKeys.concat(leftHandSymbols);\n rightHandKeys = rightHandKeys.concat(rightHandSymbols);\n if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) {\n if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) {\n return false;\n }\n return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options);\n }\n var leftHandEntries = getIteratorEntries(leftHandOperand);\n var rightHandEntries = getIteratorEntries(rightHandOperand);\n if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) {\n leftHandEntries.sort();\n rightHandEntries.sort();\n return iterableEqual(leftHandEntries, rightHandEntries, options);\n }\n if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) {\n return true;\n }\n return false;\n}\n__name(objectEqual, \"objectEqual\");\nfunction isPrimitive(value) {\n return value === null || typeof value !== \"object\";\n}\n__name(isPrimitive, \"isPrimitive\");\nfunction mapSymbols(arr) {\n return arr.map(/* @__PURE__ */ __name(function mapSymbol(entry) {\n if (typeof entry === \"symbol\") {\n return entry.toString();\n }\n return entry;\n }, \"mapSymbol\"));\n}\n__name(mapSymbols, \"mapSymbols\");\n\n// node_modules/pathval/index.js\nfunction hasProperty(obj, name) {\n if (typeof obj === \"undefined\" || obj === null) {\n return false;\n }\n return name in Object(obj);\n}\n__name(hasProperty, \"hasProperty\");\nfunction parsePath(path) {\n const str = path.replace(/([^\\\\])\\[/g, \"$1.[\");\n const parts = str.match(/(\\\\\\.|[^.]+?)+/g);\n return parts.map((value) => {\n if (value === \"constructor\" || value === \"__proto__\" || value === \"prototype\") {\n return {};\n }\n const regexp = /^\\[(\\d+)\\]$/;\n const mArr = regexp.exec(value);\n let parsed = null;\n if (mArr) {\n parsed = { i: parseFloat(mArr[1]) };\n } else {\n parsed = { p: value.replace(/\\\\([.[\\]])/g, \"$1\") };\n }\n return parsed;\n });\n}\n__name(parsePath, \"parsePath\");\nfunction internalGetPathValue(obj, parsed, pathDepth) {\n let temporaryValue = obj;\n let res = null;\n pathDepth = typeof pathDepth === \"undefined\" ? parsed.length : pathDepth;\n for (let i = 0; i < pathDepth; i++) {\n const part = parsed[i];\n if (temporaryValue) {\n if (typeof part.p === \"undefined\") {\n temporaryValue = temporaryValue[part.i];\n } else {\n temporaryValue = temporaryValue[part.p];\n }\n if (i === pathDepth - 1) {\n res = temporaryValue;\n }\n }\n }\n return res;\n}\n__name(internalGetPathValue, \"internalGetPathValue\");\nfunction getPathInfo(obj, path) {\n const parsed = parsePath(path);\n const last = parsed[parsed.length - 1];\n const info = {\n parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj,\n name: last.p || last.i,\n value: internalGetPathValue(obj, parsed)\n };\n info.exists = hasProperty(info.parent, info.name);\n return info;\n}\n__name(getPathInfo, \"getPathInfo\");\n\n// lib/chai/assertion.js\nfunction Assertion(obj, msg, ssfi, lockSsfi) {\n flag(this, \"ssfi\", ssfi || Assertion);\n flag(this, \"lockSsfi\", lockSsfi);\n flag(this, \"object\", obj);\n flag(this, \"message\", msg);\n flag(this, \"eql\", config.deepEqual || deep_eql_default);\n return proxify(this);\n}\n__name(Assertion, \"Assertion\");\nObject.defineProperty(Assertion, \"includeStack\", {\n get: function() {\n console.warn(\"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\");\n return config.includeStack;\n },\n set: function(value) {\n console.warn(\"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\");\n config.includeStack = value;\n }\n});\nObject.defineProperty(Assertion, \"showDiff\", {\n get: function() {\n console.warn(\"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\");\n return config.showDiff;\n },\n set: function(value) {\n console.warn(\"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\");\n config.showDiff = value;\n }\n});\nAssertion.addProperty = function(name, fn) {\n addProperty(this.prototype, name, fn);\n};\nAssertion.addMethod = function(name, fn) {\n addMethod(this.prototype, name, fn);\n};\nAssertion.addChainableMethod = function(name, fn, chainingBehavior) {\n addChainableMethod(this.prototype, name, fn, chainingBehavior);\n};\nAssertion.overwriteProperty = function(name, fn) {\n overwriteProperty(this.prototype, name, fn);\n};\nAssertion.overwriteMethod = function(name, fn) {\n overwriteMethod(this.prototype, name, fn);\n};\nAssertion.overwriteChainableMethod = function(name, fn, chainingBehavior) {\n overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);\n};\nAssertion.prototype.assert = function(expr, msg, negateMsg, expected, _actual, showDiff) {\n var ok = test(this, arguments);\n if (false !== showDiff)\n showDiff = true;\n if (void 0 === expected && void 0 === _actual)\n showDiff = false;\n if (true !== config.showDiff)\n showDiff = false;\n if (!ok) {\n msg = getMessage2(this, arguments);\n var actual = getActual(this, arguments);\n var assertionErrorObjectProperties = {\n actual,\n expected,\n showDiff\n };\n var operator = getOperator(this, arguments);\n if (operator) {\n assertionErrorObjectProperties.operator = operator;\n }\n throw new AssertionError(\n msg,\n assertionErrorObjectProperties,\n config.includeStack ? this.assert : flag(this, \"ssfi\")\n );\n }\n};\nObject.defineProperty(\n Assertion.prototype,\n \"_obj\",\n {\n get: function() {\n return flag(this, \"object\");\n },\n set: function(val) {\n flag(this, \"object\", val);\n }\n }\n);\n\n// lib/chai/utils/isProxyEnabled.js\nfunction isProxyEnabled() {\n return config.useProxy && typeof Proxy !== \"undefined\" && typeof Reflect !== \"undefined\";\n}\n__name(isProxyEnabled, \"isProxyEnabled\");\n\n// lib/chai/utils/addProperty.js\nfunction addProperty(ctx, name, getter) {\n getter = getter === void 0 ? function() {\n } : getter;\n Object.defineProperty(\n ctx,\n name,\n {\n get: /* @__PURE__ */ __name(function propertyGetter() {\n if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", propertyGetter);\n }\n var result = getter.call(this);\n if (result !== void 0)\n return result;\n var newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"propertyGetter\"),\n configurable: true\n }\n );\n}\n__name(addProperty, \"addProperty\");\n\n// lib/chai/utils/addLengthGuard.js\nvar fnLengthDesc = Object.getOwnPropertyDescriptor(function() {\n}, \"length\");\nfunction addLengthGuard(fn, assertionName, isChainable) {\n if (!fnLengthDesc.configurable)\n return fn;\n Object.defineProperty(fn, \"length\", {\n get: function() {\n if (isChainable) {\n throw Error(\"Invalid Chai property: \" + assertionName + '.length. Due to a compatibility issue, \"length\" cannot directly follow \"' + assertionName + '\". Use \"' + assertionName + '.lengthOf\" instead.');\n }\n throw Error(\"Invalid Chai property: \" + assertionName + '.length. See docs for proper usage of \"' + assertionName + '\".');\n }\n });\n return fn;\n}\n__name(addLengthGuard, \"addLengthGuard\");\n\n// lib/chai/utils/getProperties.js\nfunction getProperties(object) {\n var result = Object.getOwnPropertyNames(object);\n function addProperty2(property) {\n if (result.indexOf(property) === -1) {\n result.push(property);\n }\n }\n __name(addProperty2, \"addProperty\");\n var proto = Object.getPrototypeOf(object);\n while (proto !== null) {\n Object.getOwnPropertyNames(proto).forEach(addProperty2);\n proto = Object.getPrototypeOf(proto);\n }\n return result;\n}\n__name(getProperties, \"getProperties\");\n\n// lib/chai/utils/proxify.js\nvar builtins = [\"__flags\", \"__methods\", \"_obj\", \"assert\"];\nfunction proxify(obj, nonChainableMethodName) {\n if (!isProxyEnabled())\n return obj;\n return new Proxy(obj, {\n get: /* @__PURE__ */ __name(function proxyGetter(target, property) {\n if (typeof property === \"string\" && config.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) {\n if (nonChainableMethodName) {\n throw Error(\"Invalid Chai property: \" + nonChainableMethodName + \".\" + property + '. See docs for proper usage of \"' + nonChainableMethodName + '\".');\n }\n var suggestion = null;\n var suggestionDistance = 4;\n getProperties(target).forEach(function(prop) {\n if (!Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1) {\n var dist = stringDistanceCapped(\n property,\n prop,\n suggestionDistance\n );\n if (dist < suggestionDistance) {\n suggestion = prop;\n suggestionDistance = dist;\n }\n }\n });\n if (suggestion !== null) {\n throw Error(\"Invalid Chai property: \" + property + '. Did you mean \"' + suggestion + '\"?');\n } else {\n throw Error(\"Invalid Chai property: \" + property);\n }\n }\n if (builtins.indexOf(property) === -1 && !flag(target, \"lockSsfi\")) {\n flag(target, \"ssfi\", proxyGetter);\n }\n return Reflect.get(target, property);\n }, \"proxyGetter\")\n });\n}\n__name(proxify, \"proxify\");\nfunction stringDistanceCapped(strA, strB, cap) {\n if (Math.abs(strA.length - strB.length) >= cap) {\n return cap;\n }\n var memo = [];\n for (var i = 0; i <= strA.length; i++) {\n memo[i] = Array(strB.length + 1).fill(0);\n memo[i][0] = i;\n }\n for (var j = 0; j < strB.length; j++) {\n memo[0][j] = j;\n }\n for (var i = 1; i <= strA.length; i++) {\n var ch = strA.charCodeAt(i - 1);\n for (var j = 1; j <= strB.length; j++) {\n if (Math.abs(i - j) >= cap) {\n memo[i][j] = cap;\n continue;\n }\n memo[i][j] = Math.min(\n memo[i - 1][j] + 1,\n memo[i][j - 1] + 1,\n memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1)\n );\n }\n }\n return memo[strA.length][strB.length];\n}\n__name(stringDistanceCapped, \"stringDistanceCapped\");\n\n// lib/chai/utils/addMethod.js\nfunction addMethod(ctx, name, method) {\n var methodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", methodWrapper);\n }\n var result = method.apply(this, arguments);\n if (result !== void 0)\n return result;\n var newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"methodWrapper\");\n addLengthGuard(methodWrapper, name, false);\n ctx[name] = proxify(methodWrapper, name);\n}\n__name(addMethod, \"addMethod\");\n\n// lib/chai/utils/overwriteProperty.js\nfunction overwriteProperty(ctx, name, getter) {\n var _get = Object.getOwnPropertyDescriptor(ctx, name), _super = /* @__PURE__ */ __name(function() {\n }, \"_super\");\n if (_get && \"function\" === typeof _get.get)\n _super = _get.get;\n Object.defineProperty(\n ctx,\n name,\n {\n get: /* @__PURE__ */ __name(function overwritingPropertyGetter() {\n if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", overwritingPropertyGetter);\n }\n var origLockSsfi = flag(this, \"lockSsfi\");\n flag(this, \"lockSsfi\", true);\n var result = getter(_super).call(this);\n flag(this, \"lockSsfi\", origLockSsfi);\n if (result !== void 0) {\n return result;\n }\n var newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingPropertyGetter\"),\n configurable: true\n }\n );\n}\n__name(overwriteProperty, \"overwriteProperty\");\n\n// lib/chai/utils/overwriteMethod.js\nfunction overwriteMethod(ctx, name, method) {\n var _method = ctx[name], _super = /* @__PURE__ */ __name(function() {\n throw new Error(name + \" is not a function\");\n }, \"_super\");\n if (_method && \"function\" === typeof _method)\n _super = _method;\n var overwritingMethodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", overwritingMethodWrapper);\n }\n var origLockSsfi = flag(this, \"lockSsfi\");\n flag(this, \"lockSsfi\", true);\n var result = method(_super).apply(this, arguments);\n flag(this, \"lockSsfi\", origLockSsfi);\n if (result !== void 0) {\n return result;\n }\n var newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingMethodWrapper\");\n addLengthGuard(overwritingMethodWrapper, name, false);\n ctx[name] = proxify(overwritingMethodWrapper, name);\n}\n__name(overwriteMethod, \"overwriteMethod\");\n\n// lib/chai/utils/addChainableMethod.js\nvar canSetPrototype = typeof Object.setPrototypeOf === \"function\";\nvar testFn = /* @__PURE__ */ __name(function() {\n}, \"testFn\");\nvar excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) {\n var propDesc = Object.getOwnPropertyDescriptor(testFn, name);\n if (typeof propDesc !== \"object\")\n return true;\n return !propDesc.configurable;\n});\nvar call = Function.prototype.call;\nvar apply = Function.prototype.apply;\nfunction addChainableMethod(ctx, name, method, chainingBehavior) {\n if (typeof chainingBehavior !== \"function\") {\n chainingBehavior = /* @__PURE__ */ __name(function() {\n }, \"chainingBehavior\");\n }\n var chainableBehavior = {\n method,\n chainingBehavior\n };\n if (!ctx.__methods) {\n ctx.__methods = {};\n }\n ctx.__methods[name] = chainableBehavior;\n Object.defineProperty(\n ctx,\n name,\n {\n get: /* @__PURE__ */ __name(function chainableMethodGetter() {\n chainableBehavior.chainingBehavior.call(this);\n var chainableMethodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", chainableMethodWrapper);\n }\n var result = chainableBehavior.method.apply(this, arguments);\n if (result !== void 0) {\n return result;\n }\n var newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"chainableMethodWrapper\");\n addLengthGuard(chainableMethodWrapper, name, true);\n if (canSetPrototype) {\n var prototype = Object.create(this);\n prototype.call = call;\n prototype.apply = apply;\n Object.setPrototypeOf(chainableMethodWrapper, prototype);\n } else {\n var asserterNames = Object.getOwnPropertyNames(ctx);\n asserterNames.forEach(function(asserterName) {\n if (excludeNames.indexOf(asserterName) !== -1) {\n return;\n }\n var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);\n Object.defineProperty(chainableMethodWrapper, asserterName, pd);\n });\n }\n transferFlags(this, chainableMethodWrapper);\n return proxify(chainableMethodWrapper);\n }, \"chainableMethodGetter\"),\n configurable: true\n }\n );\n}\n__name(addChainableMethod, \"addChainableMethod\");\n\n// lib/chai/utils/overwriteChainableMethod.js\nfunction overwriteChainableMethod(ctx, name, method, chainingBehavior) {\n var chainableBehavior = ctx.__methods[name];\n var _chainingBehavior = chainableBehavior.chainingBehavior;\n chainableBehavior.chainingBehavior = /* @__PURE__ */ __name(function overwritingChainableMethodGetter() {\n var result = chainingBehavior(_chainingBehavior).call(this);\n if (result !== void 0) {\n return result;\n }\n var newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingChainableMethodGetter\");\n var _method = chainableBehavior.method;\n chainableBehavior.method = /* @__PURE__ */ __name(function overwritingChainableMethodWrapper() {\n var result = method(_method).apply(this, arguments);\n if (result !== void 0) {\n return result;\n }\n var newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingChainableMethodWrapper\");\n}\n__name(overwriteChainableMethod, \"overwriteChainableMethod\");\n\n// lib/chai/utils/compareByInspect.js\nfunction compareByInspect(a, b) {\n return inspect2(a) < inspect2(b) ? -1 : 1;\n}\n__name(compareByInspect, \"compareByInspect\");\n\n// lib/chai/utils/getOwnEnumerablePropertySymbols.js\nfunction getOwnEnumerablePropertySymbols(obj) {\n if (typeof Object.getOwnPropertySymbols !== \"function\")\n return [];\n return Object.getOwnPropertySymbols(obj).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(obj, sym).enumerable;\n });\n}\n__name(getOwnEnumerablePropertySymbols, \"getOwnEnumerablePropertySymbols\");\n\n// lib/chai/utils/getOwnEnumerableProperties.js\nfunction getOwnEnumerableProperties(obj) {\n return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj));\n}\n__name(getOwnEnumerableProperties, \"getOwnEnumerableProperties\");\n\n// lib/chai/utils/isNaN.js\nfunction _isNaN(value) {\n return value !== value;\n}\n__name(_isNaN, \"_isNaN\");\nvar isNaN2 = Number.isNaN || _isNaN;\n\n// lib/chai/utils/getOperator.js\nfunction isObjectType(obj) {\n var objectType = type(obj);\n var objectTypes = [\"Array\", \"Object\", \"Function\"];\n return objectTypes.indexOf(objectType) !== -1;\n}\n__name(isObjectType, \"isObjectType\");\nfunction getOperator(obj, args) {\n var operator = flag(obj, \"operator\");\n var negate = flag(obj, \"negate\");\n var expected = args[3];\n var msg = negate ? args[2] : args[1];\n if (operator) {\n return operator;\n }\n if (typeof msg === \"function\")\n msg = msg();\n msg = msg || \"\";\n if (!msg) {\n return void 0;\n }\n if (/\\shave\\s/.test(msg)) {\n return void 0;\n }\n var isObject = isObjectType(expected);\n if (/\\snot\\s/.test(msg)) {\n return isObject ? \"notDeepStrictEqual\" : \"notStrictEqual\";\n }\n return isObject ? \"deepStrictEqual\" : \"strictEqual\";\n}\n__name(getOperator, \"getOperator\");\n\n// lib/chai/utils/index.js\nfunction getName(fn) {\n return fn.name;\n}\n__name(getName, \"getName\");\nfunction isRegExp2(obj) {\n return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp2, \"isRegExp\");\n\n// lib/chai/core/assertions.js\nvar { flag: flag2 } = utils_exports;\n[\n \"to\",\n \"be\",\n \"been\",\n \"is\",\n \"and\",\n \"has\",\n \"have\",\n \"with\",\n \"that\",\n \"which\",\n \"at\",\n \"of\",\n \"same\",\n \"but\",\n \"does\",\n \"still\",\n \"also\"\n].forEach(function(chain) {\n Assertion.addProperty(chain);\n});\nAssertion.addProperty(\"not\", function() {\n flag2(this, \"negate\", true);\n});\nAssertion.addProperty(\"deep\", function() {\n flag2(this, \"deep\", true);\n});\nAssertion.addProperty(\"nested\", function() {\n flag2(this, \"nested\", true);\n});\nAssertion.addProperty(\"own\", function() {\n flag2(this, \"own\", true);\n});\nAssertion.addProperty(\"ordered\", function() {\n flag2(this, \"ordered\", true);\n});\nAssertion.addProperty(\"any\", function() {\n flag2(this, \"any\", true);\n flag2(this, \"all\", false);\n});\nAssertion.addProperty(\"all\", function() {\n flag2(this, \"all\", true);\n flag2(this, \"any\", false);\n});\nvar functionTypes = {\n \"function\": [\"function\", \"asyncfunction\", \"generatorfunction\", \"asyncgeneratorfunction\"],\n \"asyncfunction\": [\"asyncfunction\", \"asyncgeneratorfunction\"],\n \"generatorfunction\": [\"generatorfunction\", \"asyncgeneratorfunction\"],\n \"asyncgeneratorfunction\": [\"asyncgeneratorfunction\"]\n};\nfunction an(type3, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n type3 = type3.toLowerCase();\n var obj = flag2(this, \"object\"), article = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(type3.charAt(0)) ? \"an \" : \"a \";\n const detectedType = type(obj).toLowerCase();\n if (functionTypes[\"function\"].includes(type3)) {\n this.assert(\n functionTypes[type3].includes(detectedType),\n \"expected #{this} to be \" + article + type3,\n \"expected #{this} not to be \" + article + type3\n );\n } else {\n this.assert(\n type3 === detectedType,\n \"expected #{this} to be \" + article + type3,\n \"expected #{this} not to be \" + article + type3\n );\n }\n}\n__name(an, \"an\");\nAssertion.addChainableMethod(\"an\", an);\nAssertion.addChainableMethod(\"a\", an);\nfunction SameValueZero(a, b) {\n return isNaN2(a) && isNaN2(b) || a === b;\n}\n__name(SameValueZero, \"SameValueZero\");\nfunction includeChainingBehavior() {\n flag2(this, \"contains\", true);\n}\n__name(includeChainingBehavior, \"includeChainingBehavior\");\nfunction include(val, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\"), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), descriptor = isDeep ? \"deep \" : \"\", isEql = isDeep ? flag2(this, \"eql\") : SameValueZero;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n var included = false;\n switch (objType) {\n case \"string\":\n included = obj.indexOf(val) !== -1;\n break;\n case \"weakset\":\n if (isDeep) {\n throw new AssertionError(\n flagMsg + \"unable to use .deep.include with WeakSet\",\n void 0,\n ssfi\n );\n }\n included = obj.has(val);\n break;\n case \"map\":\n obj.forEach(function(item) {\n included = included || isEql(item, val);\n });\n break;\n case \"set\":\n if (isDeep) {\n obj.forEach(function(item) {\n included = included || isEql(item, val);\n });\n } else {\n included = obj.has(val);\n }\n break;\n case \"array\":\n if (isDeep) {\n included = obj.some(function(item) {\n return isEql(item, val);\n });\n } else {\n included = obj.indexOf(val) !== -1;\n }\n break;\n default:\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + \"the given combination of arguments (\" + objType + \" and \" + type(val).toLowerCase() + \") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a \" + type(val).toLowerCase(),\n void 0,\n ssfi\n );\n }\n var props = Object.keys(val), firstErr = null, numErrs = 0;\n props.forEach(function(prop) {\n var propAssertion = new Assertion(obj);\n transferFlags(this, propAssertion, true);\n flag2(propAssertion, \"lockSsfi\", true);\n if (!negate || props.length === 1) {\n propAssertion.property(prop, val[prop]);\n return;\n }\n try {\n propAssertion.property(prop, val[prop]);\n } catch (err) {\n if (!check_error_exports.compatibleConstructor(err, AssertionError)) {\n throw err;\n }\n if (firstErr === null)\n firstErr = err;\n numErrs++;\n }\n }, this);\n if (negate && props.length > 1 && numErrs === props.length) {\n throw firstErr;\n }\n return;\n }\n this.assert(\n included,\n \"expected #{this} to \" + descriptor + \"include \" + inspect2(val),\n \"expected #{this} to not \" + descriptor + \"include \" + inspect2(val)\n );\n}\n__name(include, \"include\");\nAssertion.addChainableMethod(\"include\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contain\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contains\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"includes\", include, includeChainingBehavior);\nAssertion.addProperty(\"ok\", function() {\n this.assert(\n flag2(this, \"object\"),\n \"expected #{this} to be truthy\",\n \"expected #{this} to be falsy\"\n );\n});\nAssertion.addProperty(\"true\", function() {\n this.assert(\n true === flag2(this, \"object\"),\n \"expected #{this} to be true\",\n \"expected #{this} to be false\",\n flag2(this, \"negate\") ? false : true\n );\n});\nAssertion.addProperty(\"callable\", function() {\n const val = flag2(this, \"object\");\n const ssfi = flag2(this, \"ssfi\");\n const message = flag2(this, \"message\");\n const msg = message ? `${message}: ` : \"\";\n const negate = flag2(this, \"negate\");\n const assertionMessage = negate ? `${msg}expected ${inspect2(val)} not to be a callable function` : `${msg}expected ${inspect2(val)} to be a callable function`;\n const isCallable = [\"Function\", \"AsyncFunction\", \"GeneratorFunction\", \"AsyncGeneratorFunction\"].includes(type(val));\n if (isCallable && negate || !isCallable && !negate) {\n throw new AssertionError(\n assertionMessage,\n void 0,\n ssfi\n );\n }\n});\nAssertion.addProperty(\"false\", function() {\n this.assert(\n false === flag2(this, \"object\"),\n \"expected #{this} to be false\",\n \"expected #{this} to be true\",\n flag2(this, \"negate\") ? true : false\n );\n});\nAssertion.addProperty(\"null\", function() {\n this.assert(\n null === flag2(this, \"object\"),\n \"expected #{this} to be null\",\n \"expected #{this} not to be null\"\n );\n});\nAssertion.addProperty(\"undefined\", function() {\n this.assert(\n void 0 === flag2(this, \"object\"),\n \"expected #{this} to be undefined\",\n \"expected #{this} not to be undefined\"\n );\n});\nAssertion.addProperty(\"NaN\", function() {\n this.assert(\n isNaN2(flag2(this, \"object\")),\n \"expected #{this} to be NaN\",\n \"expected #{this} not to be NaN\"\n );\n});\nfunction assertExist() {\n var val = flag2(this, \"object\");\n this.assert(\n val !== null && val !== void 0,\n \"expected #{this} to exist\",\n \"expected #{this} to not exist\"\n );\n}\n__name(assertExist, \"assertExist\");\nAssertion.addProperty(\"exist\", assertExist);\nAssertion.addProperty(\"exists\", assertExist);\nAssertion.addProperty(\"empty\", function() {\n var val = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), itemsCount;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n switch (type(val).toLowerCase()) {\n case \"array\":\n case \"string\":\n itemsCount = val.length;\n break;\n case \"map\":\n case \"set\":\n itemsCount = val.size;\n break;\n case \"weakmap\":\n case \"weakset\":\n throw new AssertionError(\n flagMsg + \".empty was passed a weak collection\",\n void 0,\n ssfi\n );\n case \"function\":\n var msg = flagMsg + \".empty was passed a function \" + getName(val);\n throw new AssertionError(msg.trim(), void 0, ssfi);\n default:\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + \".empty was passed non-string primitive \" + inspect2(val),\n void 0,\n ssfi\n );\n }\n itemsCount = Object.keys(val).length;\n }\n this.assert(\n 0 === itemsCount,\n \"expected #{this} to be empty\",\n \"expected #{this} not to be empty\"\n );\n});\nfunction checkArguments() {\n var obj = flag2(this, \"object\"), type3 = type(obj);\n this.assert(\n \"Arguments\" === type3,\n \"expected #{this} to be arguments but got \" + type3,\n \"expected #{this} to not be arguments\"\n );\n}\n__name(checkArguments, \"checkArguments\");\nAssertion.addProperty(\"arguments\", checkArguments);\nAssertion.addProperty(\"Arguments\", checkArguments);\nfunction assertEqual(val, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\");\n if (flag2(this, \"deep\")) {\n var prevLockSsfi = flag2(this, \"lockSsfi\");\n flag2(this, \"lockSsfi\", true);\n this.eql(val);\n flag2(this, \"lockSsfi\", prevLockSsfi);\n } else {\n this.assert(\n val === obj,\n \"expected #{this} to equal #{exp}\",\n \"expected #{this} to not equal #{exp}\",\n val,\n this._obj,\n true\n );\n }\n}\n__name(assertEqual, \"assertEqual\");\nAssertion.addMethod(\"equal\", assertEqual);\nAssertion.addMethod(\"equals\", assertEqual);\nAssertion.addMethod(\"eq\", assertEqual);\nfunction assertEql(obj, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var eql = flag2(this, \"eql\");\n this.assert(\n eql(obj, flag2(this, \"object\")),\n \"expected #{this} to deeply equal #{exp}\",\n \"expected #{this} to not deeply equal #{exp}\",\n obj,\n this._obj,\n true\n );\n}\n__name(assertEql, \"assertEql\");\nAssertion.addMethod(\"eql\", assertEql);\nAssertion.addMethod(\"eqls\", assertEql);\nfunction assertAbove(n, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && (objType === \"date\" && nType !== \"date\")) {\n errorMessage = msgPrefix + \"the argument to above must be a date\";\n } else if (nType !== \"number\" && (doLength || objType === \"number\")) {\n errorMessage = msgPrefix + \"the argument to above must be a number\";\n } else if (!doLength && (objType !== \"date\" && objType !== \"number\")) {\n var printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n var descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount > n,\n \"expected #{this} to have a \" + descriptor + \" above #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" above #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj > n,\n \"expected #{this} to be above #{exp}\",\n \"expected #{this} to be at most #{exp}\",\n n\n );\n }\n}\n__name(assertAbove, \"assertAbove\");\nAssertion.addMethod(\"above\", assertAbove);\nAssertion.addMethod(\"gt\", assertAbove);\nAssertion.addMethod(\"greaterThan\", assertAbove);\nfunction assertLeast(n, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && (objType === \"date\" && nType !== \"date\")) {\n errorMessage = msgPrefix + \"the argument to least must be a date\";\n } else if (nType !== \"number\" && (doLength || objType === \"number\")) {\n errorMessage = msgPrefix + \"the argument to least must be a number\";\n } else if (!doLength && (objType !== \"date\" && objType !== \"number\")) {\n var printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n var descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= n,\n \"expected #{this} to have a \" + descriptor + \" at least #{exp} but got #{act}\",\n \"expected #{this} to have a \" + descriptor + \" below #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj >= n,\n \"expected #{this} to be at least #{exp}\",\n \"expected #{this} to be below #{exp}\",\n n\n );\n }\n}\n__name(assertLeast, \"assertLeast\");\nAssertion.addMethod(\"least\", assertLeast);\nAssertion.addMethod(\"gte\", assertLeast);\nAssertion.addMethod(\"greaterThanOrEqual\", assertLeast);\nfunction assertBelow(n, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && (objType === \"date\" && nType !== \"date\")) {\n errorMessage = msgPrefix + \"the argument to below must be a date\";\n } else if (nType !== \"number\" && (doLength || objType === \"number\")) {\n errorMessage = msgPrefix + \"the argument to below must be a number\";\n } else if (!doLength && (objType !== \"date\" && objType !== \"number\")) {\n var printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n var descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount < n,\n \"expected #{this} to have a \" + descriptor + \" below #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" below #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj < n,\n \"expected #{this} to be below #{exp}\",\n \"expected #{this} to be at least #{exp}\",\n n\n );\n }\n}\n__name(assertBelow, \"assertBelow\");\nAssertion.addMethod(\"below\", assertBelow);\nAssertion.addMethod(\"lt\", assertBelow);\nAssertion.addMethod(\"lessThan\", assertBelow);\nfunction assertMost(n, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && (objType === \"date\" && nType !== \"date\")) {\n errorMessage = msgPrefix + \"the argument to most must be a date\";\n } else if (nType !== \"number\" && (doLength || objType === \"number\")) {\n errorMessage = msgPrefix + \"the argument to most must be a number\";\n } else if (!doLength && (objType !== \"date\" && objType !== \"number\")) {\n var printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n var descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount <= n,\n \"expected #{this} to have a \" + descriptor + \" at most #{exp} but got #{act}\",\n \"expected #{this} to have a \" + descriptor + \" above #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj <= n,\n \"expected #{this} to be at most #{exp}\",\n \"expected #{this} to be above #{exp}\",\n n\n );\n }\n}\n__name(assertMost, \"assertMost\");\nAssertion.addMethod(\"most\", assertMost);\nAssertion.addMethod(\"lte\", assertMost);\nAssertion.addMethod(\"lessThanOrEqual\", assertMost);\nAssertion.addMethod(\"within\", function(start, finish, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), startType = type(start).toLowerCase(), finishType = type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === \"date\" && finishType === \"date\" ? start.toISOString() + \"..\" + finish.toISOString() : start + \"..\" + finish;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && (objType === \"date\" && (startType !== \"date\" || finishType !== \"date\"))) {\n errorMessage = msgPrefix + \"the arguments to within must be dates\";\n } else if ((startType !== \"number\" || finishType !== \"number\") && (doLength || objType === \"number\")) {\n errorMessage = msgPrefix + \"the arguments to within must be numbers\";\n } else if (!doLength && (objType !== \"date\" && objType !== \"number\")) {\n var printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n var descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= start && itemsCount <= finish,\n \"expected #{this} to have a \" + descriptor + \" within \" + range,\n \"expected #{this} to not have a \" + descriptor + \" within \" + range\n );\n } else {\n this.assert(\n obj >= start && obj <= finish,\n \"expected #{this} to be within \" + range,\n \"expected #{this} to not be within \" + range\n );\n }\n});\nfunction assertInstanceOf(constructor, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var target = flag2(this, \"object\");\n var ssfi = flag2(this, \"ssfi\");\n var flagMsg = flag2(this, \"message\");\n try {\n var isInstanceOf = target instanceof constructor;\n } catch (err) {\n if (err instanceof TypeError) {\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n throw new AssertionError(\n flagMsg + \"The instanceof assertion needs a constructor but \" + type(constructor) + \" was given.\",\n void 0,\n ssfi\n );\n }\n throw err;\n }\n var name = getName(constructor);\n if (name == null) {\n name = \"an unnamed constructor\";\n }\n this.assert(\n isInstanceOf,\n \"expected #{this} to be an instance of \" + name,\n \"expected #{this} to not be an instance of \" + name\n );\n}\n__name(assertInstanceOf, \"assertInstanceOf\");\nAssertion.addMethod(\"instanceof\", assertInstanceOf);\nAssertion.addMethod(\"instanceOf\", assertInstanceOf);\nfunction assertProperty(name, val, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var isNested = flag2(this, \"nested\"), isOwn = flag2(this, \"own\"), flagMsg = flag2(this, \"message\"), obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), nameType = typeof name;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n if (isNested) {\n if (nameType !== \"string\") {\n throw new AssertionError(\n flagMsg + \"the argument to property must be a string when using nested syntax\",\n void 0,\n ssfi\n );\n }\n } else {\n if (nameType !== \"string\" && nameType !== \"number\" && nameType !== \"symbol\") {\n throw new AssertionError(\n flagMsg + \"the argument to property must be a string, number, or symbol\",\n void 0,\n ssfi\n );\n }\n }\n if (isNested && isOwn) {\n throw new AssertionError(\n flagMsg + 'The \"nested\" and \"own\" flags cannot be combined.',\n void 0,\n ssfi\n );\n }\n if (obj === null || obj === void 0) {\n throw new AssertionError(\n flagMsg + \"Target cannot be null or undefined.\",\n void 0,\n ssfi\n );\n }\n var isDeep = flag2(this, \"deep\"), negate = flag2(this, \"negate\"), pathInfo = isNested ? getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name], isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n var descriptor = \"\";\n if (isDeep)\n descriptor += \"deep \";\n if (isOwn)\n descriptor += \"own \";\n if (isNested)\n descriptor += \"nested \";\n descriptor += \"property \";\n var hasProperty2;\n if (isOwn)\n hasProperty2 = Object.prototype.hasOwnProperty.call(obj, name);\n else if (isNested)\n hasProperty2 = pathInfo.exists;\n else\n hasProperty2 = hasProperty(obj, name);\n if (!negate || arguments.length === 1) {\n this.assert(\n hasProperty2,\n \"expected #{this} to have \" + descriptor + inspect2(name),\n \"expected #{this} to not have \" + descriptor + inspect2(name)\n );\n }\n if (arguments.length > 1) {\n this.assert(\n hasProperty2 && isEql(val, value),\n \"expected #{this} to have \" + descriptor + inspect2(name) + \" of #{exp}, but got #{act}\",\n \"expected #{this} to not have \" + descriptor + inspect2(name) + \" of #{act}\",\n val,\n value\n );\n }\n flag2(this, \"object\", value);\n}\n__name(assertProperty, \"assertProperty\");\nAssertion.addMethod(\"property\", assertProperty);\nfunction assertOwnProperty(name, value, msg) {\n flag2(this, \"own\", true);\n assertProperty.apply(this, arguments);\n}\n__name(assertOwnProperty, \"assertOwnProperty\");\nAssertion.addMethod(\"ownProperty\", assertOwnProperty);\nAssertion.addMethod(\"haveOwnProperty\", assertOwnProperty);\nfunction assertOwnPropertyDescriptor(name, descriptor, msg) {\n if (typeof descriptor === \"string\") {\n msg = descriptor;\n descriptor = null;\n }\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\");\n var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);\n var eql = flag2(this, \"eql\");\n if (actualDescriptor && descriptor) {\n this.assert(\n eql(descriptor, actualDescriptor),\n \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to match \" + inspect2(descriptor) + \", got \" + inspect2(actualDescriptor),\n \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to not match \" + inspect2(descriptor),\n descriptor,\n actualDescriptor,\n true\n );\n } else {\n this.assert(\n actualDescriptor,\n \"expected #{this} to have an own property descriptor for \" + inspect2(name),\n \"expected #{this} to not have an own property descriptor for \" + inspect2(name)\n );\n }\n flag2(this, \"object\", actualDescriptor);\n}\n__name(assertOwnPropertyDescriptor, \"assertOwnPropertyDescriptor\");\nAssertion.addMethod(\"ownPropertyDescriptor\", assertOwnPropertyDescriptor);\nAssertion.addMethod(\"haveOwnPropertyDescriptor\", assertOwnPropertyDescriptor);\nfunction assertLengthChain() {\n flag2(this, \"doLength\", true);\n}\n__name(assertLengthChain, \"assertLengthChain\");\nfunction assertLength(n, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), descriptor = \"length\", itemsCount;\n switch (objType) {\n case \"map\":\n case \"set\":\n descriptor = \"size\";\n itemsCount = obj.size;\n break;\n default:\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount == n,\n \"expected #{this} to have a \" + descriptor + \" of #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" of #{act}\",\n n,\n itemsCount\n );\n}\n__name(assertLength, \"assertLength\");\nAssertion.addChainableMethod(\"length\", assertLength, assertLengthChain);\nAssertion.addChainableMethod(\"lengthOf\", assertLength, assertLengthChain);\nfunction assertMatch(re, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\");\n this.assert(\n re.exec(obj),\n \"expected #{this} to match \" + re,\n \"expected #{this} not to match \" + re\n );\n}\n__name(assertMatch, \"assertMatch\");\nAssertion.addMethod(\"match\", assertMatch);\nAssertion.addMethod(\"matches\", assertMatch);\nAssertion.addMethod(\"string\", function(str, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).is.a(\"string\");\n this.assert(\n ~obj.indexOf(str),\n \"expected #{this} to contain \" + inspect2(str),\n \"expected #{this} to not contain \" + inspect2(str)\n );\n});\nfunction assertKeys(keys) {\n var obj = flag2(this, \"object\"), objType = type(obj), keysType = type(keys), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), str, deepStr = \"\", actual, ok = true, flagMsg = flag2(this, \"message\");\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n var mixedArgsMsg = flagMsg + \"when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments\";\n if (objType === \"Map\" || objType === \"Set\") {\n deepStr = isDeep ? \"deeply \" : \"\";\n actual = [];\n obj.forEach(function(val, key) {\n actual.push(key);\n });\n if (keysType !== \"Array\") {\n keys = Array.prototype.slice.call(arguments);\n }\n } else {\n actual = getOwnEnumerableProperties(obj);\n switch (keysType) {\n case \"Array\":\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n }\n break;\n case \"Object\":\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n }\n keys = Object.keys(keys);\n break;\n default:\n keys = Array.prototype.slice.call(arguments);\n }\n keys = keys.map(function(val) {\n return typeof val === \"symbol\" ? val : String(val);\n });\n }\n if (!keys.length) {\n throw new AssertionError(flagMsg + \"keys required\", void 0, ssfi);\n }\n var len = keys.length, any = flag2(this, \"any\"), all = flag2(this, \"all\"), expected = keys, isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n if (!any && !all) {\n all = true;\n }\n if (any) {\n ok = expected.some(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n }\n if (all) {\n ok = expected.every(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n if (!flag2(this, \"contains\")) {\n ok = ok && keys.length == actual.length;\n }\n }\n if (len > 1) {\n keys = keys.map(function(key) {\n return inspect2(key);\n });\n var last = keys.pop();\n if (all) {\n str = keys.join(\", \") + \", and \" + last;\n }\n if (any) {\n str = keys.join(\", \") + \", or \" + last;\n }\n } else {\n str = inspect2(keys[0]);\n }\n str = (len > 1 ? \"keys \" : \"key \") + str;\n str = (flag2(this, \"contains\") ? \"contain \" : \"have \") + str;\n this.assert(\n ok,\n \"expected #{this} to \" + deepStr + str,\n \"expected #{this} to not \" + deepStr + str,\n expected.slice(0).sort(compareByInspect),\n actual.sort(compareByInspect),\n true\n );\n}\n__name(assertKeys, \"assertKeys\");\nAssertion.addMethod(\"keys\", assertKeys);\nAssertion.addMethod(\"key\", assertKeys);\nfunction assertThrows(errorLike, errMsgMatcher, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\") || false;\n new Assertion(obj, flagMsg, ssfi, true).is.a(\"function\");\n if (isRegExp2(errorLike) || typeof errorLike === \"string\") {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n let caughtErr;\n let errorWasThrown = false;\n try {\n obj();\n } catch (err) {\n errorWasThrown = true;\n caughtErr = err;\n }\n var everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0;\n var everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n var errorLikeFail = false;\n var errMsgMatcherFail = false;\n if (everyArgIsUndefined || !everyArgIsUndefined && !negate) {\n var errorLikeString = \"an error\";\n if (errorLike instanceof Error) {\n errorLikeString = \"#{exp}\";\n } else if (errorLike) {\n errorLikeString = check_error_exports.getConstructorName(errorLike);\n }\n let actual = caughtErr;\n if (caughtErr instanceof Error) {\n actual = caughtErr.toString();\n } else if (typeof caughtErr === \"string\") {\n actual = caughtErr;\n } else if (caughtErr && (typeof caughtErr === \"object\" || typeof caughtErr === \"function\")) {\n try {\n actual = check_error_exports.getConstructorName(caughtErr);\n } catch (_err) {\n }\n }\n this.assert(\n errorWasThrown,\n \"expected #{this} to throw \" + errorLikeString,\n \"expected #{this} to not throw an error but #{act} was thrown\",\n errorLike && errorLike.toString(),\n actual\n );\n }\n if (errorLike && caughtErr) {\n if (errorLike instanceof Error) {\n var isCompatibleInstance = check_error_exports.compatibleInstance(caughtErr, errorLike);\n if (isCompatibleInstance === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr && !negate ? \" but #{act} was thrown\" : \"\"),\n errorLike.toString(),\n caughtErr.toString()\n );\n }\n }\n }\n var isCompatibleConstructor = check_error_exports.compatibleConstructor(caughtErr, errorLike);\n if (isCompatibleConstructor === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n );\n }\n }\n }\n if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) {\n var placeholder = \"including\";\n if (isRegExp2(errMsgMatcher)) {\n placeholder = \"matching\";\n }\n var isCompatibleMessage = check_error_exports.compatibleMessage(caughtErr, errMsgMatcher);\n if (isCompatibleMessage === negate) {\n if (everyArgIsDefined && negate) {\n errMsgMatcherFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw error \" + placeholder + \" #{exp} but got #{act}\",\n \"expected #{this} to throw error not \" + placeholder + \" #{exp}\",\n errMsgMatcher,\n check_error_exports.getMessage(caughtErr)\n );\n }\n }\n }\n if (errorLikeFail && errMsgMatcherFail) {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n );\n }\n flag2(this, \"object\", caughtErr);\n}\n__name(assertThrows, \"assertThrows\");\nAssertion.addMethod(\"throw\", assertThrows);\nAssertion.addMethod(\"throws\", assertThrows);\nAssertion.addMethod(\"Throw\", assertThrows);\nfunction respondTo(method, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), itself = flag2(this, \"itself\"), context = \"function\" === typeof obj && !itself ? obj.prototype[method] : obj[method];\n this.assert(\n \"function\" === typeof context,\n \"expected #{this} to respond to \" + inspect2(method),\n \"expected #{this} to not respond to \" + inspect2(method)\n );\n}\n__name(respondTo, \"respondTo\");\nAssertion.addMethod(\"respondTo\", respondTo);\nAssertion.addMethod(\"respondsTo\", respondTo);\nAssertion.addProperty(\"itself\", function() {\n flag2(this, \"itself\", true);\n});\nfunction satisfy(matcher, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\");\n var result = matcher(obj);\n this.assert(\n result,\n \"expected #{this} to satisfy \" + objDisplay(matcher),\n \"expected #{this} to not satisfy\" + objDisplay(matcher),\n flag2(this, \"negate\") ? false : true,\n result\n );\n}\n__name(satisfy, \"satisfy\");\nAssertion.addMethod(\"satisfy\", satisfy);\nAssertion.addMethod(\"satisfies\", satisfy);\nfunction closeTo(expected, delta, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).is.a(\"number\");\n if (typeof expected !== \"number\" || typeof delta !== \"number\") {\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n var deltaMessage = delta === void 0 ? \", and a delta is required\" : \"\";\n throw new AssertionError(\n flagMsg + \"the arguments to closeTo or approximately must be numbers\" + deltaMessage,\n void 0,\n ssfi\n );\n }\n this.assert(\n Math.abs(obj - expected) <= delta,\n \"expected #{this} to be close to \" + expected + \" +/- \" + delta,\n \"expected #{this} not to be close to \" + expected + \" +/- \" + delta\n );\n}\n__name(closeTo, \"closeTo\");\nAssertion.addMethod(\"closeTo\", closeTo);\nAssertion.addMethod(\"approximately\", closeTo);\nfunction isSubsetOf(_subset, _superset, cmp, contains, ordered) {\n let superset = Array.from(_superset);\n let subset = Array.from(_subset);\n if (!contains) {\n if (subset.length !== superset.length)\n return false;\n superset = superset.slice();\n }\n return subset.every(function(elem, idx) {\n if (ordered)\n return cmp ? cmp(elem, superset[idx]) : elem === superset[idx];\n if (!cmp) {\n var matchIdx = superset.indexOf(elem);\n if (matchIdx === -1)\n return false;\n if (!contains)\n superset.splice(matchIdx, 1);\n return true;\n }\n return superset.some(function(elem2, matchIdx2) {\n if (!cmp(elem, elem2))\n return false;\n if (!contains)\n superset.splice(matchIdx2, 1);\n return true;\n });\n });\n}\n__name(isSubsetOf, \"isSubsetOf\");\nAssertion.addMethod(\"members\", function(subset, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).to.be.iterable;\n new Assertion(subset, flagMsg, ssfi, true).to.be.iterable;\n var contains = flag2(this, \"contains\");\n var ordered = flag2(this, \"ordered\");\n var subject, failMsg, failNegateMsg;\n if (contains) {\n subject = ordered ? \"an ordered superset\" : \"a superset\";\n failMsg = \"expected #{this} to be \" + subject + \" of #{exp}\";\n failNegateMsg = \"expected #{this} to not be \" + subject + \" of #{exp}\";\n } else {\n subject = ordered ? \"ordered members\" : \"members\";\n failMsg = \"expected #{this} to have the same \" + subject + \" as #{exp}\";\n failNegateMsg = \"expected #{this} to not have the same \" + subject + \" as #{exp}\";\n }\n var cmp = flag2(this, \"deep\") ? flag2(this, \"eql\") : void 0;\n this.assert(\n isSubsetOf(subset, obj, cmp, contains, ordered),\n failMsg,\n failNegateMsg,\n subset,\n obj,\n true\n );\n});\nAssertion.addProperty(\"iterable\", function(msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var obj = flag2(this, \"object\");\n this.assert(\n obj != void 0 && obj[Symbol.iterator],\n \"expected #{this} to be an iterable\",\n \"expected #{this} to not be an iterable\",\n obj\n );\n});\nfunction oneOf(list, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var expected = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), contains = flag2(this, \"contains\"), isDeep = flag2(this, \"deep\"), eql = flag2(this, \"eql\");\n new Assertion(list, flagMsg, ssfi, true).to.be.an(\"array\");\n if (contains) {\n this.assert(\n list.some(function(possibility) {\n return expected.indexOf(possibility) > -1;\n }),\n \"expected #{this} to contain one of #{exp}\",\n \"expected #{this} to not contain one of #{exp}\",\n list,\n expected\n );\n } else {\n if (isDeep) {\n this.assert(\n list.some(function(possibility) {\n return eql(expected, possibility);\n }),\n \"expected #{this} to deeply equal one of #{exp}\",\n \"expected #{this} to deeply equal one of #{exp}\",\n list,\n expected\n );\n } else {\n this.assert(\n list.indexOf(expected) > -1,\n \"expected #{this} to be one of #{exp}\",\n \"expected #{this} to not be one of #{exp}\",\n list,\n expected\n );\n }\n }\n}\n__name(oneOf, \"oneOf\");\nAssertion.addMethod(\"oneOf\", oneOf);\nfunction assertChanges(subject, prop, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n fn();\n var final = prop === void 0 || prop === null ? subject() : subject[prop];\n var msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"change\");\n flag2(this, \"realDelta\", final !== initial);\n this.assert(\n initial !== final,\n \"expected \" + msgObj + \" to change\",\n \"expected \" + msgObj + \" to not change\"\n );\n}\n__name(assertChanges, \"assertChanges\");\nAssertion.addMethod(\"change\", assertChanges);\nAssertion.addMethod(\"changes\", assertChanges);\nfunction assertIncreases(subject, prop, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n fn();\n var final = prop === void 0 || prop === null ? subject() : subject[prop];\n var msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"increase\");\n flag2(this, \"realDelta\", final - initial);\n this.assert(\n final - initial > 0,\n \"expected \" + msgObj + \" to increase\",\n \"expected \" + msgObj + \" to not increase\"\n );\n}\n__name(assertIncreases, \"assertIncreases\");\nAssertion.addMethod(\"increase\", assertIncreases);\nAssertion.addMethod(\"increases\", assertIncreases);\nfunction assertDecreases(subject, prop, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n var initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n fn();\n var final = prop === void 0 || prop === null ? subject() : subject[prop];\n var msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"decrease\");\n flag2(this, \"realDelta\", initial - final);\n this.assert(\n final - initial < 0,\n \"expected \" + msgObj + \" to decrease\",\n \"expected \" + msgObj + \" to not decrease\"\n );\n}\n__name(assertDecreases, \"assertDecreases\");\nAssertion.addMethod(\"decrease\", assertDecreases);\nAssertion.addMethod(\"decreases\", assertDecreases);\nfunction assertDelta(delta, msg) {\n if (msg)\n flag2(this, \"message\", msg);\n var msgObj = flag2(this, \"deltaMsgObj\");\n var initial = flag2(this, \"initialDeltaValue\");\n var final = flag2(this, \"finalDeltaValue\");\n var behavior = flag2(this, \"deltaBehavior\");\n var realDelta = flag2(this, \"realDelta\");\n var expression;\n if (behavior === \"change\") {\n expression = Math.abs(final - initial) === Math.abs(delta);\n } else {\n expression = realDelta === Math.abs(delta);\n }\n this.assert(\n expression,\n \"expected \" + msgObj + \" to \" + behavior + \" by \" + delta,\n \"expected \" + msgObj + \" to not \" + behavior + \" by \" + delta\n );\n}\n__name(assertDelta, \"assertDelta\");\nAssertion.addMethod(\"by\", assertDelta);\nAssertion.addProperty(\"extensible\", function() {\n var obj = flag2(this, \"object\");\n var isExtensible = obj === Object(obj) && Object.isExtensible(obj);\n this.assert(\n isExtensible,\n \"expected #{this} to be extensible\",\n \"expected #{this} to not be extensible\"\n );\n});\nAssertion.addProperty(\"sealed\", function() {\n var obj = flag2(this, \"object\");\n var isSealed = obj === Object(obj) ? Object.isSealed(obj) : true;\n this.assert(\n isSealed,\n \"expected #{this} to be sealed\",\n \"expected #{this} to not be sealed\"\n );\n});\nAssertion.addProperty(\"frozen\", function() {\n var obj = flag2(this, \"object\");\n var isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true;\n this.assert(\n isFrozen,\n \"expected #{this} to be frozen\",\n \"expected #{this} to not be frozen\"\n );\n});\nAssertion.addProperty(\"finite\", function(msg) {\n var obj = flag2(this, \"object\");\n this.assert(\n typeof obj === \"number\" && isFinite(obj),\n \"expected #{this} to be a finite number\",\n \"expected #{this} to not be a finite number\"\n );\n});\n\n// lib/chai/interface/expect.js\nfunction expect(val, message) {\n return new Assertion(val, message);\n}\n__name(expect, \"expect\");\nexpect.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"expect.fail()\";\n throw new AssertionError(message, {\n actual,\n expected,\n operator\n }, expect.fail);\n};\n\n// lib/chai/interface/should.js\nvar should_exports = {};\n__export(should_exports, {\n Should: () => Should,\n should: () => should\n});\nfunction loadShould() {\n function shouldGetter() {\n if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === \"function\" && this instanceof Symbol || typeof BigInt === \"function\" && this instanceof BigInt) {\n return new Assertion(this.valueOf(), null, shouldGetter);\n }\n return new Assertion(this, null, shouldGetter);\n }\n __name(shouldGetter, \"shouldGetter\");\n function shouldSetter(value) {\n Object.defineProperty(this, \"should\", {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n __name(shouldSetter, \"shouldSetter\");\n Object.defineProperty(Object.prototype, \"should\", {\n set: shouldSetter,\n get: shouldGetter,\n configurable: true\n });\n var should2 = {};\n should2.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"should.fail()\";\n throw new AssertionError(message, {\n actual,\n expected,\n operator\n }, should2.fail);\n };\n should2.equal = function(actual, expected, message) {\n new Assertion(actual, message).to.equal(expected);\n };\n should2.Throw = function(fn, errt, errs, msg) {\n new Assertion(fn, msg).to.Throw(errt, errs);\n };\n should2.exist = function(val, msg) {\n new Assertion(val, msg).to.exist;\n };\n should2.not = {};\n should2.not.equal = function(actual, expected, msg) {\n new Assertion(actual, msg).to.not.equal(expected);\n };\n should2.not.Throw = function(fn, errt, errs, msg) {\n new Assertion(fn, msg).to.not.Throw(errt, errs);\n };\n should2.not.exist = function(val, msg) {\n new Assertion(val, msg).to.not.exist;\n };\n should2[\"throw\"] = should2[\"Throw\"];\n should2.not[\"throw\"] = should2.not[\"Throw\"];\n return should2;\n}\n__name(loadShould, \"loadShould\");\nvar should = loadShould;\nvar Should = loadShould;\n\n// lib/chai/interface/assert.js\nfunction assert(express, errmsg) {\n var test2 = new Assertion(null, null, assert, true);\n test2.assert(\n express,\n errmsg,\n \"[ negation message unavailable ]\"\n );\n}\n__name(assert, \"assert\");\nassert.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"assert.fail()\";\n throw new AssertionError(message, {\n actual,\n expected,\n operator\n }, assert.fail);\n};\nassert.isOk = function(val, msg) {\n new Assertion(val, msg, assert.isOk, true).is.ok;\n};\nassert.isNotOk = function(val, msg) {\n new Assertion(val, msg, assert.isNotOk, true).is.not.ok;\n};\nassert.equal = function(act, exp, msg) {\n var test2 = new Assertion(act, msg, assert.equal, true);\n test2.assert(\n exp == flag(test2, \"object\"),\n \"expected #{this} to equal #{exp}\",\n \"expected #{this} to not equal #{act}\",\n exp,\n act,\n true\n );\n};\nassert.notEqual = function(act, exp, msg) {\n var test2 = new Assertion(act, msg, assert.notEqual, true);\n test2.assert(\n exp != flag(test2, \"object\"),\n \"expected #{this} to not equal #{exp}\",\n \"expected #{this} to equal #{act}\",\n exp,\n act,\n true\n );\n};\nassert.strictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.strictEqual, true).to.equal(exp);\n};\nassert.notStrictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.notStrictEqual, true).to.not.equal(exp);\n};\nassert.deepEqual = assert.deepStrictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.deepEqual, true).to.eql(exp);\n};\nassert.notDeepEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.notDeepEqual, true).to.not.eql(exp);\n};\nassert.isAbove = function(val, abv, msg) {\n new Assertion(val, msg, assert.isAbove, true).to.be.above(abv);\n};\nassert.isAtLeast = function(val, atlst, msg) {\n new Assertion(val, msg, assert.isAtLeast, true).to.be.least(atlst);\n};\nassert.isBelow = function(val, blw, msg) {\n new Assertion(val, msg, assert.isBelow, true).to.be.below(blw);\n};\nassert.isAtMost = function(val, atmst, msg) {\n new Assertion(val, msg, assert.isAtMost, true).to.be.most(atmst);\n};\nassert.isTrue = function(val, msg) {\n new Assertion(val, msg, assert.isTrue, true).is[\"true\"];\n};\nassert.isNotTrue = function(val, msg) {\n new Assertion(val, msg, assert.isNotTrue, true).to.not.equal(true);\n};\nassert.isFalse = function(val, msg) {\n new Assertion(val, msg, assert.isFalse, true).is[\"false\"];\n};\nassert.isNotFalse = function(val, msg) {\n new Assertion(val, msg, assert.isNotFalse, true).to.not.equal(false);\n};\nassert.isNull = function(val, msg) {\n new Assertion(val, msg, assert.isNull, true).to.equal(null);\n};\nassert.isNotNull = function(val, msg) {\n new Assertion(val, msg, assert.isNotNull, true).to.not.equal(null);\n};\nassert.isNaN = function(val, msg) {\n new Assertion(val, msg, assert.isNaN, true).to.be.NaN;\n};\nassert.isNotNaN = function(value, message) {\n new Assertion(value, message, assert.isNotNaN, true).not.to.be.NaN;\n};\nassert.exists = function(val, msg) {\n new Assertion(val, msg, assert.exists, true).to.exist;\n};\nassert.notExists = function(val, msg) {\n new Assertion(val, msg, assert.notExists, true).to.not.exist;\n};\nassert.isUndefined = function(val, msg) {\n new Assertion(val, msg, assert.isUndefined, true).to.equal(void 0);\n};\nassert.isDefined = function(val, msg) {\n new Assertion(val, msg, assert.isDefined, true).to.not.equal(void 0);\n};\nassert.isCallable = function(value, message) {\n new Assertion(value, message, assert.isCallable, true).is.callable;\n};\nassert.isNotCallable = function(value, message) {\n new Assertion(value, message, assert.isNotCallable, true).is.not.callable;\n};\nassert.isObject = function(val, msg) {\n new Assertion(val, msg, assert.isObject, true).to.be.a(\"object\");\n};\nassert.isNotObject = function(val, msg) {\n new Assertion(val, msg, assert.isNotObject, true).to.not.be.a(\"object\");\n};\nassert.isArray = function(val, msg) {\n new Assertion(val, msg, assert.isArray, true).to.be.an(\"array\");\n};\nassert.isNotArray = function(val, msg) {\n new Assertion(val, msg, assert.isNotArray, true).to.not.be.an(\"array\");\n};\nassert.isString = function(val, msg) {\n new Assertion(val, msg, assert.isString, true).to.be.a(\"string\");\n};\nassert.isNotString = function(val, msg) {\n new Assertion(val, msg, assert.isNotString, true).to.not.be.a(\"string\");\n};\nassert.isNumber = function(val, msg) {\n new Assertion(val, msg, assert.isNumber, true).to.be.a(\"number\");\n};\nassert.isNotNumber = function(val, msg) {\n new Assertion(val, msg, assert.isNotNumber, true).to.not.be.a(\"number\");\n};\nassert.isFinite = function(val, msg) {\n new Assertion(val, msg, assert.isFinite, true).to.be.finite;\n};\nassert.isBoolean = function(val, msg) {\n new Assertion(val, msg, assert.isBoolean, true).to.be.a(\"boolean\");\n};\nassert.isNotBoolean = function(val, msg) {\n new Assertion(val, msg, assert.isNotBoolean, true).to.not.be.a(\"boolean\");\n};\nassert.typeOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.typeOf, true).to.be.a(type3);\n};\nassert.notTypeOf = function(value, type3, message) {\n new Assertion(value, message, assert.notTypeOf, true).to.not.be.a(type3);\n};\nassert.instanceOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.instanceOf, true).to.be.instanceOf(type3);\n};\nassert.notInstanceOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.notInstanceOf, true).to.not.be.instanceOf(type3);\n};\nassert.include = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.include, true).include(inc);\n};\nassert.notInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notInclude, true).not.include(inc);\n};\nassert.deepInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepInclude, true).deep.include(inc);\n};\nassert.notDeepInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepInclude, true).not.deep.include(inc);\n};\nassert.nestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.nestedInclude, true).nested.include(inc);\n};\nassert.notNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notNestedInclude, true).not.nested.include(inc);\n};\nassert.deepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepNestedInclude, true).deep.nested.include(inc);\n};\nassert.notDeepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepNestedInclude, true).not.deep.nested.include(inc);\n};\nassert.ownInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.ownInclude, true).own.include(inc);\n};\nassert.notOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notOwnInclude, true).not.own.include(inc);\n};\nassert.deepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepOwnInclude, true).deep.own.include(inc);\n};\nassert.notDeepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepOwnInclude, true).not.deep.own.include(inc);\n};\nassert.match = function(exp, re, msg) {\n new Assertion(exp, msg, assert.match, true).to.match(re);\n};\nassert.notMatch = function(exp, re, msg) {\n new Assertion(exp, msg, assert.notMatch, true).to.not.match(re);\n};\nassert.property = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.property, true).to.have.property(prop);\n};\nassert.notProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.notProperty, true).to.not.have.property(prop);\n};\nassert.propertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.propertyVal, true).to.have.property(prop, val);\n};\nassert.notPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notPropertyVal, true).to.not.have.property(prop, val);\n};\nassert.deepPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepPropertyVal, true).to.have.deep.property(prop, val);\n};\nassert.notDeepPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notDeepPropertyVal, true).to.not.have.deep.property(prop, val);\n};\nassert.ownProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.ownProperty, true).to.have.own.property(prop);\n};\nassert.notOwnProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.notOwnProperty, true).to.not.have.own.property(prop);\n};\nassert.ownPropertyVal = function(obj, prop, value, msg) {\n new Assertion(obj, msg, assert.ownPropertyVal, true).to.have.own.property(prop, value);\n};\nassert.notOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(obj, msg, assert.notOwnPropertyVal, true).to.not.have.own.property(prop, value);\n};\nassert.deepOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(obj, msg, assert.deepOwnPropertyVal, true).to.have.deep.own.property(prop, value);\n};\nassert.notDeepOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(obj, msg, assert.notDeepOwnPropertyVal, true).to.not.have.deep.own.property(prop, value);\n};\nassert.nestedProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.nestedProperty, true).to.have.nested.property(prop);\n};\nassert.notNestedProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.notNestedProperty, true).to.not.have.nested.property(prop);\n};\nassert.nestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.nestedPropertyVal, true).to.have.nested.property(prop, val);\n};\nassert.notNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notNestedPropertyVal, true).to.not.have.nested.property(prop, val);\n};\nassert.deepNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepNestedPropertyVal, true).to.have.deep.nested.property(prop, val);\n};\nassert.notDeepNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notDeepNestedPropertyVal, true).to.not.have.deep.nested.property(prop, val);\n};\nassert.lengthOf = function(exp, len, msg) {\n new Assertion(exp, msg, assert.lengthOf, true).to.have.lengthOf(len);\n};\nassert.hasAnyKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyKeys, true).to.have.any.keys(keys);\n};\nassert.hasAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllKeys, true).to.have.all.keys(keys);\n};\nassert.containsAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllKeys, true).to.contain.all.keys(keys);\n};\nassert.doesNotHaveAnyKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyKeys, true).to.not.have.any.keys(keys);\n};\nassert.doesNotHaveAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllKeys, true).to.not.have.all.keys(keys);\n};\nassert.hasAnyDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyDeepKeys, true).to.have.any.deep.keys(keys);\n};\nassert.hasAllDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllDeepKeys, true).to.have.all.deep.keys(keys);\n};\nassert.containsAllDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllDeepKeys, true).to.contain.all.deep.keys(keys);\n};\nassert.doesNotHaveAnyDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyDeepKeys, true).to.not.have.any.deep.keys(keys);\n};\nassert.doesNotHaveAllDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllDeepKeys, true).to.not.have.all.deep.keys(keys);\n};\nassert.throws = function(fn, errorLike, errMsgMatcher, msg) {\n if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n var assertErr = new Assertion(fn, msg, assert.throws, true).to.throw(errorLike, errMsgMatcher);\n return flag(assertErr, \"object\");\n};\nassert.doesNotThrow = function(fn, errorLike, errMsgMatcher, message) {\n if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n new Assertion(fn, message, assert.doesNotThrow, true).to.not.throw(errorLike, errMsgMatcher);\n};\nassert.operator = function(val, operator, val2, msg) {\n var ok;\n switch (operator) {\n case \"==\":\n ok = val == val2;\n break;\n case \"===\":\n ok = val === val2;\n break;\n case \">\":\n ok = val > val2;\n break;\n case \">=\":\n ok = val >= val2;\n break;\n case \"<\":\n ok = val < val2;\n break;\n case \"<=\":\n ok = val <= val2;\n break;\n case \"!=\":\n ok = val != val2;\n break;\n case \"!==\":\n ok = val !== val2;\n break;\n default:\n msg = msg ? msg + \": \" : msg;\n throw new AssertionError(\n msg + 'Invalid operator \"' + operator + '\"',\n void 0,\n assert.operator\n );\n }\n var test2 = new Assertion(ok, msg, assert.operator, true);\n test2.assert(\n true === flag(test2, \"object\"),\n \"expected \" + inspect2(val) + \" to be \" + operator + \" \" + inspect2(val2),\n \"expected \" + inspect2(val) + \" to not be \" + operator + \" \" + inspect2(val2)\n );\n};\nassert.closeTo = function(act, exp, delta, msg) {\n new Assertion(act, msg, assert.closeTo, true).to.be.closeTo(exp, delta);\n};\nassert.approximately = function(act, exp, delta, msg) {\n new Assertion(act, msg, assert.approximately, true).to.be.approximately(exp, delta);\n};\nassert.sameMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.sameMembers, true).to.have.same.members(set2);\n};\nassert.notSameMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameMembers, true).to.not.have.same.members(set2);\n};\nassert.sameDeepMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.sameDeepMembers, true).to.have.same.deep.members(set2);\n};\nassert.notSameDeepMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameDeepMembers, true).to.not.have.same.deep.members(set2);\n};\nassert.sameOrderedMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.sameOrderedMembers, true).to.have.same.ordered.members(set2);\n};\nassert.notSameOrderedMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameOrderedMembers, true).to.not.have.same.ordered.members(set2);\n};\nassert.sameDeepOrderedMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.sameDeepOrderedMembers, true).to.have.same.deep.ordered.members(set2);\n};\nassert.notSameDeepOrderedMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.notSameDeepOrderedMembers, true).to.not.have.same.deep.ordered.members(set2);\n};\nassert.includeMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.includeMembers, true).to.include.members(subset);\n};\nassert.notIncludeMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeMembers, true).to.not.include.members(subset);\n};\nassert.includeDeepMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.includeDeepMembers, true).to.include.deep.members(subset);\n};\nassert.notIncludeDeepMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeDeepMembers, true).to.not.include.deep.members(subset);\n};\nassert.includeOrderedMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.includeOrderedMembers, true).to.include.ordered.members(subset);\n};\nassert.notIncludeOrderedMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeOrderedMembers, true).to.not.include.ordered.members(subset);\n};\nassert.includeDeepOrderedMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.includeDeepOrderedMembers, true).to.include.deep.ordered.members(subset);\n};\nassert.notIncludeDeepOrderedMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.notIncludeDeepOrderedMembers, true).to.not.include.deep.ordered.members(subset);\n};\nassert.oneOf = function(inList, list, msg) {\n new Assertion(inList, msg, assert.oneOf, true).to.be.oneOf(list);\n};\nassert.isIterable = function(obj, msg) {\n if (obj == void 0 || !obj[Symbol.iterator]) {\n msg = msg ? `${msg} expected ${inspect2(obj)} to be an iterable` : `expected ${inspect2(obj)} to be an iterable`;\n throw new AssertionError(\n msg,\n void 0,\n assert.isIterable\n );\n }\n};\nassert.changes = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changes, true).to.change(obj, prop);\n};\nassert.changesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changesBy, true).to.change(obj, prop).by(delta);\n};\nassert.doesNotChange = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotChange, true).to.not.change(obj, prop);\n};\nassert.changesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changesButNotBy, true).to.change(obj, prop).but.not.by(delta);\n};\nassert.increases = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.increases, true).to.increase(obj, prop);\n};\nassert.increasesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.increasesBy, true).to.increase(obj, prop).by(delta);\n};\nassert.doesNotIncrease = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotIncrease, true).to.not.increase(obj, prop);\n};\nassert.increasesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta);\n};\nassert.decreases = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.decreases, true).to.decrease(obj, prop);\n};\nassert.decreasesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.decreasesBy, true).to.decrease(obj, prop).by(delta);\n};\nassert.doesNotDecrease = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotDecrease, true).to.not.decrease(obj, prop);\n};\nassert.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta);\n};\nassert.decreasesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n var tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta);\n};\nassert.ifError = function(val) {\n if (val) {\n throw val;\n }\n};\nassert.isExtensible = function(obj, msg) {\n new Assertion(obj, msg, assert.isExtensible, true).to.be.extensible;\n};\nassert.isNotExtensible = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotExtensible, true).to.not.be.extensible;\n};\nassert.isSealed = function(obj, msg) {\n new Assertion(obj, msg, assert.isSealed, true).to.be.sealed;\n};\nassert.isNotSealed = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotSealed, true).to.not.be.sealed;\n};\nassert.isFrozen = function(obj, msg) {\n new Assertion(obj, msg, assert.isFrozen, true).to.be.frozen;\n};\nassert.isNotFrozen = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotFrozen, true).to.not.be.frozen;\n};\nassert.isEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isEmpty, true).to.be.empty;\n};\nassert.isNotEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isNotEmpty, true).to.not.be.empty;\n};\n(/* @__PURE__ */ __name(function alias(name, as) {\n assert[as] = assert[name];\n return alias;\n}, \"alias\"))(\"isOk\", \"ok\")(\"isNotOk\", \"notOk\")(\"throws\", \"throw\")(\"throws\", \"Throw\")(\"isExtensible\", \"extensible\")(\"isNotExtensible\", \"notExtensible\")(\"isSealed\", \"sealed\")(\"isNotSealed\", \"notSealed\")(\"isFrozen\", \"frozen\")(\"isNotFrozen\", \"notFrozen\")(\"isEmpty\", \"empty\")(\"isNotEmpty\", \"notEmpty\")(\"isCallable\", \"isFunction\")(\"isNotCallable\", \"isNotFunction\");\n\n// lib/chai.js\nvar used = [];\nfunction use(fn) {\n const exports = {\n AssertionError,\n util: utils_exports,\n config,\n expect,\n assert,\n Assertion,\n ...should_exports\n };\n if (!~used.indexOf(fn)) {\n fn(exports, utils_exports);\n used.push(fn);\n }\n return exports;\n}\n__name(use, \"use\");\nexport {\n Assertion,\n AssertionError,\n Should,\n assert,\n config,\n expect,\n should,\n use,\n utils_exports as util\n};\n/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - test utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - expectTypes utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getActual utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - message composition utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - transferFlags utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - isProxyEnabled helper\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addProperty utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addLengthGuard utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getProperties utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - proxify utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - overwriteProperty utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - overwriteMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addChainingMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - overwriteChainableMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - compareByInspect utility\n * Copyright(c) 2011-2016 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getOwnEnumerablePropertySymbols utility\n * Copyright(c) 2011-2016 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getOwnEnumerableProperties utility\n * Copyright(c) 2011-2016 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - isNaN utility\n * Copyright(c) 2012-2015 Sakthipriyan Vairamani <thechargingvolcano@gmail.com>\n * MIT Licensed\n */\n/*!\n * chai\n * Copyright(c) 2011 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*! Bundled license information:\n\ndeep-eql/index.js:\n (*!\n * deep-eql\n * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n *)\n (*!\n * Check to see if the MemoizeMap has recorded a result of the two operands\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @returns {Boolean|null} result\n *)\n (*!\n * Set the result of the equality into the MemoizeMap\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @param {Boolean} result\n *)\n (*!\n * Primary Export\n *)\n (*!\n * The main logic of the `deepEqual` function.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (optional) Additional options\n * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality.\n * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of\n complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular\n references to blow the stack.\n * @return {Boolean} equal match\n *)\n (*!\n * Compare two Regular Expressions for equality.\n *\n * @param {RegExp} leftHandOperand\n * @param {RegExp} rightHandOperand\n * @return {Boolean} result\n *)\n (*!\n * Compare two Sets/Maps for equality. Faster than other equality functions.\n *\n * @param {Set} leftHandOperand\n * @param {Set} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Simple equality for generator objects such as those returned by generator functions.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Determine if the given object has an @@iterator function.\n *\n * @param {Object} target\n * @return {Boolean} `true` if the object has an @@iterator function.\n *)\n (*!\n * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array.\n * This will consume the iterator - which could have side effects depending on the @@iterator implementation.\n *\n * @param {Object} target\n * @returns {Array} an array of entries from the @@iterator function\n *)\n (*!\n * Gets all entries from a Generator. This will consume the generator - which could have side effects.\n *\n * @param {Generator} target\n * @returns {Array} an array of entries from the Generator.\n *)\n (*!\n * Gets all own and inherited enumerable keys from a target.\n *\n * @param {Object} target\n * @returns {Array} an array of own and inherited enumerable keys from the target.\n *)\n (*!\n * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of\n * each key. If any value of the given key is not equal, the function will return false (early).\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual`\n * for each enumerable key in the object.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Returns true if the argument is a primitive.\n *\n * This intentionally returns true for all objects that can be compared by reference,\n * including functions and symbols.\n *\n * @param {Mixed} value\n * @return {Boolean} result\n *)\n*/\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","// src/utils.ts\nfunction d(e, t) {\n if (!e)\n throw new Error(t);\n}\nfunction y(e, t) {\n return typeof t === e;\n}\nfunction w(e) {\n return e instanceof Promise;\n}\nfunction f(e, t, n) {\n Object.defineProperty(e, t, n);\n}\nfunction p(e, t, n) {\n Object.defineProperty(e, t, { value: n });\n}\n\n// src/constants.ts\nvar u = Symbol.for(\"tinyspy:spy\");\n\n// src/internal.ts\nvar x = /* @__PURE__ */ new Set(), P = (e) => {\n e.called = !1, e.callCount = 0, e.calls = [], e.results = [], e.resolves = [], e.next = [];\n}, K = (e) => (f(e, u, { value: { reset: () => P(e[u]) } }), e[u]), I = (e) => e[u] || K(e);\nfunction g(e) {\n d(\n y(\"function\", e) || y(\"undefined\", e),\n \"cannot spy on a non-function value\"\n );\n let t = function(...s) {\n let r = I(t);\n r.called = !0, r.callCount++, r.calls.push(s);\n let R = r.next.shift();\n if (R) {\n r.results.push(R);\n let [o, l] = R;\n if (o === \"ok\")\n return l;\n throw l;\n }\n let i, c = \"ok\", a = r.results.length;\n if (r.impl)\n try {\n new.target ? i = Reflect.construct(r.impl, s, new.target) : i = r.impl.apply(this, s), c = \"ok\";\n } catch (o) {\n throw i = o, c = \"error\", r.results.push([c, o]), o;\n }\n let S = [c, i];\n return w(i) && i.then(\n (o) => r.resolves[a] = [\"ok\", o],\n (o) => r.resolves[a] = [\"error\", o]\n ), r.results.push(S), i;\n };\n p(t, \"_isMockFunction\", !0), p(t, \"length\", e ? e.length : 0), p(t, \"name\", e && e.name || \"spy\");\n let n = I(t);\n return n.reset(), n.impl = e, t;\n}\nfunction T(e) {\n let t = I(e);\n f(e, \"returns\", {\n get: () => t.results.map(([, n]) => n)\n }), [\n \"called\",\n \"callCount\",\n \"results\",\n \"resolves\",\n \"calls\",\n \"reset\",\n \"impl\"\n ].forEach(\n (n) => f(e, n, { get: () => t[n], set: (s) => t[n] = s })\n ), p(e, \"nextError\", (n) => (t.next.push([\"error\", n]), t)), p(e, \"nextResult\", (n) => (t.next.push([\"ok\", n]), t));\n}\n\n// src/spy.ts\nfunction L(e) {\n let t = g(e);\n return T(t), t;\n}\n\n// src/spyOn.ts\nvar k = (e, t) => Object.getOwnPropertyDescriptor(e, t), O = (e, t) => {\n t != null && typeof t == \"function\" && t.prototype != null && Object.setPrototypeOf(e.prototype, t.prototype);\n};\nfunction C(e, t, n) {\n d(\n !y(\"undefined\", e),\n \"spyOn could not find an object to spy upon\"\n ), d(\n y(\"object\", e) || y(\"function\", e),\n \"cannot spyOn on a primitive value\"\n );\n let [s, r] = (() => {\n if (!y(\"object\", t))\n return [t, \"value\"];\n if (\"getter\" in t && \"setter\" in t)\n throw new Error(\"cannot spy on both getter and setter\");\n if (\"getter\" in t)\n return [t.getter, \"get\"];\n if (\"setter\" in t)\n return [t.setter, \"set\"];\n throw new Error(\"specify getter or setter to spy on\");\n })(), R = k(e, s), i = Object.getPrototypeOf(e), c = i && k(i, s), a = R || c;\n d(\n a || s in e,\n `${String(s)} does not exist`\n );\n let S = !1;\n r === \"value\" && a && !a.value && a.get && (r = \"get\", S = !0, n = a.get());\n let o;\n a ? o = a[r] : r !== \"value\" ? o = () => e[s] : o = e[s], n || (n = o);\n let l = g(n);\n r === \"value\" && O(l, o);\n let h = (A) => {\n let { value: M, ...v } = a || {\n configurable: !0,\n writable: !0\n };\n r !== \"value\" && delete v.writable, v[r] = A, f(e, s, v);\n }, b = () => a ? f(e, s, a) : h(o), m = l[u];\n return p(m, \"restore\", b), p(m, \"getOriginal\", () => S ? o() : o), p(m, \"willCall\", (A) => (m.impl = A, l)), h(\n S ? () => (O(l, n), l) : l\n ), x.add(l), l;\n}\nfunction Q(e, t, n) {\n let s = C(e, t, n);\n return T(s), [\"restore\", \"getOriginal\", \"willCall\"].forEach((r) => {\n p(s, r, s[u][r]);\n }), s;\n}\n\n// src/restoreAll.ts\nfunction X() {\n for (let e of x)\n e.restore();\n x.clear();\n}\nexport {\n g as createInternalSpy,\n I as getInternalState,\n C as internalSpyOn,\n X as restoreAll,\n x as spies,\n L as spy,\n Q as spyOn\n};\n","import * as tinyspy from 'tinyspy';\n\nconst mocks = /* @__PURE__ */ new Set();\nfunction isMockFunction(fn2) {\n return typeof fn2 === \"function\" && \"_isMockFunction\" in fn2 && fn2._isMockFunction;\n}\nfunction spyOn(obj, method, accessType) {\n const dictionary = {\n get: \"getter\",\n set: \"setter\"\n };\n const objMethod = accessType ? { [dictionary[accessType]]: method } : method;\n const stub = tinyspy.internalSpyOn(obj, objMethod);\n return enhanceSpy(stub);\n}\nlet callOrder = 0;\nfunction enhanceSpy(spy) {\n const stub = spy;\n let implementation;\n let instances = [];\n let contexts = [];\n let invocations = [];\n const state = tinyspy.getInternalState(spy);\n const mockContext = {\n get calls() {\n return state.calls;\n },\n get contexts() {\n return contexts;\n },\n get instances() {\n return instances;\n },\n get invocationCallOrder() {\n return invocations;\n },\n get results() {\n return state.results.map(([callType, value]) => {\n const type = callType === \"error\" ? \"throw\" : \"return\";\n return { type, value };\n });\n },\n get settledResults() {\n return state.resolves.map(([callType, value]) => {\n const type = callType === \"error\" ? \"rejected\" : \"fulfilled\";\n return { type, value };\n });\n },\n get lastCall() {\n return state.calls[state.calls.length - 1];\n }\n };\n let onceImplementations = [];\n let implementationChangedTemporarily = false;\n function mockCall(...args) {\n instances.push(this);\n contexts.push(this);\n invocations.push(++callOrder);\n const impl = implementationChangedTemporarily ? implementation : onceImplementations.shift() || implementation || state.getOriginal() || (() => {\n });\n return impl.apply(this, args);\n }\n let name = stub.name;\n stub.getMockName = () => name || \"vi.fn()\";\n stub.mockName = (n) => {\n name = n;\n return stub;\n };\n stub.mockClear = () => {\n state.reset();\n instances = [];\n contexts = [];\n invocations = [];\n return stub;\n };\n stub.mockReset = () => {\n stub.mockClear();\n implementation = () => void 0;\n onceImplementations = [];\n return stub;\n };\n stub.mockRestore = () => {\n stub.mockReset();\n state.restore();\n implementation = void 0;\n return stub;\n };\n stub.getMockImplementation = () => implementation;\n stub.mockImplementation = (fn2) => {\n implementation = fn2;\n state.willCall(mockCall);\n return stub;\n };\n stub.mockImplementationOnce = (fn2) => {\n onceImplementations.push(fn2);\n return stub;\n };\n function withImplementation(fn2, cb) {\n const originalImplementation = implementation;\n implementation = fn2;\n state.willCall(mockCall);\n implementationChangedTemporarily = true;\n const reset = () => {\n implementation = originalImplementation;\n implementationChangedTemporarily = false;\n };\n const result = cb();\n if (result instanceof Promise) {\n return result.then(() => {\n reset();\n return stub;\n });\n }\n reset();\n return stub;\n }\n stub.withImplementation = withImplementation;\n stub.mockReturnThis = () => stub.mockImplementation(function() {\n return this;\n });\n stub.mockReturnValue = (val) => stub.mockImplementation(() => val);\n stub.mockReturnValueOnce = (val) => stub.mockImplementationOnce(() => val);\n stub.mockResolvedValue = (val) => stub.mockImplementation(() => Promise.resolve(val));\n stub.mockResolvedValueOnce = (val) => stub.mockImplementationOnce(() => Promise.resolve(val));\n stub.mockRejectedValue = (val) => stub.mockImplementation(() => Promise.reject(val));\n stub.mockRejectedValueOnce = (val) => stub.mockImplementationOnce(() => Promise.reject(val));\n Object.defineProperty(stub, \"mock\", {\n get: () => mockContext\n });\n state.willCall(mockCall);\n mocks.add(stub);\n return stub;\n}\nfunction fn(implementation) {\n const enhancedSpy = enhanceSpy(tinyspy.internalSpyOn({\n spy: implementation || function() {\n }\n }, \"spy\"));\n if (implementation) {\n enhancedSpy.mockImplementation(implementation);\n }\n return enhancedSpy;\n}\n\nexport { fn, isMockFunction, mocks, spyOn };\n","import { getType, stringify, isObject, assertTypes } from '@vitest/utils';\nimport c from 'tinyrainbow';\nimport { diff } from '@vitest/utils/diff';\nimport { isMockFunction } from '@vitest/spy';\nimport { processError } from '@vitest/utils/error';\nimport { use, util } from 'chai';\n\nconst MATCHERS_OBJECT = Symbol.for(\"matchers-object\");\nconst JEST_MATCHERS_OBJECT = Symbol.for(\"$$jest-matchers-object\");\nconst GLOBAL_EXPECT = Symbol.for(\"expect-global\");\nconst ASYMMETRIC_MATCHERS_OBJECT = Symbol.for(\n \"asymmetric-matchers-object\"\n);\n\nif (!Object.prototype.hasOwnProperty.call(globalThis, MATCHERS_OBJECT)) {\n const globalState = /* @__PURE__ */ new WeakMap();\n const matchers = /* @__PURE__ */ Object.create(null);\n const customEqualityTesters = [];\n const assymetricMatchers = /* @__PURE__ */ Object.create(null);\n Object.defineProperty(globalThis, MATCHERS_OBJECT, {\n get: () => globalState\n });\n Object.defineProperty(globalThis, JEST_MATCHERS_OBJECT, {\n configurable: true,\n get: () => ({\n state: globalState.get(globalThis[GLOBAL_EXPECT]),\n matchers,\n customEqualityTesters\n })\n });\n Object.defineProperty(globalThis, ASYMMETRIC_MATCHERS_OBJECT, {\n get: () => assymetricMatchers\n });\n}\nfunction getState(expect) {\n return globalThis[MATCHERS_OBJECT].get(expect);\n}\nfunction setState(state, expect) {\n const map = globalThis[MATCHERS_OBJECT];\n const current = map.get(expect) || {};\n Object.assign(current, state);\n map.set(expect, current);\n}\n\nfunction getMatcherUtils() {\n const EXPECTED_COLOR = c.green;\n const RECEIVED_COLOR = c.red;\n const INVERTED_COLOR = c.inverse;\n const BOLD_WEIGHT = c.bold;\n const DIM_COLOR = c.dim;\n function matcherHint(matcherName, received = \"received\", expected = \"expected\", options = {}) {\n const {\n comment = \"\",\n isDirectExpectCall = false,\n // seems redundant with received === ''\n isNot = false,\n promise = \"\",\n secondArgument = \"\",\n expectedColor = EXPECTED_COLOR,\n receivedColor = RECEIVED_COLOR,\n secondArgumentColor = EXPECTED_COLOR\n } = options;\n let hint = \"\";\n let dimString = \"expect\";\n if (!isDirectExpectCall && received !== \"\") {\n hint += DIM_COLOR(`${dimString}(`) + receivedColor(received);\n dimString = \")\";\n }\n if (promise !== \"\") {\n hint += DIM_COLOR(`${dimString}.`) + promise;\n dimString = \"\";\n }\n if (isNot) {\n hint += `${DIM_COLOR(`${dimString}.`)}not`;\n dimString = \"\";\n }\n if (matcherName.includes(\".\")) {\n dimString += matcherName;\n } else {\n hint += DIM_COLOR(`${dimString}.`) + matcherName;\n dimString = \"\";\n }\n if (expected === \"\") {\n dimString += \"()\";\n } else {\n hint += DIM_COLOR(`${dimString}(`) + expectedColor(expected);\n if (secondArgument) {\n hint += DIM_COLOR(\", \") + secondArgumentColor(secondArgument);\n }\n dimString = \")\";\n }\n if (comment !== \"\") {\n dimString += ` // ${comment}`;\n }\n if (dimString !== \"\") {\n hint += DIM_COLOR(dimString);\n }\n return hint;\n }\n const SPACE_SYMBOL = \"\\xB7\";\n const replaceTrailingSpaces = (text) => text.replace(/\\s+$/gm, (spaces) => SPACE_SYMBOL.repeat(spaces.length));\n const printReceived = (object) => RECEIVED_COLOR(replaceTrailingSpaces(stringify(object)));\n const printExpected = (value) => EXPECTED_COLOR(replaceTrailingSpaces(stringify(value)));\n return {\n EXPECTED_COLOR,\n RECEIVED_COLOR,\n INVERTED_COLOR,\n BOLD_WEIGHT,\n DIM_COLOR,\n matcherHint,\n printReceived,\n printExpected\n };\n}\nfunction addCustomEqualityTesters(newTesters) {\n if (!Array.isArray(newTesters)) {\n throw new TypeError(\n `expect.customEqualityTesters: Must be set to an array of Testers. Was given \"${getType(\n newTesters\n )}\"`\n );\n }\n globalThis[JEST_MATCHERS_OBJECT].customEqualityTesters.push(\n ...newTesters\n );\n}\nfunction getCustomEqualityTesters() {\n return globalThis[JEST_MATCHERS_OBJECT].customEqualityTesters;\n}\n\nfunction equals(a, b, customTesters, strictCheck) {\n customTesters = customTesters || [];\n return eq(a, b, [], [], customTesters, strictCheck ? hasKey : hasDefinedKey);\n}\nconst functionToString = Function.prototype.toString;\nfunction isAsymmetric(obj) {\n return !!obj && typeof obj === \"object\" && \"asymmetricMatch\" in obj && isA(\"Function\", obj.asymmetricMatch);\n}\nfunction hasAsymmetric(obj, seen = /* @__PURE__ */ new Set()) {\n if (seen.has(obj)) {\n return false;\n }\n seen.add(obj);\n if (isAsymmetric(obj)) {\n return true;\n }\n if (Array.isArray(obj)) {\n return obj.some((i) => hasAsymmetric(i, seen));\n }\n if (obj instanceof Set) {\n return Array.from(obj).some((i) => hasAsymmetric(i, seen));\n }\n if (isObject(obj)) {\n return Object.values(obj).some((v) => hasAsymmetric(v, seen));\n }\n return false;\n}\nfunction asymmetricMatch(a, b) {\n const asymmetricA = isAsymmetric(a);\n const asymmetricB = isAsymmetric(b);\n if (asymmetricA && asymmetricB) {\n return void 0;\n }\n if (asymmetricA) {\n return a.asymmetricMatch(b);\n }\n if (asymmetricB) {\n return b.asymmetricMatch(a);\n }\n}\nfunction eq(a, b, aStack, bStack, customTesters, hasKey2) {\n let result = true;\n const asymmetricResult = asymmetricMatch(a, b);\n if (asymmetricResult !== void 0) {\n return asymmetricResult;\n }\n const testerContext = { equals };\n for (let i = 0; i < customTesters.length; i++) {\n const customTesterResult = customTesters[i].call(\n testerContext,\n a,\n b,\n customTesters\n );\n if (customTesterResult !== void 0) {\n return customTesterResult;\n }\n }\n if (a instanceof Error && b instanceof Error) {\n return a.message === b.message;\n }\n if (typeof URL === \"function\" && a instanceof URL && b instanceof URL) {\n return a.href === b.href;\n }\n if (Object.is(a, b)) {\n return true;\n }\n if (a === null || b === null) {\n return a === b;\n }\n const className = Object.prototype.toString.call(a);\n if (className !== Object.prototype.toString.call(b)) {\n return false;\n }\n switch (className) {\n case \"[object Boolean]\":\n case \"[object String]\":\n case \"[object Number]\":\n if (typeof a !== typeof b) {\n return false;\n } else if (typeof a !== \"object\" && typeof b !== \"object\") {\n return Object.is(a, b);\n } else {\n return Object.is(a.valueOf(), b.valueOf());\n }\n case \"[object Date]\": {\n const numA = +a;\n const numB = +b;\n return numA === numB || Number.isNaN(numA) && Number.isNaN(numB);\n }\n case \"[object RegExp]\":\n return a.source === b.source && a.flags === b.flags;\n }\n if (typeof a !== \"object\" || typeof b !== \"object\") {\n return false;\n }\n if (isDomNode(a) && isDomNode(b)) {\n return a.isEqualNode(b);\n }\n let length = aStack.length;\n while (length--) {\n if (aStack[length] === a) {\n return bStack[length] === b;\n } else if (bStack[length] === b) {\n return false;\n }\n }\n aStack.push(a);\n bStack.push(b);\n if (className === \"[object Array]\" && a.length !== b.length) {\n return false;\n }\n const aKeys = keys(a, hasKey2);\n let key;\n let size = aKeys.length;\n if (keys(b, hasKey2).length !== size) {\n return false;\n }\n while (size--) {\n key = aKeys[size];\n result = hasKey2(b, key) && eq(a[key], b[key], aStack, bStack, customTesters, hasKey2);\n if (!result) {\n return false;\n }\n }\n aStack.pop();\n bStack.pop();\n return result;\n}\nfunction keys(obj, hasKey2) {\n const keys2 = [];\n for (const key in obj) {\n if (hasKey2(obj, key)) {\n keys2.push(key);\n }\n }\n return keys2.concat(\n Object.getOwnPropertySymbols(obj).filter(\n (symbol) => Object.getOwnPropertyDescriptor(obj, symbol).enumerable\n )\n );\n}\nfunction hasDefinedKey(obj, key) {\n return hasKey(obj, key) && obj[key] !== void 0;\n}\nfunction hasKey(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction isA(typeName, value) {\n return Object.prototype.toString.apply(value) === `[object ${typeName}]`;\n}\nfunction isDomNode(obj) {\n return obj !== null && typeof obj === \"object\" && \"nodeType\" in obj && typeof obj.nodeType === \"number\" && \"nodeName\" in obj && typeof obj.nodeName === \"string\" && \"isEqualNode\" in obj && typeof obj.isEqualNode === \"function\";\n}\nfunction fnNameFor(func) {\n if (func.name) {\n return func.name;\n }\n const matches = functionToString.call(func).match(/^(?:async)?\\s*function\\s*(?:\\*\\s*)?([\\w$]+)\\s*\\(/);\n return matches ? matches[1] : \"<anonymous>\";\n}\nfunction getPrototype(obj) {\n if (Object.getPrototypeOf) {\n return Object.getPrototypeOf(obj);\n }\n if (obj.constructor.prototype === obj) {\n return null;\n }\n return obj.constructor.prototype;\n}\nfunction hasProperty(obj, property) {\n if (!obj) {\n return false;\n }\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n return true;\n }\n return hasProperty(getPrototype(obj), property);\n}\nconst IS_KEYED_SENTINEL = \"@@__IMMUTABLE_KEYED__@@\";\nconst IS_SET_SENTINEL = \"@@__IMMUTABLE_SET__@@\";\nconst IS_LIST_SENTINEL = \"@@__IMMUTABLE_LIST__@@\";\nconst IS_ORDERED_SENTINEL = \"@@__IMMUTABLE_ORDERED__@@\";\nconst IS_RECORD_SYMBOL = \"@@__IMMUTABLE_RECORD__@@\";\nfunction isImmutableUnorderedKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL] && !maybeKeyed[IS_ORDERED_SENTINEL]);\n}\nfunction isImmutableUnorderedSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL] && !maybeSet[IS_ORDERED_SENTINEL]);\n}\nfunction isObjectLiteral(source) {\n return source != null && typeof source === \"object\" && !Array.isArray(source);\n}\nfunction isImmutableList(source) {\n return Boolean(source && isObjectLiteral(source) && source[IS_LIST_SENTINEL]);\n}\nfunction isImmutableOrderedKeyed(source) {\n return Boolean(\n source && isObjectLiteral(source) && source[IS_KEYED_SENTINEL] && source[IS_ORDERED_SENTINEL]\n );\n}\nfunction isImmutableOrderedSet(source) {\n return Boolean(\n source && isObjectLiteral(source) && source[IS_SET_SENTINEL] && source[IS_ORDERED_SENTINEL]\n );\n}\nfunction isImmutableRecord(source) {\n return Boolean(source && isObjectLiteral(source) && source[IS_RECORD_SYMBOL]);\n}\nconst IteratorSymbol = Symbol.iterator;\nfunction hasIterator(object) {\n return !!(object != null && object[IteratorSymbol]);\n}\nfunction iterableEquality(a, b, customTesters = [], aStack = [], bStack = []) {\n if (typeof a !== \"object\" || typeof b !== \"object\" || Array.isArray(a) || Array.isArray(b) || !hasIterator(a) || !hasIterator(b)) {\n return void 0;\n }\n if (a.constructor !== b.constructor) {\n return false;\n }\n let length = aStack.length;\n while (length--) {\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n aStack.push(a);\n bStack.push(b);\n const filteredCustomTesters = [\n ...customTesters.filter((t) => t !== iterableEquality),\n iterableEqualityWithStack\n ];\n function iterableEqualityWithStack(a2, b2) {\n return iterableEquality(a2, b2, [...customTesters], [...aStack], [...bStack]);\n }\n if (a.size !== void 0) {\n if (a.size !== b.size) {\n return false;\n } else if (isA(\"Set\", a) || isImmutableUnorderedSet(a)) {\n let allFound = true;\n for (const aValue of a) {\n if (!b.has(aValue)) {\n let has = false;\n for (const bValue of b) {\n const isEqual = equals(aValue, bValue, filteredCustomTesters);\n if (isEqual === true) {\n has = true;\n }\n }\n if (has === false) {\n allFound = false;\n break;\n }\n }\n }\n aStack.pop();\n bStack.pop();\n return allFound;\n } else if (isA(\"Map\", a) || isImmutableUnorderedKeyed(a)) {\n let allFound = true;\n for (const aEntry of a) {\n if (!b.has(aEntry[0]) || !equals(aEntry[1], b.get(aEntry[0]), filteredCustomTesters)) {\n let has = false;\n for (const bEntry of b) {\n const matchedKey = equals(\n aEntry[0],\n bEntry[0],\n filteredCustomTesters\n );\n let matchedValue = false;\n if (matchedKey === true) {\n matchedValue = equals(\n aEntry[1],\n bEntry[1],\n filteredCustomTesters\n );\n }\n if (matchedValue === true) {\n has = true;\n }\n }\n if (has === false) {\n allFound = false;\n break;\n }\n }\n }\n aStack.pop();\n bStack.pop();\n return allFound;\n }\n }\n const bIterator = b[IteratorSymbol]();\n for (const aValue of a) {\n const nextB = bIterator.next();\n if (nextB.done || !equals(aValue, nextB.value, filteredCustomTesters)) {\n return false;\n }\n }\n if (!bIterator.next().done) {\n return false;\n }\n if (!isImmutableList(a) && !isImmutableOrderedKeyed(a) && !isImmutableOrderedSet(a) && !isImmutableRecord(a)) {\n const aEntries = Object.entries(a);\n const bEntries = Object.entries(b);\n if (!equals(aEntries, bEntries)) {\n return false;\n }\n }\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction hasPropertyInObject(object, key) {\n const shouldTerminate = !object || typeof object !== \"object\" || object === Object.prototype;\n if (shouldTerminate) {\n return false;\n }\n return Object.prototype.hasOwnProperty.call(object, key) || hasPropertyInObject(Object.getPrototypeOf(object), key);\n}\nfunction isObjectWithKeys(a) {\n return isObject(a) && !(a instanceof Error) && !Array.isArray(a) && !(a instanceof Date);\n}\nfunction subsetEquality(object, subset, customTesters = []) {\n const filteredCustomTesters = customTesters.filter(\n (t) => t !== subsetEquality\n );\n const subsetEqualityWithContext = (seenReferences = /* @__PURE__ */ new WeakMap()) => (object2, subset2) => {\n if (!isObjectWithKeys(subset2)) {\n return void 0;\n }\n return Object.keys(subset2).every((key) => {\n if (subset2[key] != null && typeof subset2[key] === \"object\") {\n if (seenReferences.has(subset2[key])) {\n return equals(object2[key], subset2[key], filteredCustomTesters);\n }\n seenReferences.set(subset2[key], true);\n }\n const result = object2 != null && hasPropertyInObject(object2, key) && equals(object2[key], subset2[key], [\n ...filteredCustomTesters,\n subsetEqualityWithContext(seenReferences)\n ]);\n seenReferences.delete(subset2[key]);\n return result;\n });\n };\n return subsetEqualityWithContext()(object, subset);\n}\nfunction typeEquality(a, b) {\n if (a == null || b == null || a.constructor === b.constructor) {\n return void 0;\n }\n return false;\n}\nfunction arrayBufferEquality(a, b) {\n let dataViewA = a;\n let dataViewB = b;\n if (!(a instanceof DataView && b instanceof DataView)) {\n if (!(a instanceof ArrayBuffer) || !(b instanceof ArrayBuffer)) {\n return void 0;\n }\n try {\n dataViewA = new DataView(a);\n dataViewB = new DataView(b);\n } catch {\n return void 0;\n }\n }\n if (dataViewA.byteLength !== dataViewB.byteLength) {\n return false;\n }\n for (let i = 0; i < dataViewA.byteLength; i++) {\n if (dataViewA.getUint8(i) !== dataViewB.getUint8(i)) {\n return false;\n }\n }\n return true;\n}\nfunction sparseArrayEquality(a, b, customTesters = []) {\n if (!Array.isArray(a) || !Array.isArray(b)) {\n return void 0;\n }\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n const filteredCustomTesters = customTesters.filter(\n (t) => t !== sparseArrayEquality\n );\n return equals(a, b, filteredCustomTesters, true) && equals(aKeys, bKeys);\n}\nfunction generateToBeMessage(deepEqualityName, expected = \"#{this}\", actual = \"#{exp}\") {\n const toBeMessage = `expected ${expected} to be ${actual} // Object.is equality`;\n if ([\"toStrictEqual\", \"toEqual\"].includes(deepEqualityName)) {\n return `${toBeMessage}\n\nIf it should pass with deep equality, replace \"toBe\" with \"${deepEqualityName}\"\n\nExpected: ${expected}\nReceived: serializes to the same string\n`;\n }\n return toBeMessage;\n}\nfunction pluralize(word, count) {\n return `${count} ${word}${count === 1 ? \"\" : \"s\"}`;\n}\nfunction getObjectKeys(object) {\n return [\n ...Object.keys(object),\n ...Object.getOwnPropertySymbols(object).filter(\n (s) => {\n var _a;\n return (_a = Object.getOwnPropertyDescriptor(object, s)) == null ? void 0 : _a.enumerable;\n }\n )\n ];\n}\nfunction getObjectSubset(object, subset, customTesters = []) {\n let stripped = 0;\n const getObjectSubsetWithContext = (seenReferences = /* @__PURE__ */ new WeakMap()) => (object2, subset2) => {\n if (Array.isArray(object2)) {\n if (Array.isArray(subset2) && subset2.length === object2.length) {\n return subset2.map(\n (sub, i) => getObjectSubsetWithContext(seenReferences)(object2[i], sub)\n );\n }\n } else if (object2 instanceof Date) {\n return object2;\n } else if (isObject(object2) && isObject(subset2)) {\n if (equals(object2, subset2, [\n ...customTesters,\n iterableEquality,\n subsetEquality\n ])) {\n return subset2;\n }\n const trimmed = {};\n seenReferences.set(object2, trimmed);\n for (const key of getObjectKeys(object2)) {\n if (hasPropertyInObject(subset2, key)) {\n trimmed[key] = seenReferences.has(object2[key]) ? seenReferences.get(object2[key]) : getObjectSubsetWithContext(seenReferences)(\n object2[key],\n subset2[key]\n );\n } else {\n if (!seenReferences.has(object2[key])) {\n stripped += 1;\n if (isObject(object2[key])) {\n stripped += getObjectKeys(object2[key]).length;\n }\n getObjectSubsetWithContext(seenReferences)(\n object2[key],\n subset2[key]\n );\n }\n }\n }\n if (getObjectKeys(trimmed).length > 0) {\n return trimmed;\n }\n }\n return object2;\n };\n return { subset: getObjectSubsetWithContext()(object, subset), stripped };\n}\n\nclass AsymmetricMatcher {\n constructor(sample, inverse = false) {\n this.sample = sample;\n this.inverse = inverse;\n }\n // should have \"jest\" to be compatible with its ecosystem\n $$typeof = Symbol.for(\"jest.asymmetricMatcher\");\n getMatcherContext(expect) {\n return {\n ...getState(expect || globalThis[GLOBAL_EXPECT]),\n equals,\n isNot: this.inverse,\n customTesters: getCustomEqualityTesters(),\n utils: {\n ...getMatcherUtils(),\n diff,\n stringify,\n iterableEquality,\n subsetEquality\n }\n };\n }\n // implement custom chai/loupe inspect for better AssertionError.message formatting\n // https://github.com/chaijs/loupe/blob/9b8a6deabcd50adc056a64fb705896194710c5c6/src/index.ts#L29\n [Symbol.for(\"chai/inspect\")](options) {\n const result = stringify(this, options.depth, { min: true });\n if (result.length <= options.truncate) {\n return result;\n }\n return `${this.toString()}{\\u2026}`;\n }\n}\nclass StringContaining extends AsymmetricMatcher {\n constructor(sample, inverse = false) {\n if (!isA(\"String\", sample)) {\n throw new Error(\"Expected is not a string\");\n }\n super(sample, inverse);\n }\n asymmetricMatch(other) {\n const result = isA(\"String\", other) && other.includes(this.sample);\n return this.inverse ? !result : result;\n }\n toString() {\n return `String${this.inverse ? \"Not\" : \"\"}Containing`;\n }\n getExpectedType() {\n return \"string\";\n }\n}\nclass Anything extends AsymmetricMatcher {\n asymmetricMatch(other) {\n return other != null;\n }\n toString() {\n return \"Anything\";\n }\n toAsymmetricMatcher() {\n return \"Anything\";\n }\n}\nclass ObjectContaining extends AsymmetricMatcher {\n constructor(sample, inverse = false) {\n super(sample, inverse);\n }\n getPrototype(obj) {\n if (Object.getPrototypeOf) {\n return Object.getPrototypeOf(obj);\n }\n if (obj.constructor.prototype === obj) {\n return null;\n }\n return obj.constructor.prototype;\n }\n hasProperty(obj, property) {\n if (!obj) {\n return false;\n }\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n return true;\n }\n return this.hasProperty(this.getPrototype(obj), property);\n }\n asymmetricMatch(other) {\n if (typeof this.sample !== \"object\") {\n throw new TypeError(\n `You must provide an object to ${this.toString()}, not '${typeof this.sample}'.`\n );\n }\n let result = true;\n const matcherContext = this.getMatcherContext();\n for (const property in this.sample) {\n if (!this.hasProperty(other, property) || !equals(\n this.sample[property],\n other[property],\n matcherContext.customTesters\n )) {\n result = false;\n break;\n }\n }\n return this.inverse ? !result : result;\n }\n toString() {\n return `Object${this.inverse ? \"Not\" : \"\"}Containing`;\n }\n getExpectedType() {\n return \"object\";\n }\n}\nclass ArrayContaining extends AsymmetricMatcher {\n constructor(sample, inverse = false) {\n super(sample, inverse);\n }\n asymmetricMatch(other) {\n if (!Array.isArray(this.sample)) {\n throw new TypeError(\n `You must provide an array to ${this.toString()}, not '${typeof this.sample}'.`\n );\n }\n const matcherContext = this.getMatcherContext();\n const result = this.sample.length === 0 || Array.isArray(other) && this.sample.every(\n (item) => other.some(\n (another) => equals(item, another, matcherContext.customTesters)\n )\n );\n return this.inverse ? !result : result;\n }\n toString() {\n return `Array${this.inverse ? \"Not\" : \"\"}Containing`;\n }\n getExpectedType() {\n return \"array\";\n }\n}\nclass Any extends AsymmetricMatcher {\n constructor(sample) {\n if (typeof sample === \"undefined\") {\n throw new TypeError(\n \"any() expects to be passed a constructor function. Please pass one or use anything() to match any object.\"\n );\n }\n super(sample);\n }\n fnNameFor(func) {\n if (func.name) {\n return func.name;\n }\n const functionToString = Function.prototype.toString;\n const matches = functionToString.call(func).match(/^(?:async)?\\s*function\\s*(?:\\*\\s*)?([\\w$]+)\\s*\\(/);\n return matches ? matches[1] : \"<anonymous>\";\n }\n asymmetricMatch(other) {\n if (this.sample === String) {\n return typeof other == \"string\" || other instanceof String;\n }\n if (this.sample === Number) {\n return typeof other == \"number\" || other instanceof Number;\n }\n if (this.sample === Function) {\n return typeof other == \"function\" || other instanceof Function;\n }\n if (this.sample === Boolean) {\n return typeof other == \"boolean\" || other instanceof Boolean;\n }\n if (this.sample === BigInt) {\n return typeof other == \"bigint\" || other instanceof BigInt;\n }\n if (this.sample === Symbol) {\n return typeof other == \"symbol\" || other instanceof Symbol;\n }\n if (this.sample === Object) {\n return typeof other == \"object\";\n }\n return other instanceof this.sample;\n }\n toString() {\n return \"Any\";\n }\n getExpectedType() {\n if (this.sample === String) {\n return \"string\";\n }\n if (this.sample === Number) {\n return \"number\";\n }\n if (this.sample === Function) {\n return \"function\";\n }\n if (this.sample === Object) {\n return \"object\";\n }\n if (this.sample === Boolean) {\n return \"boolean\";\n }\n return this.fnNameFor(this.sample);\n }\n toAsymmetricMatcher() {\n return `Any<${this.fnNameFor(this.sample)}>`;\n }\n}\nclass StringMatching extends AsymmetricMatcher {\n constructor(sample, inverse = false) {\n if (!isA(\"String\", sample) && !isA(\"RegExp\", sample)) {\n throw new Error(\"Expected is not a String or a RegExp\");\n }\n super(new RegExp(sample), inverse);\n }\n asymmetricMatch(other) {\n const result = isA(\"String\", other) && this.sample.test(other);\n return this.inverse ? !result : result;\n }\n toString() {\n return `String${this.inverse ? \"Not\" : \"\"}Matching`;\n }\n getExpectedType() {\n return \"string\";\n }\n}\nclass CloseTo extends AsymmetricMatcher {\n precision;\n constructor(sample, precision = 2, inverse = false) {\n if (!isA(\"Number\", sample)) {\n throw new Error(\"Expected is not a Number\");\n }\n if (!isA(\"Number\", precision)) {\n throw new Error(\"Precision is not a Number\");\n }\n super(sample);\n this.inverse = inverse;\n this.precision = precision;\n }\n asymmetricMatch(other) {\n if (!isA(\"Number\", other)) {\n return false;\n }\n let result = false;\n if (other === Number.POSITIVE_INFINITY && this.sample === Number.POSITIVE_INFINITY) {\n result = true;\n } else if (other === Number.NEGATIVE_INFINITY && this.sample === Number.NEGATIVE_INFINITY) {\n result = true;\n } else {\n result = Math.abs(this.sample - other) < 10 ** -this.precision / 2;\n }\n return this.inverse ? !result : result;\n }\n toString() {\n return `Number${this.inverse ? \"Not\" : \"\"}CloseTo`;\n }\n getExpectedType() {\n return \"number\";\n }\n toAsymmetricMatcher() {\n return [\n this.toString(),\n this.sample,\n `(${pluralize(\"digit\", this.precision)})`\n ].join(\" \");\n }\n}\nconst JestAsymmetricMatchers = (chai, utils) => {\n utils.addMethod(chai.expect, \"anything\", () => new Anything());\n utils.addMethod(chai.expect, \"any\", (expected) => new Any(expected));\n utils.addMethod(\n chai.expect,\n \"stringContaining\",\n (expected) => new StringContaining(expected)\n );\n utils.addMethod(\n chai.expect,\n \"objectContaining\",\n (expected) => new ObjectContaining(expected)\n );\n utils.addMethod(\n chai.expect,\n \"arrayContaining\",\n (expected) => new ArrayContaining(expected)\n );\n utils.addMethod(\n chai.expect,\n \"stringMatching\",\n (expected) => new StringMatching(expected)\n );\n utils.addMethod(\n chai.expect,\n \"closeTo\",\n (expected, precision) => new CloseTo(expected, precision)\n );\n chai.expect.not = {\n stringContaining: (expected) => new StringContaining(expected, true),\n objectContaining: (expected) => new ObjectContaining(expected, true),\n arrayContaining: (expected) => new ArrayContaining(expected, true),\n stringMatching: (expected) => new StringMatching(expected, true),\n closeTo: (expected, precision) => new CloseTo(expected, precision, true)\n };\n};\n\nfunction recordAsyncExpect(test, promise) {\n if (test && promise instanceof Promise) {\n promise = promise.finally(() => {\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 }\n return promise;\n}\nfunction wrapSoft(utils, fn) {\n return function(...args) {\n var _a;\n if (!utils.flag(this, \"soft\")) {\n return fn.apply(this, args);\n }\n const test = utils.flag(this, \"vitest-test\");\n if (!test) {\n throw new Error(\"expect.soft() can only be used inside a test\");\n }\n try {\n return fn.apply(this, args);\n } catch (err) {\n test.result || (test.result = { state: \"fail\" });\n test.result.state = \"fail\";\n (_a = test.result).errors || (_a.errors = []);\n test.result.errors.push(processError(err));\n }\n };\n}\n\nconst JestChaiExpect = (chai, utils) => {\n const { AssertionError } = chai;\n const customTesters = getCustomEqualityTesters();\n function def(name, fn) {\n const addMethod = (n) => {\n const softWrapper = wrapSoft(utils, fn);\n utils.addMethod(chai.Assertion.prototype, n, softWrapper);\n utils.addMethod(\n globalThis[JEST_MATCHERS_OBJECT].matchers,\n n,\n softWrapper\n );\n };\n if (Array.isArray(name)) {\n name.forEach((n) => addMethod(n));\n } else {\n addMethod(name);\n }\n }\n [\"throw\", \"throws\", \"Throw\"].forEach((m) => {\n utils.overwriteMethod(chai.Assertion.prototype, m, (_super) => {\n return function(...args) {\n const promise = utils.flag(this, \"promise\");\n const object = utils.flag(this, \"object\");\n const isNot = utils.flag(this, \"negate\");\n if (promise === \"rejects\") {\n utils.flag(this, \"object\", () => {\n throw object;\n });\n } else if (promise === \"resolves\" && typeof object !== \"function\") {\n if (!isNot) {\n const message = utils.flag(this, \"message\") || \"expected promise to throw an error, but it didn't\";\n const error = {\n showDiff: false\n };\n throw new AssertionError(message, error, utils.flag(this, \"ssfi\"));\n } else {\n return;\n }\n }\n _super.apply(this, args);\n };\n });\n });\n def(\"withTest\", function(test) {\n utils.flag(this, \"vitest-test\", test);\n return this;\n });\n def(\"toEqual\", function(expected) {\n const actual = utils.flag(this, \"object\");\n const equal = equals(actual, expected, [\n ...customTesters,\n iterableEquality\n ]);\n return this.assert(\n equal,\n \"expected #{this} to deeply equal #{exp}\",\n \"expected #{this} to not deeply equal #{exp}\",\n expected,\n actual\n );\n });\n def(\"toStrictEqual\", function(expected) {\n const obj = utils.flag(this, \"object\");\n const equal = equals(\n obj,\n expected,\n [\n ...customTesters,\n iterableEquality,\n typeEquality,\n sparseArrayEquality,\n arrayBufferEquality\n ],\n true\n );\n return this.assert(\n equal,\n \"expected #{this} to strictly equal #{exp}\",\n \"expected #{this} to not strictly equal #{exp}\",\n expected,\n obj\n );\n });\n def(\"toBe\", function(expected) {\n const actual = this._obj;\n const pass = Object.is(actual, expected);\n let deepEqualityName = \"\";\n if (!pass) {\n const toStrictEqualPass = equals(\n actual,\n expected,\n [\n ...customTesters,\n iterableEquality,\n typeEquality,\n sparseArrayEquality,\n arrayBufferEquality\n ],\n true\n );\n if (toStrictEqualPass) {\n deepEqualityName = \"toStrictEqual\";\n } else {\n const toEqualPass = equals(actual, expected, [\n ...customTesters,\n iterableEquality\n ]);\n if (toEqualPass) {\n deepEqualityName = \"toEqual\";\n }\n }\n }\n return this.assert(\n pass,\n generateToBeMessage(deepEqualityName),\n \"expected #{this} not to be #{exp} // Object.is equality\",\n expected,\n actual\n );\n });\n def(\"toMatchObject\", function(expected) {\n const actual = this._obj;\n const pass = equals(actual, expected, [\n ...customTesters,\n iterableEquality,\n subsetEquality\n ]);\n const isNot = utils.flag(this, \"negate\");\n const { subset: actualSubset, stripped } = getObjectSubset(\n actual,\n expected\n );\n if (pass && isNot || !pass && !isNot) {\n const msg = utils.getMessage(this, [\n pass,\n \"expected #{this} to match object #{exp}\",\n \"expected #{this} to not match object #{exp}\",\n expected,\n actualSubset,\n false\n ]);\n const message = stripped === 0 ? msg : `${msg}\n(${stripped} matching ${stripped === 1 ? \"property\" : \"properties\"} omitted from actual)`;\n throw new AssertionError(message, {\n showDiff: true,\n expected,\n actual: actualSubset\n });\n }\n });\n def(\"toMatch\", function(expected) {\n const actual = this._obj;\n if (typeof actual !== \"string\") {\n throw new TypeError(\n `.toMatch() expects to receive a string, but got ${typeof actual}`\n );\n }\n return this.assert(\n typeof expected === \"string\" ? actual.includes(expected) : actual.match(expected),\n `expected #{this} to match #{exp}`,\n `expected #{this} not to match #{exp}`,\n expected,\n actual\n );\n });\n def(\"toContain\", function(item) {\n const actual = this._obj;\n if (typeof Node !== \"undefined\" && actual instanceof Node) {\n if (!(item instanceof Node)) {\n throw new TypeError(\n `toContain() expected a DOM node as the argument, but got ${typeof item}`\n );\n }\n return this.assert(\n actual.contains(item),\n \"expected #{this} to contain element #{exp}\",\n \"expected #{this} not to contain element #{exp}\",\n item,\n actual\n );\n }\n if (typeof DOMTokenList !== \"undefined\" && actual instanceof DOMTokenList) {\n assertTypes(item, \"class name\", [\"string\"]);\n const isNot = utils.flag(this, \"negate\");\n const expectedClassList = isNot ? actual.value.replace(item, \"\").trim() : `${actual.value} ${item}`;\n return this.assert(\n actual.contains(item),\n `expected \"${actual.value}\" to contain \"${item}\"`,\n `expected \"${actual.value}\" not to contain \"${item}\"`,\n expectedClassList,\n actual.value\n );\n }\n if (typeof actual === \"string\" && typeof item === \"string\") {\n return this.assert(\n actual.includes(item),\n `expected #{this} to contain #{exp}`,\n `expected #{this} not to contain #{exp}`,\n item,\n actual\n );\n }\n if (actual != null && typeof actual !== \"string\") {\n utils.flag(this, \"object\", Array.from(actual));\n }\n return this.contain(item);\n });\n def(\"toContainEqual\", function(expected) {\n const obj = utils.flag(this, \"object\");\n const index = Array.from(obj).findIndex((item) => {\n return equals(item, expected, customTesters);\n });\n this.assert(\n index !== -1,\n \"expected #{this} to deep equally contain #{exp}\",\n \"expected #{this} to not deep equally contain #{exp}\",\n expected\n );\n });\n def(\"toBeTruthy\", function() {\n const obj = utils.flag(this, \"object\");\n this.assert(\n Boolean(obj),\n \"expected #{this} to be truthy\",\n \"expected #{this} to not be truthy\",\n obj,\n false\n );\n });\n def(\"toBeFalsy\", function() {\n const obj = utils.flag(this, \"object\");\n this.assert(\n !obj,\n \"expected #{this} to be falsy\",\n \"expected #{this} to not be falsy\",\n obj,\n false\n );\n });\n def(\"toBeGreaterThan\", function(expected) {\n const actual = this._obj;\n assertTypes(actual, \"actual\", [\"number\", \"bigint\"]);\n assertTypes(expected, \"expected\", [\"number\", \"bigint\"]);\n return this.assert(\n actual > expected,\n `expected ${actual} to be greater than ${expected}`,\n `expected ${actual} to be not greater than ${expected}`,\n actual,\n expected,\n false\n );\n });\n def(\"toBeGreaterThanOrEqual\", function(expected) {\n const actual = this._obj;\n assertTypes(actual, \"actual\", [\"number\", \"bigint\"]);\n assertTypes(expected, \"expected\", [\"number\", \"bigint\"]);\n return this.assert(\n actual >= expected,\n `expected ${actual} to be greater than or equal to ${expected}`,\n `expected ${actual} to be not greater than or equal to ${expected}`,\n actual,\n expected,\n false\n );\n });\n def(\"toBeLessThan\", function(expected) {\n const actual = this._obj;\n assertTypes(actual, \"actual\", [\"number\", \"bigint\"]);\n assertTypes(expected, \"expected\", [\"number\", \"bigint\"]);\n return this.assert(\n actual < expected,\n `expected ${actual} to be less than ${expected}`,\n `expected ${actual} to be not less than ${expected}`,\n actual,\n expected,\n false\n );\n });\n def(\"toBeLessThanOrEqual\", function(expected) {\n const actual = this._obj;\n assertTypes(actual, \"actual\", [\"number\", \"bigint\"]);\n assertTypes(expected, \"expected\", [\"number\", \"bigint\"]);\n return this.assert(\n actual <= expected,\n `expected ${actual} to be less than or equal to ${expected}`,\n `expected ${actual} to be not less than or equal to ${expected}`,\n actual,\n expected,\n false\n );\n });\n def(\"toBeNaN\", function() {\n return this.be.NaN;\n });\n def(\"toBeUndefined\", function() {\n return this.be.undefined;\n });\n def(\"toBeNull\", function() {\n return this.be.null;\n });\n def(\"toBeDefined\", function() {\n const negate = utils.flag(this, \"negate\");\n utils.flag(this, \"negate\", false);\n if (negate) {\n return this.be.undefined;\n }\n return this.not.be.undefined;\n });\n def(\n \"toBeTypeOf\",\n function(expected) {\n const actual = typeof this._obj;\n const equal = expected === actual;\n return this.assert(\n equal,\n \"expected #{this} to be type of #{exp}\",\n \"expected #{this} not to be type of #{exp}\",\n expected,\n actual\n );\n }\n );\n def(\"toBeInstanceOf\", function(obj) {\n return this.instanceOf(obj);\n });\n def(\"toHaveLength\", function(length) {\n return this.have.length(length);\n });\n def(\n \"toHaveProperty\",\n function(...args) {\n if (Array.isArray(args[0])) {\n args[0] = args[0].map((key) => String(key).replace(/([.[\\]])/g, \"\\\\$1\")).join(\".\");\n }\n const actual = this._obj;\n const [propertyName, expected] = args;\n const getValue = () => {\n const hasOwn = Object.prototype.hasOwnProperty.call(\n actual,\n propertyName\n );\n if (hasOwn) {\n return { value: actual[propertyName], exists: true };\n }\n return utils.getPathInfo(actual, propertyName);\n };\n const { value, exists } = getValue();\n const pass = exists && (args.length === 1 || equals(expected, value, customTesters));\n const valueString = args.length === 1 ? \"\" : ` with value ${utils.objDisplay(expected)}`;\n return this.assert(\n pass,\n `expected #{this} to have property \"${propertyName}\"${valueString}`,\n `expected #{this} to not have property \"${propertyName}\"${valueString}`,\n expected,\n exists ? value : void 0\n );\n }\n );\n def(\"toBeCloseTo\", function(received, precision = 2) {\n const expected = this._obj;\n let pass = false;\n let expectedDiff = 0;\n let receivedDiff = 0;\n if (received === Number.POSITIVE_INFINITY && expected === Number.POSITIVE_INFINITY) {\n pass = true;\n } else if (received === Number.NEGATIVE_INFINITY && expected === Number.NEGATIVE_INFINITY) {\n pass = true;\n } else {\n expectedDiff = 10 ** -precision / 2;\n receivedDiff = Math.abs(expected - received);\n pass = receivedDiff < expectedDiff;\n }\n return this.assert(\n pass,\n `expected #{this} to be close to #{exp}, received difference is ${receivedDiff}, but expected ${expectedDiff}`,\n `expected #{this} to not be close to #{exp}, received difference is ${receivedDiff}, but expected ${expectedDiff}`,\n received,\n expected,\n false\n );\n });\n const assertIsMock = (assertion) => {\n if (!isMockFunction(assertion._obj)) {\n throw new TypeError(\n `${utils.inspect(assertion._obj)} is not a spy or a call to a spy!`\n );\n }\n };\n const getSpy = (assertion) => {\n assertIsMock(assertion);\n return assertion._obj;\n };\n const ordinalOf = (i) => {\n const j = i % 10;\n const k = i % 100;\n if (j === 1 && k !== 11) {\n return `${i}st`;\n }\n if (j === 2 && k !== 12) {\n return `${i}nd`;\n }\n if (j === 3 && k !== 13) {\n return `${i}rd`;\n }\n return `${i}th`;\n };\n const formatCalls = (spy, msg, showActualCall) => {\n if (spy.mock.calls) {\n msg += c.gray(\n `\n\nReceived: \n\n${spy.mock.calls.map((callArg, i) => {\n let methodCall = c.bold(\n ` ${ordinalOf(i + 1)} ${spy.getMockName()} call:\n\n`\n );\n if (showActualCall) {\n methodCall += diff(showActualCall, callArg, {\n omitAnnotationLines: true\n });\n } else {\n methodCall += stringify(callArg).split(\"\\n\").map((line) => ` ${line}`).join(\"\\n\");\n }\n methodCall += \"\\n\";\n return methodCall;\n }).join(\"\\n\")}`\n );\n }\n msg += c.gray(\n `\n\nNumber of calls: ${c.bold(spy.mock.calls.length)}\n`\n );\n return msg;\n };\n const formatReturns = (spy, results, msg, showActualReturn) => {\n msg += c.gray(\n `\n\nReceived: \n\n${results.map((callReturn, i) => {\n let methodCall = c.bold(\n ` ${ordinalOf(i + 1)} ${spy.getMockName()} call return:\n\n`\n );\n if (showActualReturn) {\n methodCall += diff(showActualReturn, callReturn.value, {\n omitAnnotationLines: true\n });\n } else {\n methodCall += stringify(callReturn).split(\"\\n\").map((line) => ` ${line}`).join(\"\\n\");\n }\n methodCall += \"\\n\";\n return methodCall;\n }).join(\"\\n\")}`\n );\n msg += c.gray(\n `\n\nNumber of calls: ${c.bold(spy.mock.calls.length)}\n`\n );\n return msg;\n };\n def([\"toHaveBeenCalledTimes\", \"toBeCalledTimes\"], function(number) {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const callCount = spy.mock.calls.length;\n return this.assert(\n callCount === number,\n `expected \"${spyName}\" to be called #{exp} times, but got ${callCount} times`,\n `expected \"${spyName}\" to not be called #{exp} times`,\n number,\n callCount,\n false\n );\n });\n def(\"toHaveBeenCalledOnce\", function() {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const callCount = spy.mock.calls.length;\n return this.assert(\n callCount === 1,\n `expected \"${spyName}\" to be called once, but got ${callCount} times`,\n `expected \"${spyName}\" to not be called once`,\n 1,\n callCount,\n false\n );\n });\n def([\"toHaveBeenCalled\", \"toBeCalled\"], function() {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const callCount = spy.mock.calls.length;\n const called = callCount > 0;\n const isNot = utils.flag(this, \"negate\");\n let msg = utils.getMessage(this, [\n called,\n `expected \"${spyName}\" to be called at least once`,\n `expected \"${spyName}\" to not be called at all, but actually been called ${callCount} times`,\n true,\n called\n ]);\n if (called && isNot) {\n msg = formatCalls(spy, msg);\n }\n if (called && isNot || !called && !isNot) {\n throw new AssertionError(msg);\n }\n });\n def([\"toHaveBeenCalledWith\", \"toBeCalledWith\"], function(...args) {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const pass = spy.mock.calls.some(\n (callArg) => equals(callArg, args, [...customTesters, iterableEquality])\n );\n const isNot = utils.flag(this, \"negate\");\n const msg = utils.getMessage(this, [\n pass,\n `expected \"${spyName}\" to be called with arguments: #{exp}`,\n `expected \"${spyName}\" to not be called with arguments: #{exp}`,\n args\n ]);\n if (pass && isNot || !pass && !isNot) {\n throw new AssertionError(formatCalls(spy, msg, args));\n }\n });\n def(\n [\"toHaveBeenNthCalledWith\", \"nthCalledWith\"],\n function(times, ...args) {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const nthCall = spy.mock.calls[times - 1];\n const callCount = spy.mock.calls.length;\n const isCalled = times <= callCount;\n this.assert(\n equals(nthCall, args, [...customTesters, iterableEquality]),\n `expected ${ordinalOf(\n times\n )} \"${spyName}\" call to have been called with #{exp}${isCalled ? `` : `, but called only ${callCount} times`}`,\n `expected ${ordinalOf(\n times\n )} \"${spyName}\" call to not have been called with #{exp}`,\n args,\n nthCall,\n isCalled\n );\n }\n );\n def(\n [\"toHaveBeenLastCalledWith\", \"lastCalledWith\"],\n function(...args) {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const lastCall = spy.mock.calls[spy.mock.calls.length - 1];\n this.assert(\n equals(lastCall, args, [...customTesters, iterableEquality]),\n `expected last \"${spyName}\" call to have been called with #{exp}`,\n `expected last \"${spyName}\" call to not have been called with #{exp}`,\n args,\n lastCall\n );\n }\n );\n def(\n [\"toThrow\", \"toThrowError\"],\n function(expected) {\n if (typeof expected === \"string\" || typeof expected === \"undefined\" || expected instanceof RegExp) {\n return this.throws(expected);\n }\n const obj = this._obj;\n const promise = utils.flag(this, \"promise\");\n const isNot = utils.flag(this, \"negate\");\n let thrown = null;\n if (promise === \"rejects\") {\n thrown = obj;\n } else if (promise === \"resolves\" && typeof obj !== \"function\") {\n if (!isNot) {\n const message = utils.flag(this, \"message\") || \"expected promise to throw an error, but it didn't\";\n const error = {\n showDiff: false\n };\n throw new AssertionError(message, error, utils.flag(this, \"ssfi\"));\n } else {\n return;\n }\n } else {\n let isThrow = false;\n try {\n obj();\n } catch (err) {\n isThrow = true;\n thrown = err;\n }\n if (!isThrow && !isNot) {\n const message = utils.flag(this, \"message\") || \"expected function to throw an error, but it didn't\";\n const error = {\n showDiff: false\n };\n throw new AssertionError(message, error, utils.flag(this, \"ssfi\"));\n }\n }\n if (typeof expected === \"function\") {\n const name = expected.name || expected.prototype.constructor.name;\n return this.assert(\n thrown && thrown instanceof expected,\n `expected error to be instance of ${name}`,\n `expected error not to be instance of ${name}`,\n expected,\n thrown\n );\n }\n if (expected instanceof Error) {\n return this.assert(\n thrown && expected.message === thrown.message,\n `expected error to have message: ${expected.message}`,\n `expected error not to have message: ${expected.message}`,\n expected.message,\n thrown && thrown.message\n );\n }\n if (typeof expected === \"object\" && \"asymmetricMatch\" in expected && typeof expected.asymmetricMatch === \"function\") {\n const matcher = expected;\n return this.assert(\n thrown && matcher.asymmetricMatch(thrown),\n \"expected error to match asymmetric matcher\",\n \"expected error not to match asymmetric matcher\",\n matcher,\n thrown\n );\n }\n throw new Error(\n `\"toThrow\" expects string, RegExp, function, Error instance or asymmetric matcher, got \"${typeof expected}\"`\n );\n }\n );\n [\n {\n name: \"toHaveResolved\",\n condition: (spy) => spy.mock.settledResults.length > 0 && spy.mock.settledResults.some(({ type }) => type === \"fulfilled\"),\n action: \"resolved\"\n },\n {\n name: [\"toHaveReturned\", \"toReturn\"],\n condition: (spy) => spy.mock.calls.length > 0 && spy.mock.results.some(({ type }) => type !== \"throw\"),\n action: \"called\"\n }\n ].forEach(({ name, condition, action }) => {\n def(name, function() {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const pass = condition(spy);\n this.assert(\n pass,\n `expected \"${spyName}\" to be successfully ${action} at least once`,\n `expected \"${spyName}\" to not be successfully ${action}`,\n pass,\n !pass,\n false\n );\n });\n });\n [\n {\n name: \"toHaveResolvedTimes\",\n condition: (spy, times) => spy.mock.settledResults.reduce(\n (s, { type }) => type === \"fulfilled\" ? ++s : s,\n 0\n ) === times,\n action: \"resolved\"\n },\n {\n name: [\"toHaveReturnedTimes\", \"toReturnTimes\"],\n condition: (spy, times) => spy.mock.results.reduce(\n (s, { type }) => type === \"throw\" ? s : ++s,\n 0\n ) === times,\n action: \"called\"\n }\n ].forEach(({ name, condition, action }) => {\n def(name, function(times) {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const pass = condition(spy, times);\n this.assert(\n pass,\n `expected \"${spyName}\" to be successfully ${action} ${times} times`,\n `expected \"${spyName}\" to not be successfully ${action} ${times} times`,\n `expected resolved times: ${times}`,\n `received resolved times: ${pass}`,\n false\n );\n });\n });\n [\n {\n name: \"toHaveResolvedWith\",\n condition: (spy, value) => spy.mock.settledResults.some(\n ({ type, value: result }) => type === \"fulfilled\" && equals(value, result)\n ),\n action: \"resolve\"\n },\n {\n name: [\"toHaveReturnedWith\", \"toReturnWith\"],\n condition: (spy, value) => spy.mock.results.some(\n ({ type, value: result }) => type === \"return\" && equals(value, result)\n ),\n action: \"return\"\n }\n ].forEach(({ name, condition, action }) => {\n def(name, function(value) {\n const spy = getSpy(this);\n const pass = condition(spy, value);\n const isNot = utils.flag(this, \"negate\");\n if (pass && isNot || !pass && !isNot) {\n const spyName = spy.getMockName();\n const msg = utils.getMessage(this, [\n pass,\n `expected \"${spyName}\" to ${action} with: #{exp} at least once`,\n `expected \"${spyName}\" to not ${action} with: #{exp}`,\n value\n ]);\n const results = action === \"return\" ? spy.mock.results : spy.mock.settledResults;\n throw new AssertionError(formatReturns(spy, results, msg, value));\n }\n });\n });\n [\n {\n name: \"toHaveLastResolvedWith\",\n condition: (spy, value) => {\n const result = spy.mock.settledResults[spy.mock.settledResults.length - 1];\n return result && result.type === \"fulfilled\" && equals(result.value, value);\n },\n action: \"resolve\"\n },\n {\n name: [\"toHaveLastReturnedWith\", \"lastReturnedWith\"],\n condition: (spy, value) => {\n const result = spy.mock.results[spy.mock.results.length - 1];\n return result && result.type === \"return\" && equals(result.value, value);\n },\n action: \"return\"\n }\n ].forEach(({ name, condition, action }) => {\n def(name, function(value) {\n const spy = getSpy(this);\n const results = action === \"return\" ? spy.mock.results : spy.mock.settledResults;\n const result = results[results.length - 1];\n const spyName = spy.getMockName();\n this.assert(\n condition(spy, value),\n `expected last \"${spyName}\" call to ${action} #{exp}`,\n `expected last \"${spyName}\" call to not ${action} #{exp}`,\n value,\n result == null ? void 0 : result.value\n );\n });\n });\n [\n {\n name: \"toHaveNthResolvedWith\",\n condition: (spy, index, value) => {\n const result = spy.mock.settledResults[index - 1];\n return result && result.type === \"fulfilled\" && equals(result.value, value);\n },\n action: \"resolve\"\n },\n {\n name: [\"toHaveNthReturnedWith\", \"nthReturnedWith\"],\n condition: (spy, index, value) => {\n const result = spy.mock.results[index - 1];\n return result && result.type === \"return\" && equals(result.value, value);\n },\n action: \"return\"\n }\n ].forEach(({ name, condition, action }) => {\n def(name, function(nthCall, value) {\n const spy = getSpy(this);\n const spyName = spy.getMockName();\n const results = action === \"return\" ? spy.mock.results : spy.mock.settledResults;\n const result = results[nthCall - 1];\n const ordinalCall = `${ordinalOf(nthCall)} call`;\n this.assert(\n condition(spy, nthCall, value),\n `expected ${ordinalCall} \"${spyName}\" call to ${action} #{exp}`,\n `expected ${ordinalCall} \"${spyName}\" call to not ${action} #{exp}`,\n value,\n result == null ? void 0 : result.value\n );\n });\n });\n def(\"toSatisfy\", function(matcher, message) {\n return this.be.satisfy(matcher, message);\n });\n def(\"withContext\", function(context) {\n for (const key in context) {\n utils.flag(this, key, context[key]);\n }\n return this;\n });\n utils.addProperty(\n chai.Assertion.prototype,\n \"resolves\",\n function __VITEST_RESOLVES__() {\n const error = new Error(\"resolves\");\n utils.flag(this, \"promise\", \"resolves\");\n utils.flag(this, \"error\", error);\n const test = utils.flag(this, \"vitest-test\");\n const obj = utils.flag(this, \"object\");\n if (utils.flag(this, \"poll\")) {\n throw new SyntaxError(\n `expect.poll() is not supported in combination with .resolves`\n );\n }\n if (typeof (obj == null ? void 0 : obj.then) !== \"function\") {\n throw new TypeError(\n `You must provide a Promise to expect() when using .resolves, not '${typeof obj}'.`\n );\n }\n const proxy = new Proxy(this, {\n get: (target, key, receiver) => {\n const result = Reflect.get(target, key, receiver);\n if (typeof result !== \"function\") {\n return result instanceof chai.Assertion ? proxy : result;\n }\n return async (...args) => {\n const promise = obj.then(\n (value) => {\n utils.flag(this, \"object\", value);\n return result.call(this, ...args);\n },\n (err) => {\n const _error = new AssertionError(\n `promise rejected \"${utils.inspect(\n err\n )}\" instead of resolving`,\n { showDiff: false }\n );\n _error.cause = err;\n _error.stack = error.stack.replace(\n error.message,\n _error.message\n );\n throw _error;\n }\n );\n return recordAsyncExpect(test, promise);\n };\n }\n });\n return proxy;\n }\n );\n utils.addProperty(\n chai.Assertion.prototype,\n \"rejects\",\n function __VITEST_REJECTS__() {\n const error = new Error(\"rejects\");\n utils.flag(this, \"promise\", \"rejects\");\n utils.flag(this, \"error\", error);\n const test = utils.flag(this, \"vitest-test\");\n const obj = utils.flag(this, \"object\");\n const wrapper = typeof obj === \"function\" ? obj() : obj;\n if (utils.flag(this, \"poll\")) {\n throw new SyntaxError(\n `expect.poll() is not supported in combination with .rejects`\n );\n }\n if (typeof (wrapper == null ? void 0 : wrapper.then) !== \"function\") {\n throw new TypeError(\n `You must provide a Promise to expect() when using .rejects, not '${typeof wrapper}'.`\n );\n }\n const proxy = new Proxy(this, {\n get: (target, key, receiver) => {\n const result = Reflect.get(target, key, receiver);\n if (typeof result !== \"function\") {\n return result instanceof chai.Assertion ? proxy : result;\n }\n return async (...args) => {\n const promise = wrapper.then(\n (value) => {\n const _error = new AssertionError(\n `promise resolved \"${utils.inspect(\n value\n )}\" instead of rejecting`,\n {\n showDiff: true,\n expected: new Error(\"rejected promise\"),\n actual: value\n }\n );\n _error.stack = error.stack.replace(\n error.message,\n _error.message\n );\n throw _error;\n },\n (err) => {\n utils.flag(this, \"object\", err);\n return result.call(this, ...args);\n }\n );\n return recordAsyncExpect(test, promise);\n };\n }\n });\n return proxy;\n }\n );\n};\n\nfunction getMatcherState(assertion, expect) {\n const obj = assertion._obj;\n const isNot = util.flag(assertion, \"negate\");\n const promise = util.flag(assertion, \"promise\") || \"\";\n const jestUtils = {\n ...getMatcherUtils(),\n diff,\n stringify,\n iterableEquality,\n subsetEquality\n };\n const matcherState = {\n ...getState(expect),\n customTesters: getCustomEqualityTesters(),\n isNot,\n utils: jestUtils,\n promise,\n equals,\n // needed for built-in jest-snapshots, but we don't use it\n suppressedErrors: [],\n soft: util.flag(assertion, \"soft\"),\n poll: util.flag(assertion, \"poll\")\n };\n return {\n state: matcherState,\n isNot,\n obj\n };\n}\nclass JestExtendError extends Error {\n constructor(message, actual, expected) {\n super(message);\n this.actual = actual;\n this.expected = expected;\n }\n}\nfunction JestExtendPlugin(c, expect, matchers) {\n return (_, utils) => {\n Object.entries(matchers).forEach(\n ([expectAssertionName, expectAssertion]) => {\n function expectWrapper(...args) {\n const { state, isNot, obj } = getMatcherState(this, expect);\n const result = expectAssertion.call(state, obj, ...args);\n if (result && typeof result === \"object\" && result instanceof Promise) {\n return result.then(({ pass: pass2, message: message2, actual: actual2, expected: expected2 }) => {\n if (pass2 && isNot || !pass2 && !isNot) {\n throw new JestExtendError(message2(), actual2, expected2);\n }\n });\n }\n const { pass, message, actual, expected } = result;\n if (pass && isNot || !pass && !isNot) {\n throw new JestExtendError(message(), actual, expected);\n }\n }\n const softWrapper = wrapSoft(utils, expectWrapper);\n utils.addMethod(\n globalThis[JEST_MATCHERS_OBJECT].matchers,\n expectAssertionName,\n softWrapper\n );\n utils.addMethod(\n c.Assertion.prototype,\n expectAssertionName,\n softWrapper\n );\n class CustomMatcher extends AsymmetricMatcher {\n constructor(inverse = false, ...sample) {\n super(sample, inverse);\n }\n asymmetricMatch(other) {\n const { pass } = expectAssertion.call(\n this.getMatcherContext(expect),\n other,\n ...this.sample\n );\n return this.inverse ? !pass : pass;\n }\n toString() {\n return `${this.inverse ? \"not.\" : \"\"}${expectAssertionName}`;\n }\n getExpectedType() {\n return \"any\";\n }\n toAsymmetricMatcher() {\n return `${this.toString()}<${this.sample.map(String).join(\", \")}>`;\n }\n }\n const customMatcher = (...sample) => new CustomMatcher(false, ...sample);\n Object.defineProperty(expect, expectAssertionName, {\n configurable: true,\n enumerable: true,\n value: customMatcher,\n writable: true\n });\n Object.defineProperty(expect.not, expectAssertionName, {\n configurable: true,\n enumerable: true,\n value: (...sample) => new CustomMatcher(true, ...sample),\n writable: true\n });\n Object.defineProperty(\n globalThis[ASYMMETRIC_MATCHERS_OBJECT],\n expectAssertionName,\n {\n configurable: true,\n enumerable: true,\n value: customMatcher,\n writable: true\n }\n );\n }\n );\n };\n}\nconst JestExtend = (chai, utils) => {\n utils.addMethod(\n chai.expect,\n \"extend\",\n (expect, expects) => {\n use(JestExtendPlugin(chai, expect, expects));\n }\n );\n};\n\nexport { ASYMMETRIC_MATCHERS_OBJECT, Any, Anything, ArrayContaining, AsymmetricMatcher, GLOBAL_EXPECT, JEST_MATCHERS_OBJECT, JestAsymmetricMatchers, JestChaiExpect, JestExtend, MATCHERS_OBJECT, ObjectContaining, StringContaining, StringMatching, addCustomEqualityTesters, arrayBufferEquality, equals, fnNameFor, generateToBeMessage, getObjectKeys, getObjectSubset, getState, hasAsymmetric, hasProperty, isA, isAsymmetric, isImmutableUnorderedKeyed, isImmutableUnorderedSet, iterableEquality, pluralize, setState, sparseArrayEquality, subsetEquality, typeEquality };\n","import { plugins, format } from '@vitest/pretty-format';\nimport { resolve as resolve$2 } from 'pathe';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar naturalCompare$2 = {exports: {}};\n\n/*\n * @version 1.4.0\n * @date 2015-10-26\n * @stability 3 - Stable\n * @author Lauri Rooden (https://github.com/litejs/natural-compare-lite)\n * @license MIT License\n */\n\n\nvar naturalCompare = function(a, b) {\n\tvar i, codeA\n\t, codeB = 1\n\t, posA = 0\n\t, posB = 0\n\t, alphabet = String.alphabet;\n\n\tfunction getCode(str, pos, code) {\n\t\tif (code) {\n\t\t\tfor (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i;\n\t\t\treturn +str.slice(pos - 1, i)\n\t\t}\n\t\tcode = alphabet && alphabet.indexOf(str.charAt(pos));\n\t\treturn code > -1 ? code + 76 : ((code = str.charCodeAt(pos) || 0), code < 45 || code > 127) ? code\n\t\t\t: code < 46 ? 65 // -\n\t\t\t: code < 48 ? code - 1\n\t\t\t: code < 58 ? code + 18 // 0-9\n\t\t\t: code < 65 ? code - 11\n\t\t\t: code < 91 ? code + 11 // A-Z\n\t\t\t: code < 97 ? code - 37\n\t\t\t: code < 123 ? code + 5 // a-z\n\t\t\t: code - 63\n\t}\n\n\n\tif ((a+=\"\") != (b+=\"\")) for (;codeB;) {\n\t\tcodeA = getCode(a, posA++);\n\t\tcodeB = getCode(b, posB++);\n\n\t\tif (codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66) {\n\t\t\tcodeA = getCode(a, posA, posA);\n\t\t\tcodeB = getCode(b, posB, posA = i);\n\t\t\tposB = i;\n\t\t}\n\n\t\tif (codeA != codeB) return (codeA < codeB) ? -1 : 1\n\t}\n\treturn 0\n};\n\ntry {\n\tnaturalCompare$2.exports = naturalCompare;\n} catch (e) {\n\tString.naturalCompare = naturalCompare;\n}\n\nvar naturalCompareExports = naturalCompare$2.exports;\nvar naturalCompare$1 = /*@__PURE__*/getDefaultExportFromCjs(naturalCompareExports);\n\nfunction notNullish(v) {\n return v != null;\n}\nfunction isPrimitive(value) {\n return value === null || typeof value !== \"function\" && typeof value !== \"object\";\n}\nfunction isObject(item) {\n return item != null && typeof item === \"object\" && !Array.isArray(item);\n}\nfunction getCallLastIndex(code) {\n let charIndex = -1;\n let inString = null;\n let startedBracers = 0;\n let endedBracers = 0;\n let beforeChar = null;\n while (charIndex <= code.length) {\n beforeChar = code[charIndex];\n charIndex++;\n const char = code[charIndex];\n const isCharString = char === '\"' || char === \"'\" || char === \"`\";\n if (isCharString && beforeChar !== \"\\\\\") {\n if (inString === char) {\n inString = null;\n } else if (!inString) {\n inString = char;\n }\n }\n if (!inString) {\n if (char === \"(\") {\n startedBracers++;\n }\n if (char === \")\") {\n endedBracers++;\n }\n }\n if (startedBracers && endedBracers && startedBracers === endedBracers) {\n return charIndex;\n }\n }\n return null;\n}\n\nlet getPromiseValue = () => 'Promise{…}';\ntry {\n // @ts-ignore\n const { getPromiseDetails, kPending, kRejected } = process.binding('util');\n if (Array.isArray(getPromiseDetails(Promise.resolve()))) {\n getPromiseValue = (value, options) => {\n const [state, innerValue] = getPromiseDetails(value);\n if (state === kPending) {\n return 'Promise{<pending>}';\n }\n return `Promise${state === kRejected ? '!' : ''}{${options.inspect(innerValue, options)}}`;\n };\n }\n}\ncatch (notNode) {\n /* ignore */\n}\n\n/* !\n * loupe\n * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\nlet nodeInspect = false;\ntry {\n // eslint-disable-next-line global-require\n // @ts-ignore\n const nodeUtil = require('util');\n nodeInspect = nodeUtil.inspect ? nodeUtil.inspect.custom : false;\n}\ncatch (noNodeInspect) {\n nodeInspect = false;\n}\n\nconst lineSplitRE = /\\r?\\n/;\nfunction positionToOffset(source, lineNumber, columnNumber) {\n const lines = source.split(lineSplitRE);\n const nl = /\\r\\n/.test(source) ? 2 : 1;\n let start = 0;\n if (lineNumber > lines.length) {\n return source.length;\n }\n for (let i = 0; i < lineNumber - 1; i++) {\n start += lines[i].length + nl;\n }\n return start + columnNumber;\n}\nfunction offsetToLineNumber(source, offset) {\n if (offset > source.length) {\n throw new Error(\n `offset is longer than source length! offset ${offset} > length ${source.length}`\n );\n }\n const lines = source.split(lineSplitRE);\n const nl = /\\r\\n/.test(source) ? 2 : 1;\n let counted = 0;\n let line = 0;\n for (; line < lines.length; line++) {\n const lineLength = lines[line].length + nl;\n if (counted + lineLength >= offset) {\n break;\n }\n counted += lineLength;\n }\n return line + 1;\n}\n\n// Copyright 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Simon Lydell\n// License: MIT.\nvar LineTerminatorSequence;\nLineTerminatorSequence = /\\r?\\n|[\\r\\u2028\\u2029]/y;\nRegExp(LineTerminatorSequence.source);\n\n// src/index.ts\nvar reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\"\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\"\n ]\n}; new Set(reservedWords.keyword); new Set(reservedWords.strict);\n\n// src/index.ts\nvar f = {\n reset: [0, 0],\n bold: [1, 22, \"\\x1B[22m\\x1B[1m\"],\n dim: [2, 22, \"\\x1B[22m\\x1B[2m\"],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n gray: [90, 39],\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39],\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n}, h = Object.entries(f);\nfunction a(n) {\n return String(n);\n}\na.open = \"\";\na.close = \"\";\nfunction C(n = !1) {\n let e = typeof process != \"undefined\" ? process : void 0, i = (e == null ? void 0 : e.env) || {}, g = (e == null ? void 0 : e.argv) || [];\n return !(\"NO_COLOR\" in i || g.includes(\"--no-color\")) && (\"FORCE_COLOR\" in i || g.includes(\"--color\") || (e == null ? void 0 : e.platform) === \"win32\" || n && i.TERM !== \"dumb\" || \"CI\" in i) || typeof window != \"undefined\" && !!window.chrome;\n}\nfunction p(n = !1) {\n let e = C(n), i = (r, t, c, o) => {\n let l = \"\", s = 0;\n do\n l += r.substring(s, o) + c, s = o + t.length, o = r.indexOf(t, s);\n while (~o);\n return l + r.substring(s);\n }, g = (r, t, c = r) => {\n let o = (l) => {\n let s = String(l), b = s.indexOf(t, r.length);\n return ~b ? r + i(s, t, c, b) + t : r + s + t;\n };\n return o.open = r, o.close = t, o;\n }, u = {\n isColorSupported: e\n }, d = (r) => `\\x1B[${r}m`;\n for (let [r, t] of h)\n u[r] = e ? g(\n d(t[0]),\n d(t[1]),\n t[2]\n ) : a;\n return u;\n}\n\n// src/browser.ts\np(!1);\n\nconst serialize$1 = (val, config, indentation, depth, refs, printer) => {\n const name = val.getMockName();\n const nameString = name === \"vi.fn()\" ? \"\" : ` ${name}`;\n let callsString = \"\";\n if (val.mock.calls.length !== 0) {\n const indentationNext = indentation + config.indent;\n callsString = ` {${config.spacingOuter}${indentationNext}\"calls\": ${printer(\n val.mock.calls,\n config,\n indentationNext,\n depth,\n refs\n )}${config.min ? \", \" : \",\"}${config.spacingOuter}${indentationNext}\"results\": ${printer(\n val.mock.results,\n config,\n indentationNext,\n depth,\n refs\n )}${config.min ? \"\" : \",\"}${config.spacingOuter}${indentation}}`;\n }\n return `[MockFunction${nameString}]${callsString}`;\n};\nconst test = (val) => val && !!val._isMockFunction;\nconst plugin = { serialize: serialize$1, test };\n\nconst {\n DOMCollection,\n DOMElement,\n Immutable,\n ReactElement,\n ReactTestComponent,\n AsymmetricMatcher\n} = plugins;\nlet PLUGINS = [\n ReactTestComponent,\n ReactElement,\n DOMElement,\n DOMCollection,\n Immutable,\n AsymmetricMatcher,\n plugin\n];\nfunction addSerializer(plugin) {\n PLUGINS = [plugin].concat(PLUGINS);\n}\nfunction getSerializers() {\n return PLUGINS;\n}\n\nfunction testNameToKey(testName, count) {\n return `${testName} ${count}`;\n}\nfunction keyToTestName(key) {\n if (!/ \\d+$/.test(key)) {\n throw new Error(\"Snapshot keys must end with a number.\");\n }\n return key.replace(/ \\d+$/, \"\");\n}\nfunction getSnapshotData(content, options) {\n const update = options.updateSnapshot;\n const data = /* @__PURE__ */ Object.create(null);\n let snapshotContents = \"\";\n let dirty = false;\n if (content != null) {\n try {\n snapshotContents = content;\n const populate = new Function(\"exports\", snapshotContents);\n populate(data);\n } catch {\n }\n }\n const isInvalid = snapshotContents;\n if ((update === \"all\" || update === \"new\") && isInvalid) {\n dirty = true;\n }\n return { data, dirty };\n}\nfunction addExtraLineBreaks(string) {\n return string.includes(\"\\n\") ? `\n${string}\n` : string;\n}\nfunction removeExtraLineBreaks(string) {\n return string.length > 2 && string.startsWith(\"\\n\") && string.endsWith(\"\\n\") ? string.slice(1, -1) : string;\n}\nconst escapeRegex = true;\nconst printFunctionName = false;\nfunction serialize(val, indent = 2, formatOverrides = {}) {\n return normalizeNewlines(\n format(val, {\n escapeRegex,\n indent,\n plugins: getSerializers(),\n printFunctionName,\n ...formatOverrides\n })\n );\n}\nfunction escapeBacktickString(str) {\n return str.replace(/`|\\\\|\\$\\{/g, \"\\\\$&\");\n}\nfunction printBacktickString(str) {\n return `\\`${escapeBacktickString(str)}\\``;\n}\nfunction normalizeNewlines(string) {\n return string.replace(/\\r\\n|\\r/g, \"\\n\");\n}\nasync function saveSnapshotFile(environment, snapshotData, snapshotPath) {\n const snapshots = Object.keys(snapshotData).sort(naturalCompare$1).map(\n (key) => `exports[${printBacktickString(key)}] = ${printBacktickString(\n normalizeNewlines(snapshotData[key])\n )};`\n );\n const content = `${environment.getHeader()}\n\n${snapshots.join(\"\\n\\n\")}\n`;\n const oldContent = await environment.readSnapshotFile(snapshotPath);\n const skipWriting = oldContent != null && oldContent === content;\n if (skipWriting) {\n return;\n }\n await environment.saveSnapshotFile(snapshotPath, content);\n}\nfunction prepareExpected(expected) {\n function findStartIndent() {\n var _a, _b;\n const matchObject = /^( +)\\}\\s+$/m.exec(expected || \"\");\n const objectIndent = (_a = matchObject == null ? void 0 : matchObject[1]) == null ? void 0 : _a.length;\n if (objectIndent) {\n return objectIndent;\n }\n const matchText = /^\\n( +)\"/.exec(expected || \"\");\n return ((_b = matchText == null ? void 0 : matchText[1]) == null ? void 0 : _b.length) || 0;\n }\n const startIndent = findStartIndent();\n let expectedTrimmed = expected == null ? void 0 : expected.trim();\n if (startIndent) {\n expectedTrimmed = expectedTrimmed == null ? void 0 : expectedTrimmed.replace(new RegExp(`^${\" \".repeat(startIndent)}`, \"gm\"), \"\").replace(/ +\\}$/, \"}\");\n }\n return expectedTrimmed;\n}\nfunction deepMergeArray(target = [], source = []) {\n const mergedOutput = Array.from(target);\n source.forEach((sourceElement, index) => {\n const targetElement = mergedOutput[index];\n if (Array.isArray(target[index])) {\n mergedOutput[index] = deepMergeArray(target[index], sourceElement);\n } else if (isObject(targetElement)) {\n mergedOutput[index] = deepMergeSnapshot(target[index], sourceElement);\n } else {\n mergedOutput[index] = sourceElement;\n }\n });\n return mergedOutput;\n}\nfunction deepMergeSnapshot(target, source) {\n if (isObject(target) && isObject(source)) {\n const mergedOutput = { ...target };\n Object.keys(source).forEach((key) => {\n if (isObject(source[key]) && !source[key].$$typeof) {\n if (!(key in target)) {\n Object.assign(mergedOutput, { [key]: source[key] });\n } else {\n mergedOutput[key] = deepMergeSnapshot(target[key], source[key]);\n }\n } else if (Array.isArray(source[key])) {\n mergedOutput[key] = deepMergeArray(target[key], source[key]);\n } else {\n Object.assign(mergedOutput, { [key]: source[key] });\n }\n });\n return mergedOutput;\n } else if (Array.isArray(target) && Array.isArray(source)) {\n return deepMergeArray(target, source);\n }\n return target;\n}\n\nconst comma = ','.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decode(mappings) {\n const state = new Int32Array(5);\n const decoded = [];\n let index = 0;\n do {\n const semi = indexOf(mappings, index);\n const line = [];\n let sorted = true;\n let lastCol = 0;\n state[0] = 0;\n for (let i = index; i < semi; i++) {\n let seg;\n i = decodeInteger(mappings, i, state, 0); // genColumn\n const col = state[0];\n if (col < lastCol)\n sorted = false;\n lastCol = col;\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 1); // sourcesIndex\n i = decodeInteger(mappings, i, state, 2); // sourceLine\n i = decodeInteger(mappings, i, state, 3); // sourceColumn\n if (hasMoreVlq(mappings, i, semi)) {\n i = decodeInteger(mappings, i, state, 4); // namesIndex\n seg = [col, state[1], state[2], state[3], state[4]];\n }\n else {\n seg = [col, state[1], state[2], state[3]];\n }\n }\n else {\n seg = [col];\n }\n line.push(seg);\n }\n if (!sorted)\n sort(line);\n decoded.push(line);\n index = semi + 1;\n } while (index <= mappings.length);\n return decoded;\n}\nfunction indexOf(mappings, index) {\n const idx = mappings.indexOf(';', index);\n return idx === -1 ? mappings.length : idx;\n}\nfunction decodeInteger(mappings, pos, state, j) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = mappings.charCodeAt(pos++);\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n state[j] += value;\n return pos;\n}\nfunction hasMoreVlq(mappings, i, length) {\n if (i >= length)\n return false;\n return mappings.charCodeAt(i) !== comma;\n}\nfunction sort(line) {\n line.sort(sortComparator$1);\n}\nfunction sortComparator$1(a, b) {\n return a[0] - b[0];\n}\n\n// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\nvar UrlType;\n(function (UrlType) {\n UrlType[UrlType[\"Empty\"] = 1] = \"Empty\";\n UrlType[UrlType[\"Hash\"] = 2] = \"Hash\";\n UrlType[UrlType[\"Query\"] = 3] = \"Query\";\n UrlType[UrlType[\"RelativePath\"] = 4] = \"RelativePath\";\n UrlType[UrlType[\"AbsolutePath\"] = 5] = \"AbsolutePath\";\n UrlType[UrlType[\"SchemeRelative\"] = 6] = \"SchemeRelative\";\n UrlType[UrlType[\"Absolute\"] = 7] = \"Absolute\";\n})(UrlType || (UrlType = {}));\nfunction isAbsoluteUrl(input) {\n return schemeRegex.test(input);\n}\nfunction isSchemeRelativeUrl(input) {\n return input.startsWith('//');\n}\nfunction isAbsolutePath(input) {\n return input.startsWith('/');\n}\nfunction isFileUrl(input) {\n return input.startsWith('file:');\n}\nfunction isRelative(input) {\n return /^[.?#]/.test(input);\n}\nfunction parseAbsoluteUrl(input) {\n const match = urlRegex.exec(input);\n return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || '');\n}\nfunction parseFileUrl(input) {\n const match = fileRegex.exec(input);\n const path = match[2];\n return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || '');\n}\nfunction makeUrl(scheme, user, host, port, path, query, hash) {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\nfunction parseUrl(input) {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n if (isFileUrl(input))\n return parseFileUrl(input);\n if (isAbsoluteUrl(input))\n return parseAbsoluteUrl(input);\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\nfunction stripPathFilename(path) {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..'))\n return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\nfunction mergePaths(url, base) {\n normalizePath(base, base.type);\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n }\n else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url, type) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n // A current directory, which we can always drop.\n if (piece === '.')\n continue;\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n }\n else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nfunction resolve$1(input, base) {\n if (!input && !base)\n return '';\n const url = parseUrl(input);\n let inputType = url.type;\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType)\n inputType = baseType;\n }\n normalizePath(url, inputType);\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n if (!path)\n return queryHash || '.';\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n return path + queryHash;\n }\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n\nfunction resolve(input, base) {\n // The base is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n if (base && !base.endsWith('/'))\n base += '/';\n return resolve$1(input, base);\n}\n\n/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nfunction stripFilename(path) {\n if (!path)\n return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nconst COLUMN = 0;\nconst SOURCES_INDEX = 1;\nconst SOURCE_LINE = 2;\nconst SOURCE_COLUMN = 3;\nconst NAMES_INDEX = 4;\n\nfunction maybeSort(mappings, owned) {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length)\n return mappings;\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned)\n mappings = mappings.slice();\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\nfunction nextUnsortedSegmentLine(mappings, start) {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i]))\n return i;\n }\n return mappings.length;\n}\nfunction isSorted(line) {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\nfunction sortSegments(line, owned) {\n if (!owned)\n line = line.slice();\n return line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[COLUMN] - b[COLUMN];\n}\n\nlet found = false;\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nfunction binarySearch(haystack, needle, low, high) {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n if (cmp === 0) {\n found = true;\n return mid;\n }\n if (cmp < 0) {\n low = mid + 1;\n }\n else {\n high = mid - 1;\n }\n }\n found = false;\n return low - 1;\n}\nfunction upperBound(haystack, needle, index) {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction lowerBound(haystack, needle, index) {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle)\n break;\n }\n return index;\n}\nfunction memoizedState() {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nfunction memoizedBinarySearch(haystack, needle, state, key) {\n const { lastKey, lastNeedle, lastIndex } = state;\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n }\n else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\nconst LEAST_UPPER_BOUND = -1;\nconst GREATEST_LOWER_BOUND = 1;\nclass TraceMap {\n constructor(map, mapUrl) {\n const isString = typeof map === 'string';\n if (!isString && map._decodedMemo)\n return map;\n const parsed = (isString ? JSON.parse(map) : map);\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names || [];\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || undefined;\n const from = resolve(sourceRoot || '', stripFilename(mapUrl));\n this.resolvedSources = sources.map((s) => resolve(s || '', from));\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n }\n else {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n }\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n }\n}\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map) {\n return map;\n}\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nfunction decodedMappings(map) {\n var _a;\n return ((_a = cast(map))._decoded || (_a._decoded = decode(cast(map)._encoded)));\n}\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nfunction originalPositionFor(map, needle) {\n let { line, column, bias } = needle;\n line--;\n if (line < 0)\n throw new Error(LINE_GTR_ZERO);\n if (column < 0)\n throw new Error(COL_GTR_EQ_ZERO);\n const decoded = decodedMappings(map);\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length)\n return OMapping(null, null, null, null);\n const segments = decoded[line];\n const index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);\n if (index === -1)\n return OMapping(null, null, null, null);\n const segment = segments[index];\n if (segment.length === 1)\n return OMapping(null, null, null, null);\n const { names, resolvedSources } = map;\n return 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 return { source, line, column, name };\n}\nfunction traceSegmentInternal(segments, memo, line, column, bias) {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (found) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n }\n else if (bias === LEAST_UPPER_BOUND)\n index++;\n if (index === -1 || index === segments.length)\n return -1;\n return index;\n}\n\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(?:\\S:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(?:eval@)?(?:\\[native code\\])?$/;\nconst stackIgnorePatterns = [\n \"node:internal\",\n /\\/packages\\/\\w+\\/dist\\//,\n /\\/@vitest\\/\\w+\\/dist\\//,\n \"/vitest/dist/\",\n \"/vitest/src/\",\n \"/vite-node/dist/\",\n \"/vite-node/src/\",\n \"/node_modules/chai/\",\n \"/node_modules/tinypool/\",\n \"/node_modules/tinyspy/\",\n // browser related deps\n \"/deps/chunk-\",\n \"/deps/@vitest\",\n \"/deps/loupe\",\n \"/deps/chai\",\n /node:\\w+/,\n /__vitest_test__/,\n /__vitest_browser__/,\n /\\/deps\\/vitest_/\n];\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\")) {\n return [urlLike];\n }\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/^\\(|\\)$/g, \"\"));\n if (!parts) {\n return [urlLike];\n }\n let url = parts[1];\n if (url.startsWith(\"async \")) {\n url = url.slice(6);\n }\n if (url.startsWith(\"http:\") || url.startsWith(\"https:\")) {\n const urlObj = new URL(url);\n url = urlObj.pathname;\n }\n if (url.startsWith(\"/@fs/\")) {\n const isWindows = /^\\/@fs\\/[a-zA-Z]:\\//.test(url);\n url = url.slice(isWindows ? 5 : 4);\n }\n return [url, parts[2] || void 0, parts[3] || void 0];\n}\nfunction parseSingleFFOrSafariStack(raw) {\n let line = raw.trim();\n if (SAFARI_NATIVE_CODE_REGEXP.test(line)) {\n return null;\n }\n if (line.includes(\" > eval\")) {\n line = line.replace(\n / line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,\n \":$1\"\n );\n }\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return null;\n }\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(@)/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : void 0;\n const [url, lineNumber, columnNumber] = extractLocation(\n line.replace(functionNameRegex, \"\")\n );\n if (!url || !lineNumber || !columnNumber) {\n return null;\n }\n return {\n file: url,\n method: functionName || \"\",\n line: Number.parseInt(lineNumber),\n column: Number.parseInt(columnNumber)\n };\n}\nfunction parseSingleV8Stack(raw) {\n let line = raw.trim();\n if (!CHROME_IE_STACK_REGEXP.test(line)) {\n return null;\n }\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const [url, lineNumber, columnNumber] = extractLocation(\n location ? location[1] : sanitizedLine\n );\n let method = location && sanitizedLine || \"\";\n let file = url && [\"eval\", \"<anonymous>\"].includes(url) ? void 0 : url;\n if (!file || !lineNumber || !columnNumber) {\n return null;\n }\n if (method.startsWith(\"async \")) {\n method = method.slice(6);\n }\n if (file.startsWith(\"file://\")) {\n file = file.slice(7);\n }\n file = resolve$2(file);\n if (method) {\n method = method.replace(/__vite_ssr_import_\\d+__\\./g, \"\");\n }\n return {\n method,\n file,\n line: Number.parseInt(lineNumber),\n column: Number.parseInt(columnNumber)\n };\n}\nfunction parseStacktrace(stack, options = {}) {\n const { ignoreStackEntries = stackIgnorePatterns } = options;\n let stacks = !CHROME_IE_STACK_REGEXP.test(stack) ? parseFFOrSafariStackTrace(stack) : parseV8Stacktrace(stack);\n if (ignoreStackEntries.length) {\n stacks = stacks.filter(\n (stack2) => !ignoreStackEntries.some((p) => stack2.file.match(p))\n );\n }\n return stacks.map((stack2) => {\n var _a;\n if (options.getFileName) {\n stack2.file = options.getFileName(stack2.file);\n }\n const map = (_a = options.getSourceMap) == null ? void 0 : _a.call(options, stack2.file);\n if (!map || typeof map !== \"object\" || !map.version) {\n return stack2;\n }\n const traceMap = new TraceMap(map);\n const { line, column } = originalPositionFor(traceMap, stack2);\n if (line != null && column != null) {\n return { ...stack2, line, column };\n }\n return stack2;\n });\n}\nfunction parseFFOrSafariStackTrace(stack) {\n return stack.split(\"\\n\").map((line) => parseSingleFFOrSafariStack(line)).filter(notNullish);\n}\nfunction parseV8Stacktrace(stack) {\n return stack.split(\"\\n\").map((line) => parseSingleV8Stack(line)).filter(notNullish);\n}\nfunction parseErrorStacktrace(e, options = {}) {\n if (!e || isPrimitive(e)) {\n return [];\n }\n if (e.stacks) {\n return e.stacks;\n }\n const stackStr = e.stack || e.stackStr || \"\";\n let stackFrames = parseStacktrace(stackStr, options);\n if (options.frameFilter) {\n stackFrames = stackFrames.filter(\n (f) => options.frameFilter(e, f) !== false\n );\n }\n e.stacks = stackFrames;\n return stackFrames;\n}\n\nasync function saveInlineSnapshots(environment, snapshots) {\n const MagicString = (await import('magic-string')).default;\n const files = new Set(snapshots.map((i) => i.file));\n await Promise.all(\n Array.from(files).map(async (file) => {\n const snaps = snapshots.filter((i) => i.file === file);\n const code = await environment.readSnapshotFile(file);\n const s = new MagicString(code);\n for (const snap of snaps) {\n const index = positionToOffset(code, snap.line, snap.column);\n replaceInlineSnap(code, s, index, snap.snapshot);\n }\n const transformed = s.toString();\n if (transformed !== code) {\n await environment.saveSnapshotFile(file, transformed);\n }\n })\n );\n}\nconst startObjectRegex = /(?:toMatchInlineSnapshot|toThrowErrorMatchingInlineSnapshot)\\s*\\(\\s*(?:\\/\\*[\\s\\S]*\\*\\/\\s*|\\/\\/.*(?:[\\n\\r\\u2028\\u2029]\\s*|[\\t\\v\\f \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000\\uFEFF]))*\\{/;\nfunction replaceObjectSnap(code, s, index, newSnap) {\n let _code = code.slice(index);\n const startMatch = startObjectRegex.exec(_code);\n if (!startMatch) {\n return false;\n }\n _code = _code.slice(startMatch.index);\n let callEnd = getCallLastIndex(_code);\n if (callEnd === null) {\n return false;\n }\n callEnd += index + startMatch.index;\n const shapeStart = index + startMatch.index + startMatch[0].length;\n const shapeEnd = getObjectShapeEndIndex(code, shapeStart);\n const snap = `, ${prepareSnapString(newSnap, code, index)}`;\n if (shapeEnd === callEnd) {\n s.appendLeft(callEnd, snap);\n } else {\n s.overwrite(shapeEnd, callEnd, snap);\n }\n return true;\n}\nfunction getObjectShapeEndIndex(code, index) {\n let startBraces = 1;\n let endBraces = 0;\n while (startBraces !== endBraces && index < code.length) {\n const s = code[index++];\n if (s === \"{\") {\n startBraces++;\n } else if (s === \"}\") {\n endBraces++;\n }\n }\n return index;\n}\nfunction prepareSnapString(snap, source, index) {\n const lineNumber = offsetToLineNumber(source, index);\n const line = source.split(lineSplitRE)[lineNumber - 1];\n const indent = line.match(/^\\s*/)[0] || \"\";\n const indentNext = indent.includes(\"\t\") ? `${indent}\t` : `${indent} `;\n const lines = snap.trim().replace(/\\\\/g, \"\\\\\\\\\").split(/\\n/g);\n const isOneline = lines.length <= 1;\n const quote = \"`\";\n if (isOneline) {\n return `${quote}${lines.join(\"\\n\").replace(/`/g, \"\\\\`\").replace(/\\$\\{/g, \"\\\\${\")}${quote}`;\n }\n return `${quote}\n${lines.map((i) => i ? indentNext + i : \"\").join(\"\\n\").replace(/`/g, \"\\\\`\").replace(/\\$\\{/g, \"\\\\${\")}\n${indent}${quote}`;\n}\nconst toMatchInlineName = \"toMatchInlineSnapshot\";\nconst toThrowErrorMatchingInlineName = \"toThrowErrorMatchingInlineSnapshot\";\nfunction getCodeStartingAtIndex(code, index) {\n const indexInline = index - toMatchInlineName.length;\n if (code.slice(indexInline, index) === toMatchInlineName) {\n return {\n code: code.slice(indexInline),\n index: indexInline\n };\n }\n const indexThrowInline = index - toThrowErrorMatchingInlineName.length;\n if (code.slice(index - indexThrowInline, index) === toThrowErrorMatchingInlineName) {\n return {\n code: code.slice(index - indexThrowInline),\n index: index - indexThrowInline\n };\n }\n return {\n code: code.slice(index),\n index\n };\n}\nconst startRegex = /(?:toMatchInlineSnapshot|toThrowErrorMatchingInlineSnapshot)\\s*\\(\\s*(?:\\/\\*[\\s\\S]*\\*\\/\\s*|\\/\\/.*(?:[\\n\\r\\u2028\\u2029]\\s*|[\\t\\v\\f \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000\\uFEFF]))*[\\w$]*(['\"`)])/;\nfunction replaceInlineSnap(code, s, currentIndex, newSnap) {\n const { code: codeStartingAtIndex, index } = getCodeStartingAtIndex(code, currentIndex);\n const startMatch = startRegex.exec(codeStartingAtIndex);\n const firstKeywordMatch = /toMatchInlineSnapshot|toThrowErrorMatchingInlineSnapshot/.exec(\n codeStartingAtIndex\n );\n if (!startMatch || startMatch.index !== (firstKeywordMatch == null ? void 0 : firstKeywordMatch.index)) {\n return replaceObjectSnap(code, s, index, newSnap);\n }\n const quote = startMatch[1];\n const startIndex = index + startMatch.index + startMatch[0].length;\n const snapString = prepareSnapString(newSnap, code, index);\n if (quote === \")\") {\n s.appendRight(startIndex - 1, snapString);\n return true;\n }\n const quoteEndRE = new RegExp(`(?:^|[^\\\\\\\\])${quote}`);\n const endMatch = quoteEndRE.exec(code.slice(startIndex));\n if (!endMatch) {\n return false;\n }\n const endIndex = startIndex + endMatch.index + endMatch[0].length;\n s.overwrite(startIndex - 1, endIndex, snapString);\n return true;\n}\nconst INDENTATION_REGEX = /^([^\\S\\n]*)\\S/m;\nfunction stripSnapshotIndentation(inlineSnapshot) {\n const match = inlineSnapshot.match(INDENTATION_REGEX);\n if (!match || !match[1]) {\n return inlineSnapshot;\n }\n const indentation = match[1];\n const lines = inlineSnapshot.split(/\\n/g);\n if (lines.length <= 2) {\n return inlineSnapshot;\n }\n if (lines[0].trim() !== \"\" || lines[lines.length - 1].trim() !== \"\") {\n return inlineSnapshot;\n }\n for (let i = 1; i < lines.length - 1; i++) {\n if (lines[i] !== \"\") {\n if (lines[i].indexOf(indentation) !== 0) {\n return inlineSnapshot;\n }\n lines[i] = lines[i].substring(indentation.length);\n }\n }\n lines[lines.length - 1] = \"\";\n inlineSnapshot = lines.join(\"\\n\");\n return inlineSnapshot;\n}\n\nasync function saveRawSnapshots(environment, snapshots) {\n await Promise.all(\n snapshots.map(async (snap) => {\n if (!snap.readonly) {\n await environment.saveSnapshotFile(snap.file, snap.snapshot);\n }\n })\n );\n}\n\nclass SnapshotState {\n constructor(testFilePath, snapshotPath, snapshotContent, options) {\n this.testFilePath = testFilePath;\n this.snapshotPath = snapshotPath;\n const { data, dirty } = getSnapshotData(snapshotContent, options);\n this._fileExists = snapshotContent != null;\n this._initialData = data;\n this._snapshotData = data;\n this._dirty = dirty;\n this._inlineSnapshots = [];\n this._rawSnapshots = [];\n this._uncheckedKeys = new Set(Object.keys(this._snapshotData));\n this._counters = /* @__PURE__ */ new Map();\n this.expand = options.expand || false;\n this.added = 0;\n this.matched = 0;\n this.unmatched = 0;\n this._updateSnapshot = options.updateSnapshot;\n this.updated = 0;\n this._snapshotFormat = {\n printBasicPrototype: false,\n escapeString: false,\n ...options.snapshotFormat\n };\n this._environment = options.snapshotEnvironment;\n }\n _counters;\n _dirty;\n _updateSnapshot;\n _snapshotData;\n _initialData;\n _inlineSnapshots;\n _rawSnapshots;\n _uncheckedKeys;\n _snapshotFormat;\n _environment;\n _fileExists;\n added;\n expand;\n matched;\n unmatched;\n updated;\n static async create(testFilePath, options) {\n const snapshotPath = await options.snapshotEnvironment.resolvePath(\n testFilePath\n );\n const content = await options.snapshotEnvironment.readSnapshotFile(\n snapshotPath\n );\n return new SnapshotState(testFilePath, snapshotPath, content, options);\n }\n get environment() {\n return this._environment;\n }\n markSnapshotsAsCheckedForTest(testName) {\n this._uncheckedKeys.forEach((uncheckedKey) => {\n if (keyToTestName(uncheckedKey) === testName) {\n this._uncheckedKeys.delete(uncheckedKey);\n }\n });\n }\n _inferInlineSnapshotStack(stacks) {\n const promiseIndex = stacks.findIndex(\n (i) => i.method.match(/__VITEST_(RESOLVES|REJECTS)__/)\n );\n if (promiseIndex !== -1) {\n return stacks[promiseIndex + 3];\n }\n const stackIndex = stacks.findIndex(\n (i) => i.method.includes(\"__INLINE_SNAPSHOT__\")\n );\n return stackIndex !== -1 ? stacks[stackIndex + 2] : null;\n }\n _addSnapshot(key, receivedSerialized, options) {\n var _a, _b;\n this._dirty = true;\n if (options.isInline) {\n const error = options.error || new Error(\"snapshot\");\n const stacks = parseErrorStacktrace(\n error,\n { ignoreStackEntries: [] }\n );\n const _stack = this._inferInlineSnapshotStack(stacks);\n if (!_stack) {\n throw new Error(\n `@vitest/snapshot: Couldn't infer stack frame for inline snapshot.\n${JSON.stringify(\n stacks\n )}`\n );\n }\n const stack = ((_b = (_a = this.environment).processStackTrace) == null ? void 0 : _b.call(_a, _stack)) || _stack;\n stack.column--;\n this._inlineSnapshots.push({\n snapshot: receivedSerialized,\n ...stack\n });\n } else if (options.rawSnapshot) {\n this._rawSnapshots.push({\n ...options.rawSnapshot,\n snapshot: receivedSerialized\n });\n } else {\n this._snapshotData[key] = receivedSerialized;\n }\n }\n clear() {\n this._snapshotData = this._initialData;\n this._counters = /* @__PURE__ */ new Map();\n this.added = 0;\n this.matched = 0;\n this.unmatched = 0;\n this.updated = 0;\n this._dirty = false;\n }\n async save() {\n const hasExternalSnapshots = Object.keys(this._snapshotData).length;\n const hasInlineSnapshots = this._inlineSnapshots.length;\n const hasRawSnapshots = this._rawSnapshots.length;\n const isEmpty = !hasExternalSnapshots && !hasInlineSnapshots && !hasRawSnapshots;\n const status = {\n deleted: false,\n saved: false\n };\n if ((this._dirty || this._uncheckedKeys.size) && !isEmpty) {\n if (hasExternalSnapshots) {\n await saveSnapshotFile(\n this._environment,\n this._snapshotData,\n this.snapshotPath\n );\n this._fileExists = true;\n }\n if (hasInlineSnapshots) {\n await saveInlineSnapshots(this._environment, this._inlineSnapshots);\n }\n if (hasRawSnapshots) {\n await saveRawSnapshots(this._environment, this._rawSnapshots);\n }\n status.saved = true;\n } else if (!hasExternalSnapshots && this._fileExists) {\n if (this._updateSnapshot === \"all\") {\n await this._environment.removeSnapshotFile(this.snapshotPath);\n this._fileExists = false;\n }\n status.deleted = true;\n }\n return status;\n }\n getUncheckedCount() {\n return this._uncheckedKeys.size || 0;\n }\n getUncheckedKeys() {\n return Array.from(this._uncheckedKeys);\n }\n removeUncheckedKeys() {\n if (this._updateSnapshot === \"all\" && this._uncheckedKeys.size) {\n this._dirty = true;\n this._uncheckedKeys.forEach((key) => delete this._snapshotData[key]);\n this._uncheckedKeys.clear();\n }\n }\n match({\n testName,\n received,\n key,\n inlineSnapshot,\n isInline,\n error,\n rawSnapshot\n }) {\n this._counters.set(testName, (this._counters.get(testName) || 0) + 1);\n const count = Number(this._counters.get(testName));\n if (!key) {\n key = testNameToKey(testName, count);\n }\n if (!(isInline && this._snapshotData[key] !== void 0)) {\n this._uncheckedKeys.delete(key);\n }\n let receivedSerialized = rawSnapshot && typeof received === \"string\" ? received : serialize(received, void 0, this._snapshotFormat);\n if (!rawSnapshot) {\n receivedSerialized = addExtraLineBreaks(receivedSerialized);\n }\n if (rawSnapshot) {\n if (rawSnapshot.content && rawSnapshot.content.match(/\\r\\n/) && !receivedSerialized.match(/\\r\\n/)) {\n rawSnapshot.content = normalizeNewlines(rawSnapshot.content);\n }\n }\n const expected = isInline ? inlineSnapshot : rawSnapshot ? rawSnapshot.content : this._snapshotData[key];\n const expectedTrimmed = prepareExpected(expected);\n const pass = expectedTrimmed === prepareExpected(receivedSerialized);\n const hasSnapshot = expected !== void 0;\n const snapshotIsPersisted = isInline || this._fileExists || rawSnapshot && rawSnapshot.content != null;\n if (pass && !isInline && !rawSnapshot) {\n this._snapshotData[key] = receivedSerialized;\n }\n if (hasSnapshot && this._updateSnapshot === \"all\" || (!hasSnapshot || !snapshotIsPersisted) && (this._updateSnapshot === \"new\" || this._updateSnapshot === \"all\")) {\n if (this._updateSnapshot === \"all\") {\n if (!pass) {\n if (hasSnapshot) {\n this.updated++;\n } else {\n this.added++;\n }\n this._addSnapshot(key, receivedSerialized, {\n error,\n isInline,\n rawSnapshot\n });\n } else {\n this.matched++;\n }\n } else {\n this._addSnapshot(key, receivedSerialized, {\n error,\n isInline,\n rawSnapshot\n });\n this.added++;\n }\n return {\n actual: \"\",\n count,\n expected: \"\",\n key,\n pass: true\n };\n } else {\n if (!pass) {\n this.unmatched++;\n return {\n actual: removeExtraLineBreaks(receivedSerialized),\n count,\n expected: expectedTrimmed !== void 0 ? removeExtraLineBreaks(expectedTrimmed) : void 0,\n key,\n pass: false\n };\n } else {\n this.matched++;\n return {\n actual: \"\",\n count,\n expected: \"\",\n key,\n pass: true\n };\n }\n }\n }\n async pack() {\n const snapshot = {\n filepath: this.testFilePath,\n added: 0,\n fileDeleted: false,\n matched: 0,\n unchecked: 0,\n uncheckedKeys: [],\n unmatched: 0,\n updated: 0\n };\n const uncheckedCount = this.getUncheckedCount();\n const uncheckedKeys = this.getUncheckedKeys();\n if (uncheckedCount) {\n this.removeUncheckedKeys();\n }\n const status = await this.save();\n snapshot.fileDeleted = status.deleted;\n snapshot.added = this.added;\n snapshot.matched = this.matched;\n snapshot.unmatched = this.unmatched;\n snapshot.updated = this.updated;\n snapshot.unchecked = !status.deleted ? uncheckedCount : 0;\n snapshot.uncheckedKeys = Array.from(uncheckedKeys);\n return snapshot;\n }\n}\n\nfunction createMismatchError(message, expand, actual, expected) {\n const error = new Error(message);\n Object.defineProperty(error, \"actual\", {\n value: actual,\n enumerable: true,\n configurable: true,\n writable: true\n });\n Object.defineProperty(error, \"expected\", {\n value: expected,\n enumerable: true,\n configurable: true,\n writable: true\n });\n Object.defineProperty(error, \"diffOptions\", { value: { expand } });\n return error;\n}\nclass SnapshotClient {\n constructor(options = {}) {\n this.options = options;\n }\n filepath;\n name;\n snapshotState;\n snapshotStateMap = /* @__PURE__ */ new Map();\n async startCurrentRun(filepath, name, options) {\n var _a;\n this.filepath = filepath;\n this.name = name;\n if (((_a = this.snapshotState) == null ? void 0 : _a.testFilePath) !== filepath) {\n await this.finishCurrentRun();\n if (!this.getSnapshotState(filepath)) {\n this.snapshotStateMap.set(\n filepath,\n await SnapshotState.create(filepath, options)\n );\n }\n this.snapshotState = this.getSnapshotState(filepath);\n }\n }\n getSnapshotState(filepath) {\n return this.snapshotStateMap.get(filepath);\n }\n clearTest() {\n this.filepath = void 0;\n this.name = void 0;\n }\n skipTestSnapshots(name) {\n var _a;\n (_a = this.snapshotState) == null ? void 0 : _a.markSnapshotsAsCheckedForTest(name);\n }\n assert(options) {\n var _a, _b, _c, _d;\n const {\n filepath = this.filepath,\n name = this.name,\n message,\n isInline = false,\n properties,\n inlineSnapshot,\n error,\n errorMessage,\n rawSnapshot\n } = options;\n let { received } = options;\n if (!filepath) {\n throw new Error(\"Snapshot cannot be used outside of test\");\n }\n if (typeof properties === \"object\") {\n if (typeof received !== \"object\" || !received) {\n throw new Error(\n \"Received value must be an object when the matcher has properties\"\n );\n }\n try {\n const pass2 = ((_b = (_a = this.options).isEqual) == null ? void 0 : _b.call(_a, received, properties)) ?? false;\n if (!pass2) {\n throw createMismatchError(\n \"Snapshot properties mismatched\",\n (_c = this.snapshotState) == null ? void 0 : _c.expand,\n received,\n properties\n );\n } else {\n received = deepMergeSnapshot(received, properties);\n }\n } catch (err) {\n err.message = errorMessage || \"Snapshot mismatched\";\n throw err;\n }\n }\n const testName = [name, ...message ? [message] : []].join(\" > \");\n const snapshotState = this.getSnapshotState(filepath);\n const { actual, expected, key, pass } = snapshotState.match({\n testName,\n received,\n isInline,\n error,\n inlineSnapshot,\n rawSnapshot\n });\n if (!pass) {\n throw createMismatchError(\n `Snapshot \\`${key || \"unknown\"}\\` mismatched`,\n (_d = this.snapshotState) == null ? void 0 : _d.expand,\n actual == null ? void 0 : actual.trim(),\n expected == null ? void 0 : expected.trim()\n );\n }\n }\n async assertRaw(options) {\n if (!options.rawSnapshot) {\n throw new Error(\"Raw snapshot is required\");\n }\n const { filepath = this.filepath, rawSnapshot } = options;\n if (rawSnapshot.content == null) {\n if (!filepath) {\n throw new Error(\"Snapshot cannot be used outside of test\");\n }\n const snapshotState = this.getSnapshotState(filepath);\n options.filepath || (options.filepath = filepath);\n rawSnapshot.file = await snapshotState.environment.resolveRawPath(\n filepath,\n rawSnapshot.file\n );\n rawSnapshot.content = await snapshotState.environment.readSnapshotFile(rawSnapshot.file) ?? void 0;\n }\n return this.assert(options);\n }\n async finishCurrentRun() {\n if (!this.snapshotState) {\n return null;\n }\n const result = await this.snapshotState.pack();\n this.snapshotState = void 0;\n return result;\n }\n clear() {\n this.snapshotStateMap.clear();\n }\n}\n\nexport { SnapshotClient, SnapshotState, addSerializer, getSerializers, stripSnapshotIndentation };\n","import { getNames, getTests } from '@vitest/runner/utils';\nimport '@vitest/utils';\n\nfunction hasFailedSnapshot(suite) {\n return getTests(suite).some((s) => {\n var _a, _b;\n return (_b = (_a = s.result) == null ? void 0 : _a.errors) == null ? void 0 : _b.some(\n (e) => typeof (e == null ? void 0 : e.message) === \"string\" && e.message.match(/Snapshot .* mismatched/)\n );\n });\n}\nfunction getFullName(task, separator = \" > \") {\n return getNames(task).join(separator);\n}\nfunction getTestName(task, separator = \" > \") {\n return getNames(task).slice(1).join(separator);\n}\n\nexport { getFullName as a, getTestName as g, hasFailedSnapshot as h };\n","import '@vitest/utils';\n\nfunction collectOwnProperties(obj, collector) {\n const collect = typeof collector === \"function\" ? collector : (key) => collector.add(key);\n Object.getOwnPropertyNames(obj).forEach(collect);\n Object.getOwnPropertySymbols(obj).forEach(collect);\n}\nfunction groupBy(collection, iteratee) {\n return collection.reduce((acc, item) => {\n const key = iteratee(item);\n acc[key] || (acc[key] = []);\n acc[key].push(item);\n return acc;\n }, {});\n}\nfunction isPrimitive(value) {\n return value === null || typeof value !== \"function\" && typeof value !== \"object\";\n}\nfunction getAllMockableProperties(obj, isModule, constructors) {\n const { Map, Object: Object2, Function, RegExp: RegExp2, Array: Array2 } = constructors;\n const allProps = new Map();\n let curr = obj;\n do {\n if (curr === Object2.prototype || curr === Function.prototype || curr === RegExp2.prototype) {\n break;\n }\n collectOwnProperties(curr, (key) => {\n const descriptor = Object2.getOwnPropertyDescriptor(curr, key);\n if (descriptor) {\n allProps.set(key, { key, descriptor });\n }\n });\n } while (curr = Object2.getPrototypeOf(curr));\n if (isModule && !allProps.has(\"default\") && \"default\" in obj) {\n const descriptor = Object2.getOwnPropertyDescriptor(obj, \"default\");\n if (descriptor) {\n allProps.set(\"default\", { key: \"default\", descriptor });\n }\n }\n return Array2.from(allProps.values());\n}\nfunction slash(str) {\n return str.replace(/\\\\/g, \"/\");\n}\nfunction noop() {\n}\nfunction toArray(array) {\n if (array === null || array === void 0) {\n array = [];\n }\n if (Array.isArray(array)) {\n return array;\n }\n return [array];\n}\nfunction toString(v) {\n return Object.prototype.toString.call(v);\n}\nfunction isPlainObject(val) {\n return toString(val) === \"[object Object]\" && (!val.constructor || val.constructor.name === \"Object\");\n}\nfunction deepMerge(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n if (source === void 0) {\n return target;\n }\n if (isMergeableObject(target) && isMergeableObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isMergeableObject(source[key])) {\n if (!target[key]) {\n target[key] = {};\n }\n deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n });\n }\n return deepMerge(target, ...sources);\n}\nfunction isMergeableObject(item) {\n return isPlainObject(item) && !Array.isArray(item);\n}\nfunction stdout() {\n return console._stdout || process.stdout;\n}\nclass AggregateErrorPonyfill extends Error {\n errors;\n constructor(errors, message = \"\") {\n super(message);\n this.errors = [...errors];\n }\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 escapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction wildcardPatternToRegExp(pattern) {\n return new RegExp(\n `^${pattern.split(\"*\").map(escapeRegExp).join(\".*\")}$`,\n \"i\"\n );\n}\nconst urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nfunction nanoid(size = 21) {\n let id = \"\";\n let i = size;\n while (i--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n}\n\nexport { AggregateErrorPonyfill as A, slash as a, isPrimitive as b, groupBy as c, deepMerge as d, nanoid as e, stdout as f, getAllMockableProperties as g, isChildProcess as i, noop as n, setProcessTitle as s, toArray as t, wildcardPatternToRegExp as w };\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 * as chai$1 from 'chai';\nimport { c as commonjsGlobal, g as getDefaultExportFromCjs } from './_commonjsHelpers.BFTU3MAI.js';\nimport { equals, iterableEquality, subsetEquality, JestExtend, JestChaiExpect, JestAsymmetricMatchers, GLOBAL_EXPECT, ASYMMETRIC_MATCHERS_OBJECT, getState, setState, addCustomEqualityTesters } from '@vitest/expect';\nimport { stripSnapshotIndentation, addSerializer, SnapshotClient } from '@vitest/snapshot';\nimport { getNames } from '@vitest/runner/utils';\nimport '@vitest/utils/error';\nimport { getCurrentTest } from '@vitest/runner';\nimport { g as getTestName } from './tasks.DhVtQBtW.js';\nimport { g as getWorkerState, a as getCurrentEnvironment } from './global.7bFbnyXl.js';\nimport { getSafeTimers, assertTypes, createSimpleStackTrace } from '@vitest/utils';\nimport 'pathe';\nimport './env.2ltrQNq0.js';\nimport { parseSingleStack } from '@vitest/utils/source-map';\nimport { i as isChildProcess } from './base.CTYV4Gnz.js';\nimport { R as RealDate, r as resetDate, m as mockDate } from './date.W2xKR2qe.js';\nimport { spyOn, fn, isMockFunction, mocks } from '@vitest/spy';\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\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 = {exports: {}};\n\n(function (module, exports) {\n\t(function() {\n\t\t(function(chaiSubset) {\n\t\t\tif (typeof commonjsRequire === 'function' && 'object' === 'object' && 'object' === 'object') {\n\t\t\t\treturn module.exports = chaiSubset;\n\t\t\t} else {\n\t\t\t\treturn chai.use(chaiSubset);\n\t\t\t}\n\t\t})(function(chai, utils) {\n\t\t\tvar Assertion = chai.Assertion;\n\t\t\tvar assertionPrototype = Assertion.prototype;\n\n\t\t\tAssertion.addMethod('containSubset', function (expected) {\n\t\t\t\tvar actual = utils.flag(this, 'object');\n\t\t\t\tvar showDiff = chai.config.showDiff;\n\n\t\t\t\tassertionPrototype.assert.call(this,\n\t\t\t\t\tcompare(expected, actual),\n\t\t\t\t\t'expected #{act} to contain subset #{exp}',\n\t\t\t\t\t'expected #{act} to not contain subset #{exp}',\n\t\t\t\t\texpected,\n\t\t\t\t\tactual,\n\t\t\t\t\tshowDiff\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tchai.assert.containSubset = function(val, exp, msg) {\n\t\t\t\tnew chai.Assertion(val, msg).to.be.containSubset(exp);\n\t\t\t};\n\n\t\t\tfunction compare(expected, actual) {\n\t\t\t\tif (expected === actual) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (typeof(actual) !== typeof(expected)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (typeof(expected) !== 'object' || expected === null) {\n\t\t\t\t\treturn expected === actual;\n\t\t\t\t}\n\t\t\t\tif (!!expected && !actual) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(expected)) {\n\t\t\t\t\tif (typeof(actual.length) !== 'number') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tvar aa = Array.prototype.slice.call(actual);\n\t\t\t\t\treturn expected.every(function (exp) {\n\t\t\t\t\t\treturn aa.some(function (act) {\n\t\t\t\t\t\t\treturn compare(exp, act);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (expected instanceof Date) {\n\t\t\t\t\tif (actual instanceof Date) {\n\t\t\t\t\t\treturn expected.getTime() === actual.getTime();\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Object.keys(expected).every(function (key) {\n\t\t\t\t\tvar eo = expected[key];\n\t\t\t\t\tvar ao = actual[key];\n\t\t\t\t\tif (typeof(eo) === 'object' && eo !== null && ao !== null) {\n\t\t\t\t\t\treturn compare(eo, ao);\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof(eo) === 'function') {\n\t\t\t\t\t\treturn eo(ao);\n\t\t\t\t\t}\n\t\t\t\t\treturn ao === eo;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t}).call(commonjsGlobal); \n} (chaiSubset));\n\nvar chaiSubsetExports = chaiSubset.exports;\nvar Subset = /*@__PURE__*/getDefaultExportFromCjs(chaiSubsetExports);\n\nfunction recordAsyncExpect(test, promise) {\n if (test && promise instanceof Promise) {\n promise = promise.finally(() => {\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 }\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}\nconst SnapshotPlugin = (chai, utils) => {\n const getTestNames = (test) => {\n if (!test) {\n return {};\n }\n return {\n filepath: test.file.filepath,\n name: getNames(test).slice(1).join(\" > \")\n };\n };\n for (const key of [\"matchSnapshot\", \"toMatchSnapshot\"]) {\n utils.addMethod(\n chai.Assertion.prototype,\n key,\n function(properties, message) {\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 const isNot = utils.flag(this, \"negate\");\n if (isNot) {\n throw new Error('toMatchFileSnapshot cannot be used with \"not\"');\n }\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(test, promise);\n }\n );\n utils.addMethod(\n chai.Assertion.prototype,\n \"toMatchInlineSnapshot\",\n function __INLINE_SNAPSHOT__(properties, inlineSnapshot, message) {\n var _a;\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 || ((_a = test.suite) == null ? void 0 : _a.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 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 var _a;\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 || ((_a = test.suite) == null ? void 0 : _a.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\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 var _a;\n const state = getWorkerState();\n const defaults = ((_a = state.config.expect) == null ? void 0 : _a.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 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 return 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 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 };\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 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 const testPath = getTestFile(test);\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 testPath,\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}\nfunction getTestFile(test) {\n if (test) {\n return test.file.filepath;\n }\n const state = getWorkerState();\n return state.filepath;\n}\nconst globalExpect = createExpect();\nObject.defineProperty(globalThis, GLOBAL_EXPECT, {\n value: globalExpect,\n writable: true,\n configurable: true\n});\n\n/**\n * A reference to the global object\n *\n * @type {object} globalObject\n */\nvar globalObject$1;\n\n/* istanbul ignore else */\nif (typeof commonjsGlobal !== \"undefined\") {\n // Node\n globalObject$1 = commonjsGlobal;\n} else if (typeof window !== \"undefined\") {\n // Browser\n globalObject$1 = window;\n} else {\n // WebWorker\n globalObject$1 = self;\n}\n\nvar global = globalObject$1;\n\n/**\n * Is true when the environment causes an error to be thrown for accessing the\n * __proto__ property.\n *\n * This is necessary in order to support `node --disable-proto=throw`.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto\n *\n * @type {boolean}\n */\nlet throwsOnProto$1;\ntry {\n const object = {};\n // eslint-disable-next-line no-proto, no-unused-expressions\n object.__proto__;\n throwsOnProto$1 = false;\n} catch (_) {\n // This branch is covered when tests are run with `--disable-proto=throw`,\n // however we can test both branches at the same time, so this is ignored\n /* istanbul ignore next */\n throwsOnProto$1 = true;\n}\n\nvar throwsOnProto_1 = throwsOnProto$1;\n\nvar call = Function.call;\nvar throwsOnProto = throwsOnProto_1;\n\nvar disallowedProperties = [\n // ignore size because it throws from Map\n \"size\",\n \"caller\",\n \"callee\",\n \"arguments\",\n];\n\n// This branch is covered when tests are run with `--disable-proto=throw`,\n// however we can test both branches at the same time, so this is ignored\n/* istanbul ignore next */\nif (throwsOnProto) {\n disallowedProperties.push(\"__proto__\");\n}\n\nvar copyPrototypeMethods = function copyPrototypeMethods(prototype) {\n // eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods\n return Object.getOwnPropertyNames(prototype).reduce(function (\n result,\n name\n ) {\n if (disallowedProperties.includes(name)) {\n return result;\n }\n\n if (typeof prototype[name] !== \"function\") {\n return result;\n }\n\n result[name] = call.bind(prototype[name]);\n\n return result;\n },\n Object.create(null));\n};\n\nvar copyPrototype$5 = copyPrototypeMethods;\n\nvar array = copyPrototype$5(Array.prototype);\n\nvar every$1 = array.every;\n\n/**\n * @private\n */\nfunction hasCallsLeft(callMap, spy) {\n if (callMap[spy.id] === undefined) {\n callMap[spy.id] = 0;\n }\n\n return callMap[spy.id] < spy.callCount;\n}\n\n/**\n * @private\n */\nfunction checkAdjacentCalls(callMap, spy, index, spies) {\n var calledBeforeNext = true;\n\n if (index !== spies.length - 1) {\n calledBeforeNext = spy.calledBefore(spies[index + 1]);\n }\n\n if (hasCallsLeft(callMap, spy) && calledBeforeNext) {\n callMap[spy.id] += 1;\n return true;\n }\n\n return false;\n}\n\n/**\n * A Sinon proxy object (fake, spy, stub)\n *\n * @typedef {object} SinonProxy\n * @property {Function} calledBefore - A method that determines if this proxy was called before another one\n * @property {string} id - Some id\n * @property {number} callCount - Number of times this proxy has been called\n */\n\n/**\n * Returns true when the spies have been called in the order they were supplied in\n *\n * @param {SinonProxy[] | SinonProxy} spies An array of proxies, or several proxies as arguments\n * @returns {boolean} true when spies are called in order, false otherwise\n */\nfunction calledInOrder(spies) {\n var callMap = {};\n // eslint-disable-next-line no-underscore-dangle\n var _spies = arguments.length > 1 ? arguments : spies;\n\n return every$1(_spies, checkAdjacentCalls.bind(null, callMap));\n}\n\nvar calledInOrder_1 = calledInOrder;\n\n/**\n * Returns a display name for a function\n *\n * @param {Function} func\n * @returns {string}\n */\nvar functionName$1 = function functionName(func) {\n if (!func) {\n return \"\";\n }\n\n try {\n return (\n func.displayName ||\n func.name ||\n // Use function decomposition as a last resort to get function\n // name. Does not rely on function decomposition to work - if it\n // doesn't debugging will be slightly less informative\n // (i.e. toString will say 'spy' rather than 'myFunc').\n (String(func).match(/function ([^\\s(]+)/) || [])[1]\n );\n } catch (e) {\n // Stringify may fail and we might get an exception, as a last-last\n // resort fall back to empty string.\n return \"\";\n }\n};\n\nvar functionName = functionName$1;\n\n/**\n * Returns a display name for a value from a constructor\n *\n * @param {object} value A value to examine\n * @returns {(string|null)} A string or null\n */\nfunction className(value) {\n return (\n (value.constructor && value.constructor.name) ||\n // The next branch is for IE11 support only:\n // Because the name property is not set on the prototype\n // of the Function object, we finally try to grab the\n // name from its definition. This will never be reached\n // in node, so we are not able to test this properly.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n (typeof value.constructor === \"function\" &&\n /* istanbul ignore next */\n functionName(value.constructor)) ||\n null\n );\n}\n\nvar className_1 = className;\n\nvar deprecated = {};\n\n/* eslint-disable no-console */\n\n(function (exports) {\n\n\t/**\n\t * Returns a function that will invoke the supplied function and print a\n\t * deprecation warning to the console each time it is called.\n\t *\n\t * @param {Function} func\n\t * @param {string} msg\n\t * @returns {Function}\n\t */\n\texports.wrap = function (func, msg) {\n\t var wrapped = function () {\n\t exports.printWarning(msg);\n\t return func.apply(this, arguments);\n\t };\n\t if (func.prototype) {\n\t wrapped.prototype = func.prototype;\n\t }\n\t return wrapped;\n\t};\n\n\t/**\n\t * Returns a string which can be supplied to `wrap()` to notify the user that a\n\t * particular part of the sinon API has been deprecated.\n\t *\n\t * @param {string} packageName\n\t * @param {string} funcName\n\t * @returns {string}\n\t */\n\texports.defaultMsg = function (packageName, funcName) {\n\t return `${packageName}.${funcName} is deprecated and will be removed from the public API in a future version of ${packageName}.`;\n\t};\n\n\t/**\n\t * Prints a warning on the console, when it exists\n\t *\n\t * @param {string} msg\n\t * @returns {undefined}\n\t */\n\texports.printWarning = function (msg) {\n\t /* istanbul ignore next */\n\t if (typeof process === \"object\" && process.emitWarning) {\n\t // Emit Warnings in Node\n\t process.emitWarning(msg);\n\t } else if (console.info) {\n\t console.info(msg);\n\t } else {\n\t console.log(msg);\n\t }\n\t}; \n} (deprecated));\n\n/**\n * Returns true when fn returns true for all members of obj.\n * This is an every implementation that works for all iterables\n *\n * @param {object} obj\n * @param {Function} fn\n * @returns {boolean}\n */\nvar every = function every(obj, fn) {\n var pass = true;\n\n try {\n // eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods\n obj.forEach(function () {\n if (!fn.apply(this, arguments)) {\n // Throwing an error is the only way to break `forEach`\n throw new Error();\n }\n });\n } catch (e) {\n pass = false;\n }\n\n return pass;\n};\n\nvar sort = array.sort;\nvar slice = array.slice;\n\n/**\n * @private\n */\nfunction comparator(a, b) {\n // uuid, won't ever be equal\n var aCall = a.getCall(0);\n var bCall = b.getCall(0);\n var aId = (aCall && aCall.callId) || -1;\n var bId = (bCall && bCall.callId) || -1;\n\n return aId < bId ? -1 : 1;\n}\n\n/**\n * A Sinon proxy object (fake, spy, stub)\n *\n * @typedef {object} SinonProxy\n * @property {Function} getCall - A method that can return the first call\n */\n\n/**\n * Sorts an array of SinonProxy instances (fake, spy, stub) by their first call\n *\n * @param {SinonProxy[] | SinonProxy} spies\n * @returns {SinonProxy[]}\n */\nfunction orderByFirstCall(spies) {\n return sort(slice(spies), comparator);\n}\n\nvar orderByFirstCall_1 = orderByFirstCall;\n\nvar copyPrototype$4 = copyPrototypeMethods;\n\nvar _function = copyPrototype$4(Function.prototype);\n\nvar copyPrototype$3 = copyPrototypeMethods;\n\nvar map = copyPrototype$3(Map.prototype);\n\nvar copyPrototype$2 = copyPrototypeMethods;\n\nvar object = copyPrototype$2(Object.prototype);\n\nvar copyPrototype$1 = copyPrototypeMethods;\n\nvar set = copyPrototype$1(Set.prototype);\n\nvar copyPrototype = copyPrototypeMethods;\n\nvar string = copyPrototype(String.prototype);\n\nvar prototypes = {\n array: array,\n function: _function,\n map: map,\n object: object,\n set: set,\n string: string,\n};\n\nvar typeDetect = {exports: {}};\n\n(function (module, exports) {\n\t(function (global, factory) {\n\t\tmodule.exports = factory() ;\n\t}(commonjsGlobal, (function () {\n\t/* !\n\t * type-detect\n\t * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>\n\t * MIT Licensed\n\t */\n\tvar promiseExists = typeof Promise === 'function';\n\n\t/* eslint-disable no-undef */\n\tvar globalObject = typeof self === 'object' ? self : commonjsGlobal; // eslint-disable-line id-blacklist\n\n\tvar symbolExists = typeof Symbol !== 'undefined';\n\tvar mapExists = typeof Map !== 'undefined';\n\tvar setExists = typeof Set !== 'undefined';\n\tvar weakMapExists = typeof WeakMap !== 'undefined';\n\tvar weakSetExists = typeof WeakSet !== 'undefined';\n\tvar dataViewExists = typeof DataView !== 'undefined';\n\tvar symbolIteratorExists = symbolExists && typeof Symbol.iterator !== 'undefined';\n\tvar symbolToStringTagExists = symbolExists && typeof Symbol.toStringTag !== 'undefined';\n\tvar setEntriesExists = setExists && typeof Set.prototype.entries === 'function';\n\tvar mapEntriesExists = mapExists && typeof Map.prototype.entries === 'function';\n\tvar setIteratorPrototype = setEntriesExists && Object.getPrototypeOf(new Set().entries());\n\tvar mapIteratorPrototype = mapEntriesExists && Object.getPrototypeOf(new Map().entries());\n\tvar arrayIteratorExists = symbolIteratorExists && typeof Array.prototype[Symbol.iterator] === 'function';\n\tvar arrayIteratorPrototype = arrayIteratorExists && Object.getPrototypeOf([][Symbol.iterator]());\n\tvar stringIteratorExists = symbolIteratorExists && typeof String.prototype[Symbol.iterator] === 'function';\n\tvar stringIteratorPrototype = stringIteratorExists && Object.getPrototypeOf(''[Symbol.iterator]());\n\tvar toStringLeftSliceLength = 8;\n\tvar toStringRightSliceLength = -1;\n\t/**\n\t * ### typeOf (obj)\n\t *\n\t * Uses `Object.prototype.toString` to determine the type of an object,\n\t * normalising behaviour across engine versions & well optimised.\n\t *\n\t * @param {Mixed} object\n\t * @return {String} object type\n\t * @api public\n\t */\n\tfunction typeDetect(obj) {\n\t /* ! Speed optimisation\n\t * Pre:\n\t * string literal x 3,039,035 ops/sec ±1.62% (78 runs sampled)\n\t * boolean literal x 1,424,138 ops/sec ±4.54% (75 runs sampled)\n\t * number literal x 1,653,153 ops/sec ±1.91% (82 runs sampled)\n\t * undefined x 9,978,660 ops/sec ±1.92% (75 runs sampled)\n\t * function x 2,556,769 ops/sec ±1.73% (77 runs sampled)\n\t * Post:\n\t * string literal x 38,564,796 ops/sec ±1.15% (79 runs sampled)\n\t * boolean literal x 31,148,940 ops/sec ±1.10% (79 runs sampled)\n\t * number literal x 32,679,330 ops/sec ±1.90% (78 runs sampled)\n\t * undefined x 32,363,368 ops/sec ±1.07% (82 runs sampled)\n\t * function x 31,296,870 ops/sec ±0.96% (83 runs sampled)\n\t */\n\t var typeofObj = typeof obj;\n\t if (typeofObj !== 'object') {\n\t return typeofObj;\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * null x 28,645,765 ops/sec ±1.17% (82 runs sampled)\n\t * Post:\n\t * null x 36,428,962 ops/sec ±1.37% (84 runs sampled)\n\t */\n\t if (obj === null) {\n\t return 'null';\n\t }\n\n\t /* ! Spec Conformance\n\t * Test: `Object.prototype.toString.call(window)``\n\t * - Node === \"[object global]\"\n\t * - Chrome === \"[object global]\"\n\t * - Firefox === \"[object Window]\"\n\t * - PhantomJS === \"[object Window]\"\n\t * - Safari === \"[object Window]\"\n\t * - IE 11 === \"[object Window]\"\n\t * - IE Edge === \"[object Window]\"\n\t * Test: `Object.prototype.toString.call(this)``\n\t * - Chrome Worker === \"[object global]\"\n\t * - Firefox Worker === \"[object DedicatedWorkerGlobalScope]\"\n\t * - Safari Worker === \"[object DedicatedWorkerGlobalScope]\"\n\t * - IE 11 Worker === \"[object WorkerGlobalScope]\"\n\t * - IE Edge Worker === \"[object WorkerGlobalScope]\"\n\t */\n\t if (obj === globalObject) {\n\t return 'global';\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * array literal x 2,888,352 ops/sec ±0.67% (82 runs sampled)\n\t * Post:\n\t * array literal x 22,479,650 ops/sec ±0.96% (81 runs sampled)\n\t */\n\t if (\n\t Array.isArray(obj) &&\n\t (symbolToStringTagExists === false || !(Symbol.toStringTag in obj))\n\t ) {\n\t return 'Array';\n\t }\n\n\t // Not caching existence of `window` and related properties due to potential\n\t // for `window` to be unset before tests in quasi-browser environments.\n\t if (typeof window === 'object' && window !== null) {\n\t /* ! Spec Conformance\n\t * (https://html.spec.whatwg.org/multipage/browsers.html#location)\n\t * WhatWG HTML$7.7.3 - The `Location` interface\n\t * Test: `Object.prototype.toString.call(window.location)``\n\t * - IE <=11 === \"[object Object]\"\n\t * - IE Edge <=13 === \"[object Object]\"\n\t */\n\t if (typeof window.location === 'object' && obj === window.location) {\n\t return 'Location';\n\t }\n\n\t /* ! Spec Conformance\n\t * (https://html.spec.whatwg.org/#document)\n\t * WhatWG HTML$3.1.1 - The `Document` object\n\t * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n\t * (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-26809268)\n\t * which suggests that browsers should use HTMLTableCellElement for\n\t * both TD and TH elements. WhatWG separates these.\n\t * WhatWG HTML states:\n\t * > For historical reasons, Window objects must also have a\n\t * > writable, configurable, non-enumerable property named\n\t * > HTMLDocument whose value is the Document interface object.\n\t * Test: `Object.prototype.toString.call(document)``\n\t * - Chrome === \"[object HTMLDocument]\"\n\t * - Firefox === \"[object HTMLDocument]\"\n\t * - Safari === \"[object HTMLDocument]\"\n\t * - IE <=10 === \"[object Document]\"\n\t * - IE 11 === \"[object HTMLDocument]\"\n\t * - IE Edge <=13 === \"[object HTMLDocument]\"\n\t */\n\t if (typeof window.document === 'object' && obj === window.document) {\n\t return 'Document';\n\t }\n\n\t if (typeof window.navigator === 'object') {\n\t /* ! Spec Conformance\n\t * (https://html.spec.whatwg.org/multipage/webappapis.html#mimetypearray)\n\t * WhatWG HTML$8.6.1.5 - Plugins - Interface MimeTypeArray\n\t * Test: `Object.prototype.toString.call(navigator.mimeTypes)``\n\t * - IE <=10 === \"[object MSMimeTypesCollection]\"\n\t */\n\t if (typeof window.navigator.mimeTypes === 'object' &&\n\t obj === window.navigator.mimeTypes) {\n\t return 'MimeTypeArray';\n\t }\n\n\t /* ! Spec Conformance\n\t * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n\t * WhatWG HTML$8.6.1.5 - Plugins - Interface PluginArray\n\t * Test: `Object.prototype.toString.call(navigator.plugins)``\n\t * - IE <=10 === \"[object MSPluginsCollection]\"\n\t */\n\t if (typeof window.navigator.plugins === 'object' &&\n\t obj === window.navigator.plugins) {\n\t return 'PluginArray';\n\t }\n\t }\n\n\t if ((typeof window.HTMLElement === 'function' ||\n\t typeof window.HTMLElement === 'object') &&\n\t obj instanceof window.HTMLElement) {\n\t /* ! Spec Conformance\n\t * (https://html.spec.whatwg.org/multipage/webappapis.html#pluginarray)\n\t * WhatWG HTML$4.4.4 - The `blockquote` element - Interface `HTMLQuoteElement`\n\t * Test: `Object.prototype.toString.call(document.createElement('blockquote'))``\n\t * - IE <=10 === \"[object HTMLBlockElement]\"\n\t */\n\t if (obj.tagName === 'BLOCKQUOTE') {\n\t return 'HTMLQuoteElement';\n\t }\n\n\t /* ! Spec Conformance\n\t * (https://html.spec.whatwg.org/#htmltabledatacellelement)\n\t * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableDataCellElement`\n\t * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n\t * (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n\t * which suggests that browsers should use HTMLTableCellElement for\n\t * both TD and TH elements. WhatWG separates these.\n\t * Test: Object.prototype.toString.call(document.createElement('td'))\n\t * - Chrome === \"[object HTMLTableCellElement]\"\n\t * - Firefox === \"[object HTMLTableCellElement]\"\n\t * - Safari === \"[object HTMLTableCellElement]\"\n\t */\n\t if (obj.tagName === 'TD') {\n\t return 'HTMLTableDataCellElement';\n\t }\n\n\t /* ! Spec Conformance\n\t * (https://html.spec.whatwg.org/#htmltableheadercellelement)\n\t * WhatWG HTML$4.9.9 - The `td` element - Interface `HTMLTableHeaderCellElement`\n\t * Note: Most browsers currently adher to the W3C DOM Level 2 spec\n\t * (https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075)\n\t * which suggests that browsers should use HTMLTableCellElement for\n\t * both TD and TH elements. WhatWG separates these.\n\t * Test: Object.prototype.toString.call(document.createElement('th'))\n\t * - Chrome === \"[object HTMLTableCellElement]\"\n\t * - Firefox === \"[object HTMLTableCellElement]\"\n\t * - Safari === \"[object HTMLTableCellElement]\"\n\t */\n\t if (obj.tagName === 'TH') {\n\t return 'HTMLTableHeaderCellElement';\n\t }\n\t }\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * Float64Array x 625,644 ops/sec ±1.58% (80 runs sampled)\n\t * Float32Array x 1,279,852 ops/sec ±2.91% (77 runs sampled)\n\t * Uint32Array x 1,178,185 ops/sec ±1.95% (83 runs sampled)\n\t * Uint16Array x 1,008,380 ops/sec ±2.25% (80 runs sampled)\n\t * Uint8Array x 1,128,040 ops/sec ±2.11% (81 runs sampled)\n\t * Int32Array x 1,170,119 ops/sec ±2.88% (80 runs sampled)\n\t * Int16Array x 1,176,348 ops/sec ±5.79% (86 runs sampled)\n\t * Int8Array x 1,058,707 ops/sec ±4.94% (77 runs sampled)\n\t * Uint8ClampedArray x 1,110,633 ops/sec ±4.20% (80 runs sampled)\n\t * Post:\n\t * Float64Array x 7,105,671 ops/sec ±13.47% (64 runs sampled)\n\t * Float32Array x 5,887,912 ops/sec ±1.46% (82 runs sampled)\n\t * Uint32Array x 6,491,661 ops/sec ±1.76% (79 runs sampled)\n\t * Uint16Array x 6,559,795 ops/sec ±1.67% (82 runs sampled)\n\t * Uint8Array x 6,463,966 ops/sec ±1.43% (85 runs sampled)\n\t * Int32Array x 5,641,841 ops/sec ±3.49% (81 runs sampled)\n\t * Int16Array x 6,583,511 ops/sec ±1.98% (80 runs sampled)\n\t * Int8Array x 6,606,078 ops/sec ±1.74% (81 runs sampled)\n\t * Uint8ClampedArray x 6,602,224 ops/sec ±1.77% (83 runs sampled)\n\t */\n\t var stringTag = (symbolToStringTagExists && obj[Symbol.toStringTag]);\n\t if (typeof stringTag === 'string') {\n\t return stringTag;\n\t }\n\n\t var objPrototype = Object.getPrototypeOf(obj);\n\t /* ! Speed optimisation\n\t * Pre:\n\t * regex literal x 1,772,385 ops/sec ±1.85% (77 runs sampled)\n\t * regex constructor x 2,143,634 ops/sec ±2.46% (78 runs sampled)\n\t * Post:\n\t * regex literal x 3,928,009 ops/sec ±0.65% (78 runs sampled)\n\t * regex constructor x 3,931,108 ops/sec ±0.58% (84 runs sampled)\n\t */\n\t if (objPrototype === RegExp.prototype) {\n\t return 'RegExp';\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * date x 2,130,074 ops/sec ±4.42% (68 runs sampled)\n\t * Post:\n\t * date x 3,953,779 ops/sec ±1.35% (77 runs sampled)\n\t */\n\t if (objPrototype === Date.prototype) {\n\t return 'Date';\n\t }\n\n\t /* ! Spec Conformance\n\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-promise.prototype-@@tostringtag)\n\t * ES6$25.4.5.4 - Promise.prototype[@@toStringTag] should be \"Promise\":\n\t * Test: `Object.prototype.toString.call(Promise.resolve())``\n\t * - Chrome <=47 === \"[object Object]\"\n\t * - Edge <=20 === \"[object Object]\"\n\t * - Firefox 29-Latest === \"[object Promise]\"\n\t * - Safari 7.1-Latest === \"[object Promise]\"\n\t */\n\t if (promiseExists && objPrototype === Promise.prototype) {\n\t return 'Promise';\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * set x 2,222,186 ops/sec ±1.31% (82 runs sampled)\n\t * Post:\n\t * set x 4,545,879 ops/sec ±1.13% (83 runs sampled)\n\t */\n\t if (setExists && objPrototype === Set.prototype) {\n\t return 'Set';\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * map x 2,396,842 ops/sec ±1.59% (81 runs sampled)\n\t * Post:\n\t * map x 4,183,945 ops/sec ±6.59% (82 runs sampled)\n\t */\n\t if (mapExists && objPrototype === Map.prototype) {\n\t return 'Map';\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * weakset x 1,323,220 ops/sec ±2.17% (76 runs sampled)\n\t * Post:\n\t * weakset x 4,237,510 ops/sec ±2.01% (77 runs sampled)\n\t */\n\t if (weakSetExists && objPrototype === WeakSet.prototype) {\n\t return 'WeakSet';\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * weakmap x 1,500,260 ops/sec ±2.02% (78 runs sampled)\n\t * Post:\n\t * weakmap x 3,881,384 ops/sec ±1.45% (82 runs sampled)\n\t */\n\t if (weakMapExists && objPrototype === WeakMap.prototype) {\n\t return 'WeakMap';\n\t }\n\n\t /* ! Spec Conformance\n\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-dataview.prototype-@@tostringtag)\n\t * ES6$24.2.4.21 - DataView.prototype[@@toStringTag] should be \"DataView\":\n\t * Test: `Object.prototype.toString.call(new DataView(new ArrayBuffer(1)))``\n\t * - Edge <=13 === \"[object Object]\"\n\t */\n\t if (dataViewExists && objPrototype === DataView.prototype) {\n\t return 'DataView';\n\t }\n\n\t /* ! Spec Conformance\n\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%mapiteratorprototype%-@@tostringtag)\n\t * ES6$23.1.5.2.2 - %MapIteratorPrototype%[@@toStringTag] should be \"Map Iterator\":\n\t * Test: `Object.prototype.toString.call(new Map().entries())``\n\t * - Edge <=13 === \"[object Object]\"\n\t */\n\t if (mapExists && objPrototype === mapIteratorPrototype) {\n\t return 'Map Iterator';\n\t }\n\n\t /* ! Spec Conformance\n\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%setiteratorprototype%-@@tostringtag)\n\t * ES6$23.2.5.2.2 - %SetIteratorPrototype%[@@toStringTag] should be \"Set Iterator\":\n\t * Test: `Object.prototype.toString.call(new Set().entries())``\n\t * - Edge <=13 === \"[object Object]\"\n\t */\n\t if (setExists && objPrototype === setIteratorPrototype) {\n\t return 'Set Iterator';\n\t }\n\n\t /* ! Spec Conformance\n\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%arrayiteratorprototype%-@@tostringtag)\n\t * ES6$22.1.5.2.2 - %ArrayIteratorPrototype%[@@toStringTag] should be \"Array Iterator\":\n\t * Test: `Object.prototype.toString.call([][Symbol.iterator]())``\n\t * - Edge <=13 === \"[object Object]\"\n\t */\n\t if (arrayIteratorExists && objPrototype === arrayIteratorPrototype) {\n\t return 'Array Iterator';\n\t }\n\n\t /* ! Spec Conformance\n\t * (http://www.ecma-international.org/ecma-262/6.0/index.html#sec-%stringiteratorprototype%-@@tostringtag)\n\t * ES6$21.1.5.2.2 - %StringIteratorPrototype%[@@toStringTag] should be \"String Iterator\":\n\t * Test: `Object.prototype.toString.call(''[Symbol.iterator]())``\n\t * - Edge <=13 === \"[object Object]\"\n\t */\n\t if (stringIteratorExists && objPrototype === stringIteratorPrototype) {\n\t return 'String Iterator';\n\t }\n\n\t /* ! Speed optimisation\n\t * Pre:\n\t * object from null x 2,424,320 ops/sec ±1.67% (76 runs sampled)\n\t * Post:\n\t * object from null x 5,838,000 ops/sec ±0.99% (84 runs sampled)\n\t */\n\t if (objPrototype === null) {\n\t return 'Object';\n\t }\n\n\t return Object\n\t .prototype\n\t .toString\n\t .call(obj)\n\t .slice(toStringLeftSliceLength, toStringRightSliceLength);\n\t}\n\n\treturn typeDetect;\n\n\t}))); \n} (typeDetect));\n\nvar typeDetectExports = typeDetect.exports;\n\nvar type = typeDetectExports;\n\n/**\n * Returns the lower-case result of running type from type-detect on the value\n *\n * @param {*} value\n * @returns {string}\n */\nvar typeOf = function typeOf(value) {\n return type(value).toLowerCase();\n};\n\n/**\n * Returns a string representation of the value\n *\n * @param {*} value\n * @returns {string}\n */\nfunction valueToString(value) {\n if (value && value.toString) {\n // eslint-disable-next-line @sinonjs/no-prototype-methods/no-prototype-methods\n return value.toString();\n }\n return String(value);\n}\n\nvar valueToString_1 = valueToString;\n\nvar lib = {\n global: global,\n calledInOrder: calledInOrder_1,\n className: className_1,\n deprecated: deprecated,\n every: every,\n functionName: functionName$1,\n orderByFirstCall: orderByFirstCall_1,\n prototypes: prototypes,\n typeOf: typeOf,\n valueToString: valueToString_1,\n};\n\nconst globalObject = lib.global;\nlet timersModule;\nif (typeof __vitest_required__ !== 'undefined') {\n try {\n timersModule = __vitest_required__.timers;\n } catch (e) {\n // ignored\n }\n}\n\n/**\n * @typedef {object} IdleDeadline\n * @property {boolean} didTimeout - whether or not the callback was called before reaching the optional timeout\n * @property {function():number} timeRemaining - a floating-point value providing an estimate of the number of milliseconds remaining in the current idle period\n */\n\n/**\n * Queues a function to be called during a browser's idle periods\n *\n * @callback RequestIdleCallback\n * @param {function(IdleDeadline)} callback\n * @param {{timeout: number}} options - an options object\n * @returns {number} the id\n */\n\n/**\n * @callback NextTick\n * @param {VoidVarArgsFunc} callback - the callback to run\n * @param {...*} arguments - optional arguments to call the callback with\n * @returns {void}\n */\n\n/**\n * @callback SetImmediate\n * @param {VoidVarArgsFunc} callback - the callback to run\n * @param {...*} arguments - optional arguments to call the callback with\n * @returns {NodeImmediate}\n */\n\n/**\n * @callback VoidVarArgsFunc\n * @param {...*} callback - the callback to run\n * @returns {void}\n */\n\n/**\n * @typedef RequestAnimationFrame\n * @property {function(number):void} requestAnimationFrame\n * @returns {number} - the id\n */\n\n/**\n * @typedef Performance\n * @property {function(): number} now\n */\n\n/* eslint-disable jsdoc/require-property-description */\n/**\n * @typedef {object} Clock\n * @property {number} now - the current time\n * @property {Date} Date - the Date constructor\n * @property {number} loopLimit - the maximum number of timers before assuming an infinite loop\n * @property {RequestIdleCallback} requestIdleCallback\n * @property {function(number):void} cancelIdleCallback\n * @property {setTimeout} setTimeout\n * @property {clearTimeout} clearTimeout\n * @property {NextTick} nextTick\n * @property {queueMicrotask} queueMicrotask\n * @property {setInterval} setInterval\n * @property {clearInterval} clearInterval\n * @property {SetImmediate} setImmediate\n * @property {function(NodeImmediate):void} clearImmediate\n * @property {function():number} countTimers\n * @property {RequestAnimationFrame} requestAnimationFrame\n * @property {function(number):void} cancelAnimationFrame\n * @property {function():void} runMicrotasks\n * @property {function(string | number): number} tick\n * @property {function(string | number): Promise<number>} tickAsync\n * @property {function(): number} next\n * @property {function(): Promise<number>} nextAsync\n * @property {function(): number} runAll\n * @property {function(): number} runToFrame\n * @property {function(): Promise<number>} runAllAsync\n * @property {function(): number} runToLast\n * @property {function(): Promise<number>} runToLastAsync\n * @property {function(): void} reset\n * @property {function(number | Date): void} setSystemTime\n * @property {function(number): void} jump\n * @property {Performance} performance\n * @property {function(number[]): number[]} hrtime - process.hrtime (legacy)\n * @property {function(): void} uninstall Uninstall the clock.\n * @property {Function[]} methods - the methods that are faked\n * @property {boolean} [shouldClearNativeTimers] inherited from config\n * @property {{methodName:string, original:any}[] | undefined} timersModuleMethods\n */\n/* eslint-enable jsdoc/require-property-description */\n\n/**\n * Configuration object for the `install` method.\n *\n * @typedef {object} Config\n * @property {number|Date} [now] a number (in milliseconds) or a Date object (default epoch)\n * @property {string[]} [toFake] names of the methods that should be faked.\n * @property {number} [loopLimit] the maximum number of timers that will be run when calling runAll()\n * @property {boolean} [shouldAdvanceTime] tells FakeTimers to increment mocked time automatically (default false)\n * @property {number} [advanceTimeDelta] increment mocked time every <<advanceTimeDelta>> ms (default: 20ms)\n * @property {boolean} [shouldClearNativeTimers] forwards clear timer calls to native functions if they are not fakes (default: false)\n */\n\n/* eslint-disable jsdoc/require-property-description */\n/**\n * The internal structure to describe a scheduled fake timer\n *\n * @typedef {object} Timer\n * @property {Function} func\n * @property {*[]} args\n * @property {number} delay\n * @property {number} callAt\n * @property {number} createdAt\n * @property {boolean} immediate\n * @property {number} id\n * @property {Error} [error]\n */\n\n/**\n * A Node timer\n *\n * @typedef {object} NodeImmediate\n * @property {function(): boolean} hasRef\n * @property {function(): NodeImmediate} ref\n * @property {function(): NodeImmediate} unref\n */\n/* eslint-enable jsdoc/require-property-description */\n\n/* eslint-disable complexity */\n\n/**\n * Mocks available features in the specified global namespace.\n *\n * @param {*} _global Namespace to mock (e.g. `window`)\n * @returns {FakeTimers}\n */\nfunction withGlobal(_global) {\n const maxTimeout = Math.pow(2, 31) - 1; //see https://heycam.github.io/webidl/#abstract-opdef-converttoint\n const idCounterStart = 1e12; // arbitrarily large number to avoid collisions with native timer IDs\n const NOOP = function () {\n return undefined;\n };\n const NOOP_ARRAY = function () {\n return [];\n };\n const timeoutResult = _global.setTimeout(NOOP, 0);\n const addTimerReturnsObject = typeof timeoutResult === \"object\";\n const hrtimePresent =\n _global.process && typeof _global.process.hrtime === \"function\";\n const hrtimeBigintPresent =\n hrtimePresent && typeof _global.process.hrtime.bigint === \"function\";\n const nextTickPresent =\n _global.process && typeof _global.process.nextTick === \"function\";\n const utilPromisify = _global.process && _global.__vitest_required__ && _global.__vitest_required__.util.promisify;\n const performancePresent =\n _global.performance && typeof _global.performance.now === \"function\";\n const hasPerformancePrototype =\n _global.Performance &&\n (typeof _global.Performance).match(/^(function|object)$/);\n const hasPerformanceConstructorPrototype =\n _global.performance &&\n _global.performance.constructor &&\n _global.performance.constructor.prototype;\n const queueMicrotaskPresent = _global.hasOwnProperty(\"queueMicrotask\");\n const requestAnimationFramePresent =\n _global.requestAnimationFrame &&\n typeof _global.requestAnimationFrame === \"function\";\n const cancelAnimationFramePresent =\n _global.cancelAnimationFrame &&\n typeof _global.cancelAnimationFrame === \"function\";\n const requestIdleCallbackPresent =\n _global.requestIdleCallback &&\n typeof _global.requestIdleCallback === \"function\";\n const cancelIdleCallbackPresent =\n _global.cancelIdleCallback &&\n typeof _global.cancelIdleCallback === \"function\";\n const setImmediatePresent =\n _global.setImmediate && typeof _global.setImmediate === \"function\";\n const intlPresent = _global.Intl && typeof _global.Intl === \"object\";\n\n _global.clearTimeout(timeoutResult);\n\n const NativeDate = _global.Date;\n const NativeIntl = _global.Intl;\n let uniqueTimerId = idCounterStart;\n\n /**\n * @param {number} num\n * @returns {boolean}\n */\n function isNumberFinite(num) {\n if (Number.isFinite) {\n return Number.isFinite(num);\n }\n\n return isFinite(num);\n }\n\n let isNearInfiniteLimit = false;\n\n /**\n * @param {Clock} clock\n * @param {number} i\n */\n function checkIsNearInfiniteLimit(clock, i) {\n if (clock.loopLimit && i === clock.loopLimit - 1) {\n isNearInfiniteLimit = true;\n }\n }\n\n /**\n *\n */\n function resetIsNearInfiniteLimit() {\n isNearInfiniteLimit = false;\n }\n\n /**\n * Parse strings like \"01:10:00\" (meaning 1 hour, 10 minutes, 0 seconds) into\n * number of milliseconds. This is used to support human-readable strings passed\n * to clock.tick()\n *\n * @param {string} str\n * @returns {number}\n */\n function parseTime(str) {\n if (!str) {\n return 0;\n }\n\n const strings = str.split(\":\");\n const l = strings.length;\n let i = l;\n let ms = 0;\n let parsed;\n\n if (l > 3 || !/^(\\d\\d:){0,2}\\d\\d?$/.test(str)) {\n throw new Error(\n \"tick only understands numbers, 'm:s' and 'h:m:s'. Each part must be two digits\"\n );\n }\n\n while (i--) {\n parsed = parseInt(strings[i], 10);\n\n if (parsed >= 60) {\n throw new Error(`Invalid time ${str}`);\n }\n\n ms += parsed * Math.pow(60, l - i - 1);\n }\n\n return ms * 1000;\n }\n\n /**\n * Get the decimal part of the millisecond value as nanoseconds\n *\n * @param {number} msFloat the number of milliseconds\n * @returns {number} an integer number of nanoseconds in the range [0,1e6)\n *\n * Example: nanoRemainer(123.456789) -> 456789\n */\n function nanoRemainder(msFloat) {\n const modulo = 1e6;\n const remainder = (msFloat * 1e6) % modulo;\n const positiveRemainder =\n remainder < 0 ? remainder + modulo : remainder;\n\n return Math.floor(positiveRemainder);\n }\n\n /**\n * Used to grok the `now` parameter to createClock.\n *\n * @param {Date|number} epoch the system time\n * @returns {number}\n */\n function getEpoch(epoch) {\n if (!epoch) {\n return 0;\n }\n if (typeof epoch.getTime === \"function\") {\n return epoch.getTime();\n }\n if (typeof epoch === \"number\") {\n return epoch;\n }\n throw new TypeError(\"now should be milliseconds since UNIX epoch\");\n }\n\n /**\n * @param {number} from\n * @param {number} to\n * @param {Timer} timer\n * @returns {boolean}\n */\n function inRange(from, to, timer) {\n return timer && timer.callAt >= from && timer.callAt <= to;\n }\n\n /**\n * @param {Clock} clock\n * @param {Timer} job\n */\n function getInfiniteLoopError(clock, job) {\n const infiniteLoopError = new Error(\n `Aborting after running ${clock.loopLimit} timers, assuming an infinite loop!`\n );\n\n if (!job.error) {\n return infiniteLoopError;\n }\n\n // pattern never matched in Node\n const computedTargetPattern = /target\\.*[<|(|[].*?[>|\\]|)]\\s*/;\n let clockMethodPattern = new RegExp(\n String(Object.keys(clock).join(\"|\"))\n );\n\n if (addTimerReturnsObject) {\n // node.js environment\n clockMethodPattern = new RegExp(\n `\\\\s+at (Object\\\\.)?(?:${Object.keys(clock).join(\"|\")})\\\\s+`\n );\n }\n\n let matchedLineIndex = -1;\n job.error.stack.split(\"\\n\").some(function (line, i) {\n // If we've matched a computed target line (e.g. setTimeout) then we\n // don't need to look any further. Return true to stop iterating.\n const matchedComputedTarget = line.match(computedTargetPattern);\n /* istanbul ignore if */\n if (matchedComputedTarget) {\n matchedLineIndex = i;\n return true;\n }\n\n // If we've matched a clock method line, then there may still be\n // others further down the trace. Return false to keep iterating.\n const matchedClockMethod = line.match(clockMethodPattern);\n if (matchedClockMethod) {\n matchedLineIndex = i;\n return false;\n }\n\n // If we haven't matched anything on this line, but we matched\n // previously and set the matched line index, then we can stop.\n // If we haven't matched previously, then we should keep iterating.\n return matchedLineIndex >= 0;\n });\n\n const stack = `${infiniteLoopError}\\n${job.type || \"Microtask\"} - ${\n job.func.name || \"anonymous\"\n }\\n${job.error.stack\n .split(\"\\n\")\n .slice(matchedLineIndex + 1)\n .join(\"\\n\")}`;\n\n try {\n Object.defineProperty(infiniteLoopError, \"stack\", {\n value: stack,\n });\n } catch (e) {\n // noop\n }\n\n return infiniteLoopError;\n }\n\n /**\n * @param {Date} target\n * @param {Date} source\n * @returns {Date} the target after modifications\n */\n function mirrorDateProperties(target, source) {\n let prop;\n for (prop in source) {\n if (source.hasOwnProperty(prop)) {\n target[prop] = source[prop];\n }\n }\n\n // set special now implementation\n if (source.now) {\n target.now = function now() {\n return target.clock.now;\n };\n } else {\n delete target.now;\n }\n\n // set special toSource implementation\n if (source.toSource) {\n target.toSource = function toSource() {\n return source.toSource();\n };\n } else {\n delete target.toSource;\n }\n\n // set special toString implementation\n target.toString = function toString() {\n return source.toString();\n };\n\n target.prototype = source.prototype;\n target.parse = source.parse;\n target.UTC = source.UTC;\n target.prototype.toUTCString = source.prototype.toUTCString;\n target.isFake = true;\n\n return target;\n }\n\n //eslint-disable-next-line jsdoc/require-jsdoc\n function createDate() {\n /**\n * @param {number} year\n * @param {number} month\n * @param {number} date\n * @param {number} hour\n * @param {number} minute\n * @param {number} second\n * @param {number} ms\n * @returns {Date}\n */\n function ClockDate(year, month, date, hour, minute, second, ms) {\n // the Date constructor called as a function, ref Ecma-262 Edition 5.1, section 15.9.2.\n // This remains so in the 10th edition of 2019 as well.\n if (!(this instanceof ClockDate)) {\n return new NativeDate(ClockDate.clock.now).toString();\n }\n\n // if Date is called as a constructor with 'new' keyword\n // Defensive and verbose to avoid potential harm in passing\n // explicit undefined when user does not pass argument\n switch (arguments.length) {\n case 0:\n return new NativeDate(ClockDate.clock.now);\n case 1:\n return new NativeDate(year);\n case 2:\n return new NativeDate(year, month);\n case 3:\n return new NativeDate(year, month, date);\n case 4:\n return new NativeDate(year, month, date, hour);\n case 5:\n return new NativeDate(year, month, date, hour, minute);\n case 6:\n return new NativeDate(\n year,\n month,\n date,\n hour,\n minute,\n second\n );\n default:\n return new NativeDate(\n year,\n month,\n date,\n hour,\n minute,\n second,\n ms\n );\n }\n }\n\n return mirrorDateProperties(ClockDate, NativeDate);\n }\n\n //eslint-disable-next-line jsdoc/require-jsdoc\n function createIntl() {\n const ClockIntl = { ...NativeIntl };\n\n ClockIntl.DateTimeFormat = function (...args) {\n const realFormatter = new NativeIntl.DateTimeFormat(...args);\n const formatter = {};\n\n [\"formatRange\", \"formatRangeToParts\", \"resolvedOptions\"].forEach(\n (method) => {\n formatter[method] =\n realFormatter[method].bind(realFormatter);\n }\n );\n\n [\"format\", \"formatToParts\"].forEach((method) => {\n formatter[method] = function (date) {\n return realFormatter[method](date || ClockIntl.clock.now);\n };\n });\n\n return formatter;\n };\n\n ClockIntl.DateTimeFormat.prototype = Object.create(\n NativeIntl.DateTimeFormat.prototype\n );\n\n ClockIntl.DateTimeFormat.supportedLocalesOf =\n NativeIntl.DateTimeFormat.supportedLocalesOf;\n\n return ClockIntl;\n }\n\n //eslint-disable-next-line jsdoc/require-jsdoc\n function enqueueJob(clock, job) {\n // enqueues a microtick-deferred task - ecma262/#sec-enqueuejob\n if (!clock.jobs) {\n clock.jobs = [];\n }\n clock.jobs.push(job);\n }\n\n //eslint-disable-next-line jsdoc/require-jsdoc\n function runJobs(clock) {\n // runs all microtick-deferred tasks - ecma262/#sec-runjobs\n if (!clock.jobs) {\n return;\n }\n for (let i = 0; i < clock.jobs.length; i++) {\n const job = clock.jobs[i];\n job.func.apply(null, job.args);\n\n checkIsNearInfiniteLimit(clock, i);\n if (clock.loopLimit && i > clock.loopLimit) {\n throw getInfiniteLoopError(clock, job);\n }\n }\n resetIsNearInfiniteLimit();\n clock.jobs = [];\n }\n\n /**\n * @param {Clock} clock\n * @param {Timer} timer\n * @returns {number} id of the created timer\n */\n function addTimer(clock, timer) {\n if (timer.func === undefined) {\n throw new Error(\"Callback must be provided to timer calls\");\n }\n\n if (addTimerReturnsObject) {\n // Node.js environment\n if (typeof timer.func !== \"function\") {\n throw new TypeError(\n `[ERR_INVALID_CALLBACK]: Callback must be a function. Received ${\n timer.func\n } of type ${typeof timer.func}`\n );\n }\n }\n\n if (isNearInfiniteLimit) {\n timer.error = new Error();\n }\n\n timer.type = timer.immediate ? \"Immediate\" : \"Timeout\";\n\n if (timer.hasOwnProperty(\"delay\")) {\n if (typeof timer.delay !== \"number\") {\n timer.delay = parseInt(timer.delay, 10);\n }\n\n if (!isNumberFinite(timer.delay)) {\n timer.delay = 0;\n }\n timer.delay = timer.delay > maxTimeout ? 1 : timer.delay;\n timer.delay = Math.max(0, timer.delay);\n }\n\n if (timer.hasOwnProperty(\"interval\")) {\n timer.type = \"Interval\";\n timer.interval = timer.interval > maxTimeout ? 1 : timer.interval;\n }\n\n if (timer.hasOwnProperty(\"animation\")) {\n timer.type = \"AnimationFrame\";\n timer.animation = true;\n }\n\n if (timer.hasOwnProperty(\"idleCallback\")) {\n timer.type = \"IdleCallback\";\n timer.idleCallback = true;\n }\n\n if (!clock.timers) {\n clock.timers = {};\n }\n\n timer.id = uniqueTimerId++;\n timer.createdAt = clock.now;\n timer.callAt =\n clock.now + (parseInt(timer.delay) || (clock.duringTick ? 1 : 0));\n\n clock.timers[timer.id] = timer;\n\n if (addTimerReturnsObject) {\n const res = {\n refed: true,\n ref: function () {\n this.refed = true;\n return res;\n },\n unref: function () {\n this.refed = false;\n return res;\n },\n hasRef: function () {\n return this.refed;\n },\n refresh: function () {\n timer.callAt =\n clock.now +\n (parseInt(timer.delay) || (clock.duringTick ? 1 : 0));\n\n // it _might_ have been removed, but if not the assignment is perfectly fine\n clock.timers[timer.id] = timer;\n\n return res;\n },\n [Symbol.toPrimitive]: function () {\n return timer.id;\n },\n };\n return res;\n }\n\n return timer.id;\n }\n\n /* eslint consistent-return: \"off\" */\n /**\n * Timer comparitor\n *\n * @param {Timer} a\n * @param {Timer} b\n * @returns {number}\n */\n function compareTimers(a, b) {\n // Sort first by absolute timing\n if (a.callAt < b.callAt) {\n return -1;\n }\n if (a.callAt > b.callAt) {\n return 1;\n }\n\n // Sort next by immediate, immediate timers take precedence\n if (a.immediate && !b.immediate) {\n return -1;\n }\n if (!a.immediate && b.immediate) {\n return 1;\n }\n\n // Sort next by creation time, earlier-created timers take precedence\n if (a.createdAt < b.createdAt) {\n return -1;\n }\n if (a.createdAt > b.createdAt) {\n return 1;\n }\n\n // Sort next by id, lower-id timers take precedence\n if (a.id < b.id) {\n return -1;\n }\n if (a.id > b.id) {\n return 1;\n }\n\n // As timer ids are unique, no fallback `0` is necessary\n }\n\n /**\n * @param {Clock} clock\n * @param {number} from\n * @param {number} to\n * @returns {Timer}\n */\n function firstTimerInRange(clock, from, to) {\n const timers = clock.timers;\n let timer = null;\n let id, isInRange;\n\n for (id in timers) {\n if (timers.hasOwnProperty(id)) {\n isInRange = inRange(from, to, timers[id]);\n\n if (\n isInRange &&\n (!timer || compareTimers(timer, timers[id]) === 1)\n ) {\n timer = timers[id];\n }\n }\n }\n\n return timer;\n }\n\n /**\n * @param {Clock} clock\n * @returns {Timer}\n */\n function firstTimer(clock) {\n const timers = clock.timers;\n let timer = null;\n let id;\n\n for (id in timers) {\n if (timers.hasOwnProperty(id)) {\n if (!timer || compareTimers(timer, timers[id]) === 1) {\n timer = timers[id];\n }\n }\n }\n\n return timer;\n }\n\n /**\n * @param {Clock} clock\n * @returns {Timer}\n */\n function lastTimer(clock) {\n const timers = clock.timers;\n let timer = null;\n let id;\n\n for (id in timers) {\n if (timers.hasOwnProperty(id)) {\n if (!timer || compareTimers(timer, timers[id]) === -1) {\n timer = timers[id];\n }\n }\n }\n\n return timer;\n }\n\n /**\n * @param {Clock} clock\n * @param {Timer} timer\n */\n function callTimer(clock, timer) {\n if (typeof timer.interval === \"number\") {\n clock.timers[timer.id].callAt += timer.interval;\n } else {\n delete clock.timers[timer.id];\n }\n\n if (typeof timer.func === \"function\") {\n timer.func.apply(null, timer.args);\n } else {\n /* eslint no-eval: \"off\" */\n const eval2 = eval;\n (function () {\n eval2(timer.func);\n })();\n }\n }\n\n /**\n * Gets clear handler name for a given timer type\n *\n * @param {string} ttype\n */\n function getClearHandler(ttype) {\n if (ttype === \"IdleCallback\" || ttype === \"AnimationFrame\") {\n return `cancel${ttype}`;\n }\n return `clear${ttype}`;\n }\n\n /**\n * Gets schedule handler name for a given timer type\n *\n * @param {string} ttype\n */\n function getScheduleHandler(ttype) {\n if (ttype === \"IdleCallback\" || ttype === \"AnimationFrame\") {\n return `request${ttype}`;\n }\n return `set${ttype}`;\n }\n\n /**\n * Creates an anonymous function to warn only once\n */\n function createWarnOnce() {\n let calls = 0;\n return function (msg) {\n // eslint-disable-next-line\n !calls++ && console.warn(msg);\n };\n }\n const warnOnce = createWarnOnce();\n\n /**\n * @param {Clock} clock\n * @param {number} timerId\n * @param {string} ttype\n */\n function clearTimer(clock, timerId, ttype) {\n if (!timerId) {\n // null appears to be allowed in most browsers, and appears to be\n // relied upon by some libraries, like Bootstrap carousel\n return;\n }\n\n if (!clock.timers) {\n clock.timers = {};\n }\n\n // in Node, the ID is stored as the primitive value for `Timeout` objects\n // for `Immediate` objects, no ID exists, so it gets coerced to NaN\n const id = Number(timerId);\n\n if (Number.isNaN(id) || id < idCounterStart) {\n const handlerName = getClearHandler(ttype);\n\n if (clock.shouldClearNativeTimers === true) {\n const nativeHandler = clock[`_${handlerName}`];\n return typeof nativeHandler === \"function\"\n ? nativeHandler(timerId)\n : undefined;\n }\n warnOnce(\n `FakeTimers: ${handlerName} was invoked to clear a native timer instead of one created by this library.` +\n \"\\nTo automatically clean-up native timers, use `shouldClearNativeTimers`.\"\n );\n }\n\n if (clock.timers.hasOwnProperty(id)) {\n // check that the ID matches a timer of the correct type\n const timer = clock.timers[id];\n if (\n timer.type === ttype ||\n (timer.type === \"Timeout\" && ttype === \"Interval\") ||\n (timer.type === \"Interval\" && ttype === \"Timeout\")\n ) {\n delete clock.timers[id];\n } else {\n const clear = getClearHandler(ttype);\n const schedule = getScheduleHandler(timer.type);\n throw new Error(\n `Cannot clear timer: timer created with ${schedule}() but cleared with ${clear}()`\n );\n }\n }\n }\n\n /**\n * @param {Clock} clock\n * @param {Config} config\n * @returns {Timer[]}\n */\n function uninstall(clock, config) {\n let method, i, l;\n const installedHrTime = \"_hrtime\";\n const installedNextTick = \"_nextTick\";\n\n for (i = 0, l = clock.methods.length; i < l; i++) {\n method = clock.methods[i];\n if (method === \"hrtime\" && _global.process) {\n _global.process.hrtime = clock[installedHrTime];\n } else if (method === \"nextTick\" && _global.process) {\n _global.process.nextTick = clock[installedNextTick];\n } else if (method === \"performance\") {\n const originalPerfDescriptor = Object.getOwnPropertyDescriptor(\n clock,\n `_${method}`\n );\n if (\n originalPerfDescriptor &&\n originalPerfDescriptor.get &&\n !originalPerfDescriptor.set\n ) {\n Object.defineProperty(\n _global,\n method,\n originalPerfDescriptor\n );\n } else if (originalPerfDescriptor.configurable) {\n _global[method] = clock[`_${method}`];\n }\n } else {\n if (_global[method] && _global[method].hadOwnProperty) {\n _global[method] = clock[`_${method}`];\n } else {\n try {\n delete _global[method];\n } catch (ignore) {\n /* eslint no-empty: \"off\" */\n }\n }\n }\n if (clock.timersModuleMethods !== undefined) {\n for (let j = 0; j < clock.timersModuleMethods.length; j++) {\n const entry = clock.timersModuleMethods[j];\n timersModule[entry.methodName] = entry.original;\n }\n }\n }\n\n if (config.shouldAdvanceTime === true) {\n _global.clearInterval(clock.attachedInterval);\n }\n\n // Prevent multiple executions which will completely remove these props\n clock.methods = [];\n\n // return pending timers, to enable checking what timers remained on uninstall\n if (!clock.timers) {\n return [];\n }\n return Object.keys(clock.timers).map(function mapper(key) {\n return clock.timers[key];\n });\n }\n\n /**\n * @param {object} target the target containing the method to replace\n * @param {string} method the keyname of the method on the target\n * @param {Clock} clock\n */\n function hijackMethod(target, method, clock) {\n clock[method].hadOwnProperty = Object.prototype.hasOwnProperty.call(\n target,\n method\n );\n clock[`_${method}`] = target[method];\n\n if (method === \"Date\") {\n const date = mirrorDateProperties(clock[method], target[method]);\n target[method] = date;\n } else if (method === \"Intl\") {\n target[method] = clock[method];\n } else if (method === \"performance\") {\n const originalPerfDescriptor = Object.getOwnPropertyDescriptor(\n target,\n method\n );\n // JSDOM has a read only performance field so we have to save/copy it differently\n if (\n originalPerfDescriptor &&\n originalPerfDescriptor.get &&\n !originalPerfDescriptor.set\n ) {\n Object.defineProperty(\n clock,\n `_${method}`,\n originalPerfDescriptor\n );\n\n const perfDescriptor = Object.getOwnPropertyDescriptor(\n clock,\n method\n );\n Object.defineProperty(target, method, perfDescriptor);\n } else {\n target[method] = clock[method];\n }\n } else {\n target[method] = function () {\n return clock[method].apply(clock, arguments);\n };\n\n Object.defineProperties(\n target[method],\n Object.getOwnPropertyDescriptors(clock[method])\n );\n }\n\n target[method].clock = clock;\n }\n\n /**\n * @param {Clock} clock\n * @param {number} advanceTimeDelta\n */\n function doIntervalTick(clock, advanceTimeDelta) {\n clock.tick(advanceTimeDelta);\n }\n\n /**\n * @typedef {object} Timers\n * @property {setTimeout} setTimeout\n * @property {clearTimeout} clearTimeout\n * @property {setInterval} setInterval\n * @property {clearInterval} clearInterval\n * @property {Date} Date\n * @property {Intl} Intl\n * @property {SetImmediate=} setImmediate\n * @property {function(NodeImmediate): void=} clearImmediate\n * @property {function(number[]):number[]=} hrtime\n * @property {NextTick=} nextTick\n * @property {Performance=} performance\n * @property {RequestAnimationFrame=} requestAnimationFrame\n * @property {boolean=} queueMicrotask\n * @property {function(number): void=} cancelAnimationFrame\n * @property {RequestIdleCallback=} requestIdleCallback\n * @property {function(number): void=} cancelIdleCallback\n */\n\n /** @type {Timers} */\n const timers = {\n setTimeout: _global.setTimeout,\n clearTimeout: _global.clearTimeout,\n setInterval: _global.setInterval,\n clearInterval: _global.clearInterval,\n Date: _global.Date,\n };\n\n if (setImmediatePresent) {\n timers.setImmediate = _global.setImmediate;\n timers.clearImmediate = _global.clearImmediate;\n }\n\n if (hrtimePresent) {\n timers.hrtime = _global.process.hrtime;\n }\n\n if (nextTickPresent) {\n timers.nextTick = _global.process.nextTick;\n }\n\n if (performancePresent) {\n timers.performance = _global.performance;\n }\n\n if (requestAnimationFramePresent) {\n timers.requestAnimationFrame = _global.requestAnimationFrame;\n }\n\n if (queueMicrotaskPresent) {\n timers.queueMicrotask = true;\n }\n\n if (cancelAnimationFramePresent) {\n timers.cancelAnimationFrame = _global.cancelAnimationFrame;\n }\n\n if (requestIdleCallbackPresent) {\n timers.requestIdleCallback = _global.requestIdleCallback;\n }\n\n if (cancelIdleCallbackPresent) {\n timers.cancelIdleCallback = _global.cancelIdleCallback;\n }\n\n if (intlPresent) {\n timers.Intl = _global.Intl;\n }\n\n const originalSetTimeout = _global.setImmediate || _global.setTimeout;\n\n /**\n * @param {Date|number} [start] the system time - non-integer values are floored\n * @param {number} [loopLimit] maximum number of timers that will be run when calling runAll()\n * @returns {Clock}\n */\n function createClock(start, loopLimit) {\n // eslint-disable-next-line no-param-reassign\n start = Math.floor(getEpoch(start));\n // eslint-disable-next-line no-param-reassign\n loopLimit = loopLimit || 1000;\n let nanos = 0;\n const adjustedSystemTime = [0, 0]; // [millis, nanoremainder]\n\n if (NativeDate === undefined) {\n throw new Error(\n \"The global scope doesn't have a `Date` object\" +\n \" (see https://github.com/sinonjs/sinon/issues/1852#issuecomment-419622780)\"\n );\n }\n\n const clock = {\n now: start,\n Date: createDate(),\n loopLimit: loopLimit,\n };\n\n clock.Date.clock = clock;\n\n //eslint-disable-next-line jsdoc/require-jsdoc\n function getTimeToNextFrame() {\n return 16 - ((clock.now - start) % 16);\n }\n\n //eslint-disable-next-line jsdoc/require-jsdoc\n function hrtime(prev) {\n const millisSinceStart = clock.now - adjustedSystemTime[0] - start;\n const secsSinceStart = Math.floor(millisSinceStart / 1000);\n const remainderInNanos =\n (millisSinceStart - secsSinceStart * 1e3) * 1e6 +\n nanos -\n adjustedSystemTime[1];\n\n if (Array.isArray(prev)) {\n if (prev[1] > 1e9) {\n throw new TypeError(\n \"Number of nanoseconds can't exceed a billion\"\n );\n }\n\n const oldSecs = prev[0];\n let nanoDiff = remainderInNanos - prev[1];\n let secDiff = secsSinceStart - oldSecs;\n\n if (nanoDiff < 0) {\n nanoDiff += 1e9;\n secDiff -= 1;\n }\n\n return [secDiff, nanoDiff];\n }\n return [secsSinceStart, remainderInNanos];\n }\n\n function fakePerformanceNow() {\n const hrt = hrtime();\n const millis = hrt[0] * 1000 + hrt[1] / 1e6;\n return millis;\n }\n\n if (hrtimeBigintPresent) {\n hrtime.bigint = function () {\n const parts = hrtime();\n return BigInt(parts[0]) * BigInt(1e9) + BigInt(parts[1]); // eslint-disable-line\n };\n }\n\n if (intlPresent) {\n clock.Intl = createIntl();\n clock.Intl.clock = clock;\n }\n\n clock.requestIdleCallback = function requestIdleCallback(\n func,\n timeout\n ) {\n let timeToNextIdlePeriod = 0;\n\n if (clock.countTimers() > 0) {\n timeToNextIdlePeriod = 50; // const for now\n }\n\n const result = addTimer(clock, {\n func: func,\n args: Array.prototype.slice.call(arguments, 2),\n delay:\n typeof timeout === \"undefined\"\n ? timeToNextIdlePeriod\n : Math.min(timeout, timeToNextIdlePeriod),\n idleCallback: true,\n });\n\n return Number(result);\n };\n\n clock.cancelIdleCallback = function cancelIdleCallback(timerId) {\n return clearTimer(clock, timerId, \"IdleCallback\");\n };\n\n clock.setTimeout = function setTimeout(func, timeout) {\n return addTimer(clock, {\n func: func,\n args: Array.prototype.slice.call(arguments, 2),\n delay: timeout,\n });\n };\n if (typeof _global.Promise !== \"undefined\" && utilPromisify) {\n clock.setTimeout[utilPromisify.custom] =\n function promisifiedSetTimeout(timeout, arg) {\n return new _global.Promise(function setTimeoutExecutor(\n resolve\n ) {\n addTimer(clock, {\n func: resolve,\n args: [arg],\n delay: timeout,\n });\n });\n };\n }\n\n clock.clearTimeout = function clearTimeout(timerId) {\n return clearTimer(clock, timerId, \"Timeout\");\n };\n\n clock.nextTick = function nextTick(func) {\n return enqueueJob(clock, {\n func: func,\n args: Array.prototype.slice.call(arguments, 1),\n error: isNearInfiniteLimit ? new Error() : null,\n });\n };\n\n clock.queueMicrotask = function queueMicrotask(func) {\n return clock.nextTick(func); // explicitly drop additional arguments\n };\n\n clock.setInterval = function setInterval(func, timeout) {\n // eslint-disable-next-line no-param-reassign\n timeout = parseInt(timeout, 10);\n return addTimer(clock, {\n func: func,\n args: Array.prototype.slice.call(arguments, 2),\n delay: timeout,\n interval: timeout,\n });\n };\n\n clock.clearInterval = function clearInterval(timerId) {\n return clearTimer(clock, timerId, \"Interval\");\n };\n\n if (setImmediatePresent) {\n clock.setImmediate = function setImmediate(func) {\n return addTimer(clock, {\n func: func,\n args: Array.prototype.slice.call(arguments, 1),\n immediate: true,\n });\n };\n\n if (typeof _global.Promise !== \"undefined\" && utilPromisify) {\n clock.setImmediate[utilPromisify.custom] =\n function promisifiedSetImmediate(arg) {\n return new _global.Promise(\n function setImmediateExecutor(resolve) {\n addTimer(clock, {\n func: resolve,\n args: [arg],\n immediate: true,\n });\n }\n );\n };\n }\n\n clock.clearImmediate = function clearImmediate(timerId) {\n return clearTimer(clock, timerId, \"Immediate\");\n };\n }\n\n clock.countTimers = function countTimers() {\n return (\n Object.keys(clock.timers || {}).length +\n (clock.jobs || []).length\n );\n };\n\n clock.requestAnimationFrame = function requestAnimationFrame(func) {\n const result = addTimer(clock, {\n func: func,\n delay: getTimeToNextFrame(),\n get args() {\n return [fakePerformanceNow()];\n },\n animation: true,\n });\n\n return Number(result);\n };\n\n clock.cancelAnimationFrame = function cancelAnimationFrame(timerId) {\n return clearTimer(clock, timerId, \"AnimationFrame\");\n };\n\n clock.runMicrotasks = function runMicrotasks() {\n runJobs(clock);\n };\n\n /**\n * @param {number|string} tickValue milliseconds or a string parseable by parseTime\n * @param {boolean} isAsync\n * @param {Function} resolve\n * @param {Function} reject\n * @returns {number|undefined} will return the new `now` value or nothing for async\n */\n function doTick(tickValue, isAsync, resolve, reject) {\n const msFloat =\n typeof tickValue === \"number\"\n ? tickValue\n : parseTime(tickValue);\n const ms = Math.floor(msFloat);\n const remainder = nanoRemainder(msFloat);\n let nanosTotal = nanos + remainder;\n let tickTo = clock.now + ms;\n\n if (msFloat < 0) {\n throw new TypeError(\"Negative ticks are not supported\");\n }\n\n // adjust for positive overflow\n if (nanosTotal >= 1e6) {\n tickTo += 1;\n nanosTotal -= 1e6;\n }\n\n nanos = nanosTotal;\n let tickFrom = clock.now;\n let previous = clock.now;\n // ESLint fails to detect this correctly\n /* eslint-disable prefer-const */\n let timer,\n firstException,\n oldNow,\n nextPromiseTick,\n compensationCheck,\n postTimerCall;\n /* eslint-enable prefer-const */\n\n clock.duringTick = true;\n\n // perform microtasks\n oldNow = clock.now;\n runJobs(clock);\n if (oldNow !== clock.now) {\n // compensate for any setSystemTime() call during microtask callback\n tickFrom += clock.now - oldNow;\n tickTo += clock.now - oldNow;\n }\n\n //eslint-disable-next-line jsdoc/require-jsdoc\n function doTickInner() {\n // perform each timer in the requested range\n timer = firstTimerInRange(clock, tickFrom, tickTo);\n // eslint-disable-next-line no-unmodified-loop-condition\n while (timer && tickFrom <= tickTo) {\n if (clock.timers[timer.id]) {\n tickFrom = timer.callAt;\n clock.now = timer.callAt;\n oldNow = clock.now;\n try {\n runJobs(clock);\n callTimer(clock, timer);\n } catch (e) {\n firstException = firstException || e;\n }\n\n if (isAsync) {\n // finish up after native setImmediate callback to allow\n // all native es6 promises to process their callbacks after\n // each timer fires.\n originalSetTimeout(nextPromiseTick);\n return;\n }\n\n compensationCheck();\n }\n\n postTimerCall();\n }\n\n // perform process.nextTick()s again\n oldNow = clock.now;\n runJobs(clock);\n if (oldNow !== clock.now) {\n // compensate for any setSystemTime() call during process.nextTick() callback\n tickFrom += clock.now - oldNow;\n tickTo += clock.now - oldNow;\n }\n clock.duringTick = false;\n\n // corner case: during runJobs new timers were scheduled which could be in the range [clock.now, tickTo]\n timer = firstTimerInRange(clock, tickFrom, tickTo);\n if (timer) {\n try {\n clock.tick(tickTo - clock.now); // do it all again - for the remainder of the requested range\n } catch (e) {\n firstException = firstException || e;\n }\n } else {\n // no timers remaining in the requested range: move the clock all the way to the end\n clock.now = tickTo;\n\n // update nanos\n nanos = nanosTotal;\n }\n if (firstException) {\n throw firstException;\n }\n\n if (isAsync) {\n resolve(clock.now);\n } else {\n return clock.now;\n }\n }\n\n nextPromiseTick =\n isAsync &&\n function () {\n try {\n compensationCheck();\n postTimerCall();\n doTickInner();\n } catch (e) {\n reject(e);\n }\n };\n\n compensationCheck = function () {\n // compensate for any setSystemTime() call during timer callback\n if (oldNow !== clock.now) {\n tickFrom += clock.now - oldNow;\n tickTo += clock.now - oldNow;\n previous += clock.now - oldNow;\n }\n };\n\n postTimerCall = function () {\n timer = firstTimerInRange(clock, previous, tickTo);\n previous = tickFrom;\n };\n\n return doTickInner();\n }\n\n /**\n * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n * @returns {number} will return the new `now` value\n */\n clock.tick = function tick(tickValue) {\n return doTick(tickValue, false);\n };\n\n if (typeof _global.Promise !== \"undefined\") {\n /**\n * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n * @returns {Promise}\n */\n clock.tickAsync = function tickAsync(tickValue) {\n return new _global.Promise(function (resolve, reject) {\n originalSetTimeout(function () {\n try {\n doTick(tickValue, true, resolve, reject);\n } catch (e) {\n reject(e);\n }\n });\n });\n };\n }\n\n clock.next = function next() {\n runJobs(clock);\n const timer = firstTimer(clock);\n if (!timer) {\n return clock.now;\n }\n\n clock.duringTick = true;\n try {\n clock.now = timer.callAt;\n callTimer(clock, timer);\n runJobs(clock);\n return clock.now;\n } finally {\n clock.duringTick = false;\n }\n };\n\n if (typeof _global.Promise !== \"undefined\") {\n clock.nextAsync = function nextAsync() {\n return new _global.Promise(function (resolve, reject) {\n originalSetTimeout(function () {\n try {\n const timer = firstTimer(clock);\n if (!timer) {\n resolve(clock.now);\n return;\n }\n\n let err;\n clock.duringTick = true;\n clock.now = timer.callAt;\n try {\n callTimer(clock, timer);\n } catch (e) {\n err = e;\n }\n clock.duringTick = false;\n\n originalSetTimeout(function () {\n if (err) {\n reject(err);\n } else {\n resolve(clock.now);\n }\n });\n } catch (e) {\n reject(e);\n }\n });\n });\n };\n }\n\n clock.runAll = function runAll() {\n let numTimers, i;\n runJobs(clock);\n for (i = 0; i < clock.loopLimit; i++) {\n if (!clock.timers) {\n resetIsNearInfiniteLimit();\n return clock.now;\n }\n\n numTimers = Object.keys(clock.timers).length;\n if (numTimers === 0) {\n resetIsNearInfiniteLimit();\n return clock.now;\n }\n\n clock.next();\n checkIsNearInfiniteLimit(clock, i);\n }\n\n const excessJob = firstTimer(clock);\n throw getInfiniteLoopError(clock, excessJob);\n };\n\n clock.runToFrame = function runToFrame() {\n return clock.tick(getTimeToNextFrame());\n };\n\n if (typeof _global.Promise !== \"undefined\") {\n clock.runAllAsync = function runAllAsync() {\n return new _global.Promise(function (resolve, reject) {\n let i = 0;\n /**\n *\n */\n function doRun() {\n originalSetTimeout(function () {\n try {\n let numTimers;\n if (i < clock.loopLimit) {\n if (!clock.timers) {\n resetIsNearInfiniteLimit();\n resolve(clock.now);\n return;\n }\n\n numTimers = Object.keys(\n clock.timers\n ).length;\n if (numTimers === 0) {\n resetIsNearInfiniteLimit();\n resolve(clock.now);\n return;\n }\n\n clock.next();\n\n i++;\n\n doRun();\n checkIsNearInfiniteLimit(clock, i);\n return;\n }\n\n const excessJob = firstTimer(clock);\n reject(getInfiniteLoopError(clock, excessJob));\n } catch (e) {\n reject(e);\n }\n });\n }\n doRun();\n });\n };\n }\n\n clock.runToLast = function runToLast() {\n const timer = lastTimer(clock);\n if (!timer) {\n runJobs(clock);\n return clock.now;\n }\n\n return clock.tick(timer.callAt - clock.now);\n };\n\n if (typeof _global.Promise !== \"undefined\") {\n clock.runToLastAsync = function runToLastAsync() {\n return new _global.Promise(function (resolve, reject) {\n originalSetTimeout(function () {\n try {\n const timer = lastTimer(clock);\n if (!timer) {\n resolve(clock.now);\n }\n\n resolve(clock.tickAsync(timer.callAt - clock.now));\n } catch (e) {\n reject(e);\n }\n });\n });\n };\n }\n\n clock.reset = function reset() {\n nanos = 0;\n clock.timers = {};\n clock.jobs = [];\n clock.now = start;\n };\n\n clock.setSystemTime = function setSystemTime(systemTime) {\n // determine time difference\n const newNow = getEpoch(systemTime);\n const difference = newNow - clock.now;\n let id, timer;\n\n adjustedSystemTime[0] = adjustedSystemTime[0] + difference;\n adjustedSystemTime[1] = adjustedSystemTime[1] + nanos;\n // update 'system clock'\n clock.now = newNow;\n nanos = 0;\n\n // update timers and intervals to keep them stable\n for (id in clock.timers) {\n if (clock.timers.hasOwnProperty(id)) {\n timer = clock.timers[id];\n timer.createdAt += difference;\n timer.callAt += difference;\n }\n }\n };\n\n /**\n * @param {string|number} tickValue number of milliseconds or a human-readable value like \"01:11:15\"\n * @returns {number} will return the new `now` value\n */\n clock.jump = function jump(tickValue) {\n const msFloat =\n typeof tickValue === \"number\"\n ? tickValue\n : parseTime(tickValue);\n const ms = Math.floor(msFloat);\n\n for (const timer of Object.values(clock.timers)) {\n if (clock.now + ms > timer.callAt) {\n timer.callAt = clock.now + ms;\n }\n }\n clock.tick(ms);\n };\n\n if (performancePresent) {\n clock.performance = Object.create(null);\n clock.performance.now = fakePerformanceNow;\n }\n\n if (hrtimePresent) {\n clock.hrtime = hrtime;\n }\n\n return clock;\n }\n\n /* eslint-disable complexity */\n\n /**\n * @param {Config=} [config] Optional config\n * @returns {Clock}\n */\n function install(config) {\n if (\n arguments.length > 1 ||\n config instanceof Date ||\n Array.isArray(config) ||\n typeof config === \"number\"\n ) {\n throw new TypeError(\n `FakeTimers.install called with ${String(\n config\n )} install requires an object parameter`\n );\n }\n\n if (_global.Date.isFake === true) {\n // Timers are already faked; this is a problem.\n // Make the user reset timers before continuing.\n throw new TypeError(\n \"Can't install fake timers twice on the same global object.\"\n );\n }\n\n // eslint-disable-next-line no-param-reassign\n config = typeof config !== \"undefined\" ? config : {};\n config.shouldAdvanceTime = config.shouldAdvanceTime || false;\n config.advanceTimeDelta = config.advanceTimeDelta || 20;\n config.shouldClearNativeTimers =\n config.shouldClearNativeTimers || false;\n\n if (config.target) {\n throw new TypeError(\n \"config.target is no longer supported. Use `withGlobal(target)` instead.\"\n );\n }\n\n let i, l;\n const clock = createClock(config.now, config.loopLimit);\n clock.shouldClearNativeTimers = config.shouldClearNativeTimers;\n\n clock.uninstall = function () {\n return uninstall(clock, config);\n };\n\n clock.methods = config.toFake || [];\n\n if (clock.methods.length === 0) {\n // do not fake nextTick by default - GitHub#126\n clock.methods = Object.keys(timers).filter(function (key) {\n return key !== \"nextTick\" && key !== \"queueMicrotask\";\n });\n }\n\n if (config.shouldAdvanceTime === true) {\n const intervalTick = doIntervalTick.bind(\n null,\n clock,\n config.advanceTimeDelta\n );\n const intervalId = _global.setInterval(\n intervalTick,\n config.advanceTimeDelta\n );\n clock.attachedInterval = intervalId;\n }\n\n if (clock.methods.includes(\"performance\")) {\n const proto = (() => {\n if (hasPerformanceConstructorPrototype) {\n return _global.performance.constructor.prototype;\n }\n if (hasPerformancePrototype) {\n return _global.Performance.prototype;\n }\n })();\n if (proto) {\n Object.getOwnPropertyNames(proto).forEach(function (name) {\n if (name !== \"now\") {\n clock.performance[name] =\n name.indexOf(\"getEntries\") === 0\n ? NOOP_ARRAY\n : NOOP;\n }\n });\n } else if ((config.toFake || []).includes(\"performance\")) {\n // user explicitly tried to fake performance when not present\n throw new ReferenceError(\n \"non-existent performance object cannot be faked\"\n );\n }\n }\n if (_global === globalObject && timersModule) {\n clock.timersModuleMethods = [];\n }\n for (i = 0, l = clock.methods.length; i < l; i++) {\n const nameOfMethodToReplace = clock.methods[i];\n if (nameOfMethodToReplace === \"hrtime\") {\n if (\n _global.process &&\n typeof _global.process.hrtime === \"function\"\n ) {\n hijackMethod(_global.process, nameOfMethodToReplace, clock);\n }\n } else if (nameOfMethodToReplace === \"nextTick\") {\n if (\n _global.process &&\n typeof _global.process.nextTick === \"function\"\n ) {\n hijackMethod(_global.process, nameOfMethodToReplace, clock);\n }\n } else {\n hijackMethod(_global, nameOfMethodToReplace, clock);\n }\n if (\n clock.timersModuleMethods !== undefined &&\n timersModule[nameOfMethodToReplace]\n ) {\n const original = timersModule[nameOfMethodToReplace];\n clock.timersModuleMethods.push({\n methodName: nameOfMethodToReplace,\n original: original,\n });\n timersModule[nameOfMethodToReplace] =\n _global[nameOfMethodToReplace];\n }\n }\n\n return clock;\n }\n\n /* eslint-enable complexity */\n\n return {\n timers: timers,\n createClock: createClock,\n install: install,\n withGlobal: withGlobal,\n };\n}\n\n/**\n * @typedef {object} FakeTimers\n * @property {Timers} timers\n * @property {createClock} createClock\n * @property {Function} install\n * @property {withGlobal} withGlobal\n */\n\n/* eslint-enable complexity */\n\n/** @type {FakeTimers} */\nconst defaultImplementation = withGlobal(globalObject);\n\ndefaultImplementation.timers;\ndefaultImplementation.createClock;\ndefaultImplementation.install;\nvar withGlobal_1 = withGlobal;\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 = withGlobal_1(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 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 var _a, _b, _c;\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 (((_b = (_a = this._userConfig) == null ? void 0 : _a.toFake) == null ? void 0 : _b.includes(\"nextTick\")) && isChildProcess()) {\n throw new Error(\n \"process.nextTick cannot be mocked inside child_process\"\n );\n }\n const existingFakedMethods = (((_c = this._userConfig) == null ? void 0 : _c.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 function _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 }\n const workerState = getWorkerState();\n let _timers;\n const timers = () => _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 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 == null ? void 0 : stack.file) || \"\";\n };\n const utils = {\n useFakeTimers(config) {\n var _a, _b, _c, _d;\n if (isChildProcess()) {\n if (((_a = config == null ? void 0 : config.toFake) == null ? void 0 : _a.includes(\"nextTick\")) || ((_d = (_c = (_b = workerState.config) == null ? void 0 : _b.fakeTimers) == null ? void 0 : _c.toFake) == null ? void 0 : _d.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 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 factory ? () => factory(\n () => _mocker().importActual(\n path,\n importer,\n _mocker().getMockContext().callstack\n )\n ) : void 0,\n true\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 factory ? () => factory(\n () => _mocker().importActual(\n path,\n importer,\n _mocker().getMockContext().callstack\n )\n ) : void 0,\n false\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 {\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;\n\nexport { globalExpect as a, vitest as b, createExpect as c, getSnapshotClient as g, resetModules as r, vi as v };\n","import { afterAll, afterEach, beforeAll, beforeEach, describe, it, onTestFailed, onTestFinished, suite, test } from '@vitest/runner';\nimport { b as bench } from './benchmark.B6pblCp2.js';\nimport { i as isFirstRun, a as runOnce } from './run-once.Db8Hgq9X.js';\nimport { c as createExpect, a as globalExpect, v as vi, b as vitest } from './vi.DXACdGTu.js';\nimport { g as getWorkerState } from './global.7bFbnyXl.js';\nimport * as chai from 'chai';\nimport { assert, should } from 'chai';\n\nfunction getRunningMode() {\n return process.env.VITEST_MODE === \"WATCH\" ? \"watch\" : \"run\";\n}\nfunction isWatchMode() {\n return getRunningMode() === \"watch\";\n}\n\nfunction inject(key) {\n const workerState = getWorkerState();\n return workerState.providedContext[key];\n}\n\nvar dist = {};\n\n(function (exports) {\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.expectTypeOf = void 0;\n\tconst fn = () => true;\n\t/**\n\t * Similar to Jest's `expect`, but with type-awareness.\n\t * Gives you access to a number of type-matchers that let you make assertions about the\n\t * form of a reference or generic type parameter.\n\t *\n\t * @example\n\t * import {foo, bar} from '../foo'\n\t * import {expectTypeOf} from 'expect-type'\n\t *\n\t * test('foo types', () => {\n\t * // make sure `foo` has type {a: number}\n\t * expectTypeOf(foo).toMatchTypeOf({a: 1})\n\t * expectTypeOf(foo).toHaveProperty('a').toBeNumber()\n\t *\n\t * // make sure `bar` is a function taking a string:\n\t * expectTypeOf(bar).parameter(0).toBeString()\n\t * expectTypeOf(bar).returns.not.toBeAny()\n\t * })\n\t *\n\t * @description\n\t * See the [full docs](https://npmjs.com/package/expect-type#documentation) for lots more examples.\n\t */\n\tconst expectTypeOf = (_actual) => {\n\t const nonFunctionProperties = [\n\t 'parameters',\n\t 'returns',\n\t 'resolves',\n\t 'not',\n\t 'items',\n\t 'constructorParameters',\n\t 'thisParameter',\n\t 'instance',\n\t 'guards',\n\t 'asserts',\n\t 'branded',\n\t ];\n\t const obj = {\n\t /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\t toBeAny: fn,\n\t toBeUnknown: fn,\n\t toBeNever: fn,\n\t toBeFunction: fn,\n\t toBeObject: fn,\n\t toBeArray: fn,\n\t toBeString: fn,\n\t toBeNumber: fn,\n\t toBeBoolean: fn,\n\t toBeVoid: fn,\n\t toBeSymbol: fn,\n\t toBeNull: fn,\n\t toBeUndefined: fn,\n\t toBeNullable: fn,\n\t toMatchTypeOf: fn,\n\t toEqualTypeOf: fn,\n\t toBeCallableWith: fn,\n\t toBeConstructibleWith: fn,\n\t /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n\t extract: exports.expectTypeOf,\n\t exclude: exports.expectTypeOf,\n\t pick: exports.expectTypeOf,\n\t omit: exports.expectTypeOf,\n\t toHaveProperty: exports.expectTypeOf,\n\t parameter: exports.expectTypeOf,\n\t };\n\t const getterProperties = nonFunctionProperties;\n\t getterProperties.forEach((prop) => Object.defineProperty(obj, prop, { get: () => (0, exports.expectTypeOf)({}) }));\n\t return obj;\n\t};\n\texports.expectTypeOf = expectTypeOf; \n} (dist));\n\nfunction noop() {\n}\nconst assertType = noop;\n\nvar VitestIndex = /*#__PURE__*/Object.freeze({\n __proto__: null,\n afterAll: afterAll,\n afterEach: afterEach,\n assert: assert,\n assertType: assertType,\n beforeAll: beforeAll,\n beforeEach: beforeEach,\n bench: bench,\n chai: chai,\n createExpect: createExpect,\n describe: describe,\n expect: globalExpect,\n expectTypeOf: dist.expectTypeOf,\n getRunningMode: getRunningMode,\n inject: inject,\n isFirstRun: isFirstRun,\n isWatchMode: isWatchMode,\n it: it,\n onTestFailed: onTestFailed,\n onTestFinished: onTestFinished,\n runOnce: runOnce,\n should: should,\n suite: suite,\n test: test,\n vi: vi,\n vitest: vitest\n});\n\nexport { VitestIndex as V, isWatchMode as a, assertType as b, dist as d, getRunningMode as g, inject as i };\n","export { afterAll, afterEach, beforeAll, beforeEach, describe, it, onTestFailed, onTestFinished, suite, test } from '@vitest/runner';\nexport { b as bench } from './vendor/benchmark.B6pblCp2.js';\nexport { i as isFirstRun, a as runOnce } from './vendor/run-once.Db8Hgq9X.js';\nexport { c as createExpect, a as expect, v as vi, b as vitest } from './vendor/vi.DXACdGTu.js';\nimport { d as dist } from './vendor/index.Hqvcg1pf.js';\nexport { b as assertType, g as getRunningMode, i as inject, a as isWatchMode } from './vendor/index.Hqvcg1pf.js';\nimport * as chai from 'chai';\nexport { chai };\nexport { assert, should } from 'chai';\nimport '@vitest/runner/utils';\nimport '@vitest/utils';\nimport './vendor/index.BJmtb_7W.js';\nimport 'pathe';\nimport './vendor/global.7bFbnyXl.js';\nimport './vendor/env.2ltrQNq0.js';\nimport 'std-env';\nimport './vendor/_commonjsHelpers.BFTU3MAI.js';\nimport '@vitest/expect';\nimport '@vitest/snapshot';\nimport '@vitest/utils/error';\nimport './vendor/tasks.DhVtQBtW.js';\nimport '@vitest/utils/source-map';\nimport './vendor/base.CTYV4Gnz.js';\nimport './vendor/date.W2xKR2qe.js';\nimport '@vitest/spy';\n\n\n\nvar expectTypeOf = dist.expectTypeOf;\nexport { expectTypeOf };\n","import { join } from 'node:path';\nimport { rmEvent, rmEventById, writeEvent, versionEvent, getEvent, addFileToEvent, addSchemaToEvent } from './events';\nimport { writeService, getService, versionService, rmService, rmServiceById, addFileToService } from './services';\n\n/**\n * Init the SDK for EventCatalog\n *\n * @param path - The path to the EventCatalog directory\n *\n */\nexport default (path: string) => {\n return {\n /**\n * Returns an events from EventCatalog\n * @param id - The id of the event to retrieve\n * @param version - Optional id of the version to get\n * @returns\n */\n getEvent: getEvent(join(path, 'events')),\n /**\n * Adds an event to EventCatalog\n *\n * @param event - The event to write\n * @param options - Optional options to write the event\n *\n */\n writeEvent: writeEvent(join(path, 'events')),\n /**\n * Remove an event to EventCatalog (modeled on the standard POSIX rm utility)\n *\n * @param path - The path to your event, e.g. `/Inventory/InventoryAdjusted`\n *\n */\n rmEvent: rmEvent(join(path, 'events')),\n /**\n * Remove an event by an Event id\n *\n * @param id - The id of the event you want to remove\n *\n */\n rmEventById: rmEventById(join(path, 'events')),\n /**\n * Moves a given event id to the version directory\n * @param directory\n */\n versionEvent: versionEvent(join(path, 'events')),\n /**\n * Adds a file to the given event\n * @param id - The id of the event to add the file to\n * @param file - File contents to add including the content and the file name\n * @param version - Optional version of the event to add the file to\n * @returns\n */\n addFileToEvent: addFileToEvent(join(path, 'events')),\n /**\n * Adds a schema to the given event\n * @param id - The id of the event to add the schema to\n * @param schema - Schema contents to add including the content and the file name\n * @param version - Optional version of the event to add the schema to\n * @returns\n */\n addSchemaToEvent: addSchemaToEvent(join(path, 'events')),\n\n /**\n * ================================\n * SERVICES\n * ================================\n */\n\n /**\n * Adds a service to EventCatalog\n *\n * @param service - The service to write\n * @param options - Optional options to write the event\n *\n */\n writeService: writeService(join(path, 'services')),\n /**\n * Returns a service from EventCatalog\n * @param id - The id of the service to retrieve\n * @param version - Optional id of the version to get\n * @returns\n */\n getService: getService(join(path, 'services')),\n /**\n * Moves a given service id to the version directory\n * @param directory\n */\n versionService: versionService(join(path, 'services')),\n /**\n * Remove a service from EventCatalog (modeled on the standard POSIX rm utility)\n *\n * @param path - The path to your service, e.g. `/InventoryService`\n *\n */\n rmService: rmService(join(path, 'services')),\n /**\n * Remove an service by an service id\n *\n * @param id - The id of the service you want to remove\n *\n */\n rmServiceById: rmServiceById(join(path, 'services')),\n /**\n * Adds a file to the given service\n * @param id - The id of the service to add the file to\n * @param file - File contents to add including the content and the file name\n * @param version - Optional version of the service to add the file to\n * @returns\n */\n addFileToService: addFileToService(join(path, 'services')),\n };\n};\n","import matter from 'gray-matter';\nimport fs from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { dirname } from 'node:path';\nimport { copyDir, findFileById, getFiles, searchFilesForId, versionExists } from './internal/utils';\nimport type { Event } from './types';\n\n/**\n * Returns an event from EventCatalog.\n *\n * You can optionally specify a version to get a specific version of the event\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { getEvent } = utils('/path/to/eventcatalog');\n *\n * // Gets the latest version of the event\n * cont event = await getEvent('InventoryAdjusted');\n *\n * // Gets a version of the event\n * cont event = await getEvent('InventoryAdjusted', '0.0.1');\n * ```\n */\nexport const getEvent =\n (directory: string) =>\n async (id: string, version?: string): Promise<Event> => {\n const file = await findFileById(directory, id, version);\n\n if (!file) throw new Error(`No event found for the given id: ${id}` + (version ? ` and version ${version}` : ''));\n\n const { data, content } = matter.read(file);\n\n return {\n ...data,\n markdown: content.trim(),\n } as Event;\n };\n\n/**\n * Write an event to EventCatalog.\n *\n * You can optionally overide the path of the event.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { writeEvent } = utils('/path/to/eventcatalog');\n *\n * // Write an event to the catalog\n * // Event would be written to events/InventoryAdjusted\n * await writeEvent({\n * id: 'InventoryAdjusted',\n * name: 'Inventory Adjusted',\n * version: '0.0.1',\n * summary: 'This is a summary',\n * markdown: '# Hello world',\n * });\n *\n * // Write an event to the catalog but override the path\n * // Event would be written to events/Inventory/InventoryAdjusted\n * await writeEvent({\n * id: 'InventoryAdjusted',\n * name: 'Inventory Adjusted',\n * version: '0.0.1',\n * summary: 'This is a summary',\n * markdown: '# Hello world',\n * }, { path: \"/Inventory/InventoryAdjusted\"});\n * ```\n */\nexport const writeEvent =\n (directory: string) =>\n async (event: Event, options: { path: string } = { path: '' }) => {\n // Get the path\n const path = options.path || `/${event.id}`;\n const exists = await versionExists(directory, event.id, event.version);\n\n if (exists) {\n throw new Error(`Failed to write event as the version ${event.version} already exists`);\n }\n\n const { markdown, ...frontmatter } = event;\n const document = matter.stringify(markdown.trim(), frontmatter);\n await fs.mkdir(join(directory, path), { recursive: true });\n await fs.writeFile(join(directory, path, 'index.md'), document);\n };\n\n/**\n * Delete an event at it's given path.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { rmEvent } = utils('/path/to/eventcatalog');\n *\n * // removes an event at the given path (events dir is appended to the given path)\n * // Removes the event at events/InventoryAdjusted\n * await rmEvent('/InventoryAdjusted');\n * ```\n */\nexport const rmEvent = (directory: string) => async (path: string) => {\n await fs.rm(join(directory, path), { recursive: true });\n};\n\n/**\n * Delete an event by it's id.\n *\n * Optionally specify a version to delete a specific version of the event.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { rmEventById } = utils('/path/to/eventcatalog');\n *\n * // deletes the latest InventoryAdjusted event\n * await rmEventById('InventoryAdjusted');\n *\n * // deletes a specific version of the InventoryAdjusted event\n * await rmEventById('InventoryAdjusted', '0.0.1');\n * ```\n */\nexport const rmEventById = (directory: string) => async (id: string, version?: string) => {\n // Find all the events in the directory\n const files = await getFiles(`${directory}/**/index.md`);\n\n const matchedFiles = await searchFilesForId(files, id, version);\n\n if (matchedFiles.length === 0) {\n throw new Error(`No event found with id: ${id}`);\n }\n\n await Promise.all(matchedFiles.map((file) => fs.rm(file)));\n};\n\n/**\n * Version an event by it's id.\n *\n * Takes the latest event and moves it to a versioned directory.\n * All files with this event are also versioned (e.g /events/InventoryAdjusted/schema.json)\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { versionEvent } = utils('/path/to/eventcatalog');\n *\n * // moves the latest InventoryAdjusted event to a versioned directory\n * // the version within that event is used as the version number.\n * await versionEvent('InventoryAdjusted');\n *\n * ```\n */\nexport const versionEvent = (directory: string) => async (id: string) => {\n // Find all the events in the directory\n const files = await getFiles(`${directory}/**/index.md`);\n const matchedFiles = await searchFilesForId(files, id);\n\n if (matchedFiles.length === 0) {\n throw new Error(`No event found with id: ${id}`);\n }\n\n // Event that is in the route of the project\n const file = matchedFiles[0];\n const eventDirectory = dirname(file);\n const { data: { version = '0.0.1' } = {} } = matter.read(file);\n const targetDirectory = join(eventDirectory, 'versioned', version);\n\n await fs.mkdir(targetDirectory, { recursive: true });\n\n // Copy the event to the versioned directory\n await copyDir(directory, eventDirectory, targetDirectory, (src) => {\n return !src.includes('versioned');\n });\n\n // Remove all the files in the root of the resource as they have now been versioned\n await fs.readdir(eventDirectory).then(async (resourceFiles) => {\n await Promise.all(\n resourceFiles.map(async (file) => {\n if (file !== 'versioned') {\n await fs.rm(join(eventDirectory, file), { recursive: true });\n }\n })\n );\n });\n};\n\n/**\n * Add a file to an event by it's id.\n *\n * Optionally specify a version to add a file to a specific version of the event.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { addFileToEvent } = utils('/path/to/eventcatalog');\n *\n * // adds a file to the latest InventoryAdjusted event\n * await addFileToEvent('InventoryAdjusted', { content: 'Hello world', fileName: 'hello.txt' });\n *\n * // adds a file to a specific version of the InventoryAdjusted event\n * await addFileToEvent('InventoryAdjusted', { content: 'Hello world', fileName: 'hello.txt' }, '0.0.1');\n *\n * ```\n */\nexport const addFileToEvent =\n (directory: string) => async (id: string, file: { content: string; fileName: string }, version?: string) => {\n const pathToEvent = await findFileById(directory, id, version);\n if (!pathToEvent) throw new Error('Cannot find directory to write file to');\n const contentDirectory = dirname(pathToEvent);\n await fs.writeFile(join(contentDirectory, file.fileName), file.content);\n };\n\n/**\n * Add a schema to an event by it's id.\n *\n * Optionally specify a version to add a schame to a specific version of the event.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { addSchemaToEvent } = utils('/path/to/eventcatalog');\n *\n * // JSON schema example\n * const schema = {\n * \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n * \"type\": \"object\",\n * \"properties\": {\n * \"name\": {\n * \"type\": \"string\"\n * },\n * \"age\": {\n * \"type\": \"number\"\n * }\n * },\n * \"required\": [\"name\", \"age\"]\n * };\n *\n * // adds a schema to the latest InventoryAdjusted event\n * await addSchemaToEvent('InventoryAdjusted', { schema, fileName: 'schema.json' });\n *\n * // adds a file to a specific version of the InventoryAdjusted event\n * await addSchemaToEvent('InventoryAdjusted', { schema, fileName: 'schema.json' }, '0.0.1');\n *\n * ```\n */\nexport const addSchemaToEvent =\n (directory: string) => async (id: string, schema: { schema: string; fileName: string }, version?: string) => {\n await addFileToEvent(directory)(id, { content: schema.schema, fileName: schema.fileName }, version);\n };\n","import { glob } from 'glob';\nimport fs from 'node:fs/promises';\nimport { copy, CopyFilterAsync, CopyFilterSync } from 'fs-extra';\nimport { join } from 'node:path';\n\n/**\n * Returns true if a given version of a resource id exists in the catalog\n */\nexport const versionExists = async (catalogDir: string, id: string, version: string) => {\n const files = await getFiles(`${catalogDir}/**/index.md`);\n const matchedFiles = (await searchFilesForId(files, id, version)) || [];\n return matchedFiles.length > 0;\n};\n\nexport const findFileById = async (catalogDir: string, id: string, version?: string): Promise<string | undefined> => {\n const files = await getFiles(`${catalogDir}/**/index.md`);\n const matchedFiles = (await searchFilesForId(files, id)) || [];\n\n // Return the latest one\n if (!version) {\n return matchedFiles.find((path) => !path.includes('versioned'));\n }\n\n // Find the versioned event\n return matchedFiles.find((path) => path.includes(`versioned/${version}`));\n};\n\nexport const getFiles = async (pattern: string) => {\n try {\n const files = await glob(pattern, { ignore: 'node_modules/**' });\n return files;\n } catch (error) {\n throw new Error(`Error finding files: ${error}`);\n }\n};\n\nexport const searchFilesForId = async (files: string[], id: string, version?: string) => {\n const idRegex = new RegExp(`^id:\\\\s*['\"]?${id}['\"]?\\\\s*$`, 'm');\n const versionRegex = new RegExp(`^version:\\\\s*['\"]?${version}['\"]?\\\\s*$`, 'm');\n\n const matches = await Promise.all(\n files.map(async (file) => {\n const content = await fs.readFile(file, 'utf-8');\n const hasIdMatch = content.match(idRegex);\n\n // Check version if provided\n if (version && !content.match(versionRegex)) {\n return undefined;\n }\n\n if (hasIdMatch) {\n return file;\n }\n })\n );\n\n return matches.filter(Boolean).filter((file) => file !== undefined);\n};\n\n/**\n * Function to copy a directory from source to target, uses a tmp directory\n * @param catalogDir\n * @param source\n * @param target\n * @param filter\n */\nexport const copyDir = async (catalogDir: string, source: string, target: string, filter?: CopyFilterAsync | CopyFilterSync) => {\n const tmpDirectory = join(catalogDir, 'tmp');\n await fs.mkdir(tmpDirectory, { recursive: true });\n\n // Copy everything over\n await copy(source, tmpDirectory, {\n overwrite: true,\n filter,\n });\n\n await copy(tmpDirectory, target, {\n overwrite: true,\n filter,\n });\n\n // Remove the tmp directory\n await fs.rm(tmpDirectory, { recursive: true });\n};\n","import matter from 'gray-matter';\nimport { copyDir, findFileById, getFiles, searchFilesForId, versionExists } from './internal/utils';\nimport type { Service } from './types';\nimport fs from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\n\n/**\n * Returns a service from EventCatalog.\n *\n * You can optionally specify a version to get a specific version of the service\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { getService } = utils('/path/to/eventcatalog');\n *\n * // Gets the latest version of the event\n * cont event = await getService('InventoryService');\n *\n * // Gets a version of the event\n * cont event = await getService('InventoryService', '0.0.1');\n * ```\n */\nexport const getService =\n (directory: string) =>\n async (id: string, version?: string): Promise<Service> => {\n const file = await findFileById(directory, id, version);\n\n if (!file) throw new Error(`No service found for the given id: ${id}` + (version ? ` and version ${version}` : ''));\n\n const { data, content } = matter.read(file);\n\n return {\n ...data,\n markdown: content.trim(),\n } as Service;\n };\n\n/**\n * Write an event to EventCatalog.\n *\n * You can optionally overide the path of the event.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { writeService } = utils('/path/to/eventcatalog');\n *\n * // Write a service\n * // Event would be written to services/InventoryService\n * await writeService({\n * id: 'InventoryService',\n * name: 'Inventory Service',\n * version: '0.0.1',\n * summary: 'Service that handles the inventory',\n * markdown: '# Hello world',\n * });\n *\n * // Write an event to the catalog but override the path\n * // Event would be written to services/Inventory/InventoryService\n * await writeService({\n * id: 'InventoryService',\n * name: 'Inventory Adjusted',\n * version: '0.0.1',\n * summary: 'This is a summary',\n * markdown: '# Hello world',\n * }, { path: \"/Inventory/InventoryService\"});\n * ```\n */\nexport const writeService =\n (directory: string) =>\n async (service: Service, options: { path: string } = { path: '' }) => {\n // Get the path\n const path = options.path || `/${service.id}`;\n const exists = await versionExists(directory, service.id, service.version);\n\n if (exists) {\n throw new Error(`Failed to write service as the version ${service.version} already exists`);\n }\n\n const { markdown, ...frontmatter } = service;\n const document = matter.stringify(markdown.trim(), frontmatter);\n await fs.mkdir(join(directory, path), { recursive: true });\n await fs.writeFile(join(directory, path, 'index.md'), document);\n };\n\n/**\n * Version a service by it's id.\n *\n * Takes the latest service and moves it to a versioned directory.\n * All files with this service are also versioned. (e.g /services/InventoryService/openapi.yml)\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { versionService } = utils('/path/to/eventcatalog');\n *\n * // moves the latest InventoryService service to a versioned directory\n * // the version within that service is used as the version number.\n * await versionService('InventoryService');\n *\n * ```\n */\nexport const versionService = (directory: string) => async (id: string) => {\n // Find all the events in the directory\n const files = await getFiles(`${directory}/**/index.md`);\n const matchedFiles = await searchFilesForId(files, id);\n\n if (matchedFiles.length === 0) {\n throw new Error(`No service found with id: ${id}`);\n }\n\n // Service that is in the route of the project\n const file = matchedFiles[0];\n const eventDirectory = dirname(file);\n const { data: { version = '0.0.1' } = {} } = matter.read(file);\n const targetDirectory = join(eventDirectory, 'versioned', version);\n\n await fs.mkdir(targetDirectory, { recursive: true });\n\n // Copy the service to the versioned directory\n await copyDir(directory, eventDirectory, targetDirectory, (src) => {\n return !src.includes('versioned');\n });\n\n // Remove all the files in the root of the resource as they have now been versioned\n await fs.readdir(eventDirectory).then(async (resourceFiles) => {\n await Promise.all(\n resourceFiles.map(async (file) => {\n if (file !== 'versioned') {\n await fs.rm(join(eventDirectory, file), { recursive: true });\n }\n })\n );\n });\n};\n\n/**\n * Delete a service at it's given path.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { rmService } = utils('/path/to/eventcatalog');\n *\n * // Removes the service at services/InventoryService\n * await rmService('/InventoryService');\n * ```\n */\nexport const rmService = (directory: string) => async (path: string) => {\n await fs.rm(join(directory, path), { recursive: true });\n};\n\n/**\n * Delete a service by it's id.\n *\n * Optionally specify a version to delete a specific version of the service.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { rmServiceById } = utils('/path/to/eventcatalog');\n *\n * // deletes the latest InventoryService event\n * await rmServiceById('InventoryService');\n *\n * // deletes a specific version of the InventoryService event\n * await rmServiceById('InventoryService', '0.0.1');\n * ```\n */\nexport const rmServiceById = (directory: string) => async (id: string, version?: string) => {\n // Find all the events in the directory\n const files = await getFiles(`${directory}/**/index.md`);\n\n const matchedFiles = await searchFilesForId(files, id, version);\n\n if (matchedFiles.length === 0) {\n throw new Error(`No service found with id: ${id}`);\n }\n\n await Promise.all(matchedFiles.map((file) => fs.rm(file)));\n};\n\n/**\n * Add a file to a service by it's id.\n *\n * Optionally specify a version to add a file to a specific version of the service.\n *\n * @example\n * ```ts\n * import utils from '@eventcatalog/utils';\n *\n * const { addFileToService } = utils('/path/to/eventcatalog');\n *\n * // adds a file to the latest InventoryService event\n * await addFileToService('InventoryService', { content: 'Hello world', fileName: 'hello.txt' });\n *\n * // adds a file to a specific version of the InventoryService event\n * await addFileToService('InventoryService', { content: 'Hello world', fileName: 'hello.txt' }, '0.0.1');\n *\n * ```\n */\nexport const addFileToService =\n (directory: string) => async (id: string, file: { content: string; fileName: string }, version?: string) => {\n const pathToEvent = await findFileById(directory, id, version);\n if (!pathToEvent) throw new Error('Cannot find directory to write file to');\n const contentDirectory = dirname(pathToEvent);\n await fs.writeFile(join(contentDirectory, file.fileName), file.content);\n };\n","// sum.test.js\nimport { expect, it, describe, beforeEach, afterEach } from 'vitest';\nimport utils from '../index';\nimport path from 'node:path';\nimport fs from 'node:fs';\n\nconst CATALOG_PATH = path.join(__dirname, 'catalog-services');\n\nconst { writeService, getService, versionService, rmService, rmServiceById, addFileToService } = utils(CATALOG_PATH);\n\n// clean the catalog before each test\nbeforeEach(() => {\n fs.rmSync(CATALOG_PATH, { recursive: true, force: true });\n fs.mkdirSync(CATALOG_PATH, { recursive: true });\n});\n\nafterEach(() => {\n fs.rmSync(CATALOG_PATH, { recursive: true, force: true });\n});\n\ndescribe('Services SDK', () => {\n describe('getService', () => {\n it('returns the given service id from EventCatalog and the latest version when no version is given,', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n const test = await getService('InventoryService');\n\n expect(test).toEqual({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n });\n\n it('returns the given service id from EventCatalog and the requested version when a version is given,', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n await versionService('InventoryService');\n\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '1.0.0',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n const test = await getService('InventoryService', '0.0.1');\n\n expect(test).toEqual({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n });\n\n it('throws an error if the service is not found', async () => {\n await expect(getService('PaymentService')).rejects.toThrowError('No service found for the given id: PaymentService');\n });\n\n it('throws an error if the service is found but not the version', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n await expect(getService('InventoryService', '1.0.0')).rejects.toThrowError(\n 'No service found for the given id: InventoryService and version 1.0.0'\n );\n });\n });\n\n describe('writeService', () => {\n it('writes the given service to EventCatalog and assumes the path if one if not given', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n const service = await getService('InventoryService');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(true);\n\n expect(service).toEqual({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n });\n\n it('writes the given service to EventCatalog under the correct path when a path is given', async () => {\n await writeService(\n {\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n },\n { path: '/Inventory/InventoryService' }\n );\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/Inventory/InventoryService', 'index.md'))).toBe(true);\n });\n\n it('throws an error when trying to write an service that already exists', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n await expect(\n writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n })\n ).rejects.toThrowError('Failed to write service as the version 0.0.1 already exists');\n });\n });\n\n describe('versionService', () => {\n it('adds the given service to the versioned directory and removes itself from the root', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n await versionService('InventoryService');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService/versioned/0.0.1', 'index.md'))).toBe(true);\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(false);\n });\n it('adds the given service to the versioned directory and all files that are associated to it', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n // Add random file in there\n await fs.writeFileSync(path.join(CATALOG_PATH, 'services/InventoryService', 'schema.json'), 'SCHEMA!');\n\n await versionService('InventoryService');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService/versioned/0.0.1', 'index.md'))).toBe(true);\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService/versioned/0.0.1', 'schema.json'))).toBe(true);\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(false);\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'schema.json'))).toBe(false);\n });\n });\n\n describe('rmService', () => {\n it('removes a service from eventcatalog by the given path', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(true);\n\n await rmService('/InventoryService');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(false);\n });\n });\n\n describe('rmServiceById', () => {\n it('removes a service from eventcatalog by id', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(true);\n\n await rmServiceById('InventoryService');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(false);\n });\n\n it('removes a service from eventcatalog by id and version', async () => {\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(true);\n\n await rmServiceById('InventoryService', '0.0.1');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(false);\n });\n\n it('if version is given, only removes that version and not any other versions of the service', async () => {\n // write the first events\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n await versionService('InventoryService');\n\n // Write the versioned event\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Adjusted',\n version: '0.0.2',\n summary: 'This is a summary',\n markdown: '# Hello world',\n });\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(true);\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService/versioned/0.0.1', 'index.md'))).toBe(true);\n\n await rmServiceById('InventoryService', '0.0.1');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'index.md'))).toBe(true);\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryAdjusted/versioned/0.0.2', 'index.md'))).toBe(false);\n });\n });\n\n describe('addFileToService', () => {\n it('takes a given file and writes it to the location of the given service', async () => {\n const file = { content: 'hello', fileName: 'test.txt' };\n\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n await addFileToService('InventoryService', file);\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService', 'test.txt'))).toBe(true);\n });\n\n it('takes a given file and version and writes the file to the correct location', async () => {\n const file = { content: 'hello', fileName: 'test.txt' };\n\n await writeService({\n id: 'InventoryService',\n name: 'Inventory Service',\n version: '0.0.1',\n summary: 'Service tat handles the inventory',\n markdown: '# Hello world',\n });\n\n await versionService('InventoryService');\n\n await addFileToService('InventoryService', file, '0.0.1');\n\n expect(fs.existsSync(path.join(CATALOG_PATH, 'services/InventoryService/versioned/0.0.1', 'test.txt'))).toBe(true);\n });\n\n it('throws an error when trying to write to a service that does not exist', () => {\n const file = { content: 'hello', fileName: 'test.txt' };\n\n expect(addFileToService('InventoryService', file)).rejects.toThrowError('Cannot find directory to write file to');\n });\n });\n});\n"],"mappings":"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","names":["relative","intToChar","comma","chars","charToInt","isObject","toString","m","n","fn","segment","string","clone","replacement","a","array","k","k2","path","p","resolve","n","n","g","r","u","d","p","object","keys","config","printer","type","_a","d","f","g","h","k","m","n","p","u","a","r","typeOf","Element","getType","functionName","printFunctionName","escapeRegex","plugin","truncate","inspect","string","array","array","string","map","set","string","object","sep","inspectObject","truncate","inspectObject","type","toString","object","format","inspect","x","m","type","fn","keys","getType","d","foundSubsequence","isCommon","type","n","diff","string","p","a","truncate","AsymmetricMatcher","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","PLUGINS","a","getType","map","set","format","clone","type","r","path","p","keys","fn","_DRIVE_LETTER_START_RE","normalizeWindowsPath","r","_IS_ABSOLUTE_RE","cwd","path","isAbsolute","normalizeString","p","UrlType","functionName","fn","_a","suite","fn","resolve","test","runner","fn","d","test","fn","shuffle","test2","test3","fn2","_test","format","_a","fn","test","fn","formatName","fn","__defProp","__getOwnPropNames","__require","__export","inspect2","isNaN2","objDisplay","test","getConstructorName","type3","ansiColors","styles","truncator","colorise","normaliseOptions","truncate2","inspect3","truncate","string","inspectList","quoteComplexKey","inspectProperty","inspectArray","array","getArrayName","inspectTypedArray","inspectDate","inspectFunction","inspectMapEntry","mapToEntries","map","inspectMap","isNaN","inspectNumber","inspectBigInt","inspectRegExp","arrayFromSet","set2","inspectSet","stringEscapeChars","escapeCharacters","hex","unicodeLength","escape","inspectString","inspectSymbol","getPromiseValue","promise_default","inspectObject","object","sep","toStringTag","inspectClass","inspectArguments","errorKeys","inspectObject2","inspectAttribute","inspectHTMLCollection","inspectHTML","symbolsSupported","chaiInspect","nodeInspect","constructorMap","stringTagMap","baseTypesMap","inspectCustom","toString","inspect","keys","isPrimitive","comparator","path","fn","dist","a","isObject","n","test2","x","f","n","p","r","a","C","n","r","a","h","f","m","p","C","type","n","expect","map","p","object","a","a","className","IS_KEYED_SENTINEL","IS_SET_SENTINEL","IS_LIST_SENTINEL","IS_ORDERED_SENTINEL","IS_RECORD_SYMBOL","object","a","a2","object2","_a","AsymmetricMatcher","expect","functionToString","chai","test","fn","AssertionError","addMethod","n","m","k","p","type","getDefaultExportFromCjs","x","a","notNullish","isPrimitive","isObject","getCallLastIndex","getPromiseValue","nodeInspect","LineTerminatorSequence","reservedWords","f","h","n","C","g","p","r","u","d","serialize$1","config","printer","test","plugin","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","AsymmetricMatcher","PLUGINS","testName","string","serialize","_a","comma","chars","intToChar","charToInt","UrlType","path","url","type","resolve","map","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","extractLocation","parseSingleFFOrSafariStack","functionName","parseSingleV8Stack","MagicString","now","y","m","d","h","path","resolve","chaiSubset","chai","Assertion","recordAsyncExpect","test","_a","expect","fn","_test","global","object","call","copyPrototypeMethods","functionName","every","sort","a","set","globalObject","typeDetect","type","typeOf","now","toString","timers","config","fn","expectTypeOf","noop","test","join","fs","join","dirname","join","path","path","fs","join","dirname","file","matter","fs","dirname","join","matter","path","file","path","join","path","fs","writeService","getService","versionService","rmService","rmServiceById","addFileToService","test"]}
|