diff --git a/.changeset/giant-badgers-allow.md b/.changeset/giant-badgers-allow.md new file mode 100644 index 00000000..ad2837fa --- /dev/null +++ b/.changeset/giant-badgers-allow.md @@ -0,0 +1,5 @@ +--- +"@interactors/core": minor +--- + +Use `createMatcher` to matcher declaration diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 00bf4bcf..9e61c8cd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,4 +13,7 @@ jobs: - uses: denoland/setup-deno@v2 with: deno-version: v2.x - - run: deno test -A + - run: | + deno run -A npm:playwright install chromium + deno run -A packages/cli/src/main.ts build + deno test -A diff --git a/.gitignore b/.gitignore index 5f5d4c59..2a172f7f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ .netlify .vscode +/build/ diff --git a/deno.json b/deno.json index 6867eb43..c829931d 100644 --- a/deno.json +++ b/deno.json @@ -8,7 +8,8 @@ "./packages/globals", "./packages/html", "./packages/keyboard", - "./packages/material-ui" + "./packages/material-ui", + "./packages/cli" ], "compilerOptions": { "lib": ["deno.ns", "esnext", "dom", "dom.iterable", "dom.asynciterable"] diff --git a/deno.lock b/deno.lock index b3b9a936..43a8a7b0 100644 --- a/deno.lock +++ b/deno.lock @@ -1,2688 +1,2793 @@ { - "version": "3", - "packages": { - "specifiers": { - "jsr:@david/code-block-writer@^13.0.2": "jsr:@david/code-block-writer@13.0.2", - "jsr:@deno/cache-dir@^0.10.3": "jsr:@deno/cache-dir@0.10.3", - "jsr:@deno/dnt@^0.41.3": "jsr:@deno/dnt@0.41.3", - "jsr:@deno/graph@^0.73.1": "jsr:@deno/graph@0.73.1", - "jsr:@std/assert@^0.223.0": "jsr:@std/assert@0.223.0", - "jsr:@std/assert@^0.226.0": "jsr:@std/assert@0.226.0", - "jsr:@std/assert@^1.0.5": "jsr:@std/assert@1.0.5", - "jsr:@std/bytes@^0.223.0": "jsr:@std/bytes@0.223.0", - "jsr:@std/expect@^1.0.0": "jsr:@std/expect@1.0.3", - "jsr:@std/fmt@1": "jsr:@std/fmt@1.0.0", - "jsr:@std/fmt@^0.223": "jsr:@std/fmt@0.223.0", - "jsr:@std/fs@1": "jsr:@std/fs@1.0.1", - "jsr:@std/fs@^0.223": "jsr:@std/fs@0.223.0", - "jsr:@std/fs@^0.229.3": "jsr:@std/fs@0.229.3", - "jsr:@std/internal@^1.0.3": "jsr:@std/internal@1.0.3", - "jsr:@std/io@^0.223": "jsr:@std/io@0.223.0", - "jsr:@std/path@1": "jsr:@std/path@1.0.2", - "jsr:@std/path@1.0.0-rc.1": "jsr:@std/path@1.0.0-rc.1", - "jsr:@std/path@^0.223": "jsr:@std/path@0.223.0", - "jsr:@std/path@^0.225.2": "jsr:@std/path@0.225.2", - "jsr:@std/path@^1.0.2": "jsr:@std/path@1.0.2", - "jsr:@std/testing@^1.0.0": "jsr:@std/testing@1.0.2", - "jsr:@ts-morph/bootstrap@^0.24.0": "jsr:@ts-morph/bootstrap@0.24.0", - "jsr:@ts-morph/common@^0.24.0": "jsr:@ts-morph/common@0.24.0", - "npm:@effection/core@2.2.0": "npm:@effection/core@2.2.0", - "npm:@testing-library/dom@^8.18.1": "npm:@testing-library/dom@8.20.1", - "npm:@testing-library/user-event@^14.5.2": "npm:@testing-library/user-event@14.5.2_@testing-library+dom@8.20.1", - "npm:change-case@^4.1.1": "npm:change-case@4.1.2", - "npm:element-is-visible@^1.0.0": "npm:element-is-visible@1.0.0", - "npm:jsdom@^24.0.0": "npm:jsdom@24.1.3", - "npm:lodash.isequal@^4.5.0": "npm:lodash.isequal@4.5.0", - "npm:parcel@^2.10.2": "npm:parcel@2.12.0_@parcel+core@2.12.0", - "npm:performance-api@^1.0.0": "npm:performance-api@1.0.0", - "npm:react@^18.3.0": "npm:react@18.3.1" - }, - "jsr": { - "@david/code-block-writer@13.0.2": { - "integrity": "14dd3baaafa3a2dea8bf7dfbcddeccaa13e583da2d21d666c01dc6d681cd74ad" - }, - "@deno/cache-dir@0.10.3": { - "integrity": "eb022f84ecc49c91d9d98131c6e6b118ff63a29e343624d058646b9d50404776", - "dependencies": [ - "jsr:@deno/graph@^0.73.1", - "jsr:@std/fmt@^0.223", - "jsr:@std/fs@^0.223", - "jsr:@std/io@^0.223", - "jsr:@std/path@^0.223" - ] - }, - "@deno/dnt@0.41.3": { - "integrity": "b2ef2c8a5111eef86cb5bfcae103d6a2938e8e649e2461634a7befb7fc59d6d2", - "dependencies": [ - "jsr:@david/code-block-writer@^13.0.2", - "jsr:@deno/cache-dir@^0.10.3", - "jsr:@std/fmt@1", - "jsr:@std/fs@1", - "jsr:@std/path@1", - "jsr:@ts-morph/bootstrap@^0.24.0" - ] - }, - "@deno/graph@0.73.1": { - "integrity": "cd69639d2709d479037d5ce191a422eabe8d71bb68b0098344f6b07411c84d41" - }, - "@std/assert@0.223.0": { - "integrity": "eb8d6d879d76e1cc431205bd346ed4d88dc051c6366365b1af47034b0670be24" - }, - "@std/assert@0.226.0": { - "integrity": "0dfb5f7c7723c18cec118e080fec76ce15b4c31154b15ad2bd74822603ef75b3" - }, - "@std/assert@1.0.5": { - "integrity": "e37da8e4033490ce613eec4ac1d78dba1faf5b02a3f6c573a28f15365b9b440f", - "dependencies": [ - "jsr:@std/internal@^1.0.3" - ] - }, - "@std/bytes@0.223.0": { - "integrity": "84b75052cd8680942c397c2631318772b295019098f40aac5c36cead4cba51a8" - }, - "@std/expect@1.0.3": { - "integrity": "d9cbd03323ef7feafd1e969ed85d5edb04ebbd9937b0fe7a52d5ff53be8e913a", - "dependencies": [ - "jsr:@std/assert@^1.0.5", - "jsr:@std/internal@^1.0.3" - ] - }, - "@std/fmt@0.223.0": { - "integrity": "6deb37794127dfc7d7bded2586b9fc6f5d50e62a8134846608baf71ffc1a5208" - }, - "@std/fmt@1.0.0": { - "integrity": "8a95c9fdbb61559418ccbc0f536080cf43341655e1444f9d375a66886ceaaa3d" - }, - "@std/fs@0.223.0": { - "integrity": "3b4b0550b2c524cbaaa5a9170c90e96cbb7354e837ad1bdaf15fc9df1ae9c31c" - }, - "@std/fs@0.229.3": { - "integrity": "783bca21f24da92e04c3893c9e79653227ab016c48e96b3078377ebd5222e6eb", - "dependencies": [ - "jsr:@std/path@1.0.0-rc.1" - ] - }, - "@std/fs@1.0.1": { - "integrity": "d6914ca2c21abe591f733b31dbe6331e446815e513e2451b3b9e472daddfefcb", - "dependencies": [ - "jsr:@std/path@^1.0.2" - ] - }, - "@std/internal@1.0.3": { - "integrity": "208e9b94a3d5649bd880e9ca38b885ab7651ab5b5303a56ed25de4755fb7b11e" - }, - "@std/io@0.223.0": { - "integrity": "2d8c3c2ab3a515619b90da2c6ff5ea7b75a94383259ef4d02116b228393f84f1", - "dependencies": [ - "jsr:@std/assert@^0.223.0", - "jsr:@std/bytes@^0.223.0" - ] - }, - "@std/path@0.223.0": { - "integrity": "593963402d7e6597f5a6e620931661053572c982fc014000459edc1f93cc3989", - "dependencies": [ - "jsr:@std/assert@^0.223.0" - ] - }, - "@std/path@0.225.2": { - "integrity": "0f2db41d36b50ef048dcb0399aac720a5348638dd3cb5bf80685bf2a745aa506", - "dependencies": [ - "jsr:@std/assert@^0.226.0" - ] - }, - "@std/path@1.0.0-rc.1": { - "integrity": "b8c00ae2f19106a6bb7cbf1ab9be52aa70de1605daeb2dbdc4f87a7cbaf10ff6" - }, - "@std/path@1.0.2": { - "integrity": "a452174603f8c620bd278a380c596437a9eef50c891c64b85812f735245d9ec7" - }, - "@std/testing@1.0.2": { - "integrity": "9e8a7f4e26c219addabe7942d09c3450fa0a74e9662341961bc0ef502274dec3" - }, - "@ts-morph/bootstrap@0.24.0": { - "integrity": "a826a2ef7fa8a7c3f1042df2c034d20744d94da2ee32bf29275bcd4dffd3c060", - "dependencies": [ - "jsr:@ts-morph/common@^0.24.0" - ] - }, - "@ts-morph/common@0.24.0": { - "integrity": "12b625b8e562446ba658cdbe9ad77774b4bd96b992ae8bd34c60dbf24d06c1f3", - "dependencies": [ - "jsr:@std/fs@^0.229.3", - "jsr:@std/path@^0.225.2" - ] - } + "version": "4", + "specifiers": { + "jsr:@david/code-block-writer@^13.0.2": "13.0.2", + "jsr:@deno/cache-dir@~0.10.3": "0.10.3", + "jsr:@deno/dnt@~0.41.3": "0.41.3", + "jsr:@deno/graph@~0.73.1": "0.73.1", + "jsr:@luca/esbuild-deno-loader@0.11": "0.11.0", + "jsr:@std/assert@0.223": "0.223.0", + "jsr:@std/assert@0.226": "0.226.0", + "jsr:@std/assert@^1.0.5": "1.0.8", + "jsr:@std/assert@^1.0.8": "1.0.8", + "jsr:@std/bytes@0.223": "0.223.0", + "jsr:@std/bytes@^1.0.2": "1.0.4", + "jsr:@std/data-structures@^1.0.4": "1.0.4", + "jsr:@std/encoding@^1.0.5": "1.0.5", + "jsr:@std/expect@*": "1.0.3", + "jsr:@std/expect@1": "1.0.8", + "jsr:@std/expect@^1.0.8": "1.0.8", + "jsr:@std/fmt@0.223": "0.223.0", + "jsr:@std/fmt@1": "1.0.0", + "jsr:@std/fs@0.223": "0.223.0", + "jsr:@std/fs@1": "1.0.5", + "jsr:@std/fs@^1.0.5": "1.0.5", + "jsr:@std/fs@~0.229.3": "0.229.3", + "jsr:@std/internal@^1.0.3": "1.0.5", + "jsr:@std/internal@^1.0.5": "1.0.5", + "jsr:@std/io@0.223": "0.223.0", + "jsr:@std/path@0.223": "0.223.0", + "jsr:@std/path@1": "1.0.8", + "jsr:@std/path@1.0.0-rc.1": "1.0.0-rc.1", + "jsr:@std/path@^1.0.2": "1.0.2", + "jsr:@std/path@^1.0.6": "1.0.8", + "jsr:@std/path@^1.0.7": "1.0.8", + "jsr:@std/path@^1.0.8": "1.0.8", + "jsr:@std/path@~0.225.2": "0.225.2", + "jsr:@std/testing@*": "1.0.2", + "jsr:@std/testing@1": "1.0.5", + "jsr:@std/testing@^1.0.5": "1.0.5", + "jsr:@ts-morph/bootstrap@0.24": "0.24.0", + "jsr:@ts-morph/common@0.24": "0.24.0", + "npm:@testing-library/dom@^8.18.1": "8.20.1", + "npm:@testing-library/user-event@^14.5.2": "14.5.2_@testing-library+dom@8.20.1", + "npm:@types/node@*": "22.5.4", + "npm:change-case@^4.1.1": "4.1.2", + "npm:chokidar@^4.0.1": "4.0.1", + "npm:effection@^3.0.3": "3.0.3", + "npm:element-is-visible@1": "1.0.0", + "npm:esbuild@0.24": "0.24.0", + "npm:jsdom@24": "24.1.3", + "npm:lodash@*": "4.17.21", + "npm:parcel@^2.10.2": "2.12.0_@parcel+core@2.12.0", + "npm:performance-api@1": "1.0.0", + "npm:playwright@*": "1.49.0", + "npm:playwright@^1.49.0": "1.49.0", + "npm:react@^18.3.0": "18.3.1", + "npm:yargs@^17.7.2": "17.7.2", + "npm:zod-opts@~0.1.8": "0.1.8", + "npm:zod@*": "3.23.8", + "npm:zod@^3.23.8": "3.23.8" + }, + "jsr": { + "@david/code-block-writer@13.0.2": { + "integrity": "14dd3baaafa3a2dea8bf7dfbcddeccaa13e583da2d21d666c01dc6d681cd74ad" }, - "npm": { - "@babel/code-frame@7.24.7": { - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dependencies": { - "@babel/highlight": "@babel/highlight@7.24.7", - "picocolors": "picocolors@1.0.1" - } - }, - "@babel/helper-validator-identifier@7.24.7": { - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dependencies": {} - }, - "@babel/highlight@7.24.7": { - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dependencies": { - "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.24.7", - "chalk": "chalk@2.4.2", - "js-tokens": "js-tokens@4.0.0", - "picocolors": "picocolors@1.0.1" - } - }, - "@babel/runtime@7.25.6": { - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", - "dependencies": { - "regenerator-runtime": "regenerator-runtime@0.14.1" - } - }, - "@effection/core@2.2.0": { - "integrity": "sha512-1RBMrDS0Ya02NEM0TQQRwzlGDSZmwoHhuD3qmWp9NLjZowhO1gJBZ16fQL2NbKvcpS71xho+oZsDedId+C1q8Q==", - "dependencies": { - "abort-controller": "abort-controller@3.0.0" - } - }, - "@lezer/common@1.2.1": { - "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", - "dependencies": {} - }, - "@lezer/lr@1.4.2": { - "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", - "dependencies": { - "@lezer/common": "@lezer/common@1.2.1" - } - }, - "@lmdb/lmdb-darwin-arm64@2.8.5": { - "integrity": "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==", - "dependencies": {} - }, - "@lmdb/lmdb-darwin-x64@2.8.5": { - "integrity": "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==", - "dependencies": {} - }, - "@lmdb/lmdb-linux-arm64@2.8.5": { - "integrity": "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==", - "dependencies": {} - }, - "@lmdb/lmdb-linux-arm@2.8.5": { - "integrity": "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==", - "dependencies": {} - }, - "@lmdb/lmdb-linux-x64@2.8.5": { - "integrity": "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==", - "dependencies": {} - }, - "@lmdb/lmdb-win32-x64@2.8.5": { - "integrity": "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==", - "dependencies": {} - }, - "@mischnic/json-sourcemap@0.1.1": { - "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", - "dependencies": { - "@lezer/common": "@lezer/common@1.2.1", - "@lezer/lr": "@lezer/lr@1.4.2", - "json5": "json5@2.2.3" - } - }, - "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": { - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", - "dependencies": {} - }, - "@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": { - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", - "dependencies": {} - }, - "@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": { - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", - "dependencies": {} - }, - "@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": { - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", - "dependencies": {} - }, - "@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": { - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", - "dependencies": {} - }, - "@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": { - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", - "dependencies": {} - }, - "@parcel/bundler-default@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/graph": "@parcel/graph@3.2.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/cache@2.12.0": { - "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", - "dependencies": {} - }, - "@parcel/cache@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "lmdb": "lmdb@2.8.5" - } - }, - "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { - "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "lmdb": "lmdb@2.8.5" - } - }, - "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "lmdb": "lmdb@2.8.5" - } - }, - "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { - "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "lmdb": "lmdb@2.8.5" - } - }, - "@parcel/codeframe@2.12.0": { - "integrity": "sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==", - "dependencies": { - "chalk": "chalk@4.1.2" - } - }, - "@parcel/compressor-raw@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/config-default@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==", - "dependencies": { - "@parcel/bundler-default": "@parcel/bundler-default@2.12.0_@parcel+core@2.12.0", - "@parcel/compressor-raw": "@parcel/compressor-raw@2.12.0_@parcel+core@2.12.0", - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/namer-default": "@parcel/namer-default@2.12.0_@parcel+core@2.12.0", - "@parcel/optimizer-css": "@parcel/optimizer-css@2.12.0_@parcel+core@2.12.0", - "@parcel/optimizer-htmlnano": "@parcel/optimizer-htmlnano@2.12.0_@parcel+core@2.12.0", - "@parcel/optimizer-image": "@parcel/optimizer-image@2.12.0_@parcel+core@2.12.0", - "@parcel/optimizer-svgo": "@parcel/optimizer-svgo@2.12.0_@parcel+core@2.12.0", - "@parcel/optimizer-swc": "@parcel/optimizer-swc@2.12.0_@parcel+core@2.12.0", - "@parcel/packager-css": "@parcel/packager-css@2.12.0_@parcel+core@2.12.0", - "@parcel/packager-html": "@parcel/packager-html@2.12.0_@parcel+core@2.12.0", - "@parcel/packager-js": "@parcel/packager-js@2.12.0_@parcel+core@2.12.0", - "@parcel/packager-raw": "@parcel/packager-raw@2.12.0_@parcel+core@2.12.0", - "@parcel/packager-svg": "@parcel/packager-svg@2.12.0_@parcel+core@2.12.0", - "@parcel/packager-wasm": "@parcel/packager-wasm@2.12.0_@parcel+core@2.12.0", - "@parcel/reporter-dev-server": "@parcel/reporter-dev-server@2.12.0_@parcel+core@2.12.0", - "@parcel/resolver-default": "@parcel/resolver-default@2.12.0_@parcel+core@2.12.0", - "@parcel/runtime-browser-hmr": "@parcel/runtime-browser-hmr@2.12.0_@parcel+core@2.12.0", - "@parcel/runtime-js": "@parcel/runtime-js@2.12.0_@parcel+core@2.12.0", - "@parcel/runtime-react-refresh": "@parcel/runtime-react-refresh@2.12.0_@parcel+core@2.12.0", - "@parcel/runtime-service-worker": "@parcel/runtime-service-worker@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-babel": "@parcel/transformer-babel@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-css": "@parcel/transformer-css@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-html": "@parcel/transformer-html@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-image": "@parcel/transformer-image@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-js": "@parcel/transformer-js@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/transformer-json": "@parcel/transformer-json@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-postcss": "@parcel/transformer-postcss@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-posthtml": "@parcel/transformer-posthtml@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-raw": "@parcel/transformer-raw@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-react-refresh-wrap": "@parcel/transformer-react-refresh-wrap@2.12.0_@parcel+core@2.12.0", - "@parcel/transformer-svg": "@parcel/transformer-svg@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/core@2.12.0": { - "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==", - "dependencies": { - "@mischnic/json-sourcemap": "@mischnic/json-sourcemap@0.1.1", - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/events": "@parcel/events@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0", - "@parcel/graph": "@parcel/graph@3.2.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/profiler": "@parcel/profiler@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0", - "abortcontroller-polyfill": "abortcontroller-polyfill@1.7.5", - "base-x": "base-x@3.0.10", - "browserslist": "browserslist@4.23.3", - "clone": "clone@2.1.2", - "dotenv": "dotenv@7.0.0", - "dotenv-expand": "dotenv-expand@5.1.0", - "json5": "json5@2.2.3", - "msgpackr": "msgpackr@1.11.0", - "nullthrows": "nullthrows@1.1.1", - "semver": "semver@7.6.3" - } - }, - "@parcel/core@2.12.0_@swc+helpers@0.5.12": { - "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==", - "dependencies": { - "@mischnic/json-sourcemap": "@mischnic/json-sourcemap@0.1.1", - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/events": "@parcel/events@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12", - "@parcel/graph": "@parcel/graph@3.2.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", - "@parcel/profiler": "@parcel/profiler@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "abortcontroller-polyfill": "abortcontroller-polyfill@1.7.5", - "base-x": "base-x@3.0.10", - "browserslist": "browserslist@4.23.3", - "clone": "clone@2.1.2", - "dotenv": "dotenv@7.0.0", - "dotenv-expand": "dotenv-expand@5.1.0", - "json5": "json5@2.2.3", - "msgpackr": "msgpackr@1.11.0", - "nullthrows": "nullthrows@1.1.1", - "semver": "semver@7.6.3" - } - }, - "@parcel/diagnostic@2.12.0": { - "integrity": "sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==", - "dependencies": { - "@mischnic/json-sourcemap": "@mischnic/json-sourcemap@0.1.1", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/events@2.12.0": { - "integrity": "sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==", - "dependencies": {} - }, - "@parcel/fs@2.12.0": { - "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", - "dependencies": {} - }, - "@parcel/fs@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/watcher": "@parcel/watcher@2.3.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { - "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/watcher": "@parcel/watcher@2.3.0", - "@parcel/workers": "@parcel/workers@2.12.0" - } - }, - "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12": { - "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/types": "@parcel/types@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/watcher": "@parcel/watcher@2.3.0", - "@parcel/workers": "@parcel/workers@2.12.0" - } - }, - "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/watcher": "@parcel/watcher@2.3.0", - "@parcel/workers": "@parcel/workers@2.12.0" - } - }, - "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { - "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/watcher": "@parcel/watcher@2.3.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12" - } - }, - "@parcel/graph@3.2.0": { - "integrity": "sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==", - "dependencies": { - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/logger@2.12.0": { - "integrity": "sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/events": "@parcel/events@2.12.0" - } - }, - "@parcel/markdown-ansi@2.12.0": { - "integrity": "sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==", - "dependencies": { - "chalk": "chalk@4.1.2" - } - }, - "@parcel/namer-default@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/node-resolver-core@3.3.0": { - "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", - "dependencies": { - "@mischnic/json-sourcemap": "@mischnic/json-sourcemap@0.1.1", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "semver": "semver@7.6.3" - } - }, - "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0": { - "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", - "dependencies": { - "@mischnic/json-sourcemap": "@mischnic/json-sourcemap@0.1.1", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "semver": "semver@7.6.3" - } - }, - "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", - "dependencies": { - "@mischnic/json-sourcemap": "@mischnic/json-sourcemap@0.1.1", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "semver": "semver@7.6.3" - } - }, - "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { - "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", - "dependencies": { - "@mischnic/json-sourcemap": "@mischnic/json-sourcemap@0.1.1", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "semver": "semver@7.6.3" - } - }, - "@parcel/optimizer-css@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/utils": "@parcel/utils@2.12.0", - "browserslist": "browserslist@4.23.3", - "lightningcss": "lightningcss@1.26.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/optimizer-htmlnano@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "htmlnano": "htmlnano@2.1.1", - "nullthrows": "nullthrows@1.1.1", - "posthtml": "posthtml@0.16.6", - "svgo": "svgo@2.8.0" - } - }, - "@parcel/optimizer-image@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/optimizer-svgo@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "svgo": "svgo@2.8.0" - } - }, - "@parcel/optimizer-swc@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/utils": "@parcel/utils@2.12.0", - "@swc/core": "@swc/core@1.7.22_@swc+helpers@0.5.12", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/package-manager@2.12.0": { - "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", - "dependencies": {} - }, - "@parcel/package-manager@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/node-resolver-core": "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0", - "@swc/core": "@swc/core@1.7.22_@swc+helpers@0.5.12", - "semver": "semver@7.6.3" - } - }, - "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { - "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/node-resolver-core": "@parcel/node-resolver-core@3.3.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@swc/core": "@swc/core@1.7.22", - "semver": "semver@7.6.3" - } - }, - "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/node-resolver-core": "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@swc/core": "@swc/core@1.7.22_@swc+helpers@0.5.12", - "semver": "semver@7.6.3" - } - }, - "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { - "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/node-resolver-core": "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@swc/core": "@swc/core@1.7.22_@swc+helpers@0.5.12", - "semver": "semver@7.6.3" - } - }, - "@parcel/packager-css@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/utils": "@parcel/utils@2.12.0", - "lightningcss": "lightningcss@1.26.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/packager-html@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "posthtml": "posthtml@0.16.6" - } - }, - "@parcel/packager-js@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "globals": "globals@13.24.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/packager-raw@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/packager-svg@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "posthtml": "posthtml@0.16.6" - } - }, - "@parcel/packager-wasm@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/plugin@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", - "dependencies": { - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", - "dependencies": { - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12" - } - }, - "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { - "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", - "dependencies": { - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0" - } - }, - "@parcel/profiler@2.12.0": { - "integrity": "sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/events": "@parcel/events@2.12.0", - "chrome-trace-event": "chrome-trace-event@1.0.4" - } - }, - "@parcel/reporter-cli@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "chalk": "chalk@4.1.2", - "term-size": "term-size@2.2.1" - } - }, - "@parcel/reporter-dev-server@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0" - } - }, - "@parcel/reporter-tracer@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "chrome-trace-event": "chrome-trace-event@1.0.4", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/resolver-default@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==", - "dependencies": { - "@parcel/node-resolver-core": "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/runtime-browser-hmr@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0" - } - }, - "@parcel/runtime-js@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/runtime-react-refresh@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "react-error-overlay": "react-error-overlay@6.0.9", - "react-refresh": "react-refresh@0.9.0" - } - }, - "@parcel/runtime-service-worker@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/rust@2.12.0": { - "integrity": "sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==", - "dependencies": {} - }, - "@parcel/source-map@2.1.1": { - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", - "dependencies": { - "detect-libc": "detect-libc@1.0.3" - } - }, - "@parcel/transformer-babel@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/utils": "@parcel/utils@2.12.0", - "browserslist": "browserslist@4.23.3", - "json5": "json5@2.2.3", - "nullthrows": "nullthrows@1.1.1", - "semver": "semver@7.6.3" - } - }, - "@parcel/transformer-css@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/utils": "@parcel/utils@2.12.0", - "browserslist": "browserslist@4.23.3", - "lightningcss": "lightningcss@1.26.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/transformer-html@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "posthtml": "posthtml@0.16.6", - "posthtml-parser": "posthtml-parser@0.10.2", - "posthtml-render": "posthtml-render@3.0.0", - "semver": "semver@7.6.3", - "srcset": "srcset@4.0.0" - } - }, - "@parcel/transformer-image@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/transformer-js@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/utils": "@parcel/utils@2.12.0", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@swc/helpers": "@swc/helpers@0.5.12", - "browserslist": "browserslist@4.23.3", - "nullthrows": "nullthrows@1.1.1", - "regenerator-runtime": "regenerator-runtime@0.13.11", - "semver": "semver@7.6.3" - } - }, - "@parcel/transformer-json@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "json5": "json5@2.2.3" - } - }, - "@parcel/transformer-postcss@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "clone": "clone@2.1.2", - "nullthrows": "nullthrows@1.1.1", - "postcss-value-parser": "postcss-value-parser@4.2.0", - "semver": "semver@7.6.3" - } - }, - "@parcel/transformer-posthtml@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "posthtml": "posthtml@0.16.6", - "posthtml-parser": "posthtml-parser@0.10.2", - "posthtml-render": "posthtml-render@3.0.0", - "semver": "semver@7.6.3" - } - }, - "@parcel/transformer-raw@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0" - } - }, - "@parcel/transformer-react-refresh-wrap@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==", - "dependencies": { - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "react-refresh": "react-refresh@0.9.0" - } - }, - "@parcel/transformer-svg@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==", - "dependencies": { - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/plugin": "@parcel/plugin@2.12.0_@parcel+core@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "nullthrows": "nullthrows@1.1.1", - "posthtml": "posthtml@0.16.6", - "posthtml-parser": "posthtml-parser@0.10.2", - "posthtml-render": "posthtml-render@3.0.0", - "semver": "semver@7.6.3" - } - }, - "@parcel/types@2.12.0": { - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", - "dependencies": { - "@parcel/cache": "@parcel/cache@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0", - "@parcel/package-manager": "@parcel/package-manager@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/workers": "@parcel/workers@2.12.0", - "utility-types": "utility-types@3.11.0" - } - }, - "@parcel/types@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", - "dependencies": { - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0", - "utility-types": "utility-types@3.11.0" - } - }, - "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", - "dependencies": { - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0", - "utility-types": "utility-types@3.11.0" - } - }, - "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", - "dependencies": { - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "utility-types": "utility-types@3.11.0" - } - }, - "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12": { - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", - "dependencies": { - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12", - "utility-types": "utility-types@3.11.0" - } - }, - "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", - "dependencies": { - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "utility-types": "utility-types@3.11.0" - } - }, - "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", - "dependencies": { - "@parcel/cache": "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "@parcel/workers": "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "utility-types": "utility-types@3.11.0" - } - }, - "@parcel/utils@2.12.0": { - "integrity": "sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==", - "dependencies": { - "@parcel/codeframe": "@parcel/codeframe@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/markdown-ansi": "@parcel/markdown-ansi@2.12.0", - "@parcel/rust": "@parcel/rust@2.12.0", - "@parcel/source-map": "@parcel/source-map@2.1.1", - "chalk": "chalk@4.1.2", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/watcher-android-arm64@2.3.0": { - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", - "dependencies": {} - }, - "@parcel/watcher-darwin-arm64@2.3.0": { - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", - "dependencies": {} - }, - "@parcel/watcher-darwin-x64@2.3.0": { - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", - "dependencies": {} - }, - "@parcel/watcher-freebsd-x64@2.3.0": { - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", - "dependencies": {} - }, - "@parcel/watcher-linux-arm-glibc@2.3.0": { - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", - "dependencies": {} - }, - "@parcel/watcher-linux-arm64-glibc@2.3.0": { - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", - "dependencies": {} - }, - "@parcel/watcher-linux-arm64-musl@2.3.0": { - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", - "dependencies": {} - }, - "@parcel/watcher-linux-x64-glibc@2.3.0": { - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", - "dependencies": {} - }, - "@parcel/watcher-linux-x64-musl@2.3.0": { - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", - "dependencies": {} - }, - "@parcel/watcher-win32-arm64@2.3.0": { - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", - "dependencies": {} - }, - "@parcel/watcher-win32-ia32@2.3.0": { - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", - "dependencies": {} - }, - "@parcel/watcher-win32-x64@2.3.0": { - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", - "dependencies": {} - }, - "@parcel/watcher@2.3.0": { - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", - "dependencies": { - "@parcel/watcher-android-arm64": "@parcel/watcher-android-arm64@2.3.0", - "@parcel/watcher-darwin-arm64": "@parcel/watcher-darwin-arm64@2.3.0", - "@parcel/watcher-darwin-x64": "@parcel/watcher-darwin-x64@2.3.0", - "@parcel/watcher-freebsd-x64": "@parcel/watcher-freebsd-x64@2.3.0", - "@parcel/watcher-linux-arm-glibc": "@parcel/watcher-linux-arm-glibc@2.3.0", - "@parcel/watcher-linux-arm64-glibc": "@parcel/watcher-linux-arm64-glibc@2.3.0", - "@parcel/watcher-linux-arm64-musl": "@parcel/watcher-linux-arm64-musl@2.3.0", - "@parcel/watcher-linux-x64-glibc": "@parcel/watcher-linux-x64-glibc@2.3.0", - "@parcel/watcher-linux-x64-musl": "@parcel/watcher-linux-x64-musl@2.3.0", - "@parcel/watcher-win32-arm64": "@parcel/watcher-win32-arm64@2.3.0", - "@parcel/watcher-win32-ia32": "@parcel/watcher-win32-ia32@2.3.0", - "@parcel/watcher-win32-x64": "@parcel/watcher-win32-x64@2.3.0", - "detect-libc": "detect-libc@1.0.3", - "is-glob": "is-glob@4.0.3", - "micromatch": "micromatch@4.0.7", - "node-addon-api": "node-addon-api@7.1.1" - } - }, - "@parcel/workers@2.12.0": { - "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", - "dependencies": {} - }, - "@parcel/workers@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/profiler": "@parcel/profiler@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/workers@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/profiler": "@parcel/profiler@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { - "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/profiler": "@parcel/profiler@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12": { - "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/profiler": "@parcel/profiler@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { - "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", - "dependencies": { - "@parcel/core": "@parcel/core@2.12.0_@swc+helpers@0.5.12", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/profiler": "@parcel/profiler@2.12.0", - "@parcel/types": "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", - "@parcel/utils": "@parcel/utils@2.12.0", - "nullthrows": "nullthrows@1.1.1" - } - }, - "@swc/core-darwin-arm64@1.7.22": { - "integrity": "sha512-B2Bh2W+C7ALdGwDxRWAJ+UtNExfozvwyayGiNkbR3wmDKXXeQfhGM5MK+QYUWKu7UQ6ATq69OyZrxofDobKUug==", - "dependencies": {} - }, - "@swc/core-darwin-x64@1.7.22": { - "integrity": "sha512-s34UQntnQ6tL9hS9aX3xG7OfGhpmy05FEEndbHaooGO8O+L5k8uWxhE5KhYCOC0N803sGdZg6YZmKtYrWN/YxA==", - "dependencies": {} - }, - "@swc/core-linux-arm-gnueabihf@1.7.22": { - "integrity": "sha512-SE69+oos1jLOXx5YdMH//Qc5zQc2xYukajB+0BWmkcFd/S/cCanGWYtdSzYausm8af2Fw1hPJMNIfndJLnBDFw==", - "dependencies": {} - }, - "@swc/core-linux-arm64-gnu@1.7.22": { - "integrity": "sha512-59FzDW/ojgiTj4dlnv3Z3ESuVlzhSAq9X12CNYh4/WTCNA8BoJqOnWMRQKspWtoNlnVviFLMvpek0pGXHndEBA==", - "dependencies": {} - }, - "@swc/core-linux-arm64-musl@1.7.22": { - "integrity": "sha512-cMQMI8YRO/XR3OrYuiUlWksNsJOZSkA6gSLNyH6eHTw+FOAzv05oJ4SFYe6s1WesrOqRwhpez6y5H6OIP/EKzg==", - "dependencies": {} - }, - "@swc/core-linux-x64-gnu@1.7.22": { - "integrity": "sha512-639kA7MXrWqWYfwuSJ+XTg21VYb/5o99R1zJrndoEjEX6m7Wza/sXssQKU5jbbkPoSEKVKNP3n/gazLWiUKgiQ==", - "dependencies": {} - }, - "@swc/core-linux-x64-musl@1.7.22": { - "integrity": "sha512-f3zfGgY8EJQUOk3ve25ZTkNkhB/kHo9QlN2r+0exaE1g9W7X8IS6J8pWzF3hJrV2P9dBi6ofMOt+opVA89JKHA==", - "dependencies": {} - }, - "@swc/core-win32-arm64-msvc@1.7.22": { - "integrity": "sha512-p/Fav5U+LtTJD/tbbS0dKK8SVVAhXo5Jdm1TDeBPJ4BEIVguYBZEXgD3CW9wY4K34g1hscpiz2Q2rktfhFj1+A==", - "dependencies": {} - }, - "@swc/core-win32-ia32-msvc@1.7.22": { - "integrity": "sha512-HbmfasaCNTqeCTvDjleYj+jJZQ6MlraiVOdhW55KtbA9mAVQdPBq6DDAvR7VOero3wUNYUM/e36otFKgEJI5Rg==", - "dependencies": {} - }, - "@swc/core-win32-x64-msvc@1.7.22": { - "integrity": "sha512-lppIveE+hpe7WXny/9cUT+T6sBM/ND0E+dviKWJ5jFBISj2KWomlSJGUjYEsRGJVPnTEc8uOlKK7etmXBhQx9A==", - "dependencies": {} - }, - "@swc/core@1.7.22": { - "integrity": "sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig==", - "dependencies": { - "@swc/core-darwin-arm64": "@swc/core-darwin-arm64@1.7.22", - "@swc/core-darwin-x64": "@swc/core-darwin-x64@1.7.22", - "@swc/core-linux-arm-gnueabihf": "@swc/core-linux-arm-gnueabihf@1.7.22", - "@swc/core-linux-arm64-gnu": "@swc/core-linux-arm64-gnu@1.7.22", - "@swc/core-linux-arm64-musl": "@swc/core-linux-arm64-musl@1.7.22", - "@swc/core-linux-x64-gnu": "@swc/core-linux-x64-gnu@1.7.22", - "@swc/core-linux-x64-musl": "@swc/core-linux-x64-musl@1.7.22", - "@swc/core-win32-arm64-msvc": "@swc/core-win32-arm64-msvc@1.7.22", - "@swc/core-win32-ia32-msvc": "@swc/core-win32-ia32-msvc@1.7.22", - "@swc/core-win32-x64-msvc": "@swc/core-win32-x64-msvc@1.7.22", - "@swc/counter": "@swc/counter@0.1.3", - "@swc/types": "@swc/types@0.1.12" - } - }, - "@swc/core@1.7.22_@swc+helpers@0.5.12": { - "integrity": "sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig==", - "dependencies": { - "@swc/core-darwin-arm64": "@swc/core-darwin-arm64@1.7.22", - "@swc/core-darwin-x64": "@swc/core-darwin-x64@1.7.22", - "@swc/core-linux-arm-gnueabihf": "@swc/core-linux-arm-gnueabihf@1.7.22", - "@swc/core-linux-arm64-gnu": "@swc/core-linux-arm64-gnu@1.7.22", - "@swc/core-linux-arm64-musl": "@swc/core-linux-arm64-musl@1.7.22", - "@swc/core-linux-x64-gnu": "@swc/core-linux-x64-gnu@1.7.22", - "@swc/core-linux-x64-musl": "@swc/core-linux-x64-musl@1.7.22", - "@swc/core-win32-arm64-msvc": "@swc/core-win32-arm64-msvc@1.7.22", - "@swc/core-win32-ia32-msvc": "@swc/core-win32-ia32-msvc@1.7.22", - "@swc/core-win32-x64-msvc": "@swc/core-win32-x64-msvc@1.7.22", - "@swc/counter": "@swc/counter@0.1.3", - "@swc/helpers": "@swc/helpers@0.5.12", - "@swc/types": "@swc/types@0.1.12" - } - }, - "@swc/counter@0.1.3": { - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dependencies": {} - }, - "@swc/helpers@0.5.12": { - "integrity": "sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==", - "dependencies": { - "tslib": "tslib@2.6.3" - } - }, - "@swc/types@0.1.12": { - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", - "dependencies": { - "@swc/counter": "@swc/counter@0.1.3" - } - }, - "@testing-library/dom@8.20.1": { - "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", - "dependencies": { - "@babel/code-frame": "@babel/code-frame@7.24.7", - "@babel/runtime": "@babel/runtime@7.25.6", - "@types/aria-query": "@types/aria-query@5.0.4", - "aria-query": "aria-query@5.1.3", - "chalk": "chalk@4.1.2", - "dom-accessibility-api": "dom-accessibility-api@0.5.16", - "lz-string": "lz-string@1.5.0", - "pretty-format": "pretty-format@27.5.1" - } - }, - "@testing-library/user-event@14.5.2_@testing-library+dom@8.20.1": { - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", - "dependencies": { - "@testing-library/dom": "@testing-library/dom@8.20.1" - } - }, - "@trysound/sax@0.2.0": { - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dependencies": {} - }, - "@types/aria-query@5.0.4": { - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dependencies": {} - }, - "abort-controller@3.0.0": { - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "event-target-shim@5.0.1" - } - }, - "abortcontroller-polyfill@1.7.5": { - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", - "dependencies": {} - }, - "agent-base@7.1.1": { - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dependencies": { - "debug": "debug@4.3.7" - } - }, - "ansi-regex@5.0.1": { - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dependencies": {} - }, - "ansi-styles@3.2.1": { - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "color-convert@1.9.3" - } - }, - "ansi-styles@4.3.0": { - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "color-convert@2.0.1" - } - }, - "ansi-styles@5.2.0": { - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dependencies": {} - }, - "argparse@2.0.1": { - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dependencies": {} - }, - "aria-query@5.1.3": { - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dependencies": { - "deep-equal": "deep-equal@2.2.3" - } - }, - "array-buffer-byte-length@1.0.1": { - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "is-array-buffer": "is-array-buffer@3.0.4" - } - }, - "asynckit@0.4.0": { - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dependencies": {} - }, - "available-typed-arrays@1.0.7": { - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "possible-typed-array-names@1.0.0" - } - }, - "base-x@3.0.10": { - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "safe-buffer@5.2.1" - } - }, - "boolbase@1.0.0": { - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dependencies": {} - }, - "braces@3.0.3": { - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "fill-range@7.1.1" - } - }, - "browserslist@4.23.3": { - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "dependencies": { - "caniuse-lite": "caniuse-lite@1.0.30001650", - "electron-to-chromium": "electron-to-chromium@1.5.5", - "node-releases": "node-releases@2.0.18", - "update-browserslist-db": "update-browserslist-db@1.1.0_browserslist@4.23.3" - } - }, - "call-bind@1.0.7": { - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "es-define-property@1.0.0", - "es-errors": "es-errors@1.3.0", - "function-bind": "function-bind@1.1.2", - "get-intrinsic": "get-intrinsic@1.2.4", - "set-function-length": "set-function-length@1.2.2" - } - }, - "callsites@3.1.0": { - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dependencies": {} - }, - "camel-case@4.1.2": { - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dependencies": { - "pascal-case": "pascal-case@3.1.2", - "tslib": "tslib@2.6.3" - } - }, - "caniuse-lite@1.0.30001650": { - "integrity": "sha512-fgEc7hP/LB7iicdXHUI9VsBsMZmUmlVJeQP2qqQW+3lkqVhbmjEU8zp+h5stWeilX+G7uXuIUIIlWlDw9jdt8g==", - "dependencies": {} - }, - "capital-case@1.0.4": { - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dependencies": { - "no-case": "no-case@3.0.4", - "tslib": "tslib@2.6.3", - "upper-case-first": "upper-case-first@2.0.2" - } - }, - "chalk@2.4.2": { - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "ansi-styles@3.2.1", - "escape-string-regexp": "escape-string-regexp@1.0.5", - "supports-color": "supports-color@5.5.0" - } - }, - "chalk@4.1.2": { - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "ansi-styles@4.3.0", - "supports-color": "supports-color@7.2.0" - } - }, - "change-case@4.1.2": { - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dependencies": { - "camel-case": "camel-case@4.1.2", - "capital-case": "capital-case@1.0.4", - "constant-case": "constant-case@3.0.4", - "dot-case": "dot-case@3.0.4", - "header-case": "header-case@2.0.4", - "no-case": "no-case@3.0.4", - "param-case": "param-case@3.0.4", - "pascal-case": "pascal-case@3.1.2", - "path-case": "path-case@3.0.4", - "sentence-case": "sentence-case@3.0.4", - "snake-case": "snake-case@3.0.4", - "tslib": "tslib@2.6.3" - } - }, - "chrome-trace-event@1.0.4": { - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dependencies": {} - }, - "clone@2.1.2": { - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dependencies": {} - }, - "color-convert@1.9.3": { - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "color-name@1.1.3" - } - }, - "color-convert@2.0.1": { - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "color-name@1.1.4" - } - }, - "color-name@1.1.3": { - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dependencies": {} - }, - "color-name@1.1.4": { - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dependencies": {} - }, - "combined-stream@1.0.8": { - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "delayed-stream@1.0.0" - } - }, - "commander@7.2.0": { - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dependencies": {} - }, - "constant-case@3.0.4": { - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dependencies": { - "no-case": "no-case@3.0.4", - "tslib": "tslib@2.6.3", - "upper-case": "upper-case@2.0.2" - } - }, - "cosmiconfig@9.0.0": { - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dependencies": { - "env-paths": "env-paths@2.2.1", - "import-fresh": "import-fresh@3.3.0", - "js-yaml": "js-yaml@4.1.0", - "parse-json": "parse-json@5.2.0" - } - }, - "css-select@4.3.0": { - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "boolbase@1.0.0", - "css-what": "css-what@6.1.0", - "domhandler": "domhandler@4.3.1", - "domutils": "domutils@2.8.0", - "nth-check": "nth-check@2.1.1" - } - }, - "css-tree@1.1.3": { - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "mdn-data@2.0.14", - "source-map": "source-map@0.6.1" - } - }, - "css-what@6.1.0": { - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dependencies": {} - }, - "csso@4.2.0": { - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dependencies": { - "css-tree": "css-tree@1.1.3" - } - }, - "cssstyle@4.1.0": { - "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", - "dependencies": { - "rrweb-cssom": "rrweb-cssom@0.7.1" - } - }, - "data-urls@5.0.0": { - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dependencies": { - "whatwg-mimetype": "whatwg-mimetype@4.0.0", - "whatwg-url": "whatwg-url@14.0.0" - } - }, - "debug@4.3.7": { - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dependencies": { - "ms": "ms@2.1.3" - } - }, - "decimal.js@10.4.3": { - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dependencies": {} - }, - "deep-equal@2.2.3": { - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dependencies": { - "array-buffer-byte-length": "array-buffer-byte-length@1.0.1", - "call-bind": "call-bind@1.0.7", - "es-get-iterator": "es-get-iterator@1.1.3", - "get-intrinsic": "get-intrinsic@1.2.4", - "is-arguments": "is-arguments@1.1.1", - "is-array-buffer": "is-array-buffer@3.0.4", - "is-date-object": "is-date-object@1.0.5", - "is-regex": "is-regex@1.1.4", - "is-shared-array-buffer": "is-shared-array-buffer@1.0.3", - "isarray": "isarray@2.0.5", - "object-is": "object-is@1.1.6", - "object-keys": "object-keys@1.1.1", - "object.assign": "object.assign@4.1.5", - "regexp.prototype.flags": "regexp.prototype.flags@1.5.2", - "side-channel": "side-channel@1.0.6", - "which-boxed-primitive": "which-boxed-primitive@1.0.2", - "which-collection": "which-collection@1.0.2", - "which-typed-array": "which-typed-array@1.1.15" - } - }, - "define-data-property@1.1.4": { - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "es-define-property@1.0.0", - "es-errors": "es-errors@1.3.0", - "gopd": "gopd@1.0.1" - } - }, - "define-properties@1.2.1": { - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "define-data-property@1.1.4", - "has-property-descriptors": "has-property-descriptors@1.0.2", - "object-keys": "object-keys@1.1.1" - } - }, - "delayed-stream@1.0.0": { - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dependencies": {} - }, - "detect-libc@1.0.3": { - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dependencies": {} - }, - "detect-libc@2.0.3": { - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dependencies": {} - }, - "dom-accessibility-api@0.5.16": { - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dependencies": {} - }, - "dom-serializer@1.4.1": { - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "domelementtype@2.3.0", - "domhandler": "domhandler@4.3.1", - "entities": "entities@2.2.0" - } - }, - "domelementtype@2.3.0": { - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dependencies": {} - }, - "domhandler@4.3.1": { - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "domelementtype@2.3.0" - } - }, - "domutils@2.8.0": { - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "dom-serializer@1.4.1", - "domelementtype": "domelementtype@2.3.0", - "domhandler": "domhandler@4.3.1" - } - }, - "dot-case@3.0.4": { - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "no-case@3.0.4", - "tslib": "tslib@2.6.3" - } - }, - "dotenv-expand@5.1.0": { - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dependencies": {} - }, - "dotenv@7.0.0": { - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dependencies": {} - }, - "electron-to-chromium@1.5.5": { - "integrity": "sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==", - "dependencies": {} - }, - "element-is-visible@1.0.0": { - "integrity": "sha512-OegdS3Zoz+LOcLlZhPEnE8K0DKhxfcbN2JHTDSiH5jTZQgaUk/Dl+nkQ8d8eJzs/qZ21apeS3ezEIHfu6SzyDQ==", - "dependencies": {} - }, - "entities@2.2.0": { - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dependencies": {} - }, - "entities@3.0.1": { - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dependencies": {} - }, - "entities@4.5.0": { - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dependencies": {} - }, - "env-paths@2.2.1": { - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dependencies": {} - }, - "error-ex@1.3.2": { - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "is-arrayish@0.2.1" - } - }, - "es-define-property@1.0.0": { - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "get-intrinsic@1.2.4" - } - }, - "es-errors@1.3.0": { - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dependencies": {} - }, - "es-get-iterator@1.1.3": { - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "get-intrinsic": "get-intrinsic@1.2.4", - "has-symbols": "has-symbols@1.0.3", - "is-arguments": "is-arguments@1.1.1", - "is-map": "is-map@2.0.3", - "is-set": "is-set@2.0.3", - "is-string": "is-string@1.0.7", - "isarray": "isarray@2.0.5", - "stop-iteration-iterator": "stop-iteration-iterator@1.0.0" - } - }, - "escalade@3.1.2": { - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dependencies": {} - }, - "escape-string-regexp@1.0.5": { - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dependencies": {} - }, - "event-target-shim@5.0.1": { - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dependencies": {} - }, - "fill-range@7.1.1": { - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "to-regex-range@5.0.1" - } - }, - "for-each@0.3.3": { - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "is-callable@1.2.7" - } - }, - "form-data@4.0.0": { - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "asynckit@0.4.0", - "combined-stream": "combined-stream@1.0.8", - "mime-types": "mime-types@2.1.35" - } - }, - "function-bind@1.1.2": { - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dependencies": {} - }, - "functions-have-names@1.2.3": { - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dependencies": {} - }, - "get-intrinsic@1.2.4": { - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "es-errors@1.3.0", - "function-bind": "function-bind@1.1.2", - "has-proto": "has-proto@1.0.3", - "has-symbols": "has-symbols@1.0.3", - "hasown": "hasown@2.0.2" - } - }, - "get-port@4.2.0": { - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", - "dependencies": {} - }, - "globals@13.24.0": { - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dependencies": { - "type-fest": "type-fest@0.20.2" - } - }, - "gopd@1.0.1": { - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "get-intrinsic@1.2.4" - } - }, - "has-bigints@1.0.2": { - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dependencies": {} - }, - "has-flag@3.0.0": { - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dependencies": {} - }, - "has-flag@4.0.0": { - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dependencies": {} - }, - "has-property-descriptors@1.0.2": { - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "es-define-property@1.0.0" - } - }, - "has-proto@1.0.3": { - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dependencies": {} - }, - "has-symbols@1.0.3": { - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dependencies": {} - }, - "has-tostringtag@1.0.2": { - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "has-symbols@1.0.3" - } - }, - "hasown@2.0.2": { - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "function-bind@1.1.2" - } - }, - "header-case@2.0.4": { - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dependencies": { - "capital-case": "capital-case@1.0.4", - "tslib": "tslib@2.6.3" - } - }, - "html-encoding-sniffer@4.0.0": { - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dependencies": { - "whatwg-encoding": "whatwg-encoding@3.1.1" - } - }, - "htmlnano@2.1.1": { - "integrity": "sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==", - "dependencies": { - "cosmiconfig": "cosmiconfig@9.0.0", - "posthtml": "posthtml@0.16.6", - "timsort": "timsort@0.3.0" - } - }, - "htmlparser2@7.2.0": { - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dependencies": { - "domelementtype": "domelementtype@2.3.0", - "domhandler": "domhandler@4.3.1", - "domutils": "domutils@2.8.0", - "entities": "entities@3.0.1" - } - }, - "http-proxy-agent@7.0.2": { - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dependencies": { - "agent-base": "agent-base@7.1.1", - "debug": "debug@4.3.7" - } - }, - "https-proxy-agent@7.0.5": { - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dependencies": { - "agent-base": "agent-base@7.1.1", - "debug": "debug@4.3.7" - } - }, - "iconv-lite@0.6.3": { - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": "safer-buffer@2.1.2" - } - }, - "import-fresh@3.3.0": { - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "parent-module@1.0.1", - "resolve-from": "resolve-from@4.0.0" - } - }, - "internal-slot@1.0.7": { - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dependencies": { - "es-errors": "es-errors@1.3.0", - "hasown": "hasown@2.0.2", - "side-channel": "side-channel@1.0.6" - } - }, - "is-arguments@1.1.1": { - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "has-tostringtag": "has-tostringtag@1.0.2" - } - }, - "is-array-buffer@3.0.4": { - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "get-intrinsic": "get-intrinsic@1.2.4" - } - }, - "is-arrayish@0.2.1": { - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dependencies": {} - }, - "is-bigint@1.0.4": { - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "has-bigints@1.0.2" - } - }, - "is-boolean-object@1.1.2": { - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "has-tostringtag": "has-tostringtag@1.0.2" - } - }, - "is-callable@1.2.7": { - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dependencies": {} - }, - "is-date-object@1.0.5": { - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "has-tostringtag@1.0.2" - } - }, - "is-extglob@2.1.1": { - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dependencies": {} - }, - "is-glob@4.0.3": { - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "is-extglob@2.1.1" - } - }, - "is-json@2.0.1": { - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", - "dependencies": {} - }, - "is-map@2.0.3": { - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dependencies": {} - }, - "is-number-object@1.0.7": { - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "has-tostringtag@1.0.2" - } - }, - "is-number@7.0.0": { - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dependencies": {} - }, - "is-potential-custom-element-name@1.0.1": { - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dependencies": {} - }, - "is-regex@1.1.4": { - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "has-tostringtag": "has-tostringtag@1.0.2" - } - }, - "is-set@2.0.3": { - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dependencies": {} - }, - "is-shared-array-buffer@1.0.3": { - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dependencies": { - "call-bind": "call-bind@1.0.7" - } - }, - "is-string@1.0.7": { - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "has-tostringtag@1.0.2" - } - }, - "is-symbol@1.0.4": { - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "has-symbols@1.0.3" - } - }, - "is-weakmap@2.0.2": { - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dependencies": {} - }, - "is-weakset@2.0.3": { - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "get-intrinsic": "get-intrinsic@1.2.4" - } - }, - "isarray@2.0.5": { - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dependencies": {} - }, - "js-tokens@4.0.0": { - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dependencies": {} - }, - "js-yaml@4.1.0": { - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "argparse@2.0.1" - } - }, - "jsdom@24.1.3": { - "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", - "dependencies": { - "cssstyle": "cssstyle@4.1.0", - "data-urls": "data-urls@5.0.0", - "decimal.js": "decimal.js@10.4.3", - "form-data": "form-data@4.0.0", - "html-encoding-sniffer": "html-encoding-sniffer@4.0.0", - "http-proxy-agent": "http-proxy-agent@7.0.2", - "https-proxy-agent": "https-proxy-agent@7.0.5", - "is-potential-custom-element-name": "is-potential-custom-element-name@1.0.1", - "nwsapi": "nwsapi@2.2.12", - "parse5": "parse5@7.1.2", - "rrweb-cssom": "rrweb-cssom@0.7.1", - "saxes": "saxes@6.0.0", - "symbol-tree": "symbol-tree@3.2.4", - "tough-cookie": "tough-cookie@4.1.4", - "w3c-xmlserializer": "w3c-xmlserializer@5.0.0", - "webidl-conversions": "webidl-conversions@7.0.0", - "whatwg-encoding": "whatwg-encoding@3.1.1", - "whatwg-mimetype": "whatwg-mimetype@4.0.0", - "whatwg-url": "whatwg-url@14.0.0", - "ws": "ws@8.18.0", - "xml-name-validator": "xml-name-validator@5.0.0" - } - }, - "json-parse-even-better-errors@2.3.1": { - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dependencies": {} - }, - "json5@2.2.3": { - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dependencies": {} - }, - "lightningcss-darwin-arm64@1.26.0": { - "integrity": "sha512-n4TIvHO1NY1ondKFYpL2ZX0bcC2y6yjXMD6JfyizgR8BCFNEeArINDzEaeqlfX9bXz73Bpz/Ow0nu+1qiDrBKg==", - "dependencies": {} - }, - "lightningcss-darwin-x64@1.26.0": { - "integrity": "sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg==", - "dependencies": {} - }, - "lightningcss-freebsd-x64@1.26.0": { - "integrity": "sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g==", - "dependencies": {} - }, - "lightningcss-linux-arm-gnueabihf@1.26.0": { - "integrity": "sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg==", - "dependencies": {} - }, - "lightningcss-linux-arm64-gnu@1.26.0": { - "integrity": "sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA==", - "dependencies": {} - }, - "lightningcss-linux-arm64-musl@1.26.0": { - "integrity": "sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig==", - "dependencies": {} - }, - "lightningcss-linux-x64-gnu@1.26.0": { - "integrity": "sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA==", - "dependencies": {} - }, - "lightningcss-linux-x64-musl@1.26.0": { - "integrity": "sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A==", - "dependencies": {} - }, - "lightningcss-win32-arm64-msvc@1.26.0": { - "integrity": "sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw==", - "dependencies": {} - }, - "lightningcss-win32-x64-msvc@1.26.0": { - "integrity": "sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw==", - "dependencies": {} - }, - "lightningcss@1.26.0": { - "integrity": "sha512-a/XZ5hdgifrofQJUArr5AiJjx26SwMam3SJUSMjgebZbESZ96i+6Qsl8tLi0kaUsdMzBWXh9sN1Oe6hp2/dkQw==", - "dependencies": { - "detect-libc": "detect-libc@1.0.3", - "lightningcss-darwin-arm64": "lightningcss-darwin-arm64@1.26.0", - "lightningcss-darwin-x64": "lightningcss-darwin-x64@1.26.0", - "lightningcss-freebsd-x64": "lightningcss-freebsd-x64@1.26.0", - "lightningcss-linux-arm-gnueabihf": "lightningcss-linux-arm-gnueabihf@1.26.0", - "lightningcss-linux-arm64-gnu": "lightningcss-linux-arm64-gnu@1.26.0", - "lightningcss-linux-arm64-musl": "lightningcss-linux-arm64-musl@1.26.0", - "lightningcss-linux-x64-gnu": "lightningcss-linux-x64-gnu@1.26.0", - "lightningcss-linux-x64-musl": "lightningcss-linux-x64-musl@1.26.0", - "lightningcss-win32-arm64-msvc": "lightningcss-win32-arm64-msvc@1.26.0", - "lightningcss-win32-x64-msvc": "lightningcss-win32-x64-msvc@1.26.0" - } - }, - "lines-and-columns@1.2.4": { - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dependencies": {} - }, - "lmdb@2.8.5": { - "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", - "dependencies": { - "@lmdb/lmdb-darwin-arm64": "@lmdb/lmdb-darwin-arm64@2.8.5", - "@lmdb/lmdb-darwin-x64": "@lmdb/lmdb-darwin-x64@2.8.5", - "@lmdb/lmdb-linux-arm": "@lmdb/lmdb-linux-arm@2.8.5", - "@lmdb/lmdb-linux-arm64": "@lmdb/lmdb-linux-arm64@2.8.5", - "@lmdb/lmdb-linux-x64": "@lmdb/lmdb-linux-x64@2.8.5", - "@lmdb/lmdb-win32-x64": "@lmdb/lmdb-win32-x64@2.8.5", - "msgpackr": "msgpackr@1.11.0", - "node-addon-api": "node-addon-api@6.1.0", - "node-gyp-build-optional-packages": "node-gyp-build-optional-packages@5.1.1", - "ordered-binary": "ordered-binary@1.5.1", - "weak-lru-cache": "weak-lru-cache@1.2.2" - } - }, - "lodash.isequal@4.5.0": { - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dependencies": {} - }, - "loose-envify@1.4.0": { - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "js-tokens@4.0.0" - } - }, - "lower-case@2.0.2": { - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "tslib@2.6.3" - } - }, - "lz-string@1.5.0": { - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dependencies": {} - }, - "mdn-data@2.0.14": { - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dependencies": {} - }, - "micromatch@4.0.7": { - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dependencies": { - "braces": "braces@3.0.3", - "picomatch": "picomatch@2.3.1" - } - }, - "mime-db@1.52.0": { - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dependencies": {} - }, - "mime-types@2.1.35": { - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "mime-db@1.52.0" - } - }, - "ms@2.1.3": { - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dependencies": {} - }, - "msgpackr-extract@3.0.3": { - "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", - "dependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm": "@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-x64": "@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3", - "@msgpackr-extract/msgpackr-extract-win32-x64": "@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", - "node-gyp-build-optional-packages": "node-gyp-build-optional-packages@5.2.2" - } - }, - "msgpackr@1.11.0": { - "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", - "dependencies": { - "msgpackr-extract": "msgpackr-extract@3.0.3" - } - }, - "no-case@3.0.4": { - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "lower-case@2.0.2", - "tslib": "tslib@2.6.3" - } - }, - "node-addon-api@6.1.0": { - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dependencies": {} - }, - "node-addon-api@7.1.1": { - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dependencies": {} - }, - "node-gyp-build-optional-packages@5.1.1": { - "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", - "dependencies": { - "detect-libc": "detect-libc@2.0.3" - } - }, - "node-gyp-build-optional-packages@5.2.2": { - "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", - "dependencies": { - "detect-libc": "detect-libc@2.0.3" - } - }, - "node-releases@2.0.18": { - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dependencies": {} - }, - "nth-check@2.1.1": { - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "boolbase@1.0.0" - } - }, - "nullthrows@1.1.1": { - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dependencies": {} - }, - "nwsapi@2.2.12": { - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", - "dependencies": {} - }, - "object-inspect@1.13.2": { - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "dependencies": {} - }, - "object-is@1.1.6": { - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "define-properties": "define-properties@1.2.1" - } - }, - "object-keys@1.1.1": { - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dependencies": {} - }, - "object.assign@4.1.5": { - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "define-properties": "define-properties@1.2.1", - "has-symbols": "has-symbols@1.0.3", - "object-keys": "object-keys@1.1.1" - } - }, - "ordered-binary@1.5.1": { - "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==", - "dependencies": {} - }, - "param-case@3.0.4": { - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dependencies": { - "dot-case": "dot-case@3.0.4", - "tslib": "tslib@2.6.3" - } - }, - "parcel@2.12.0_@parcel+core@2.12.0": { - "integrity": "sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==", - "dependencies": { - "@parcel/config-default": "@parcel/config-default@2.12.0_@parcel+core@2.12.0", - "@parcel/core": "@parcel/core@2.12.0", - "@parcel/diagnostic": "@parcel/diagnostic@2.12.0", - "@parcel/events": "@parcel/events@2.12.0", - "@parcel/fs": "@parcel/fs@2.12.0_@parcel+core@2.12.0", - "@parcel/logger": "@parcel/logger@2.12.0", - "@parcel/package-manager": "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", - "@parcel/reporter-cli": "@parcel/reporter-cli@2.12.0_@parcel+core@2.12.0", - "@parcel/reporter-dev-server": "@parcel/reporter-dev-server@2.12.0_@parcel+core@2.12.0", - "@parcel/reporter-tracer": "@parcel/reporter-tracer@2.12.0_@parcel+core@2.12.0", - "@parcel/utils": "@parcel/utils@2.12.0", - "chalk": "chalk@4.1.2", - "commander": "commander@7.2.0", - "get-port": "get-port@4.2.0" - } - }, - "parent-module@1.0.1": { - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "callsites@3.1.0" - } - }, - "parse-json@5.2.0": { - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "@babel/code-frame@7.24.7", - "error-ex": "error-ex@1.3.2", - "json-parse-even-better-errors": "json-parse-even-better-errors@2.3.1", - "lines-and-columns": "lines-and-columns@1.2.4" - } - }, - "parse5@7.1.2": { - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "entities@4.5.0" - } - }, - "pascal-case@3.1.2": { - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "no-case@3.0.4", - "tslib": "tslib@2.6.3" - } - }, - "path-case@3.0.4": { - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dependencies": { - "dot-case": "dot-case@3.0.4", - "tslib": "tslib@2.6.3" - } - }, - "performance-api@1.0.0": { - "integrity": "sha512-hZKWxgX3+rv9iPA6hBTr9U+9rNN8mf5joahZ5m9z/fEoqyfS/9qkVs7GGrb/JifjNlgqgduK6uWp+16n+petMg==", - "dependencies": {} - }, - "picocolors@1.0.1": { - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dependencies": {} - }, - "picomatch@2.3.1": { - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dependencies": {} - }, - "possible-typed-array-names@1.0.0": { - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dependencies": {} - }, - "postcss-value-parser@4.2.0": { - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dependencies": {} - }, - "posthtml-parser@0.10.2": { - "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", - "dependencies": { - "htmlparser2": "htmlparser2@7.2.0" - } - }, - "posthtml-parser@0.11.0": { - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "dependencies": { - "htmlparser2": "htmlparser2@7.2.0" - } - }, - "posthtml-render@3.0.0": { - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "dependencies": { - "is-json": "is-json@2.0.1" - } - }, - "posthtml@0.16.6": { - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "dependencies": { - "posthtml-parser": "posthtml-parser@0.11.0", - "posthtml-render": "posthtml-render@3.0.0" - } - }, - "pretty-format@27.5.1": { - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dependencies": { - "ansi-regex": "ansi-regex@5.0.1", - "ansi-styles": "ansi-styles@5.2.0", - "react-is": "react-is@17.0.2" - } - }, - "psl@1.9.0": { - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dependencies": {} - }, - "punycode@2.3.1": { - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dependencies": {} - }, - "querystringify@2.2.0": { - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dependencies": {} - }, - "react-error-overlay@6.0.9": { - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", - "dependencies": {} - }, - "react-is@17.0.2": { - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dependencies": {} - }, - "react-refresh@0.9.0": { - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dependencies": {} - }, - "react@18.3.1": { - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dependencies": { - "loose-envify": "loose-envify@1.4.0" - } - }, - "regenerator-runtime@0.13.11": { - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dependencies": {} - }, - "regenerator-runtime@0.14.1": { - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dependencies": {} - }, - "regexp.prototype.flags@1.5.2": { - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "define-properties": "define-properties@1.2.1", - "es-errors": "es-errors@1.3.0", - "set-function-name": "set-function-name@2.0.2" - } - }, - "requires-port@1.0.0": { - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dependencies": {} - }, - "resolve-from@4.0.0": { - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dependencies": {} - }, - "rrweb-cssom@0.7.1": { - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dependencies": {} - }, - "safe-buffer@5.2.1": { - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dependencies": {} - }, - "safer-buffer@2.1.2": { - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dependencies": {} - }, - "saxes@6.0.0": { - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dependencies": { - "xmlchars": "xmlchars@2.2.0" - } - }, - "semver@7.6.3": { - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dependencies": {} - }, - "sentence-case@3.0.4": { - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dependencies": { - "no-case": "no-case@3.0.4", - "tslib": "tslib@2.6.3", - "upper-case-first": "upper-case-first@2.0.2" - } - }, - "set-function-length@1.2.2": { - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "define-data-property@1.1.4", - "es-errors": "es-errors@1.3.0", - "function-bind": "function-bind@1.1.2", - "get-intrinsic": "get-intrinsic@1.2.4", - "gopd": "gopd@1.0.1", - "has-property-descriptors": "has-property-descriptors@1.0.2" - } - }, - "set-function-name@2.0.2": { - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dependencies": { - "define-data-property": "define-data-property@1.1.4", - "es-errors": "es-errors@1.3.0", - "functions-have-names": "functions-have-names@1.2.3", - "has-property-descriptors": "has-property-descriptors@1.0.2" - } - }, - "side-channel@1.0.6": { - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "call-bind@1.0.7", - "es-errors": "es-errors@1.3.0", - "get-intrinsic": "get-intrinsic@1.2.4", - "object-inspect": "object-inspect@1.13.2" - } - }, - "snake-case@3.0.4": { - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dependencies": { - "dot-case": "dot-case@3.0.4", - "tslib": "tslib@2.6.3" - } - }, - "source-map@0.6.1": { - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dependencies": {} - }, - "srcset@4.0.0": { - "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", - "dependencies": {} - }, - "stable@0.1.8": { - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dependencies": {} - }, - "stop-iteration-iterator@1.0.0": { - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dependencies": { - "internal-slot": "internal-slot@1.0.7" - } - }, - "supports-color@5.5.0": { - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "has-flag@3.0.0" - } - }, - "supports-color@7.2.0": { - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "has-flag@4.0.0" - } - }, - "svgo@2.8.0": { - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "@trysound/sax@0.2.0", - "commander": "commander@7.2.0", - "css-select": "css-select@4.3.0", - "css-tree": "css-tree@1.1.3", - "csso": "csso@4.2.0", - "picocolors": "picocolors@1.0.1", - "stable": "stable@0.1.8" - } - }, - "symbol-tree@3.2.4": { - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dependencies": {} - }, - "term-size@2.2.1": { - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dependencies": {} - }, - "timsort@0.3.0": { - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dependencies": {} - }, - "to-regex-range@5.0.1": { - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "is-number@7.0.0" - } - }, - "tough-cookie@4.1.4": { - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dependencies": { - "psl": "psl@1.9.0", - "punycode": "punycode@2.3.1", - "universalify": "universalify@0.2.0", - "url-parse": "url-parse@1.5.10" - } - }, - "tr46@5.0.0": { - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "dependencies": { - "punycode": "punycode@2.3.1" - } - }, - "tslib@2.6.3": { - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dependencies": {} - }, - "type-fest@0.20.2": { - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dependencies": {} - }, - "universalify@0.2.0": { - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dependencies": {} - }, - "update-browserslist-db@1.1.0_browserslist@4.23.3": { - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dependencies": { - "browserslist": "browserslist@4.23.3", - "escalade": "escalade@3.1.2", - "picocolors": "picocolors@1.0.1" - } - }, - "upper-case-first@2.0.2": { - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dependencies": { - "tslib": "tslib@2.6.3" - } - }, - "upper-case@2.0.2": { - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dependencies": { - "tslib": "tslib@2.6.3" - } - }, - "url-parse@1.5.10": { - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "querystringify@2.2.0", - "requires-port": "requires-port@1.0.0" - } - }, - "utility-types@3.11.0": { - "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", - "dependencies": {} - }, - "w3c-xmlserializer@5.0.0": { - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dependencies": { - "xml-name-validator": "xml-name-validator@5.0.0" - } - }, - "weak-lru-cache@1.2.2": { - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dependencies": {} - }, - "webidl-conversions@7.0.0": { - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dependencies": {} - }, - "whatwg-encoding@3.1.1": { - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dependencies": { - "iconv-lite": "iconv-lite@0.6.3" - } - }, - "whatwg-mimetype@4.0.0": { - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dependencies": {} - }, - "whatwg-url@14.0.0": { - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", - "dependencies": { - "tr46": "tr46@5.0.0", - "webidl-conversions": "webidl-conversions@7.0.0" - } - }, - "which-boxed-primitive@1.0.2": { - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "is-bigint@1.0.4", - "is-boolean-object": "is-boolean-object@1.1.2", - "is-number-object": "is-number-object@1.0.7", - "is-string": "is-string@1.0.7", - "is-symbol": "is-symbol@1.0.4" - } - }, - "which-collection@1.0.2": { - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dependencies": { - "is-map": "is-map@2.0.3", - "is-set": "is-set@2.0.3", - "is-weakmap": "is-weakmap@2.0.2", - "is-weakset": "is-weakset@2.0.3" - } - }, - "which-typed-array@1.1.15": { - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "available-typed-arrays@1.0.7", - "call-bind": "call-bind@1.0.7", - "for-each": "for-each@0.3.3", - "gopd": "gopd@1.0.1", - "has-tostringtag": "has-tostringtag@1.0.2" - } - }, - "ws@8.18.0": { - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dependencies": {} - }, - "xml-name-validator@5.0.0": { - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dependencies": {} - }, - "xmlchars@2.2.0": { - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dependencies": {} - } + "@deno/cache-dir@0.10.3": { + "integrity": "eb022f84ecc49c91d9d98131c6e6b118ff63a29e343624d058646b9d50404776", + "dependencies": [ + "jsr:@deno/graph", + "jsr:@std/fmt@0.223", + "jsr:@std/fs@0.223", + "jsr:@std/io", + "jsr:@std/path@0.223" + ] + }, + "@deno/dnt@0.41.3": { + "integrity": "b2ef2c8a5111eef86cb5bfcae103d6a2938e8e649e2461634a7befb7fc59d6d2", + "dependencies": [ + "jsr:@david/code-block-writer", + "jsr:@deno/cache-dir", + "jsr:@std/fmt@1", + "jsr:@std/fs@1", + "jsr:@std/path@1", + "jsr:@ts-morph/bootstrap" + ] + }, + "@deno/graph@0.73.1": { + "integrity": "cd69639d2709d479037d5ce191a422eabe8d71bb68b0098344f6b07411c84d41" + }, + "@luca/esbuild-deno-loader@0.11.0": { + "integrity": "c05a989aa7c4ee6992a27be5f15cfc5be12834cab7ff84cabb47313737c51a2c", + "dependencies": [ + "jsr:@std/bytes@^1.0.2", + "jsr:@std/encoding", + "jsr:@std/path@^1.0.6" + ] + }, + "@std/assert@0.223.0": { + "integrity": "eb8d6d879d76e1cc431205bd346ed4d88dc051c6366365b1af47034b0670be24" + }, + "@std/assert@0.226.0": { + "integrity": "0dfb5f7c7723c18cec118e080fec76ce15b4c31154b15ad2bd74822603ef75b3" + }, + "@std/assert@1.0.5": { + "integrity": "e37da8e4033490ce613eec4ac1d78dba1faf5b02a3f6c573a28f15365b9b440f", + "dependencies": [ + "jsr:@std/internal@^1.0.3" + ] + }, + "@std/assert@1.0.8": { + "integrity": "ebe0bd7eb488ee39686f77003992f389a06c3da1bbd8022184804852b2fa641b", + "dependencies": [ + "jsr:@std/internal@^1.0.5" + ] + }, + "@std/bytes@0.223.0": { + "integrity": "84b75052cd8680942c397c2631318772b295019098f40aac5c36cead4cba51a8" + }, + "@std/bytes@1.0.4": { + "integrity": "11a0debe522707c95c7b7ef89b478c13fb1583a7cfb9a85674cd2cc2e3a28abc" + }, + "@std/data-structures@1.0.4": { + "integrity": "fa0e20c11eb9ba673417450915c750a0001405a784e2a4e0c3725031681684a0" + }, + "@std/encoding@1.0.5": { + "integrity": "ecf363d4fc25bd85bd915ff6733a7e79b67e0e7806334af15f4645c569fefc04" + }, + "@std/expect@1.0.3": { + "integrity": "d9cbd03323ef7feafd1e969ed85d5edb04ebbd9937b0fe7a52d5ff53be8e913a", + "dependencies": [ + "jsr:@std/assert@^1.0.5", + "jsr:@std/internal@^1.0.3" + ] + }, + "@std/expect@1.0.8": { + "integrity": "27e40d8f3aefb372fc6a703fb0b69e34560e72a2f78705178babdffa00119a5f", + "dependencies": [ + "jsr:@std/assert@^1.0.8", + "jsr:@std/internal@^1.0.5" + ] + }, + "@std/fmt@0.223.0": { + "integrity": "6deb37794127dfc7d7bded2586b9fc6f5d50e62a8134846608baf71ffc1a5208" + }, + "@std/fmt@1.0.0": { + "integrity": "8a95c9fdbb61559418ccbc0f536080cf43341655e1444f9d375a66886ceaaa3d" + }, + "@std/fs@0.223.0": { + "integrity": "3b4b0550b2c524cbaaa5a9170c90e96cbb7354e837ad1bdaf15fc9df1ae9c31c" + }, + "@std/fs@0.229.3": { + "integrity": "783bca21f24da92e04c3893c9e79653227ab016c48e96b3078377ebd5222e6eb", + "dependencies": [ + "jsr:@std/path@1.0.0-rc.1" + ] + }, + "@std/fs@1.0.1": { + "integrity": "d6914ca2c21abe591f733b31dbe6331e446815e513e2451b3b9e472daddfefcb", + "dependencies": [ + "jsr:@std/path@^1.0.2" + ] + }, + "@std/fs@1.0.5": { + "integrity": "41806ad6823d0b5f275f9849a2640d87e4ef67c51ee1b8fb02426f55e02fd44e", + "dependencies": [ + "jsr:@std/path@^1.0.7" + ] + }, + "@std/internal@1.0.3": { + "integrity": "208e9b94a3d5649bd880e9ca38b885ab7651ab5b5303a56ed25de4755fb7b11e" + }, + "@std/internal@1.0.5": { + "integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba" + }, + "@std/io@0.223.0": { + "integrity": "2d8c3c2ab3a515619b90da2c6ff5ea7b75a94383259ef4d02116b228393f84f1", + "dependencies": [ + "jsr:@std/assert@0.223", + "jsr:@std/bytes@0.223" + ] + }, + "@std/path@0.223.0": { + "integrity": "593963402d7e6597f5a6e620931661053572c982fc014000459edc1f93cc3989", + "dependencies": [ + "jsr:@std/assert@0.223" + ] + }, + "@std/path@0.225.2": { + "integrity": "0f2db41d36b50ef048dcb0399aac720a5348638dd3cb5bf80685bf2a745aa506", + "dependencies": [ + "jsr:@std/assert@0.226" + ] + }, + "@std/path@1.0.0-rc.1": { + "integrity": "b8c00ae2f19106a6bb7cbf1ab9be52aa70de1605daeb2dbdc4f87a7cbaf10ff6" + }, + "@std/path@1.0.2": { + "integrity": "a452174603f8c620bd278a380c596437a9eef50c891c64b85812f735245d9ec7" + }, + "@std/path@1.0.8": { + "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" + }, + "@std/testing@1.0.2": { + "integrity": "9e8a7f4e26c219addabe7942d09c3450fa0a74e9662341961bc0ef502274dec3" + }, + "@std/testing@1.0.5": { + "integrity": "6e693cbec94c81a1ad3df668685c7ba8e20742bb10305bc7137faa5cf16d2ec4", + "dependencies": [ + "jsr:@std/assert@^1.0.8", + "jsr:@std/data-structures", + "jsr:@std/fs@^1.0.5", + "jsr:@std/internal@^1.0.5", + "jsr:@std/path@^1.0.8" + ] + }, + "@ts-morph/bootstrap@0.24.0": { + "integrity": "a826a2ef7fa8a7c3f1042df2c034d20744d94da2ee32bf29275bcd4dffd3c060", + "dependencies": [ + "jsr:@ts-morph/common" + ] + }, + "@ts-morph/common@0.24.0": { + "integrity": "12b625b8e562446ba658cdbe9ad77774b4bd96b992ae8bd34c60dbf24d06c1f3", + "dependencies": [ + "jsr:@std/fs@~0.229.3", + "jsr:@std/path@~0.225.2" + ] + } + }, + "npm": { + "@babel/code-frame@7.24.7": { + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dependencies": [ + "@babel/highlight", + "picocolors" + ] + }, + "@babel/helper-validator-identifier@7.24.7": { + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" + }, + "@babel/highlight@7.24.7": { + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": [ + "@babel/helper-validator-identifier", + "chalk@2.4.2", + "js-tokens", + "picocolors" + ] + }, + "@babel/runtime@7.25.6": { + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dependencies": [ + "regenerator-runtime@0.14.1" + ] + }, + "@esbuild/aix-ppc64@0.24.0": { + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==" + }, + "@esbuild/android-arm64@0.24.0": { + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==" + }, + "@esbuild/android-arm@0.24.0": { + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==" + }, + "@esbuild/android-x64@0.24.0": { + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==" + }, + "@esbuild/darwin-arm64@0.24.0": { + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==" + }, + "@esbuild/darwin-x64@0.24.0": { + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==" + }, + "@esbuild/freebsd-arm64@0.24.0": { + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==" + }, + "@esbuild/freebsd-x64@0.24.0": { + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==" + }, + "@esbuild/linux-arm64@0.24.0": { + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==" + }, + "@esbuild/linux-arm@0.24.0": { + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==" + }, + "@esbuild/linux-ia32@0.24.0": { + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==" + }, + "@esbuild/linux-loong64@0.24.0": { + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==" + }, + "@esbuild/linux-mips64el@0.24.0": { + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==" + }, + "@esbuild/linux-ppc64@0.24.0": { + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==" + }, + "@esbuild/linux-riscv64@0.24.0": { + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==" + }, + "@esbuild/linux-s390x@0.24.0": { + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==" + }, + "@esbuild/linux-x64@0.24.0": { + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==" + }, + "@esbuild/netbsd-x64@0.24.0": { + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==" + }, + "@esbuild/openbsd-arm64@0.24.0": { + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==" + }, + "@esbuild/openbsd-x64@0.24.0": { + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==" + }, + "@esbuild/sunos-x64@0.24.0": { + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==" + }, + "@esbuild/win32-arm64@0.24.0": { + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==" + }, + "@esbuild/win32-ia32@0.24.0": { + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==" + }, + "@esbuild/win32-x64@0.24.0": { + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==" + }, + "@lezer/common@1.2.1": { + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + }, + "@lezer/lr@1.4.2": { + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "dependencies": [ + "@lezer/common" + ] + }, + "@lmdb/lmdb-darwin-arm64@2.8.5": { + "integrity": "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==" + }, + "@lmdb/lmdb-darwin-x64@2.8.5": { + "integrity": "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==" + }, + "@lmdb/lmdb-linux-arm64@2.8.5": { + "integrity": "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==" + }, + "@lmdb/lmdb-linux-arm@2.8.5": { + "integrity": "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==" + }, + "@lmdb/lmdb-linux-x64@2.8.5": { + "integrity": "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==" + }, + "@lmdb/lmdb-win32-x64@2.8.5": { + "integrity": "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==" + }, + "@mischnic/json-sourcemap@0.1.1": { + "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", + "dependencies": [ + "@lezer/common", + "@lezer/lr", + "json5" + ] + }, + "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": { + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==" + }, + "@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": { + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==" + }, + "@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": { + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==" + }, + "@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": { + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==" + }, + "@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": { + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==" + }, + "@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": { + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==" + }, + "@parcel/bundler-default@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/graph", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/rust", + "@parcel/utils", + "nullthrows" + ] + }, + "@parcel/cache@2.12.0": { + "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==" + }, + "@parcel/cache@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", + "dependencies": [ + "@parcel/core@2.12.0", + "@parcel/fs@2.12.0_@parcel+core@2.12.0", + "@parcel/logger", + "@parcel/utils", + "lmdb" + ] + }, + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { + "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/logger", + "@parcel/utils", + "lmdb" + ] + }, + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/logger", + "@parcel/utils", + "lmdb" + ] + }, + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { + "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/logger", + "@parcel/utils", + "lmdb" + ] + }, + "@parcel/codeframe@2.12.0": { + "integrity": "sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==", + "dependencies": [ + "chalk@4.1.2" + ] + }, + "@parcel/compressor-raw@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/config-default@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==", + "dependencies": [ + "@parcel/bundler-default", + "@parcel/compressor-raw", + "@parcel/core@2.12.0", + "@parcel/namer-default", + "@parcel/optimizer-css", + "@parcel/optimizer-htmlnano", + "@parcel/optimizer-image", + "@parcel/optimizer-svgo", + "@parcel/optimizer-swc", + "@parcel/packager-css", + "@parcel/packager-html", + "@parcel/packager-js", + "@parcel/packager-raw", + "@parcel/packager-svg", + "@parcel/packager-wasm", + "@parcel/reporter-dev-server", + "@parcel/resolver-default", + "@parcel/runtime-browser-hmr", + "@parcel/runtime-js", + "@parcel/runtime-react-refresh", + "@parcel/runtime-service-worker", + "@parcel/transformer-babel", + "@parcel/transformer-css", + "@parcel/transformer-html", + "@parcel/transformer-image", + "@parcel/transformer-js", + "@parcel/transformer-json", + "@parcel/transformer-postcss", + "@parcel/transformer-posthtml", + "@parcel/transformer-raw", + "@parcel/transformer-react-refresh-wrap", + "@parcel/transformer-svg" + ] + }, + "@parcel/core@2.12.0": { + "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==", + "dependencies": [ + "@mischnic/json-sourcemap", + "@parcel/cache@2.12.0_@parcel+core@2.12.0", + "@parcel/diagnostic", + "@parcel/events", + "@parcel/fs@2.12.0_@parcel+core@2.12.0", + "@parcel/graph", + "@parcel/logger", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/profiler", + "@parcel/rust", + "@parcel/source-map", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0", + "abortcontroller-polyfill", + "base-x", + "browserslist", + "clone", + "dotenv", + "dotenv-expand", + "json5", + "msgpackr", + "nullthrows", + "semver" + ] + }, + "@parcel/core@2.12.0_@swc+helpers@0.5.12": { + "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==", + "dependencies": [ + "@mischnic/json-sourcemap", + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/events", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12", + "@parcel/graph", + "@parcel/logger", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", + "@parcel/profiler", + "@parcel/rust", + "@parcel/source-map", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "abortcontroller-polyfill", + "base-x", + "browserslist", + "clone", + "dotenv", + "dotenv-expand", + "json5", + "msgpackr", + "nullthrows", + "semver" + ] + }, + "@parcel/diagnostic@2.12.0": { + "integrity": "sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==", + "dependencies": [ + "@mischnic/json-sourcemap", + "nullthrows" + ] + }, + "@parcel/events@2.12.0": { + "integrity": "sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==" + }, + "@parcel/fs@2.12.0": { + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==" + }, + "@parcel/fs@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", + "dependencies": [ + "@parcel/core@2.12.0", + "@parcel/rust", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "@parcel/watcher", + "@parcel/workers@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/rust", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/utils", + "@parcel/watcher", + "@parcel/workers@2.12.0" + ] + }, + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12": { + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/rust", + "@parcel/types@2.12.0", + "@parcel/utils", + "@parcel/watcher", + "@parcel/workers@2.12.0" + ] + }, + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/rust", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/utils", + "@parcel/watcher", + "@parcel/workers@2.12.0" + ] + }, + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { + "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/rust", + "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/utils", + "@parcel/watcher", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12" + ] + }, + "@parcel/graph@3.2.0": { + "integrity": "sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==", + "dependencies": [ + "nullthrows" + ] + }, + "@parcel/logger@2.12.0": { + "integrity": "sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/events" + ] + }, + "@parcel/markdown-ansi@2.12.0": { + "integrity": "sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==", + "dependencies": [ + "chalk@4.1.2" + ] + }, + "@parcel/namer-default@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "nullthrows" + ] + }, + "@parcel/node-resolver-core@3.3.0": { + "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", + "dependencies": [ + "@mischnic/json-sourcemap", + "@parcel/diagnostic", + "@parcel/fs@2.12.0", + "@parcel/rust", + "@parcel/utils", + "nullthrows", + "semver" + ] + }, + "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0": { + "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", + "dependencies": [ + "@mischnic/json-sourcemap", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0", + "@parcel/rust", + "@parcel/utils", + "nullthrows", + "semver" + ] + }, + "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", + "dependencies": [ + "@mischnic/json-sourcemap", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/rust", + "@parcel/utils", + "nullthrows", + "semver" + ] + }, + "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { + "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", + "dependencies": [ + "@mischnic/json-sourcemap", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/rust", + "@parcel/utils", + "nullthrows", + "semver" + ] + }, + "@parcel/optimizer-css@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/source-map", + "@parcel/utils", + "browserslist", + "lightningcss", + "nullthrows" + ] + }, + "@parcel/optimizer-htmlnano@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "htmlnano", + "nullthrows", + "posthtml", + "svgo" + ] + }, + "@parcel/optimizer-image@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==", + "dependencies": [ + "@parcel/core@2.12.0", + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/rust", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/optimizer-svgo@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "svgo" + ] + }, + "@parcel/optimizer-swc@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/source-map", + "@parcel/utils", + "@swc/core@1.7.22_@swc+helpers@0.5.12", + "nullthrows" + ] + }, + "@parcel/package-manager@2.12.0": { + "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==" + }, + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", + "dependencies": [ + "@parcel/core@2.12.0", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0", + "@parcel/logger", + "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0", + "@swc/core@1.7.22_@swc+helpers@0.5.12", + "semver" + ] + }, + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { + "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/logger", + "@parcel/node-resolver-core@3.3.0", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@swc/core@1.7.22", + "semver" + ] + }, + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/logger", + "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@swc/core@1.7.22_@swc+helpers@0.5.12", + "semver" + ] + }, + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { + "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", + "@parcel/logger", + "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@swc/core@1.7.22_@swc+helpers@0.5.12", + "semver" + ] + }, + "@parcel/packager-css@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/source-map", + "@parcel/utils", + "lightningcss", + "nullthrows" + ] + }, + "@parcel/packager-html@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "nullthrows", + "posthtml" + ] + }, + "@parcel/packager-js@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/rust", + "@parcel/source-map", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "globals", + "nullthrows" + ] + }, + "@parcel/packager-raw@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/packager-svg@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "posthtml" + ] + }, + "@parcel/packager-wasm@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/plugin@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", + "dependencies": [ + "@parcel/types@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", + "dependencies": [ + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12" + ] + }, + "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { + "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", + "dependencies": [ + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0" + ] + }, + "@parcel/profiler@2.12.0": { + "integrity": "sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/events", + "chrome-trace-event" + ] + }, + "@parcel/reporter-cli@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "chalk@4.1.2", + "term-size" + ] + }, + "@parcel/reporter-dev-server@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils" + ] + }, + "@parcel/reporter-tracer@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "chrome-trace-event", + "nullthrows" + ] + }, + "@parcel/resolver-default@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==", + "dependencies": [ + "@parcel/node-resolver-core@3.3.0_@parcel+core@2.12.0", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/runtime-browser-hmr@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils" + ] + }, + "@parcel/runtime-js@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "nullthrows" + ] + }, + "@parcel/runtime-react-refresh@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "react-error-overlay", + "react-refresh" + ] + }, + "@parcel/runtime-service-worker@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "nullthrows" + ] + }, + "@parcel/rust@2.12.0": { + "integrity": "sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==" + }, + "@parcel/source-map@2.1.1": { + "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", + "dependencies": [ + "detect-libc@1.0.3" + ] + }, + "@parcel/transformer-babel@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/source-map", + "@parcel/utils", + "browserslist", + "json5", + "nullthrows", + "semver" + ] + }, + "@parcel/transformer-css@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/source-map", + "@parcel/utils", + "browserslist", + "lightningcss", + "nullthrows" + ] + }, + "@parcel/transformer-html@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/rust", + "nullthrows", + "posthtml", + "posthtml-parser@0.10.2", + "posthtml-render", + "semver", + "srcset" + ] + }, + "@parcel/transformer-image@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==", + "dependencies": [ + "@parcel/core@2.12.0", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0", + "nullthrows" + ] + }, + "@parcel/transformer-js@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/rust", + "@parcel/source-map", + "@parcel/utils", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@swc/helpers", + "browserslist", + "nullthrows", + "regenerator-runtime@0.13.11", + "semver" + ] + }, + "@parcel/transformer-json@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "json5" + ] + }, + "@parcel/transformer-postcss@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/rust", + "@parcel/utils", + "clone", + "nullthrows", + "postcss-value-parser", + "semver" + ] + }, + "@parcel/transformer-posthtml@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "nullthrows", + "posthtml", + "posthtml-parser@0.10.2", + "posthtml-render", + "semver" + ] + }, + "@parcel/transformer-raw@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0" + ] + }, + "@parcel/transformer-react-refresh-wrap@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==", + "dependencies": [ + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "react-refresh" + ] + }, + "@parcel/transformer-svg@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==", + "dependencies": [ + "@parcel/diagnostic", + "@parcel/plugin@2.12.0_@parcel+core@2.12.0", + "@parcel/rust", + "nullthrows", + "posthtml", + "posthtml-parser@0.10.2", + "posthtml-render", + "semver" + ] + }, + "@parcel/types@2.12.0": { + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "dependencies": [ + "@parcel/cache@2.12.0", + "@parcel/diagnostic", + "@parcel/fs@2.12.0", + "@parcel/package-manager@2.12.0", + "@parcel/source-map", + "@parcel/workers@2.12.0", + "utility-types" + ] + }, + "@parcel/types@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "dependencies": [ + "@parcel/cache@2.12.0_@parcel+core@2.12.0", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", + "@parcel/source-map", + "@parcel/workers@2.12.0_@parcel+core@2.12.0", + "utility-types" + ] + }, + "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "dependencies": [ + "@parcel/cache@2.12.0_@parcel+core@2.12.0", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", + "@parcel/source-map", + "@parcel/workers@2.12.0_@parcel+core@2.12.0", + "utility-types" + ] + }, + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "dependencies": [ + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/source-map", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "utility-types" + ] + }, + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12": { + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "dependencies": [ + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/source-map", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12", + "utility-types" + ] + }, + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "dependencies": [ + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/source-map", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "utility-types" + ] + }, + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12_@parcel+core@2.12.0": { + "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "dependencies": [ + "@parcel/cache@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/fs@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/source-map", + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "utility-types" + ] + }, + "@parcel/utils@2.12.0": { + "integrity": "sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==", + "dependencies": [ + "@parcel/codeframe", + "@parcel/diagnostic", + "@parcel/logger", + "@parcel/markdown-ansi", + "@parcel/rust", + "@parcel/source-map", + "chalk@4.1.2", + "nullthrows" + ] + }, + "@parcel/watcher-android-arm64@2.3.0": { + "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==" + }, + "@parcel/watcher-darwin-arm64@2.3.0": { + "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==" + }, + "@parcel/watcher-darwin-x64@2.3.0": { + "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==" + }, + "@parcel/watcher-freebsd-x64@2.3.0": { + "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==" + }, + "@parcel/watcher-linux-arm-glibc@2.3.0": { + "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==" + }, + "@parcel/watcher-linux-arm64-glibc@2.3.0": { + "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==" + }, + "@parcel/watcher-linux-arm64-musl@2.3.0": { + "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==" + }, + "@parcel/watcher-linux-x64-glibc@2.3.0": { + "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==" + }, + "@parcel/watcher-linux-x64-musl@2.3.0": { + "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==" + }, + "@parcel/watcher-win32-arm64@2.3.0": { + "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==" + }, + "@parcel/watcher-win32-ia32@2.3.0": { + "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==" + }, + "@parcel/watcher-win32-x64@2.3.0": { + "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==" + }, + "@parcel/watcher@2.3.0": { + "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "dependencies": [ + "@parcel/watcher-android-arm64", + "@parcel/watcher-darwin-arm64", + "@parcel/watcher-darwin-x64", + "@parcel/watcher-freebsd-x64", + "@parcel/watcher-linux-arm-glibc", + "@parcel/watcher-linux-arm64-glibc", + "@parcel/watcher-linux-arm64-musl", + "@parcel/watcher-linux-x64-glibc", + "@parcel/watcher-linux-x64-musl", + "@parcel/watcher-win32-arm64", + "@parcel/watcher-win32-ia32", + "@parcel/watcher-win32-x64", + "detect-libc@1.0.3", + "is-glob", + "micromatch", + "node-addon-api@7.1.1" + ] + }, + "@parcel/workers@2.12.0": { + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==" + }, + "@parcel/workers@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", + "dependencies": [ + "@parcel/core@2.12.0", + "@parcel/diagnostic", + "@parcel/logger", + "@parcel/profiler", + "@parcel/types@2.12.0_@parcel+core@2.12.0", + "@parcel/utils", + "nullthrows" + ] + }, + "@parcel/workers@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/logger", + "@parcel/profiler", + "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/utils", + "nullthrows" + ] + }, + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12": { + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/logger", + "@parcel/profiler", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12", + "@parcel/utils", + "nullthrows" + ] + }, + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@parcel+core@2.12.0_@swc+helpers@0.5.12": { + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/logger", + "@parcel/profiler", + "@parcel/types@2.12.0_@parcel+core@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/utils", + "nullthrows" + ] + }, + "@parcel/workers@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12": { + "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", + "dependencies": [ + "@parcel/core@2.12.0_@swc+helpers@0.5.12", + "@parcel/diagnostic", + "@parcel/logger", + "@parcel/profiler", + "@parcel/types@2.12.0_@parcel+core@2.12.0__@swc+helpers@0.5.12_@swc+helpers@0.5.12", + "@parcel/utils", + "nullthrows" + ] + }, + "@swc/core-darwin-arm64@1.7.22": { + "integrity": "sha512-B2Bh2W+C7ALdGwDxRWAJ+UtNExfozvwyayGiNkbR3wmDKXXeQfhGM5MK+QYUWKu7UQ6ATq69OyZrxofDobKUug==" + }, + "@swc/core-darwin-x64@1.7.22": { + "integrity": "sha512-s34UQntnQ6tL9hS9aX3xG7OfGhpmy05FEEndbHaooGO8O+L5k8uWxhE5KhYCOC0N803sGdZg6YZmKtYrWN/YxA==" + }, + "@swc/core-linux-arm-gnueabihf@1.7.22": { + "integrity": "sha512-SE69+oos1jLOXx5YdMH//Qc5zQc2xYukajB+0BWmkcFd/S/cCanGWYtdSzYausm8af2Fw1hPJMNIfndJLnBDFw==" + }, + "@swc/core-linux-arm64-gnu@1.7.22": { + "integrity": "sha512-59FzDW/ojgiTj4dlnv3Z3ESuVlzhSAq9X12CNYh4/WTCNA8BoJqOnWMRQKspWtoNlnVviFLMvpek0pGXHndEBA==" + }, + "@swc/core-linux-arm64-musl@1.7.22": { + "integrity": "sha512-cMQMI8YRO/XR3OrYuiUlWksNsJOZSkA6gSLNyH6eHTw+FOAzv05oJ4SFYe6s1WesrOqRwhpez6y5H6OIP/EKzg==" + }, + "@swc/core-linux-x64-gnu@1.7.22": { + "integrity": "sha512-639kA7MXrWqWYfwuSJ+XTg21VYb/5o99R1zJrndoEjEX6m7Wza/sXssQKU5jbbkPoSEKVKNP3n/gazLWiUKgiQ==" + }, + "@swc/core-linux-x64-musl@1.7.22": { + "integrity": "sha512-f3zfGgY8EJQUOk3ve25ZTkNkhB/kHo9QlN2r+0exaE1g9W7X8IS6J8pWzF3hJrV2P9dBi6ofMOt+opVA89JKHA==" + }, + "@swc/core-win32-arm64-msvc@1.7.22": { + "integrity": "sha512-p/Fav5U+LtTJD/tbbS0dKK8SVVAhXo5Jdm1TDeBPJ4BEIVguYBZEXgD3CW9wY4K34g1hscpiz2Q2rktfhFj1+A==" + }, + "@swc/core-win32-ia32-msvc@1.7.22": { + "integrity": "sha512-HbmfasaCNTqeCTvDjleYj+jJZQ6MlraiVOdhW55KtbA9mAVQdPBq6DDAvR7VOero3wUNYUM/e36otFKgEJI5Rg==" + }, + "@swc/core-win32-x64-msvc@1.7.22": { + "integrity": "sha512-lppIveE+hpe7WXny/9cUT+T6sBM/ND0E+dviKWJ5jFBISj2KWomlSJGUjYEsRGJVPnTEc8uOlKK7etmXBhQx9A==" + }, + "@swc/core@1.7.22": { + "integrity": "sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig==", + "dependencies": [ + "@swc/core-darwin-arm64", + "@swc/core-darwin-x64", + "@swc/core-linux-arm-gnueabihf", + "@swc/core-linux-arm64-gnu", + "@swc/core-linux-arm64-musl", + "@swc/core-linux-x64-gnu", + "@swc/core-linux-x64-musl", + "@swc/core-win32-arm64-msvc", + "@swc/core-win32-ia32-msvc", + "@swc/core-win32-x64-msvc", + "@swc/counter", + "@swc/types" + ] + }, + "@swc/core@1.7.22_@swc+helpers@0.5.12": { + "integrity": "sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig==", + "dependencies": [ + "@swc/core-darwin-arm64", + "@swc/core-darwin-x64", + "@swc/core-linux-arm-gnueabihf", + "@swc/core-linux-arm64-gnu", + "@swc/core-linux-arm64-musl", + "@swc/core-linux-x64-gnu", + "@swc/core-linux-x64-musl", + "@swc/core-win32-arm64-msvc", + "@swc/core-win32-ia32-msvc", + "@swc/core-win32-x64-msvc", + "@swc/counter", + "@swc/helpers", + "@swc/types" + ] + }, + "@swc/counter@0.1.3": { + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "@swc/helpers@0.5.12": { + "integrity": "sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==", + "dependencies": [ + "tslib" + ] + }, + "@swc/types@0.1.12": { + "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", + "dependencies": [ + "@swc/counter" + ] + }, + "@testing-library/dom@8.20.1": { + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dependencies": [ + "@babel/code-frame", + "@babel/runtime", + "@types/aria-query", + "aria-query", + "chalk@4.1.2", + "dom-accessibility-api", + "lz-string", + "pretty-format" + ] + }, + "@testing-library/user-event@14.5.2_@testing-library+dom@8.20.1": { + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dependencies": [ + "@testing-library/dom" + ] + }, + "@trysound/sax@0.2.0": { + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + }, + "@types/aria-query@5.0.4": { + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + }, + "@types/node@22.5.4": { + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "dependencies": [ + "undici-types" + ] + }, + "abortcontroller-polyfill@1.7.5": { + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + }, + "agent-base@7.1.1": { + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": [ + "debug" + ] + }, + "ansi-regex@5.0.1": { + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles@3.2.1": { + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": [ + "color-convert@1.9.3" + ] + }, + "ansi-styles@4.3.0": { + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": [ + "color-convert@2.0.1" + ] + }, + "ansi-styles@5.2.0": { + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + }, + "argparse@2.0.1": { + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "aria-query@5.1.3": { + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dependencies": [ + "deep-equal" + ] + }, + "array-buffer-byte-length@1.0.1": { + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": [ + "call-bind", + "is-array-buffer" + ] + }, + "asynckit@0.4.0": { + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "available-typed-arrays@1.0.7": { + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": [ + "possible-typed-array-names" + ] + }, + "base-x@3.0.10": { + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": [ + "safe-buffer" + ] + }, + "boolbase@1.0.0": { + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "braces@3.0.3": { + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": [ + "fill-range" + ] + }, + "browserslist@4.23.3": { + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dependencies": [ + "caniuse-lite", + "electron-to-chromium", + "node-releases", + "update-browserslist-db" + ] + }, + "call-bind@1.0.7": { + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": [ + "es-define-property", + "es-errors", + "function-bind", + "get-intrinsic", + "set-function-length" + ] + }, + "callsites@3.1.0": { + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case@4.1.2": { + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": [ + "pascal-case", + "tslib" + ] + }, + "caniuse-lite@1.0.30001650": { + "integrity": "sha512-fgEc7hP/LB7iicdXHUI9VsBsMZmUmlVJeQP2qqQW+3lkqVhbmjEU8zp+h5stWeilX+G7uXuIUIIlWlDw9jdt8g==" + }, + "capital-case@1.0.4": { + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dependencies": [ + "no-case", + "tslib", + "upper-case-first" + ] + }, + "chalk@2.4.2": { + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": [ + "ansi-styles@3.2.1", + "escape-string-regexp", + "supports-color@5.5.0" + ] + }, + "chalk@4.1.2": { + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": [ + "ansi-styles@4.3.0", + "supports-color@7.2.0" + ] + }, + "change-case@4.1.2": { + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dependencies": [ + "camel-case", + "capital-case", + "constant-case", + "dot-case", + "header-case", + "no-case", + "param-case", + "pascal-case", + "path-case", + "sentence-case", + "snake-case", + "tslib" + ] + }, + "chokidar@4.0.1": { + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dependencies": [ + "readdirp" + ] + }, + "chrome-trace-event@1.0.4": { + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==" + }, + "cliui@8.0.1": { + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": [ + "string-width", + "strip-ansi", + "wrap-ansi" + ] + }, + "clone@2.1.2": { + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "color-convert@1.9.3": { + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": [ + "color-name@1.1.3" + ] + }, + "color-convert@2.0.1": { + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": [ + "color-name@1.1.4" + ] + }, + "color-name@1.1.3": { + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-name@1.1.4": { + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream@1.0.8": { + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": [ + "delayed-stream" + ] + }, + "commander@7.2.0": { + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "constant-case@3.0.4": { + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dependencies": [ + "no-case", + "tslib", + "upper-case" + ] + }, + "cosmiconfig@9.0.0": { + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dependencies": [ + "env-paths", + "import-fresh", + "js-yaml", + "parse-json" + ] + }, + "css-select@4.3.0": { + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": [ + "boolbase", + "css-what", + "domhandler", + "domutils", + "nth-check" + ] + }, + "css-tree@1.1.3": { + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": [ + "mdn-data", + "source-map" + ] + }, + "css-what@6.1.0": { + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "csso@4.2.0": { + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": [ + "css-tree" + ] + }, + "cssstyle@4.1.0": { + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", + "dependencies": [ + "rrweb-cssom" + ] + }, + "data-urls@5.0.0": { + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "dependencies": [ + "whatwg-mimetype", + "whatwg-url" + ] + }, + "debug@4.3.7": { + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": [ + "ms" + ] + }, + "decimal.js@10.4.3": { + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "deep-equal@2.2.3": { + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dependencies": [ + "array-buffer-byte-length", + "call-bind", + "es-get-iterator", + "get-intrinsic", + "is-arguments", + "is-array-buffer", + "is-date-object", + "is-regex", + "is-shared-array-buffer", + "isarray", + "object-is", + "object-keys", + "object.assign", + "regexp.prototype.flags", + "side-channel", + "which-boxed-primitive", + "which-collection", + "which-typed-array" + ] + }, + "define-data-property@1.1.4": { + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": [ + "es-define-property", + "es-errors", + "gopd" + ] + }, + "define-properties@1.2.1": { + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": [ + "define-data-property", + "has-property-descriptors", + "object-keys" + ] + }, + "delayed-stream@1.0.0": { + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "detect-libc@1.0.3": { + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" + }, + "detect-libc@2.0.3": { + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, + "dom-accessibility-api@0.5.16": { + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + }, + "dom-serializer@1.4.1": { + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": [ + "domelementtype", + "domhandler", + "entities@2.2.0" + ] + }, + "domelementtype@2.3.0": { + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler@4.3.1": { + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": [ + "domelementtype" + ] + }, + "domutils@2.8.0": { + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": [ + "dom-serializer", + "domelementtype", + "domhandler" + ] + }, + "dot-case@3.0.4": { + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": [ + "no-case", + "tslib" + ] + }, + "dotenv-expand@5.1.0": { + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "dotenv@7.0.0": { + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==" + }, + "effection@3.0.3": { + "integrity": "sha512-9ASCaJ44flDoEKUUJtn9drfIomn2z30sZUw7//crbq+eltMu09AyILcouXwpMkcHR8TsD5hDvTTsOLHswWRxXQ==" + }, + "electron-to-chromium@1.5.5": { + "integrity": "sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==" + }, + "element-is-visible@1.0.0": { + "integrity": "sha512-OegdS3Zoz+LOcLlZhPEnE8K0DKhxfcbN2JHTDSiH5jTZQgaUk/Dl+nkQ8d8eJzs/qZ21apeS3ezEIHfu6SzyDQ==" + }, + "emoji-regex@8.0.0": { + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "entities@2.2.0": { + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "entities@3.0.1": { + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" + }, + "entities@4.5.0": { + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "env-paths@2.2.1": { + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "error-ex@1.3.2": { + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": [ + "is-arrayish" + ] + }, + "es-define-property@1.0.0": { + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": [ + "get-intrinsic" + ] + }, + "es-errors@1.3.0": { + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-get-iterator@1.1.3": { + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": [ + "call-bind", + "get-intrinsic", + "has-symbols", + "is-arguments", + "is-map", + "is-set", + "is-string", + "isarray", + "stop-iteration-iterator" + ] + }, + "esbuild@0.24.0": { + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dependencies": [ + "@esbuild/aix-ppc64", + "@esbuild/android-arm", + "@esbuild/android-arm64", + "@esbuild/android-x64", + "@esbuild/darwin-arm64", + "@esbuild/darwin-x64", + "@esbuild/freebsd-arm64", + "@esbuild/freebsd-x64", + "@esbuild/linux-arm", + "@esbuild/linux-arm64", + "@esbuild/linux-ia32", + "@esbuild/linux-loong64", + "@esbuild/linux-mips64el", + "@esbuild/linux-ppc64", + "@esbuild/linux-riscv64", + "@esbuild/linux-s390x", + "@esbuild/linux-x64", + "@esbuild/netbsd-x64", + "@esbuild/openbsd-arm64", + "@esbuild/openbsd-x64", + "@esbuild/sunos-x64", + "@esbuild/win32-arm64", + "@esbuild/win32-ia32", + "@esbuild/win32-x64" + ] + }, + "escalade@3.1.2": { + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" + }, + "escape-string-regexp@1.0.5": { + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "fill-range@7.1.1": { + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": [ + "to-regex-range" + ] + }, + "for-each@0.3.3": { + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": [ + "is-callable" + ] + }, + "form-data@4.0.0": { + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": [ + "asynckit", + "combined-stream", + "mime-types" + ] + }, + "fsevents@2.3.2": { + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "functions-have-names@1.2.3": { + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "get-caller-file@2.0.5": { + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic@1.2.4": { + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": [ + "es-errors", + "function-bind", + "has-proto", + "has-symbols", + "hasown" + ] + }, + "get-port@4.2.0": { + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==" + }, + "globals@13.24.0": { + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": [ + "type-fest" + ] + }, + "gopd@1.0.1": { + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": [ + "get-intrinsic" + ] + }, + "has-bigints@1.0.2": { + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag@3.0.0": { + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-flag@4.0.0": { + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors@1.0.2": { + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": [ + "es-define-property" + ] + }, + "has-proto@1.0.3": { + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols@1.0.3": { + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag@1.0.2": { + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": [ + "has-symbols" + ] + }, + "hasown@2.0.2": { + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": [ + "function-bind" + ] + }, + "header-case@2.0.4": { + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dependencies": [ + "capital-case", + "tslib" + ] + }, + "html-encoding-sniffer@4.0.0": { + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dependencies": [ + "whatwg-encoding" + ] + }, + "htmlnano@2.1.1": { + "integrity": "sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==", + "dependencies": [ + "cosmiconfig", + "posthtml", + "timsort" + ] + }, + "htmlparser2@7.2.0": { + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dependencies": [ + "domelementtype", + "domhandler", + "domutils", + "entities@3.0.1" + ] + }, + "http-proxy-agent@7.0.2": { + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": [ + "agent-base", + "debug" + ] + }, + "https-proxy-agent@7.0.5": { + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": [ + "agent-base", + "debug" + ] + }, + "iconv-lite@0.6.3": { + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": [ + "safer-buffer" + ] + }, + "import-fresh@3.3.0": { + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": [ + "parent-module", + "resolve-from" + ] + }, + "internal-slot@1.0.7": { + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dependencies": [ + "es-errors", + "hasown", + "side-channel" + ] + }, + "is-arguments@1.1.1": { + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": [ + "call-bind", + "has-tostringtag" + ] + }, + "is-array-buffer@3.0.4": { + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": [ + "call-bind", + "get-intrinsic" + ] + }, + "is-arrayish@0.2.1": { + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint@1.0.4": { + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": [ + "has-bigints" + ] + }, + "is-boolean-object@1.1.2": { + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": [ + "call-bind", + "has-tostringtag" + ] + }, + "is-callable@1.2.7": { + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-date-object@1.0.5": { + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point@3.0.0": { + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": [ + "is-extglob" + ] + }, + "is-json@2.0.1": { + "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==" + }, + "is-map@2.0.3": { + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" + }, + "is-number-object@1.0.7": { + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-number@7.0.0": { + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-potential-custom-element-name@1.0.1": { + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "is-regex@1.1.4": { + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": [ + "call-bind", + "has-tostringtag" + ] + }, + "is-set@2.0.3": { + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" + }, + "is-shared-array-buffer@1.0.3": { + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dependencies": [ + "call-bind" + ] + }, + "is-string@1.0.7": { + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-symbol@1.0.4": { + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": [ + "has-symbols" + ] + }, + "is-weakmap@2.0.2": { + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" + }, + "is-weakset@2.0.3": { + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dependencies": [ + "call-bind", + "get-intrinsic" + ] + }, + "isarray@2.0.5": { + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml@4.1.0": { + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": [ + "argparse" + ] + }, + "jsdom@24.1.3": { + "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", + "dependencies": [ + "cssstyle", + "data-urls", + "decimal.js", + "form-data", + "html-encoding-sniffer", + "http-proxy-agent", + "https-proxy-agent", + "is-potential-custom-element-name", + "nwsapi", + "parse5", + "rrweb-cssom", + "saxes", + "symbol-tree", + "tough-cookie", + "w3c-xmlserializer", + "webidl-conversions", + "whatwg-encoding", + "whatwg-mimetype", + "whatwg-url", + "ws", + "xml-name-validator" + ] + }, + "json-parse-even-better-errors@2.3.1": { + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json5@2.2.3": { + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "lightningcss-darwin-arm64@1.26.0": { + "integrity": "sha512-n4TIvHO1NY1ondKFYpL2ZX0bcC2y6yjXMD6JfyizgR8BCFNEeArINDzEaeqlfX9bXz73Bpz/Ow0nu+1qiDrBKg==" + }, + "lightningcss-darwin-x64@1.26.0": { + "integrity": "sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg==" + }, + "lightningcss-freebsd-x64@1.26.0": { + "integrity": "sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g==" + }, + "lightningcss-linux-arm-gnueabihf@1.26.0": { + "integrity": "sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg==" + }, + "lightningcss-linux-arm64-gnu@1.26.0": { + "integrity": "sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA==" + }, + "lightningcss-linux-arm64-musl@1.26.0": { + "integrity": "sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig==" + }, + "lightningcss-linux-x64-gnu@1.26.0": { + "integrity": "sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA==" + }, + "lightningcss-linux-x64-musl@1.26.0": { + "integrity": "sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A==" + }, + "lightningcss-win32-arm64-msvc@1.26.0": { + "integrity": "sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw==" + }, + "lightningcss-win32-x64-msvc@1.26.0": { + "integrity": "sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw==" + }, + "lightningcss@1.26.0": { + "integrity": "sha512-a/XZ5hdgifrofQJUArr5AiJjx26SwMam3SJUSMjgebZbESZ96i+6Qsl8tLi0kaUsdMzBWXh9sN1Oe6hp2/dkQw==", + "dependencies": [ + "detect-libc@1.0.3", + "lightningcss-darwin-arm64", + "lightningcss-darwin-x64", + "lightningcss-freebsd-x64", + "lightningcss-linux-arm-gnueabihf", + "lightningcss-linux-arm64-gnu", + "lightningcss-linux-arm64-musl", + "lightningcss-linux-x64-gnu", + "lightningcss-linux-x64-musl", + "lightningcss-win32-arm64-msvc", + "lightningcss-win32-x64-msvc" + ] + }, + "lines-and-columns@1.2.4": { + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "lmdb@2.8.5": { + "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", + "dependencies": [ + "@lmdb/lmdb-darwin-arm64", + "@lmdb/lmdb-darwin-x64", + "@lmdb/lmdb-linux-arm", + "@lmdb/lmdb-linux-arm64", + "@lmdb/lmdb-linux-x64", + "@lmdb/lmdb-win32-x64", + "msgpackr", + "node-addon-api@6.1.0", + "node-gyp-build-optional-packages@5.1.1", + "ordered-binary", + "weak-lru-cache" + ] + }, + "lodash@4.17.21": { + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "loose-envify@1.4.0": { + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": [ + "js-tokens" + ] + }, + "lower-case@2.0.2": { + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": [ + "tslib" + ] + }, + "lz-string@1.5.0": { + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" + }, + "mdn-data@2.0.14": { + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "micromatch@4.0.7": { + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": [ + "braces", + "picomatch" + ] + }, + "mime-db@1.52.0": { + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types@2.1.35": { + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": [ + "mime-db" + ] + }, + "ms@2.1.3": { + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "msgpackr-extract@3.0.3": { + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dependencies": [ + "@msgpackr-extract/msgpackr-extract-darwin-arm64", + "@msgpackr-extract/msgpackr-extract-darwin-x64", + "@msgpackr-extract/msgpackr-extract-linux-arm", + "@msgpackr-extract/msgpackr-extract-linux-arm64", + "@msgpackr-extract/msgpackr-extract-linux-x64", + "@msgpackr-extract/msgpackr-extract-win32-x64", + "node-gyp-build-optional-packages@5.2.2" + ] + }, + "msgpackr@1.11.0": { + "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "dependencies": [ + "msgpackr-extract" + ] + }, + "no-case@3.0.4": { + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": [ + "lower-case", + "tslib" + ] + }, + "node-addon-api@6.1.0": { + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + }, + "node-addon-api@7.1.1": { + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" + }, + "node-gyp-build-optional-packages@5.1.1": { + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "dependencies": [ + "detect-libc@2.0.3" + ] + }, + "node-gyp-build-optional-packages@5.2.2": { + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dependencies": [ + "detect-libc@2.0.3" + ] + }, + "node-releases@2.0.18": { + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "nth-check@2.1.1": { + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": [ + "boolbase" + ] + }, + "nullthrows@1.1.1": { + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "nwsapi@2.2.12": { + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" + }, + "object-inspect@1.13.2": { + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" + }, + "object-is@1.1.6": { + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dependencies": [ + "call-bind", + "define-properties" + ] + }, + "object-keys@1.1.1": { + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign@4.1.5": { + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": [ + "call-bind", + "define-properties", + "has-symbols", + "object-keys" + ] + }, + "ordered-binary@1.5.1": { + "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==" + }, + "param-case@3.0.4": { + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": [ + "dot-case", + "tslib" + ] + }, + "parcel@2.12.0_@parcel+core@2.12.0": { + "integrity": "sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==", + "dependencies": [ + "@parcel/config-default", + "@parcel/core@2.12.0", + "@parcel/diagnostic", + "@parcel/events", + "@parcel/fs@2.12.0_@parcel+core@2.12.0", + "@parcel/logger", + "@parcel/package-manager@2.12.0_@parcel+core@2.12.0", + "@parcel/reporter-cli", + "@parcel/reporter-dev-server", + "@parcel/reporter-tracer", + "@parcel/utils", + "chalk@4.1.2", + "commander", + "get-port" + ] + }, + "parent-module@1.0.1": { + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": [ + "callsites" + ] + }, + "parse-json@5.2.0": { + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": [ + "@babel/code-frame", + "error-ex", + "json-parse-even-better-errors", + "lines-and-columns" + ] + }, + "parse5@7.1.2": { + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": [ + "entities@4.5.0" + ] + }, + "pascal-case@3.1.2": { + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": [ + "no-case", + "tslib" + ] + }, + "path-case@3.0.4": { + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": [ + "dot-case", + "tslib" + ] + }, + "performance-api@1.0.0": { + "integrity": "sha512-hZKWxgX3+rv9iPA6hBTr9U+9rNN8mf5joahZ5m9z/fEoqyfS/9qkVs7GGrb/JifjNlgqgduK6uWp+16n+petMg==" + }, + "picocolors@1.0.1": { + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "playwright-core@1.49.0": { + "integrity": "sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==" + }, + "playwright@1.49.0": { + "integrity": "sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==", + "dependencies": [ + "fsevents", + "playwright-core" + ] + }, + "possible-typed-array-names@1.0.0": { + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, + "postcss-value-parser@4.2.0": { + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "posthtml-parser@0.10.2": { + "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", + "dependencies": [ + "htmlparser2" + ] + }, + "posthtml-parser@0.11.0": { + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dependencies": [ + "htmlparser2" + ] + }, + "posthtml-render@3.0.0": { + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dependencies": [ + "is-json" + ] + }, + "posthtml@0.16.6": { + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dependencies": [ + "posthtml-parser@0.11.0", + "posthtml-render" + ] + }, + "pretty-format@27.5.1": { + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dependencies": [ + "ansi-regex", + "ansi-styles@5.2.0", + "react-is" + ] + }, + "psl@1.9.0": { + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "punycode@2.3.1": { + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "querystringify@2.2.0": { + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "react-error-overlay@6.0.9": { + "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" + }, + "react-is@17.0.2": { + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "react-refresh@0.9.0": { + "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==" + }, + "react@18.3.1": { + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": [ + "loose-envify" + ] + }, + "readdirp@4.0.2": { + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==" + }, + "regenerator-runtime@0.13.11": { + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "regenerator-runtime@0.14.1": { + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "regexp.prototype.flags@1.5.2": { + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dependencies": [ + "call-bind", + "define-properties", + "es-errors", + "set-function-name" + ] + }, + "require-directory@2.1.1": { + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "requires-port@1.0.0": { + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve-from@4.0.0": { + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "rrweb-cssom@0.7.1": { + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==" + }, + "safe-buffer@5.2.1": { + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer@2.1.2": { + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes@6.0.0": { + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dependencies": [ + "xmlchars" + ] + }, + "semver@7.6.3": { + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + }, + "sentence-case@3.0.4": { + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": [ + "no-case", + "tslib", + "upper-case-first" + ] + }, + "set-function-length@1.2.2": { + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": [ + "define-data-property", + "es-errors", + "function-bind", + "get-intrinsic", + "gopd", + "has-property-descriptors" + ] + }, + "set-function-name@2.0.2": { + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": [ + "define-data-property", + "es-errors", + "functions-have-names", + "has-property-descriptors" + ] + }, + "side-channel@1.0.6": { + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": [ + "call-bind", + "es-errors", + "get-intrinsic", + "object-inspect" + ] + }, + "snake-case@3.0.4": { + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": [ + "dot-case", + "tslib" + ] + }, + "source-map@0.6.1": { + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "srcset@4.0.0": { + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==" + }, + "stable@0.1.8": { + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stop-iteration-iterator@1.0.0": { + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": [ + "internal-slot" + ] + }, + "string-width@4.2.3": { + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": [ + "emoji-regex", + "is-fullwidth-code-point", + "strip-ansi" + ] + }, + "strip-ansi@6.0.1": { + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": [ + "ansi-regex" + ] + }, + "supports-color@5.5.0": { + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": [ + "has-flag@3.0.0" + ] + }, + "supports-color@7.2.0": { + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": [ + "has-flag@4.0.0" + ] + }, + "svgo@2.8.0": { + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": [ + "@trysound/sax", + "commander", + "css-select", + "css-tree", + "csso", + "picocolors", + "stable" + ] + }, + "symbol-tree@3.2.4": { + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "term-size@2.2.1": { + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" + }, + "timsort@0.3.0": { + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" + }, + "to-regex-range@5.0.1": { + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": [ + "is-number" + ] + }, + "tough-cookie@4.1.4": { + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dependencies": [ + "psl", + "punycode", + "universalify", + "url-parse" + ] + }, + "tr46@5.0.0": { + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dependencies": [ + "punycode" + ] + }, + "tslib@2.6.3": { + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "type-fest@0.20.2": { + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "undici-types@6.19.8": { + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "universalify@0.2.0": { + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + }, + "update-browserslist-db@1.1.0_browserslist@4.23.3": { + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dependencies": [ + "browserslist", + "escalade", + "picocolors" + ] + }, + "upper-case-first@2.0.2": { + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dependencies": [ + "tslib" + ] + }, + "upper-case@2.0.2": { + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dependencies": [ + "tslib" + ] + }, + "url-parse@1.5.10": { + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": [ + "querystringify", + "requires-port" + ] + }, + "utility-types@3.11.0": { + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==" + }, + "w3c-xmlserializer@5.0.0": { + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dependencies": [ + "xml-name-validator" + ] + }, + "weak-lru-cache@1.2.2": { + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" + }, + "webidl-conversions@7.0.0": { + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-encoding@3.1.1": { + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dependencies": [ + "iconv-lite" + ] + }, + "whatwg-mimetype@4.0.0": { + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==" + }, + "whatwg-url@14.0.0": { + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dependencies": [ + "tr46", + "webidl-conversions" + ] + }, + "which-boxed-primitive@1.0.2": { + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": [ + "is-bigint", + "is-boolean-object", + "is-number-object", + "is-string", + "is-symbol" + ] + }, + "which-collection@1.0.2": { + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dependencies": [ + "is-map", + "is-set", + "is-weakmap", + "is-weakset" + ] + }, + "which-typed-array@1.1.15": { + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": [ + "available-typed-arrays", + "call-bind", + "for-each", + "gopd", + "has-tostringtag" + ] + }, + "wrap-ansi@7.0.0": { + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": [ + "ansi-styles@4.3.0", + "string-width", + "strip-ansi" + ] + }, + "ws@8.18.0": { + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==" + }, + "xml-name-validator@5.0.0": { + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==" + }, + "xmlchars@2.2.0": { + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "y18n@5.0.8": { + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs-parser@21.1.1": { + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + }, + "yargs@17.7.2": { + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": [ + "cliui", + "escalade", + "get-caller-file", + "require-directory", + "string-width", + "y18n", + "yargs-parser" + ] + }, + "zod-opts@0.1.8": { + "integrity": "sha512-YZhdEcIL3D2W9fXCCf/UBgrBS90c8w25RTteh5GihGIZzadYr/qIFxyM2L98zHUkZ2S8MMxwn3ny8fzPNnvPlg==", + "dependencies": [ + "zod" + ] + }, + "zod@3.23.8": { + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==" } }, "remote": { @@ -2795,42 +2900,50 @@ }, "workspace": { "dependencies": [ - "jsr:@deno/dnt@^0.41.3" + "jsr:@deno/dnt@~0.41.3" ], "members": { + "packages/cli": { + "dependencies": [ + "npm:chokidar@^4.0.1", + "npm:effection@^3.0.3", + "npm:esbuild@0.24", + "npm:playwright@^1.49.0", + "npm:yargs@^17.7.2", + "npm:zod-opts@~0.1.8", + "npm:zod@^3.23.8" + ] + }, "packages/core": { "dependencies": [ - "jsr:@std/expect@^1.0.0", - "jsr:@std/testing@^1.0.0", - "npm:@effection/core@2.2.0", + "jsr:@std/expect@^1.0.8", + "jsr:@std/testing@^1.0.5", "npm:@testing-library/dom@^8.18.1", "npm:@testing-library/user-event@^14.5.2", "npm:change-case@^4.1.1", - "npm:element-is-visible@^1.0.0", - "npm:jsdom@^24.0.0", - "npm:lodash.isequal@^4.5.0", - "npm:performance-api@^1.0.0" + "npm:element-is-visible@1", + "npm:jsdom@24", + "npm:performance-api@1" ] }, "packages/globals": { "dependencies": [ - "jsr:@std/expect@^1.0.0", - "jsr:@std/testing@^1.0.0", - "npm:@effection/core@2.2.0", - "npm:jsdom@^24.0.0" + "jsr:@std/expect@1", + "jsr:@std/testing@1", + "npm:jsdom@24" ] }, "packages/html": { "dependencies": [ - "jsr:@std/expect@^1.0.0", - "jsr:@std/testing@^1.0.0", - "npm:jsdom@^24.0.0" + "jsr:@std/expect@1", + "jsr:@std/testing@1", + "npm:jsdom@24" ] }, "packages/keyboard": { "dependencies": [ - "jsr:@std/testing@^1.0.0", - "npm:jsdom@^24.0.0" + "jsr:@std/testing@1", + "npm:jsdom@24" ] } } diff --git a/packages/cli/.gitignore b/packages/cli/.gitignore new file mode 100644 index 00000000..1b823a2c --- /dev/null +++ b/packages/cli/.gitignore @@ -0,0 +1,2 @@ +dist +build diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md new file mode 100644 index 00000000..16c000e5 --- /dev/null +++ b/packages/cli/CHANGELOG.md @@ -0,0 +1 @@ +# @interactors/cli diff --git a/packages/cli/README.md b/packages/cli/README.md new file mode 100644 index 00000000..6d725727 --- /dev/null +++ b/packages/cli/README.md @@ -0,0 +1,9 @@ +# @interactors/cli + +[![npm](https://img.shields.io/npm/v/@interactors/cli.svg)](https://www.npmjs.com/package/@interactors/cli) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Created by Frontside](https://img.shields.io/badge/created%20by-frontside-26abe8.svg)](https://frontside.com) +[![Chat on Discord](https://img.shields.io/discord/700803887132704931?Label=Discord)](https://discord.gg/mv4uxxcAKd) + +A builder tool for agent's script. A special script that is injected in testing environment and exposes interactors. +Learn more at [https://frontside.com/interactors](https://frontside.com/interactors) diff --git a/packages/cli/deno.json b/packages/cli/deno.json new file mode 100644 index 00000000..5ac1dcb9 --- /dev/null +++ b/packages/cli/deno.json @@ -0,0 +1,22 @@ +{ + "name": "@interactors/cli", + "version": "1.0.0", + "exports": "./mod.ts", + "imports": { + "chokidar": "npm:chokidar@^4.0.1", + "effection": "npm:effection@^3.0.3", + "esbuild": "npm:esbuild@^0.24.0", + "playwright": "npm:playwright@^1.49.0", + "yargs": "npm:yargs@^17.7.2", + "zod": "npm:zod@^3.23.8", + "zod-opts": "npm:zod-opts@^0.1.8" + }, + "lint": { + "rules": { + "exclude": [ + "prefer-const", + "require-yield" + ] + } + } +} diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts new file mode 100644 index 00000000..25e7e26b --- /dev/null +++ b/packages/cli/src/build.ts @@ -0,0 +1,79 @@ +import { call, type Operation } from "effection"; +import { mkdir, readFile, writeFile } from "node:fs/promises"; +import * as path from "node:path"; +import * as esbuild from "esbuild"; +import { generateImports } from "./generate-imports.ts"; +import { importInteractors } from "./import-interactors.ts"; +import { generateConstructors } from "./generate-constructors.ts"; + +import { denoPlugins } from "jsr:@luca/esbuild-deno-loader@^0.11.0"; + + +export interface BuildOptions { + outDir: string; + modules?: string[]; +} + +export function* build(options: BuildOptions): Operation { + let outDir = options.outDir; + + yield* call(() => mkdir(outDir, { recursive: true })); + + let { modules, agentScriptPath, constructorsPath } = buildAttrs(options); + + let modulesList = new Set([ + // NOTE: Include core by default + // "@interactors/core", + "@interactors/html", + ...modules, + ]); + + let imports: { [moduleName: string]: Record } = {}; + + for (let moduleName of modulesList) { + imports[moduleName] = (yield* call(import(moduleName))) as Record< + string, + unknown + >; + } + + // TODO use esbuild to agent + + let templatePath = + new URL(import.meta.resolve("./templates/agent.ts.template")).pathname; + + let agentTemplate = yield* call(readFile(templatePath, "utf8")); + + let importedModules = importInteractors(imports); + + let importCode = generateImports(importedModules); + + let constructorsCode = generateConstructors(importCode, importedModules); + + yield* call( + writeFile(`${outDir}/agent.ts`, [importCode, agentTemplate].join("\n")), + ); + console.log(`${outDir}/agent.ts`); + + yield* call(() => + esbuild.build({ + plugins: [...denoPlugins()], + entryPoints: [`${outDir}/agent.ts`], + bundle: true, + outfile: agentScriptPath, + sourcemap: "inline", + }) + ); + console.log(agentScriptPath); + + yield* call(writeFile(constructorsPath, constructorsCode)); + console.log(constructorsPath); +} + +export function buildAttrs(options: BuildOptions) { + return { + modules: (options.modules ?? []).map((name) => path.resolve(name)), + agentScriptPath: `${options.outDir}/agent.js`, + constructorsPath: `${options.outDir}/constructors.ts`, + }; +} diff --git a/packages/cli/src/dev.ts b/packages/cli/src/dev.ts new file mode 100644 index 00000000..9c0677fe --- /dev/null +++ b/packages/cli/src/dev.ts @@ -0,0 +1,23 @@ +import type { Operation } from "effection"; +import { build, buildAttrs, type BuildOptions } from "./build.ts"; +import { useWatcher } from "./watcher.ts"; +import { useTestPage } from "./test-page.ts"; + +export interface DevOptions extends BuildOptions { + repl?: string; +} + +export function* dev(options: DevOptions): Operation { + let { modules } = buildAttrs(options); + + let updates = yield* useWatcher(modules); + + let page = options.repl ? yield* useTestPage(options.repl, options) : { *update() {} }; + + while (true) { + yield* build(options); + yield* page.update(); + yield* updates.next(); + console.log("changes detected, rebuilding..."); + } +} diff --git a/packages/cli/src/generate-constructors.ts b/packages/cli/src/generate-constructors.ts new file mode 100644 index 00000000..3c13ea0f --- /dev/null +++ b/packages/cli/src/generate-constructors.ts @@ -0,0 +1,19 @@ +import { ImportedModules } from "./types.ts"; + +export function generateConstructors(imports: string, modules: ImportedModules): string { + return [ + imports, + ...Object.entries(modules).flatMap(([, { interactors, matchers }]) => + [ + ...interactors.map( + ({ name }) => + `export const ${name} = ${name}Interactor.builder()` + ), + ...matchers.map( + ({ name }) => + `export const ${name} = ${name}Matcher.builder()` + ) + ] + ), + ].join("\n"); +} diff --git a/packages/cli/src/generate-imports.ts b/packages/cli/src/generate-imports.ts new file mode 100644 index 00000000..1a8fef7f --- /dev/null +++ b/packages/cli/src/generate-imports.ts @@ -0,0 +1,19 @@ +import { ImportedModules } from "./types.ts"; + +export function generateImports(modules: ImportedModules): string { + return [ + ...Object.entries(modules).map( + ([moduleName, { interactors, matchers }]) => + `import { ${[ + ...interactors.map(({ name }) => (`${name} as ${name}Interactor`)), + ...matchers.map(({ name }) => (`${name} as ${name}Matcher`)), + ].join(", ")} } from '${moduleName}'` + ), + `const InteractorTable = {${Object.values(modules) + .flatMap(({ interactors }) => interactors.map(({ name }) => `${name}: ${name}Interactor`)) + .join(", ")}}`, + `const MatcherTable = {${Object.values(modules) + .flatMap(({ matchers }) => matchers.map(({ name }) => `${name}: ${name}Matcher`)) + .join(", ")}}`, + ].join("\n"); +} diff --git a/packages/cli/src/import-interactors.ts b/packages/cli/src/import-interactors.ts new file mode 100644 index 00000000..750b0097 --- /dev/null +++ b/packages/cli/src/import-interactors.ts @@ -0,0 +1,39 @@ +import { InitInteractor, MatcherConstructor } from "@interactors/core"; +import { ImportedModules } from "./types.ts"; + +export function importInteractors(modules: { [moduleName: string]: Record }): ImportedModules { + let uniqueNames = new Map(); + + let imports: ImportedModules = {} + + for (let moduleName in modules) { + imports[moduleName] = { + interactors: [], + matchers: [] + } + + let { interactors, matchers } = imports[moduleName]; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + for (let [name, obj] of Object.entries(modules[moduleName])) { + if (obj instanceof InitInteractor) { + let interactorName = name; + if (uniqueNames.has(interactorName)) { + throw new Error(`Interactor name ${interactorName} from ${moduleName} is conflicted with named import from ${uniqueNames.get(interactorName)}`); + } + interactors.push({ name }); + uniqueNames.set(interactorName, moduleName); + } + if (obj instanceof MatcherConstructor) { + let matcherName = name; + if (uniqueNames.has(matcherName)) { + throw new Error(`Matcher name ${matcherName} from ${moduleName} is conflicted with named import from ${uniqueNames.get(matcherName)}`); + } + matchers.push({ name }); + uniqueNames.set(matcherName, moduleName); + } + } + } + + return imports; +} diff --git a/packages/cli/src/main.ts b/packages/cli/src/main.ts new file mode 100644 index 00000000..8b0157c8 --- /dev/null +++ b/packages/cli/src/main.ts @@ -0,0 +1,45 @@ +import { main, type Task, useScope } from "effection"; + +import { command, parser } from "zod-opts"; +import { z } from "npm:zod"; + +import { build } from "./build.ts"; +//import { dev } from "./dev.ts"; + +//const commands = { build, dev } as const; + +await main(function* (argv) { + let task: Task | undefined = undefined; + + let scope = yield* useScope(); + parser() + .name("interactors") + .description("build and test interactors") + .version("0.0.0") + .subcommand( + command("build").description( + "build an agent for interactors found in MODULES", + ).args([ + { + name: "modules", + type: z.array(z.string()).optional(), + description: "paths of modules containing interactors to include in the agent " + }, + ]).options({ + "outDir": { + type: z.string().default("./build"), + alias: "o", + description: "the output directory for generated files", + }, + }).action((options) => { + task = scope.run(() => build(options)); + }), + ) + .parse(argv); + + if (typeof task !== 'undefined') { + //@ts-expect-error effection is too good. + yield* task; + } +}); + diff --git a/packages/cli/src/templates/agent.ts.template b/packages/cli/src/templates/agent.ts.template new file mode 100644 index 00000000..4abe0c15 --- /dev/null +++ b/packages/cli/src/templates/agent.ts.template @@ -0,0 +1,137 @@ +/* eslint-disable */ +import type { InteractorConstructor } from '@interactors/core'; + +export function ok(): Result; +export function ok(value: T): Result; +export function ok(value?: T): Result { + if (typeof value === 'undefined') { + return { ok: true } as Result; + } else { + return { ok: true, value } as Result; + } +} + +export function err( + error: TError +): Result { + return { ok: false, error }; +} + +export interface Matcher { + typename: string; + args: unknown[]; + description: string; +} + +export type Match = Partial<{ + [K in keyof T]: T[K] | Matcher; +}> + +export type Interactor> = Filters & Actions & InteractorMethods; + +export interface InteractorMethods { + path: InteractorMatch[]; + has(attrs: Match): TInteraction; + is(attrs: Match): TInteraction; + exists(): TInteraction; + find(interactor: Interactor): Interactor; +} + +export interface InteractorMatch { + typename: string; + locator?: string | Matcher | RegExp; + filters?: Match; + description: string; + ancestors: InteractorMatch[]; +} + +export interface Interaction { + name: string; + path: InteractorMatch[]; + description: string; + readonly: boolean, + args: unknown[]; +} + +declare global { + interface Window { + interactorAgent: { + run(interaction: Interaction): Promise>; + interactors: Record>; + matchers: Record unknown>; + }; + } +} + +globalThis.interactorAgent = { + interactors: InteractorTable, + matchers: MatcherTable, + run: async (interaction: Interaction) => { + try { + const [start, ...rest] = interaction.path.map(lookup); + const interactor = rest.reduce((i, curr) => i.find(curr), start); + await interactor[interaction.name](...interaction.args.map(handleArg)); + return ok(); + } catch (error) { + if (typeof error === 'string') { + return err({ name: 'InteractionError', message: error }); + } else { + return err(error); + } + } + } +} + +function lookup(segment: InteractorMatch): Implementation { + const constructor = InteractorTable[segment.typename]; + if (!constructor) { + const error = new Error(segment.typename); + error.name = `NoSuchInteractorError`; + throw error; + } + if (typeof constructor !== 'function') { + const error = new Error( + `expected ${segment.typename} interactor constructor to be a function, but was ${JSON.stringify( + constructor + )}` + ); + error.name = `TypeError`; + throw error; + } + const filter = segment.filters ? rematchObject(segment.filters) : undefined; + return constructor(segment.locator ?? filter, filter); +} + +function isMatcher(value: unknown) { + return value && typeof value.typename === 'string' +} + +function rematch(matcher: Matcher) { + const matchFn = MatcherTable[matcher.typename]; + if (!matchFn) { + const error = new Error(matcher.typename); + error.name = `NoSuchMatcherError`; + throw error; + } + return matchFn(...matcher.args.map(arg => isMatcher(arg) ? rematch(arg as Matcher) : arg)); +} + +function rematchObject(arg: Record) { + const result = {} as Record; + for (const key in arg) { + result[key] = isMatcher(arg[key]) ? rematch(arg[key] as Matcher) : arg[key]; + } + return result; +} + +function handleArg(arg: unknown) { + if (Array.isArray(arg) || arg === null || typeof arg !== 'object') { + // NOTE: It's action's argument + return arg; + } + return rematchObject(arg); +} + +interface Implementation { + find(child: Implementation): Implementation; +} diff --git a/packages/cli/src/test-page.ts b/packages/cli/src/test-page.ts new file mode 100644 index 00000000..3665d25a --- /dev/null +++ b/packages/cli/src/test-page.ts @@ -0,0 +1,183 @@ +import { + call, + createSignal, + each, + type Operation, + resource, + spawn, +} from "effection"; +import { readFile } from "node:fs/promises"; +import { existsSync } from "node:fs"; +import { chromium, type Page } from "playwright"; +import { buildAttrs, type BuildOptions } from "./build.ts"; + +interface TestPage { + update(): Operation; +} + +export function useTestPage( + url: string, + options: BuildOptions, +): Operation { + return resource(function* (provide) { + let { agentScriptPath, constructorsPath } = buildAttrs(options); + + let { browser, page } = yield* call(async () => { + let browser = await chromium.launch({ headless: false }); + let context = await browser.newContext(); + + let digest = ''; + + await context.exposeBinding('$iagentupdate', async ({ page }, options = {} ) => { + let { init } = options; + if (existsSync(agentScriptPath)) { + let decoder = new TextDecoder(); + let buffer = await readFile(agentScriptPath); + + let nextdigest = decoder.decode(await crypto.subtle.digest('SHA-1', buffer)); + if (init || digest !== nextdigest) { + let source = decoder.decode( + buffer, + ); + await page.evaluate(source); + await page.evaluate(() => { + //@ts-ignore-error this is ok. it only happens in dev mode + Object.assign(globalThis, {...globalThis["interactorAgent"]["interactors"]}); + //@ts-ignore-error this is ok. it only happens in dev mode + Object.assign(globalThis, globalThis["interactorAgent"]["matchers"]); + }); + digest = nextdigest; + } + } else { + await page.evaluate(`console.log('agent script not found at "${agentScriptPath}"')`); + } + }); + await context.addInitScript('$iagentupdate({ init: true })'); + let page = await context.newPage(); + await page.goto(url); + return { browser, page }; + }); + + let repl = yield* useRepl(constructorsPath, page); + + try { + yield* provide({ + *update() { + yield* call(() => page.evaluate('$iagentupdate()')); + yield* repl.reset(); + }, + }); + } finally { + yield* call(() => browser.close()); + } + }); +} + +import vm from "node:vm"; +import os from "node:os"; +import path from "node:path"; +import fs from "node:fs/promises"; +import { createInterface } from "node:readline"; +import type { TInteraction } from "@interactors/core"; + +interface REPL { + reset(): Operation; +} + +export function useRepl(constructorsPath: string, page: Page): Operation { + return resource(function* (provide) { + let history = yield* useHistoryFile( + path.join(os.homedir(), ".interactors.history"), + ); + let context = vm.createContext({}); + + let rl = createInterface({ + prompt: "> ", + input: process.stdin, + output: process.stdout, + history: history.current, + crlfDelay: 0, + }); + + let lines = createSignal(); + + yield* spawn(function* () { + for (let line of yield* each(lines)) { + if (line.trim() !== "") { + try { + let interaction = vm.runInContext(line, context) as TInteraction; + let value = JSON.parse(JSON.stringify(interaction)); + yield* call(async () => { + let result = await page.evaluate( + //@ts-expect-error nobody knows about 'interactorAgent' but us + (interaction) => window.interactorAgent.run(interaction), + value, + ); + console.log(result); + }); + } catch (error) { + console.error((error as Error)?.message); + } + rl.prompt(); + } + yield* each.next(); + } + }); + + try { + rl.on("history", history.update); + rl.on("line", lines.send); + yield* provide({ + *reset() { + yield* call(async () => { + console.log("(re)enter interactive mode"); + rl.prompt(); + try { + let constructors = await import(path.resolve(constructorsPath)); + context = vm.createContext(constructors); + } catch (error) { + console.error((error as Error)?.message); + } + }); + }, + }); + } finally { + rl.off("history", history.update); + rl.off("lines", lines.send); + rl.close(); + } + }); +} + +interface HistoryFile { + current: string[]; + update(value: string[]): void; +} + +function useHistoryFile(filepath: string): Operation { + return resource(function* (provide) { + const signal = createSignal(); + + const fd = yield* call(() => fs.open(filepath, "a+")); + + const contents = yield* call(() => fd.readFile()); + const handle: HistoryFile = { + current: contents.toString().split("\n"), + update: signal.send, + }; + yield* spawn(function* () { + for (const value of yield* each(signal)) { + handle.current = value; + yield* call(() => fd.truncate()); + yield* call(() => fd.write(new TextEncoder().encode(value.join("\n")))); + yield* each.next(); + } + }); + + try { + yield* provide(handle); + } finally { + yield* call(() => fd.close()); + } + }); +} diff --git a/packages/cli/src/types.ts b/packages/cli/src/types.ts new file mode 100644 index 00000000..66434975 --- /dev/null +++ b/packages/cli/src/types.ts @@ -0,0 +1,4 @@ +export type ImportedModules = Record diff --git a/packages/cli/src/watcher.ts b/packages/cli/src/watcher.ts new file mode 100644 index 00000000..eb7d5b34 --- /dev/null +++ b/packages/cli/src/watcher.ts @@ -0,0 +1,24 @@ +import { createSignal, resource, type Stream } from "effection"; +import chokidar from "chokidar"; +import type { Stats } from "node:fs"; + +export interface WatchEvent { + path: string; + stats?: Stats; +} + +export function useWatcher(paths: string[]): Stream { + return resource(function* (provide) { + let { send, ...subscribe } = createSignal(); + + let watcher = chokidar.watch(paths); + + watcher.on("change", (path, stats) => send({ path, stats })); + + try { + yield* provide(yield* subscribe); + } finally { + watcher.close(); + } + }); +} diff --git a/packages/cli/test/agent.test.html b/packages/cli/test/agent.test.html new file mode 100644 index 00000000..c2c84868 --- /dev/null +++ b/packages/cli/test/agent.test.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Hello world! This is HTML5 Boilerplate.

+
+

Interactors == Awesome

+
+ + + + + diff --git a/packages/cli/test/agent.test.ts b/packages/cli/test/agent.test.ts new file mode 100644 index 00000000..b54e7088 --- /dev/null +++ b/packages/cli/test/agent.test.ts @@ -0,0 +1,84 @@ +import { afterEach, beforeEach, describe, it } from "jsr:@std/testing/bdd"; +import { expect } from "jsr:@std/expect"; +import { type Browser, chromium } from "playwright"; +import { HTML as $HTML, Heading as $Heading, matching } from "@interactors/html"; +import { Ok } from "effection"; + +const HTML = $HTML.builder((i) => i); +const Heading = $Heading.builder(i => i); + +let browser: Browser; +let agent = { + run: async (_i: unknown) => Ok(void(0)), +}; + +describe("Interactor Agent", () => { + beforeEach(async function () { + browser = await chromium.launch(); + const context = await browser.newContext(); + await context.addInitScript({ path: "./build/agent.js" }); + const page = await context.newPage(); + const url = new URL("./agent.test.html", import.meta.url); + await page.goto(String(url)); + // deno-lint-ignore require-await + agent.run = async (i) => + page.evaluate( + ({ interaction }) => { + //@ts-expect-error this is running on the browser, so it would be an error locally. + return globalThis.interactorAgent.run(interaction); + }, + { interaction: JSON.parse(JSON.stringify(i)) }, + ); + }); + + afterEach(async function () { + await browser.close(); + }); + + it("can recognize HTML", async function () { + const interaction = HTML("Hello world! This is HTML5 Boilerplate.") + .exists(); + let result = await agent.run(interaction); + expect(result).toEqual({ ok: true }); + expect(await agent.run(HTML("This text is nowhere").exists())) + .toMatchObject({ ok: false }); + }); + + it("fails if a thing cannot be found", async function () { + const result = await agent.run(HTML("This is nowhere").exists()); + expect(result.ok).toBeFalsy(); + expect(await agent.run(HTML("This is nowhere").absent())).toEqual({ + ok: true, + }); + }); + + it("can call nested interactors", async function () { + const interaction = HTML({ id: "facts" }) + .find(HTML("Interactors == Awesome")) + .exists(); + const result = await agent.run(interaction); + expect(result).toEqual({ ok: true }); + }); + + it("can make assertions based an attributes", async function () { + expect( + await agent.run( + HTML({ id: "hello" }).has({ + text: "Hello world! This is HTML5 Boilerplate.", + id: "hello", + }), + ), + ).toEqual({ ok: true }); + expect( + await agent.run(HTML({ id: "hello" }).has({ text: "Hello world! This is HTML Boilerplate." })), + ).toMatchObject({ + ok: false, + }); + }); + + it.skip('can make assertions based on matchers', async function () { + expect(await agent.run(HTML({ id: matching(/hel/) }).has({ text: matching(/Hello world!/) }))).toEqual({ + ok: true + }); + }); +}); diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts new file mode 100644 index 00000000..97ff8441 --- /dev/null +++ b/packages/cli/test/generate.test.ts @@ -0,0 +1,88 @@ +import { describe, it } from 'jsr:@std/testing/bdd'; +import { expect } from "jsr:@std/expect"; +import { generateImports } from '../src/generate-imports.ts'; +import { createInteractor, createMatcher } from '@interactors/core'; +import * as core from '@interactors/core'; +import { importInteractors } from '../src/import-interactors.ts'; + +const TextField = createInteractor('text field'); +const and = createMatcher("true", () => ({ + match: (_actual: unknown) => true, + description: () => 'and' +})) + +describe('generateImports', () => { + it('generates imports for interactors and matchers', () => { + let imports = { + '@interactors/core': { + TextField, + and + } + }; + + let code = generateImports(importInteractors(imports)); + + expect(code).toEqual(`import { TextField as TextFieldInteractor, and as andMatcher } from '@interactors/core' +const InteractorTable = {TextField: TextFieldInteractor} +const MatcherTable = {and: andMatcher}`); + }) + + it('ignore non-interactor and non-matcher objects', () => { + let imports = { + '@interactors/core': { + TextField, + and, + someObject: {}, + someFunction: () => {}, + SomeClass: class {}, + someValue: 42, + someString: 'hello', + createInteractor, + createMatcher + } + }; + + let code = generateImports(importInteractors(imports)); + + expect(code).toEqual(`import { TextField as TextFieldInteractor, and as andMatcher } from '@interactors/core' +const InteractorTable = {TextField: TextFieldInteractor} +const MatcherTable = {and: andMatcher}`); + }) + + it('generate imports with core matchers', () => { + let imports = { + '@interactors/core': core, + }; + + let code = generateImports(importInteractors(imports)); + + expect(code).toEqual(`import { and as andMatcher, every as everyMatcher, including as includingMatcher, matching as matchingMatcher, not as notMatcher, or as orMatcher, some as someMatcher } from '@interactors/core' +const InteractorTable = {} +const MatcherTable = {and: andMatcher, every: everyMatcher, including: includingMatcher, matching: matchingMatcher, not: notMatcher, or: orMatcher, some: someMatcher}`); + }) + + it('throws error when interactor name conflicts', async () => { + let imports = { + '@interactors/core': { TextField }, + '@interactors/html': { TextField } + }; + + expect(() => { + generateImports(importInteractors(imports)); + }).toThrow('Interactor name TextField from @interactors/html is conflicted with named import from @interactors/core'); + }) + + it.skip('overrides import names', () => { + let imports = { + '@interactors/core': { TextField }, + '@interactors/html': { TextField } + }; + + let code = generateImports(importInteractors(imports)); + + expect(code).toEqual(`import { TextField } from '@interactors/core' +import { TextField as HTMLTextField } from '@interactors/html' +const InteractorTable = {TextField, HTMLTextField} +const MatcherTable = {}`); + }) +}); diff --git a/packages/core/deno.json b/packages/core/deno.json index 39d7110e..271eecc4 100644 --- a/packages/core/deno.json +++ b/packages/core/deno.json @@ -7,15 +7,13 @@ }, "exports": "./mod.ts", "imports": { - "@effection/core": "npm:@effection/core@2.2.0", - "@std/expect": "jsr:@std/expect@^1.0.0", - "@std/testing": "jsr:@std/testing@^1.0.0", + "@std/expect": "jsr:@std/expect@^1.0.8", + "@std/testing": "jsr:@std/testing@^1.0.5", "@testing-library/dom": "npm:@testing-library/dom@^8.18.1", "@testing-library/user-event": "npm:@testing-library/user-event@^14.5.2", "change-case": "npm:change-case@^4.1.1", "element-is-visible": "npm:element-is-visible@^1.0.0", "jsdom": "npm:jsdom@^24.0.0", - "lodash.isequal": "npm:lodash.isequal@^4.5.0", "performance-api": "npm:performance-api@^1.0.0" }, "lint": { diff --git a/packages/core/src/constructor.ts b/packages/core/src/constructor.ts index 50f526fb..86b5ac42 100644 --- a/packages/core/src/constructor.ts +++ b/packages/core/src/constructor.ts @@ -1,31 +1,21 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - import { converge } from './converge.ts'; -import type { MergeObjects } from './merge-objects.ts'; import type { InteractorOptions, ActionMethods, - InteractorConstructor, Interactor, Filters, Actions, - FilterDefinition, FilterParams, FilterMethods, - InteractorSpecification, FilterObject, -} from './specification.ts'; +} from "./specification.ts"; import { FilterSet } from './filter-set.ts'; -import { Locator } from './locator.ts'; import { MatchFilter, applyFilter } from './match.ts'; import { formatDescription } from './format.ts'; import { FilterNotMatchingError } from './errors.ts'; -import { createInteraction, type AssertionInteraction, type ActionInteraction } from './interaction.ts'; -import { isMatcher } from './matcher.ts'; -import { matching } from './matchers/matching.ts'; -import { hasMatchMatching, resolveEmpty, resolveFirst, resolveUnique, unsafeSyncResolveParent, unsafeSyncResolveUnique } from './resolvers.ts'; - -const defaultLocator: FilterDefinition = (element) => element.textContent || ""; +import { createInteraction, type AssertionInteraction, type ActionInteraction } from "./interaction.ts"; +import { hasMatchMatching, resolveEmpty, resolveFirst, resolveUnique, unsafeSyncResolveParent } from './resolvers.ts'; +import { defaultLocator } from './locator.ts'; /** * Removes any default values for a filter from the lookup if that filter is present in the @@ -99,6 +89,7 @@ export function instantiateInteractor, A }); }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any find>(child: T): T { return instantiateInteractor({ ...child.options, @@ -183,39 +174,3 @@ export function instantiateInteractor, A return interactor as Interactor> & FilterMethods & ActionMethods>>; } - -export function createConstructor, FM extends FilterMethods, AM extends ActionMethods>( - name: string, - specification: InteractorSpecification, -): InteractorConstructor { - function initInteractor(...args: any[]) { - let locator, filter; - let locatorValue = args[0] instanceof RegExp ? matching(args[0]) : args[0] - if (typeof(locatorValue) === 'string' || isMatcher(locatorValue)) { - locator = new Locator(specification.locator || defaultLocator, locatorValue); - filter = new FilterSet(specification, args[1] || {}); - } else { - filter = new FilterSet(specification, args[0] || {}); - } - return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, unsafeSyncResolveUnique); - } - - return Object.assign(initInteractor, { - interactorName: name, - selector: (value: string): InteractorConstructor => { - return createConstructor(name, { ...specification, selector: value }); - }, - locator: (value: FilterDefinition): InteractorConstructor => { - return createConstructor(name, { ...specification, locator: value }); - }, - filters: >(filters: FR): InteractorConstructor>, MergeObjects>, AM> => { - return createConstructor(name, { ...specification, filters: { ...specification.filters, ...filters } }); - }, - actions: & FM & AM, AR extends Actions>(actions: AR): InteractorConstructor>> => { - return createConstructor(name, { ...specification, actions: Object.assign({}, specification.actions, actions) }); - }, - extend: (newName: string): InteractorConstructor => { - return createConstructor(newName, specification) as unknown as InteractorConstructor; - }, - }) as unknown as InteractorConstructor; -} diff --git a/packages/core/src/converge.ts b/packages/core/src/converge.ts index 7290b35a..5b1862db 100644 --- a/packages/core/src/converge.ts +++ b/packages/core/src/converge.ts @@ -1,19 +1,22 @@ -import { type Operation, sleep } from '@effection/core'; -import { performance } from 'performance-api'; -import { globals } from '@interactors/globals' +import { performance } from "performance-api"; +import { globals } from "@interactors/globals"; -export function* converge(fn: () => T): Operation { +export async function converge(fn: () => T): Promise { let startTime = performance.now(); - while(true) { + while (true) { try { return fn(); - } catch(e) { + } catch (e) { let diff = performance.now() - startTime; - if(diff > globals.interactorTimeout) { + if (diff > globals.interactorTimeout) { throw e; } else { - yield sleep(1); + await sleep(1); } } } } + +async function sleep(durationMS: number): Promise { + return new Promise((resolve) => setTimeout(resolve, durationMS)); +} diff --git a/packages/core/src/create-interactor.ts b/packages/core/src/create-interactor.ts index be035634..8db2946b 100644 --- a/packages/core/src/create-interactor.ts +++ b/packages/core/src/create-interactor.ts @@ -1,5 +1,12 @@ -import type { EmptyObject, InteractorConstructor } from './specification.ts'; -import { createConstructor } from './constructor.ts'; +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { ActionMethods, Actions, EmptyObject, FilterDefinition, FilterMethods, FilterParams, Filters, Interactor, InteractorConstructor, InteractorConstructorFunction, InteractorSpecification, TInteractorConstructor, TMatch, TInteractor, TActionMethods, TFilterMethods, TInteraction } from './specification.ts'; +import { instantiateInteractor } from './constructor.ts'; +import { matching } from './matchers/matching.ts'; +import { isMatcher, matcherDescription } from './matcher.ts'; +import { Locator, defaultLocator } from './locator.ts'; +import { FilterSet, filtersDescription } from './filter-set.ts'; +import { unsafeSyncResolveUnique } from './resolvers.ts'; +import type { MergeObjects } from './merge-objects.ts'; /** * Create a custom interactor with the given name. @@ -16,6 +23,142 @@ import { createConstructor } from './constructor.ts'; * @typeParam E The type of DOM Element that this interactor operates on. By specifying the element type, actions and filters defined for the interactor can be type checked against the actual element type. * @returns You will need to call the returned builder to create an interactor. */ -export function createInteractor(name: string): InteractorConstructor { - return createConstructor(name, {}); +export function createInteractor = EmptyObject, FM extends FilterMethods = EmptyObject, AM extends ActionMethods = EmptyObject>( + name: string, + specification: InteractorSpecification = {}, +): InteractorConstructor { + function initInteractor(...args: any[]) { + let locator, filter; + let locatorValue = args[0] instanceof RegExp ? matching(args[0]) : args[0] + if (typeof(locatorValue) === 'string' || isMatcher(locatorValue)) { + locator = new Locator(specification.locator || defaultLocator, locatorValue); + filter = new FilterSet(specification, args[1] || {}); + } else { + filter = new FilterSet(specification, args[0] || {}); + } + return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, unsafeSyncResolveUnique); + } + + Interactors.add(initInteractor); + + return Object.assign(initInteractor, { + interactorName: name, + selector: (value: string): InteractorConstructor => { + return createInteractor(name, { ...specification, selector: value }); + }, + locator: (value: FilterDefinition): InteractorConstructor => { + return createInteractor(name, { ...specification, locator: value }); + }, + filters: >(filters: FR): InteractorConstructor>, MergeObjects>, AM> => { + return createInteractor(name, { ...specification, filters: { ...specification.filters, ...filters } }); + }, + actions: & FM & AM, AR extends Actions>(actions: AR): InteractorConstructor>> => { + return createInteractor(name, { ...specification, actions: Object.assign({}, specification.actions, actions) }); + }, + extend: (newName: string): InteractorConstructor => { + return createInteractor(newName, specification) as unknown as InteractorConstructor; + }, + builder: (transform: (interaction: TInteraction) => T = x => x as T): TInteractorConstructor> => { + return ((...args: Parameters>>) => { + let interactor = { + typename: name, + locator: args[0], + match: args[1], + ancestors: [] as TInteractor[], + get description() { + return [ + interactor.match + ? `${interactor.typename} ${matcherDescription(interactor.locator)} ${filtersDescription(interactor.match)}`.trim() + : `${interactor.typename} ${matcherDescription(interactor.locator)}`.trim(), + ...interactor.ancestors.map((i) => i.description).reverse() + ].join(' within '); + }, + + find(i) { + i.ancestors = interactor.ancestors.concat(interactor, ...i.ancestors) + return i + }, + exists() { + return transform({ + name: 'exists', + path: interactor.ancestors.concat(interactor).map(({ typename, locator, match, description }) => ({ typename, locator, match, description })), + get description() { return `${interactor.description} exists` }, + readonly: true, + args: [], + }) + }, + absent() { + return transform({ + name: 'absent', + path: interactor.ancestors.concat(interactor).map(({ typename, locator, match, description }) => ({ typename, locator, match, description })), + get description() { return `${interactor.description} does not exist` }, + readonly: true, + args: [], + }) + }, + has(match: TMatch) { + return transform({ + name: 'has', + path: interactor.ancestors.concat(interactor).map(({ typename, locator, match, description }) => ({ typename, locator, match, description })), + get description() { return `${interactor.description} matches filters: ${filtersDescription(match)}` }, + readonly: true, + args: [match], + }) + }, + is(match: TMatch) { + return transform({ + name: 'is', + path: interactor.ancestors.concat(interactor).map(({ typename, locator, match, description }) => ({ typename, locator, match, description })), + get description() { return `${interactor.description} matches filters: ${filtersDescription(match)}` }, + readonly: true, + args: [match], + }) + }, + + ...(Object.keys(specification.actions || {}).reduce((actions, name) => ({ + ...actions, + [name]: function(...args: unknown[]) { + return transform({ + name, + path: interactor.ancestors.concat(interactor).map(({ typename, locator, match, description }) => ({ typename, locator, match, description })), + get description() { + let actionDescription = name; + if (args.length) { + actionDescription += ` with ` + args.map((a) => JSON.stringify(a)).join(', '); + } + return `${actionDescription} on ${interactor.description}`; + }, + readonly: false, + args, + }) + } + }), {} as TActionMethods)), + + ...(Object.keys(specification.filters || {}).reduce((filters, name) => ({ + ...filters, + [name]: function() { + return transform({ + name, + path: interactor.ancestors.concat(interactor).map(({ typename, locator, match, description }) => ({ typename, locator, match, description })), + get description() { + return `${name} of ${interactor.description}`; + }, + readonly: true, + args: [], + }) + } + }), {} as TFilterMethods)), + } as ReturnType>> + return interactor + }) as unknown as TInteractorConstructor> + } + }) as unknown as InteractorConstructor; +} + +export abstract class InitInteractor { + static [Symbol.hasInstance](instance: () => Interactor): boolean { + return Interactors.has(instance); + } } + +const Interactors = new WeakSet<() => Interactor>(); diff --git a/packages/core/src/filter-set.ts b/packages/core/src/filter-set.ts index 80254bf0..2af733c3 100644 --- a/packages/core/src/filter-set.ts +++ b/packages/core/src/filter-set.ts @@ -1,15 +1,9 @@ import type { Filters, FilterFn, FilterObject, FilterParams, InteractorSpecification } from './specification.ts'; import { noCase } from 'change-case'; -import { matcherDescription } from './matcher.ts'; +import { type MaybeMatcher, matcherDescription } from './matcher.ts'; -export class FilterSet> { - constructor( - public specification: InteractorSpecification, - public filters: FilterParams, - ) {}; - - get description(): string { - let entries = Object.entries(this.filters); +export function filtersDescription(filters: Record>) { + let entries = Object.entries(filters); if(entries.length === 0) { return ''; } else { @@ -25,6 +19,17 @@ export class FilterSet> { } }).join(' and '); } +} + +export class FilterSet> { + constructor( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + public specification: InteractorSpecification, + public filters: FilterParams, + ) {}; + + get description(): string { + return filtersDescription(this.filters); } get all(): FilterParams { diff --git a/packages/core/src/format.ts b/packages/core/src/format.ts index 8567df93..3a2050ff 100644 --- a/packages/core/src/format.ts +++ b/packages/core/src/format.ts @@ -55,4 +55,4 @@ export function formatMatchesTable(interactor: InteractorOptions, headers: interactor.locator ? [interactor.name, ...interactor.filter.asTableHeader()] : interactor.filter.asTableHeader(), rows: matches.slice().sort((a, b) => b.sortWeight - a.sortWeight).map((m) => m.asTableRow()), }) -} \ No newline at end of file +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 9aca48e3..8aed40e1 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,10 +1,11 @@ -export type { Interactor, InteractorConstructor, InteractorSpecification, EmptyObject, FilterMethods, ActionMethods } from './specification.ts'; +export type { Interactor, InteractorConstructor, InteractorSpecification, TInteraction, EmptyObject, FilterMethods, ActionMethods } from "./specification.ts"; export type { Interaction, ActionInteraction, AssertionInteraction } from './interaction.ts'; -export { isInteraction } from './interaction.ts' -export { createInteractor } from './create-interactor.ts'; +export { isInteraction } from './interaction.ts'; +export { createInteractor, InitInteractor } from './create-interactor.ts'; export { createInspector } from './inspector.ts' export { isVisible } from 'element-is-visible'; -export type { Matcher } from './matcher.ts'; +export { MatcherConstructor, createMatcher } from './matcher.ts'; +export type { Matcher, MaybeMatcher } from './matcher.ts'; export { including } from './matchers/including.ts'; export { matching } from './matchers/matching.ts'; @@ -16,4 +17,3 @@ export { every } from './matchers/every.ts'; export { click } from './element/click.ts'; export type { MergeObjects } from './merge-objects.ts' -export type { MaybeMatcher } from './matcher.ts' diff --git a/packages/core/src/interaction.ts b/packages/core/src/interaction.ts index e1924c4a..308fe128 100644 --- a/packages/core/src/interaction.ts +++ b/packages/core/src/interaction.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { type Operation, type Task, run, Symbol } from '@effection/core'; -import { type InteractionOptions as SerializedInteractionOptions, globals, type InteractionType } from '@interactors/globals'; +import type { InteractionOptions as SerializedInteractionOptions, InteractionType } from '@interactors/globals'; import type { Interactor, FilterObject, FilterFn, FilterParams } from './specification.ts'; import { serializeInteractionOptions } from './serialize.ts'; @@ -25,7 +24,7 @@ export interface Interaction extends Promise { type: InteractionType; interactor: Interactor; - run: (interactor: Interactor) => Operation; + run: (interactor: Interactor) => Promise; /** * Return a description of the interaction */ @@ -41,11 +40,9 @@ export interface Interaction extends Promise { /** * Perform the interaction */ - action: () => Task; + action: () => Promise; - check?: () => Task; - - halt: () => Promise; + check?: () => Promise; [interactionSymbol]: true; } @@ -65,7 +62,7 @@ export interface AssertionInteraction extends Inter /** * Perform the check */ - check: () => Task; + check: () => Promise; } export type InteractionOptions = { @@ -74,70 +71,47 @@ export type InteractionOptions = { filters?: FilterParams; args: unknown[]; interactor: Interactor; - run: (interactor: Interactor) => Operation; + run: (interactor: Interactor) => Promise; } export function createInteraction(type: 'action', options: InteractionOptions): ActionInteraction export function createInteraction(type: 'assertion', options: InteractionOptions): AssertionInteraction export function createInteraction(type: 'action', options: InteractionOptions, apply: FilterFn): ActionInteraction & FilterObject export function createInteraction(type: 'assertion', options: InteractionOptions, apply: FilterFn): AssertionInteraction & FilterObject -export function createInteraction(type: InteractionType, options: InteractionOptions, apply?: FilterFn): Interaction & Operation { - let task: Task; - let shouldCatchHalt = false - - function operation(scope: Task): Operation { - let run = () => options.run(options.interactor); - - return (globals.wrapInteraction - ? globals.wrapInteraction(() => scope.run(run), interaction) - : globals.wrapAction(interaction.description, () => scope.run(run), type)) as Operation; - }; - - function action(): Task { - if(!task) { - task = run(operation); +export function createInteraction(type: InteractionType, options: InteractionOptions, apply?: FilterFn): Interaction { + let promise: Promise; + + let operation = () => options.run(options.interactor); + + function action(): Promise { + if(!promise) { + promise = operation(); } - return task; + return promise; }; - function catchHalt any>(onReject?: T | null) { - return (reason: any) => { - if (shouldCatchHalt && reason instanceof Error && reason.message == 'halted') { - return reason - } else { - onReject?.(reason) - return reason - } - } - } - let serializedOptions = serializeInteractionOptions(type, options) - let interaction: Interaction & Operation = { + let interaction: Interaction = { type, options: serializedOptions, description: options.description, interactor: options.interactor, run: options.run, - args: options.args, + // args: options.args, action, check: type === 'assertion' ? action : undefined, code: () => serializedOptions.code(), - halt: () => { - shouldCatchHalt = true - return action().halt() - }, [interactionSymbol]: true, [Symbol.toStringTag]: `[interaction ${options.description}]`, - [Symbol.operation]: operation, then(onFulfill, onReject) { - return action().then(onFulfill, catchHalt(onReject)); + return action().then(onFulfill, onReject); }, catch(onReject) { - return action().catch(catchHalt(onReject)); + return action().catch(onReject); }, finally(handler) { return action().finally(handler); - } + }, } if (apply) { return Object.assign(interaction, { apply }); diff --git a/packages/core/src/locator.ts b/packages/core/src/locator.ts index 99ccfd02..34c33594 100644 --- a/packages/core/src/locator.ts +++ b/packages/core/src/locator.ts @@ -13,3 +13,5 @@ export class Locator { return applyFilter(this.definition, element); } } + +export const defaultLocator: FilterDefinition = (element) => element.textContent || ""; diff --git a/packages/core/src/matcher.ts b/packages/core/src/matcher.ts index ff7c3fe2..7e2448ed 100644 --- a/packages/core/src/matcher.ts +++ b/packages/core/src/matcher.ts @@ -1,4 +1,5 @@ -import isEqual from 'lodash.isequal'; +import {isEqual} from 'npm:lodash'; +import { TMatcher } from './specification.ts'; export interface Matcher { match(actual: T): boolean; @@ -6,22 +7,41 @@ export interface Matcher { code?(): string; } +type GetType = M extends Matcher ? T : never; + +export abstract class MatcherConstructor { + static [Symbol.hasInstance](instance: () => Matcher): boolean { + return Matchers.has(instance); + } +} + +const Matchers = new WeakSet<() => Matcher>(); + export type MaybeMatcher = Matcher | T; export function isMatcher(value: MaybeMatcher): value is Matcher { - return value && typeof (value as Matcher).match === 'function' && typeof (value as Matcher).description === 'function'; + return value && typeof (value as Matcher).match === "function" && + typeof (value as Matcher).description === "function"; +} + +export function isTMatcher(value: T | TMatcher): value is TMatcher { + return value && typeof (value as TMatcher).typename === 'string' && typeof (value as TMatcher).args === 'object'; } export function matcherDescription(value: MaybeMatcher): string { - if(isMatcher(value)) { + if (isMatcher(value)) { return value.description(); + } else if (isTMatcher(value)) { + return value.description; + } else if (value instanceof RegExp) { + return value.toString(); } else { return JSON.stringify(value); } } export function applyMatcher(value: MaybeMatcher, actual: T): boolean { - if(isMatcher(value)) { + if (isMatcher(value)) { return value.match(actual); } else { return isEqual(value, actual); @@ -37,3 +57,56 @@ export function matcherCode(value: MaybeMatcher): string { return JSON.stringify(value); } } + +export function createMatcher Matcher, T extends GetType>>(name: string, fn: F): F & { // eslint-disable-next-line @typescript-eslint/no-misused-new + builder(transform: (matcher: TMatcher) => TMatcher): (...args: Parameters) => TMatcher } { + Matchers.add(fn); + + return Object.assign( + fn, + { + builder: (transform: (matcher: TMatcher) => TMatcher = x => x) => (...args: Parameters) => transform({ + typename: name, + get description() { return fn(...args).description() }, + args, + }) + } + ) +} + +export function isEqual(a: any, b: any) { + if (a === b) return true; + + if (a && b && typeof a == "object" && typeof b == "object") { + if (a.constructor !== b.constructor) return false; + + let length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) { + if (!isEqual(a[i], b[i])) return false; + } + return true; + } + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) { + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + } + + for (i = length; i-- !== 0;) { + let key = keys[i]; + + if (!isEqual(a[key], b[key])) return false; + } + + return true; + } + + // true if both NaN, false otherwise + return a !== a && b !== b; +} diff --git a/packages/core/src/matchers/and.ts b/packages/core/src/matchers/and.ts index b797cd45..6eaf5c1b 100644 --- a/packages/core/src/matchers/and.ts +++ b/packages/core/src/matchers/and.ts @@ -1,15 +1,10 @@ -import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode } from '../matcher.ts'; +import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode, createMatcher } from "../matcher.ts"; -export function and(...args: MaybeMatcher[]): Matcher { - return { - match(actual: T): boolean { - return args.every((matcher) => applyMatcher(matcher, actual)); - }, - description(): string { - return args.map(matcherDescription).join(' and '); - }, - code(): string { - return `and(${args.map(arg => matcherCode(arg)).join(', ')})` - } - } -} +export const and = createMatcher( + 'and', + (...args: MaybeMatcher[]): Matcher => ({ + match: (actual: T): boolean => args.every((matcher) => applyMatcher(matcher, actual)), + description: (): string => args.map(matcherDescription).join(" and "), + code: (): string => `and(${args.map((arg) => matcherCode(arg)).join(", ")})`, + }) +); diff --git a/packages/core/src/matchers/every.ts b/packages/core/src/matchers/every.ts index f5493c68..722a68ad 100644 --- a/packages/core/src/matchers/every.ts +++ b/packages/core/src/matchers/every.ts @@ -1,15 +1,10 @@ -import { type Matcher, type MaybeMatcher, applyMatcher, matcherDescription, matcherCode } from '../matcher.ts'; +import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode, createMatcher } from "../matcher.ts"; -export function every(expected: MaybeMatcher): Matcher> { - return { - match(actual: Iterable): boolean { - return Array.from(actual).every((value) => applyMatcher(expected, value)); - }, - description(): string { - return `every item ${matcherDescription(expected)}`; - }, - code(): string { - return `every(${matcherCode(expected)})` - } - } -} +export const every = createMatcher( + 'every', + (expected: MaybeMatcher): Matcher> => ({ + match: (actual: Iterable): boolean => Array.from(actual).every((value) => applyMatcher(expected, value)), + description: (): string => `every item ${matcherDescription(expected)}`, + code: (): string => `every(${matcherCode(expected)})` + }) +) diff --git a/packages/core/src/matchers/including.ts b/packages/core/src/matchers/including.ts index ca3342ef..49a6c38d 100644 --- a/packages/core/src/matchers/including.ts +++ b/packages/core/src/matchers/including.ts @@ -1,15 +1,10 @@ -import { type Matcher, matcherCode} from '../matcher.ts'; +import { type Matcher, createMatcher, matcherCode} from "../matcher.ts"; -export function including(subString: string): Matcher { - return { - match(actual: string): boolean { - return actual.includes(subString); - }, - description(): string { - return `including ${JSON.stringify(subString)}`; - }, - code(): string { - return `including(${matcherCode(subString)})` - } - } -} +export const including = createMatcher( + 'including', + (subString: string): Matcher => ({ + match: (actual: string): boolean => actual.includes(subString), + description: (): string => `including ${JSON.stringify(subString)}`, + code: (): string => `including(${matcherCode(subString)})` + }) +) diff --git a/packages/core/src/matchers/matching.ts b/packages/core/src/matchers/matching.ts index 69cd5701..685765ae 100644 --- a/packages/core/src/matchers/matching.ts +++ b/packages/core/src/matchers/matching.ts @@ -1,15 +1,10 @@ -import { type Matcher, matcherCode } from '../matcher.ts'; +import { type Matcher, createMatcher, matcherCode } from '../matcher.ts'; -export function matching(regexp: RegExp): Matcher { - return { - match(actual: string): boolean { - return actual.match(regexp) != null; - }, - description(): string { - return `matching ${regexp}`; - }, - code(): string { - return `matching(${matcherCode(regexp)})` - } - } -} +export const matching = createMatcher( + 'matching', + (regexp: RegExp): Matcher => ({ + match: (actual: string): boolean => actual.match(regexp) != null, + description: (): string => `matching ${regexp}`, + code: (): string => `matching(${matcherCode(regexp)})` + }) +) diff --git a/packages/core/src/matchers/not.ts b/packages/core/src/matchers/not.ts index 0c3f801d..b14a4fb8 100644 --- a/packages/core/src/matchers/not.ts +++ b/packages/core/src/matchers/not.ts @@ -1,15 +1,10 @@ -import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode } from '../matcher.ts'; +import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode, createMatcher } from "../matcher.ts"; -export function not(matcher: MaybeMatcher): Matcher { - return { - match(actual: T): boolean { - return !applyMatcher(matcher, actual); - }, - description(): string { - return `not ${matcherDescription(matcher)}`; - }, - code(): string { - return `not(${matcherCode(matcher)})` - } - } -} +export const not = createMatcher( + 'not', + (matcher: MaybeMatcher): Matcher => ({ + match: (actual: T): boolean => !applyMatcher(matcher, actual), + description: (): string => `not ${matcherDescription(matcher)}`, + code: (): string => `not(${matcherCode(matcher)})` + }) +) diff --git a/packages/core/src/matchers/or.ts b/packages/core/src/matchers/or.ts index 4bb47a65..14da51c3 100644 --- a/packages/core/src/matchers/or.ts +++ b/packages/core/src/matchers/or.ts @@ -1,15 +1,10 @@ -import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode } from '../matcher.ts'; +import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode, createMatcher } from "../matcher.ts"; -export function or(...args: MaybeMatcher[]): Matcher { - return { - match(actual: T): boolean { - return args.some((matcher) => applyMatcher(matcher, actual)); - }, - description(): string { - return args.map(matcherDescription).join(' or '); - }, - code(): string { - return `or(${args.map(arg => matcherCode(arg)).join(', ')})` - } - } -} +export const or = createMatcher( + 'or', + (...args: MaybeMatcher[]): Matcher => ({ + match: (actual: T): boolean => args.some((matcher) => applyMatcher(matcher, actual)), + description: (): string => args.map(matcherDescription).join(' or '), + code: (): string => `or(${args.map((arg) => matcherCode(arg)).join(', ')})`, + }) +) diff --git a/packages/core/src/matchers/some.ts b/packages/core/src/matchers/some.ts index d8a4fa4a..e881285f 100644 --- a/packages/core/src/matchers/some.ts +++ b/packages/core/src/matchers/some.ts @@ -1,15 +1,10 @@ -import { type Matcher, type MaybeMatcher, applyMatcher, matcherDescription, matcherCode } from '../matcher.ts'; +import { type Matcher, type MaybeMatcher, applyMatcher, matcherDescription, matcherCode, createMatcher } from "../matcher.ts"; -export function some(expected: MaybeMatcher): Matcher> { - return { - match(actual: Iterable): boolean { - return Array.from(actual).some((value) => applyMatcher(expected, value)); - }, - description(): string { - return `some item ${matcherDescription(expected)}`; - }, - code(): string { - return `some(${matcherCode(expected)})` - } - } -} +export const some = createMatcher( + 'some', + (expected: MaybeMatcher): Matcher> => ({ + match: (actual: Iterable): boolean => Array.from(actual).some((value) => applyMatcher(expected, value)), + description: (): string => `some item ${matcherDescription(expected)}`, + code: (): string => `some(${matcherCode(expected)})` + }) +) diff --git a/packages/core/src/resolvers.ts b/packages/core/src/resolvers.ts index 03650a2a..3b8fbef7 100644 --- a/packages/core/src/resolvers.ts +++ b/packages/core/src/resolvers.ts @@ -97,4 +97,4 @@ export function unsafeSyncResolveParent(options: InteractorOptions(options: InteractorOptions): E { return resolveUnique(unsafeSyncResolveParent(options), options) as E; -} \ No newline at end of file +} diff --git a/packages/core/src/specification.ts b/packages/core/src/specification.ts index c7b91aa3..324b1757 100644 --- a/packages/core/src/specification.ts +++ b/packages/core/src/specification.ts @@ -1,9 +1,6 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -import type { Operation } from '@effection/core'; import type { FilterSet } from './filter-set.ts'; import type { Locator } from './locator.ts'; -import type { ActionInteraction, AssertionInteraction } from './interaction.ts'; +import type { ActionInteraction, AssertionInteraction, Interaction } from './interaction.ts'; import type { MergeObjects } from './merge-objects.ts'; import type { MaybeMatcher } from './matcher.ts'; @@ -129,7 +126,7 @@ export interface Interactor> apply: FilterFn; } -export type ActionFn> = (interactor: I, ...args: any[]) => Operation; +export type ActionFn> = (interactor: I, ...args: any[]) => Promise; export type FilterFn = (element: E) => T; @@ -163,7 +160,7 @@ export type InteractorSpecification, A e } export type ActionMethods, I extends Interactor> = { - [P in keyof A]: A[P] extends ((interactor: I, ...args: infer TArgs) => Operation) + [P in keyof A]: A[P] extends ((interactor: I, ...args: infer TArgs) => Promise) ? ((...args: TArgs) => ActionInteraction) : never; } @@ -186,26 +183,7 @@ export type FilterParams> = keyof F exte never; } -/** - * An interactor constructor is a function which can be used to initialize an - * {@link Interactor}. When calling {@link createInteractor}, you will get - * back an interactor constructor. - * - * The constructor can be called with a locator value, and an object of - * filters. Both are optional, and can be omitted. - * - * @typeParam E The type of DOM Element that this interactor operates on. - * @typeParam F the filters of this interactor, this is usually inferred from the specification - * @typeParam A the actions of this interactor, this is usually inferred from the specification - */ -export interface InteractorConstructor, FM extends FilterMethods, AM extends ActionMethods> { - interactorName: string; - selector(value: string | SelectorFn): InteractorConstructor; - locator(value: FilterDefinition): InteractorConstructor; - filters>(filters: FR): InteractorConstructor>, MergeObjects>, AM>; - actions & FM & AM, AR extends Actions>(actions: AR): InteractorConstructor>>; - extend(name: string): InteractorConstructor; - +export interface InteractorConstructorFunction, FM extends FilterMethods, AM extends ActionMethods> { /** * The constructor can be called with filters only: * @@ -221,7 +199,7 @@ export interface InteractorConstructor & FM & AM; + (filters?: FP): Interactor & FM & AM; /** * The constructor can be called with a locator: * @@ -242,6 +220,28 @@ export interface InteractorConstructor | RegExp, filters?: FP): Interactor & FM & AM; } +/** + * An interactor constructor is a function which can be used to initialize an + * {@link Interactor}. When calling {@link createInteractor}, you will get + * back an interactor constructor. + * + * The constructor can be called with a locator value, and an object of + * filters. Both are optional, and can be omitted. + * + * @typeParam E The type of DOM Element that this interactor operates on. + * @typeParam F the filters of this interactor, this is usually inferred from the specification + * @typeParam A the actions of this interactor, this is usually inferred from the specification + */ +export interface InteractorConstructor, FM extends FilterMethods, AM extends ActionMethods> extends InteractorConstructorFunction { + interactorName: string; + selector(value: string | SelectorFn): InteractorConstructor; + locator(value: FilterDefinition): InteractorConstructor; + filters>(filters: FR): InteractorConstructor>, MergeObjects>, AM>; + actions & FM & AM, AR extends Actions>(actions: AR): InteractorConstructor>>; + extend(name: string): InteractorConstructor; + builder(transform: (interaction: TInteraction) => T): TInteractorConstructor>; +} + export type InteractorOptions, A extends Actions>> = { name: string; specification: InteractorSpecification; @@ -249,3 +249,58 @@ export type InteractorOptions, A extends filter: FilterSet; ancestors: InteractorOptions[]; }; + +export interface TInteractorConstructor> { + (filters?: TMatch>): TInteractor> & TInteractorMethods & TFilterMethods> & TActionMethods> + (locator: string | TMatcher | RegExp, filters?: TMatch>): TInteractor> & TInteractorMethods & TFilterMethods> & TActionMethods> +} + +export interface TMatcher { + typename: string; + description: string; + args: T[]; +} + +export type TMatch = Partial< + { + [K in keyof T]: T[K] | TMatcher; + } +>; + +export interface TInteractorMethods { + find>(interactor: I): I; + exists(): T; + absent(): T; + has(match: TMatch): T; + is(match: TMatch): T; +} + +export interface TInteractor { + typename: string; + locator?: string | TMatcher | RegExp; + match?: TMatch; + description: string; + ancestors: TInteractor[]; +} + +export interface TInteraction { + name: string; + path: Omit, 'ancestors'>[]; + description: string; + readonly: boolean; + args: unknown[]; +} + +type GetActions = T extends InteractorConstructorFunction ? AM : never; +type GetFilters = T extends InteractorConstructorFunction ? FM : never; +type GetMatcher = T extends InteractorConstructorFunction ? FP : never; + +export type TActionMethods> = { + [P in keyof AM]: AM[P] extends (...args: infer TArgs) => Interaction + ? (...args: TArgs) => T + : never; +}; + +export type TFilterMethods> = { + [P in keyof FM]: () => T; +}; diff --git a/packages/core/test/fixtures.ts b/packages/core/test/fixtures.ts index 33e437f1..06d1e063 100644 --- a/packages/core/test/fixtures.ts +++ b/packages/core/test/fixtures.ts @@ -71,8 +71,8 @@ export const Datepicker = createInteractor("datepicker") month: Calendar().find(Header()).text(), }) .actions({ - toggle: function* (interactor) { - yield interactor.find(TextField({ placeholder: "YYYY-MM-DD" })).click(); + async toggle(interactor) { + await interactor.find(TextField({ placeholder: "YYYY-MM-DD" })).click(); }, }); diff --git a/packages/core/test/helpers.ts b/packages/core/test/helpers.ts index 386015ba..875b21d5 100644 --- a/packages/core/test/helpers.ts +++ b/packages/core/test/helpers.ts @@ -1,15 +1,13 @@ import { type DOMWindow, JSDOM } from "jsdom"; import { afterEach, beforeEach } from "@std/testing/bdd"; -import { addInteractionWrapper, globals, setDocumentResolver, setInteractorTimeout } from "@interactors/globals"; +import { globals, setDocumentResolver, setInteractorTimeout } from "@interactors/globals"; let jsdom: JSDOM; -let removeWrapper: () => void; export function dom(html: string): DOMWindow { jsdom = new JSDOM(`${html}`, { runScripts: "dangerously" }); setDocumentResolver(() => jsdom.window.document); - removeWrapper = addInteractionWrapper(async (perform) => await perform()); return jsdom.window; } @@ -20,6 +18,5 @@ beforeEach(() => { }); afterEach(() => { - removeWrapper?.(); jsdom?.window?.close(); }); diff --git a/packages/globals/deno.json b/packages/globals/deno.json index b285fcca..9339bd9f 100644 --- a/packages/globals/deno.json +++ b/packages/globals/deno.json @@ -9,7 +9,6 @@ "imports": { "@std/expect": "jsr:@std/expect@^1.0.0", "@std/testing": "jsr:@std/testing@^1.0.0", - "@effection/core": "npm:@effection/core@2.2.0", "jsdom": "npm:jsdom@^24.0.0" }, "lint": { diff --git a/packages/globals/src/globals.ts b/packages/globals/src/globals.ts index 7e7fcff4..9d8d5add 100644 --- a/packages/globals/src/globals.ts +++ b/packages/globals/src/globals.ts @@ -1,26 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import type { Operation } from "@effection/core"; import type { KeyboardLayout } from "./keyboard-layout.ts"; export type InteractionType = "action" | "assertion"; -type Interaction = Operation & { - type: InteractionType; - description: string; - options: InteractionOptions; - interactor: unknown; // we can't type this any better here - code: () => string; - halt: () => Promise; -}; - interface Globals { readonly document: Document; - /** - * @deprecated Use `wrapInteraction` instead - */ - readonly wrapAction: (description: string, perform: () => Promise, type: InteractionType) => Operation; - readonly wrapInteraction: InteractionWrapper; - readonly interactionWrappers: Set; readonly interactorTimeout: number; readonly reset: () => void; readonly keyboardLayout: KeyboardLayout; @@ -41,8 +25,6 @@ export type InteractionOptions = InteractorOptions & { ancestors?: InteractorOptions[]; }; -export type InteractionWrapper = (perform: () => Promise, interaction: Interaction) => Operation; - declare global { // deno-lint-ignore prefer-namespace-keyword module globalThis { @@ -52,16 +34,6 @@ declare global { } if (!globalThis.__interactors) { - let wrapInteraction = (perform: () => Promise, interaction: Interaction): Operation => { - return (scope) => { - let current = perform; - for (let wrapper of getGlobals().interactionWrappers) { - let operation = wrapper(current, interaction); - current = () => scope.run(operation); - } - return current; - }; - }; Object.defineProperty(globalThis, "__interactors", { value: Object.defineProperties( {}, @@ -76,17 +48,6 @@ if (!globalThis.__interactors) { enumerable: true, configurable: true, }, - wrapAction: { - value: wrapInteraction, - enumerable: true, - }, - wrapInteraction: { - value: wrapInteraction, - enumerable: true, - }, - interactionWrappers: { - value: new Set(), - }, interactorTimeout: { value: 1900, enumerable: true, @@ -124,24 +85,6 @@ export function setInteractorTimeout(ms: number): void { }); } -/** - * @deprecated Use `addInteractionWrapper` instead - */ -export function addActionWrapper( - wrapper: (description: string, perform: () => Promise, type: InteractionType) => Operation -): () => boolean { - return addInteractionWrapper( - (perform: () => Promise, interaction: Interaction): Operation => - wrapper(interaction.description, perform, interaction.type) - ); -} - -export function addInteractionWrapper(wrapper: InteractionWrapper): () => boolean { - getGlobals().interactionWrappers.add(wrapper); - - return () => getGlobals().interactionWrappers.delete(wrapper); -} - export function setKeyboardLayout(layout: KeyboardLayout): void { Object.defineProperty(getGlobals(), "keyboardLayout", { value: layout, diff --git a/packages/globals/test/globals.test.ts b/packages/globals/test/globals.test.ts index dd31576d..e8ced5f0 100644 --- a/packages/globals/test/globals.test.ts +++ b/packages/globals/test/globals.test.ts @@ -1,12 +1,12 @@ -import { beforeEach, describe, it } from '@std/testing/bdd'; +import { beforeEach, describe, it } from "@std/testing/bdd"; import { expect } from "@std/expect"; import { JSDOM } from "jsdom"; -import { Symbol } from "@effection/core"; -import { globals, setDocumentResolver, addInteractionWrapper, setInteractorTimeout } from "../mod.ts"; +import { globals, setDocumentResolver, setInteractorTimeout } from "../mod.ts"; function makeDocument(body = ""): Document { - return new JSDOM(`${body}`).window.document; + return new JSDOM(`${body}`).window + .document; } describe("@interactors/globals", () => { @@ -34,58 +34,4 @@ describe("@interactors/globals", () => { expect(globals.interactorTimeout).toEqual(3000); }); }); - - describe("wrapInteraction", () => { - it("returns the same interaction without any change", () => { - let action = async () => {}; - expect( - (globals.wrapInteraction( - action, - { - type: "action", - interactor: "Interactor", - description: "plain action", - action, - code: () => "", - halt: () => Promise.resolve(), - options: { - interactor: "Interactor", - name: "plain", - type: "action", - code: () => "", - args: [], - }, - [Symbol.operation]: Promise.resolve(), - } - ) as () => unknown)() - ).toBe(action); - }); - - it("applies defined interaction wrapper", () => { - let action = async () => await Promise.resolve("foo"); - let removeWrapper = addInteractionWrapper(() => async () => await Promise.resolve("bar")); - globals.wrapInteraction( - action, - { - type: "action", - interactor: "Interactor", - description: "foo action", - action, - code: () => "", - halt: () => Promise.resolve(), - options: { - interactor: "Interactor", - name: "foo", - type: "action", - code: () => "", - args: [], - }, - [Symbol.operation]: Promise.resolve(), - }, - ); - - removeWrapper(); - expect(globals.interactionWrappers.has(action)).toEqual(false); - }); - }); }); diff --git a/packages/with-cypress/cypress/tsconfig.json b/packages/with-cypress/cypress/tsconfig.json deleted file mode 100644 index 48e32815..00000000 --- a/packages/with-cypress/cypress/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "compilerOptions": { - "types": ["cypress"], - "sourceMap": false - }, - "include": ["./**/*.ts"] -} diff --git a/tsconfig-base.json b/tsconfig-base.json deleted file mode 100644 index 72da85f8..00000000 --- a/tsconfig-base.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "target": "es2019", - "moduleResolution": "node", - "strict": true, - "module": "commonjs", - "skipLibCheck": true, - "sourceMap": true, - "declaration": true, - "esModuleInterop": true, - "baseUrl": ".", - "composite": true, - "declarationMap": true, - } -}