mastercache
Version:
Multi-tier cache module for Node.js. Redis, Upstash, CloudfareKV, File, in-memory and others drivers
1 lines • 512 kB
Source Map (JSON)
{"version":3,"sources":["../../../../node_modules/.pnpm/expect-type@1.1.0/node_modules/expect-type/dist/branding.js","../../../../node_modules/.pnpm/expect-type@1.1.0/node_modules/expect-type/dist/messages.js","../../../../node_modules/.pnpm/expect-type@1.1.0/node_modules/expect-type/dist/overloads.js","../../../../node_modules/.pnpm/expect-type@1.1.0/node_modules/expect-type/dist/utils.js","../../../../node_modules/.pnpm/expect-type@1.1.0/node_modules/expect-type/dist/index.js","../../src/test-suite.ts","../../tests/helpers/driver-test-suite.ts","../../../../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.1.8/node_modules/@vitest/pretty-format/dist/index.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/helpers.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/array.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/typedarray.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/date.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/function.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/map.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/number.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/bigint.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/regexp.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/set.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/string.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/symbol.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/promise.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/object.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/class.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/arguments.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/error.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/html.js","../../../../node_modules/.pnpm/loupe@3.1.2/node_modules/loupe/lib/index.js","../../../../node_modules/.pnpm/@vitest+utils@2.1.8/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js","../../../../node_modules/.pnpm/@vitest+utils@2.1.8/node_modules/@vitest/utils/dist/helpers.js","../../../../node_modules/.pnpm/@vitest+utils@2.1.8/node_modules/@vitest/utils/dist/index.js","../../../../node_modules/.pnpm/chai@5.1.2/node_modules/chai/chai.js","../../../../node_modules/.pnpm/@vitest+utils@2.1.8/node_modules/@vitest/utils/dist/source-map.js","../../../../node_modules/.pnpm/@vitest+runner@2.1.8/node_modules/@vitest/runner/dist/chunk-tasks.js","../../../../node_modules/.pnpm/@vitest+runner@2.1.8/node_modules/@vitest/runner/dist/index.js","../../../../node_modules/.pnpm/vitest@2.1.8_@types+node@22.10.1_@vitest+ui@2.1.8_terser@5.37.0/node_modules/vitest/dist/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nconst inverted = Symbol('inverted');\n/**\n * @internal\n */\nconst expectNull = Symbol('expectNull');\n/**\n * @internal\n */\nconst expectUndefined = Symbol('expectUndefined');\n/**\n * @internal\n */\nconst expectNumber = Symbol('expectNumber');\n/**\n * @internal\n */\nconst expectString = Symbol('expectString');\n/**\n * @internal\n */\nconst expectBoolean = Symbol('expectBoolean');\n/**\n * @internal\n */\nconst expectVoid = Symbol('expectVoid');\n/**\n * @internal\n */\nconst expectFunction = Symbol('expectFunction');\n/**\n * @internal\n */\nconst expectObject = Symbol('expectObject');\n/**\n * @internal\n */\nconst expectArray = Symbol('expectArray');\n/**\n * @internal\n */\nconst expectSymbol = Symbol('expectSymbol');\n/**\n * @internal\n */\nconst expectAny = Symbol('expectAny');\n/**\n * @internal\n */\nconst expectUnknown = Symbol('expectUnknown');\n/**\n * @internal\n */\nconst expectNever = Symbol('expectNever');\n/**\n * @internal\n */\nconst expectNullable = Symbol('expectNullable');\n/**\n * @internal\n */\nconst expectBigInt = Symbol('expectBigInt');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nconst secret = Symbol('secret');\n/**\n * @internal\n */\nconst mismatch = Symbol('mismatch');\n/**\n * A type which should match anything passed as a value but *doesn't*\n * match {@linkcode Mismatch}. It helps TypeScript select the right overload\n * for {@linkcode PositiveExpectTypeOf.toEqualTypeOf | .toEqualTypeOf()} and\n * {@linkcode PositiveExpectTypeOf.toMatchTypeOf | .toMatchTypeOf()}.\n *\n * @internal\n */\nconst avalue = Symbol('avalue');\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expectTypeOf = void 0;\n__exportStar(require(\"./branding\"), exports); // backcompat, consider removing in next major version\n__exportStar(require(\"./messages\"), exports); // backcompat, consider removing in next major version\n__exportStar(require(\"./overloads\"), exports);\n__exportStar(require(\"./utils\"), exports); // backcompat, consider removing in next major version\nconst fn = () => true;\n/**\n * Similar to Jest's `expect`, but with type-awareness.\n * Gives you access to a number of type-matchers that let you make assertions about the\n * form of a reference or generic type parameter.\n *\n * @example\n * ```ts\n * import { foo, bar } from '../foo'\n * import { expectTypeOf } from 'expect-type'\n *\n * test('foo types', () => {\n * // make sure `foo` has type { a: number }\n * expectTypeOf(foo).toMatchTypeOf({ a: 1 })\n * expectTypeOf(foo).toHaveProperty('a').toBeNumber()\n *\n * // make sure `bar` is a function taking a string:\n * expectTypeOf(bar).parameter(0).toBeString()\n * expectTypeOf(bar).returns.not.toBeAny()\n * })\n * ```\n *\n * @description\n * See the [full docs](https://npmjs.com/package/expect-type#documentation) for lots more examples.\n */\nconst expectTypeOf = (_actual) => {\n const nonFunctionProperties = [\n 'parameters',\n 'returns',\n 'resolves',\n 'not',\n 'items',\n 'constructorParameters',\n 'thisParameter',\n 'instance',\n 'guards',\n 'asserts',\n 'branded',\n ];\n const obj = {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n toBeAny: fn,\n toBeUnknown: fn,\n toBeNever: fn,\n toBeFunction: fn,\n toBeObject: fn,\n toBeArray: fn,\n toBeString: fn,\n toBeNumber: fn,\n toBeBoolean: fn,\n toBeVoid: fn,\n toBeSymbol: fn,\n toBeNull: fn,\n toBeUndefined: fn,\n toBeNullable: fn,\n toBeBigInt: fn,\n toMatchTypeOf: fn,\n toEqualTypeOf: fn,\n toBeConstructibleWith: fn,\n toBeCallableWith: exports.expectTypeOf,\n extract: exports.expectTypeOf,\n exclude: exports.expectTypeOf,\n pick: exports.expectTypeOf,\n omit: exports.expectTypeOf,\n toHaveProperty: exports.expectTypeOf,\n parameter: exports.expectTypeOf,\n };\n const getterProperties = nonFunctionProperties;\n getterProperties.forEach((prop) => Object.defineProperty(obj, prop, { get: () => (0, exports.expectTypeOf)({}) }));\n return obj;\n};\nexports.expectTypeOf = expectTypeOf;\n","export { registerCacheDriverTestSuite } from '../tests/helpers/driver-test-suite';\n","/// <reference types=\"vitest/globals\" />\nimport { setTimeout } from 'node:timers/promises';\nimport { assert, beforeAll, afterEach, test, onTestFinished } from 'vitest';\nimport type { CacheDriver, CacheDriverOptions } from '../../src/types/main';\n\nexport function registerCacheDriverTestSuite(options: {\n createDriver: (options?: CacheDriverOptions) => CacheDriver<any>\n\n /**\n * If the driver support milliseconds for TTLs\n */\n supportsMilliseconds?: boolean\n}) {\n const sleepTime = options.supportsMilliseconds ? 20 : 1000;\n\n let cache: CacheDriver;\n\n beforeAll(() => {\n cache = options.createDriver();\n return () => cache.disconnect();\n });\n \n afterEach(async () => {\n await cache.clear();\n });\n\n test('get() returns undefined when key does not exists', async () => {\n assert.deepEqual(await cache.get('key'), undefined);\n });\n\n test('get() returns value', async () => {\n await cache.set('key', 'value');\n assert.deepEqual(await cache.get('key'), 'value');\n });\n\n test('set() store a value', async () => {\n await cache.set('key', 'value');\n assert.deepEqual(await cache.get('key'), 'value');\n });\n\n test('set() store a value with expiration', async () => {\n await cache.delete('key');\n\n await cache.set('key', 'value', 1500);\n assert.deepEqual(await cache.get('key'), 'value');\n\n await setTimeout(2500);\n assert.deepEqual(await cache.get('key'), undefined);\n });\n\n test('set() returns true when value is set', async () => {\n const result = await cache.set('key', 'value');\n assert.isTrue(result);\n });\n\n test('clear() remove all keys', async () => {\n await cache.set('key1', 'value1');\n await cache.set('key2', 'value2', 60_000);\n\n await cache.clear();\n\n assert.deepEqual(await cache.get('key1'), undefined);\n assert.deepEqual(await cache.get('key2'), undefined);\n });\n\n test('clear() remove only keys with prefix', async () => {\n const cache2 = options.createDriver({ prefix: 'prefix' });\n onTestFinished(async () => {\n await cache2.clear();\n await cache2.disconnect();\n });\n\n await cache2.set('key1', 'value1');\n\n await cache.clear();\n\n assert.deepEqual(await cache2.get('key1'), 'value1');\n });\n\n test('delete() removes a key', async () => {\n await cache.set('key1', 'value1');\n await cache.delete('key1');\n assert.deepEqual(await cache.get('key1'), undefined);\n });\n\n test('deleteMany() removes many keys', async () => {\n await cache.set('key1', 'value1');\n await cache.set('key2', 'value2');\n\n await cache.deleteMany(['key1', 'key2']);\n\n assert.deepEqual(await cache.get('key1'), undefined);\n assert.deepEqual(await cache.get('key2'), undefined);\n });\n\n test('delete() returns true when key is removed', async () => {\n await cache.set('key1', 'value1');\n const result = await cache.delete('key1');\n assert.isTrue(result);\n });\n\n test('delete() returns false when key does not exists', async () => {\n const result = await cache.delete('key1');\n assert.isFalse(result);\n });\n\n test('has() returns true when key exists', async () => {\n await cache.set('key1', 'value1');\n assert.isTrue(await cache.has('key1'));\n });\n\n test('has() returns false when key does not exists', async () => {\n assert.isFalse(await cache.has('key1'));\n });\n\n test('has() should not returns true for expired key', async () => {\n await cache.set('key1', 'value1', 10);\n\n await setTimeout(sleepTime);\n assert.isFalse(await cache.has('key1'));\n });\n\n test('pull() returns value and removes it', async () => {\n await cache.set('key1', 'foo');\n const value = await cache.pull('key1');\n assert.deepEqual(value, 'foo');\n });\n\n test('pull() returns undefined when key does not exists', async () => {\n const value = await cache.pull('key1');\n assert.isUndefined(value);\n });\n\n test('namespace() returns a new instance', async () => {\n const cache2 = cache.namespace('foo');\n assert.notEqual(cache, cache2);\n });\n\n test('set() value on namespace', async () => {\n const fooNamespace = cache.namespace('foo');\n\n await fooNamespace.set('key1', 'value1');\n assert.deepEqual(await cache.get('key1'), undefined);\n assert.deepEqual(await fooNamespace.get('key1'), 'value1');\n });\n\n test('get() value from namespace', async () => {\n const fooNamespace = cache.namespace('foo');\n\n await cache.set('key1', 'value1');\n await fooNamespace.set('key1', 'value2');\n\n assert.deepEqual(await cache.get('key1'), 'value1');\n assert.deepEqual(await fooNamespace.get('key1'), 'value2');\n });\n\n test('clear() should only clear namespaces items', async () => {\n const fooNamespace = cache.namespace('foo');\n\n await cache.set('key1', 'value1');\n await fooNamespace.set('key2', 'value2');\n\n await fooNamespace.clear();\n assert.deepEqual(await cache.get('key1'), 'value1');\n assert.isUndefined(await fooNamespace.get('key2'));\n });\n\n test('clear() on root cache should clear namespaces items too', async () => {\n const fooNamespace = cache.namespace('foo');\n\n await cache.set('key1', 'value1');\n await fooNamespace.set('key2', 'value2');\n\n await cache.clear();\n\n assert.isUndefined(await cache.get('key1'));\n assert.isUndefined(await fooNamespace.get('key2'));\n });\n\n test('should be able to access namespaced key from root if prefixed', async () => {\n const users = cache.namespace('users');\n const usersPosts = users.namespace('posts');\n\n await users.set('key1', 'value1');\n await usersPosts.set('key1', 'value2');\n\n const r1 = await cache.get('users:key1');\n const r2 = await usersPosts.get('key1');\n const r3 = await users.get('posts:key1');\n const r4 = await cache.get('users:posts:key1');\n\n assert.deepEqual(r1, 'value1');\n assert.deepEqual(r2, 'value2');\n assert.deepEqual(r3, 'value2');\n assert.deepEqual(r4, 'value2');\n });\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 = \"\";\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\nvar hasRequiredReactIs;\n\nfunction requireReactIs () {\n\tif (hasRequiredReactIs) return reactIs.exports;\n\thasRequiredReactIs = 1;\n\n\tif (process.env.NODE_ENV === 'production') {\n\t reactIs.exports = requireReactIs_production_min();\n\t} else {\n\t reactIs.exports = requireReactIs_development();\n\t}\n\treturn reactIs.exports;\n}\n\nvar reactIsExports = requireReactIs();\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,