diff --git a/.eslintrc.js b/.eslintrc.js index 3a5918f54b..5a652944f5 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -24,7 +24,7 @@ module.exports = { 'no-unsanitized', 'header', 'simple-import-sort', - 'no-only-tests', + 'jest', ], rules: { '@typescript-eslint/no-empty-function': 'off', @@ -90,7 +90,16 @@ module.exports = { ], 'no-warning-comments': 'warn', 'simple-import-sort/imports': 'error', - 'no-only-tests/no-only-tests': 'error', + 'jest/no-alias-methods': 'error', + 'jest/no-deprecated-functions': 'error', + 'jest/no-focused-tests': 'error', + 'jest/no-identical-title': 'error', + 'jest/no-interpolation-in-snapshots': 'error', + 'jest/no-jasmine-globals': 'error', + 'jest/no-test-prefixes': 'error', + 'jest/valid-describe-callback': 'error', + 'jest/valid-expect': 'error', + 'jest/valid-expect-in-promise': 'error', }, settings: { react: { diff --git a/package-lock.json b/package-lock.json index 2a11aa5828..5d50a26284 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,8 +59,8 @@ "@types/react-test-renderer": "^18.3.0", "@types/react-transition-group": "^4.4.4", "@types/webpack-env": "^1.16.3", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", + "@typescript-eslint/eslint-plugin": "^8.24.1", + "@typescript-eslint/parser": "^8.24.1", "axe-core": "^4.7.2", "babel-jest": "^29.7.0", "change-case": "^4.1.2", @@ -73,7 +73,7 @@ "eslint": "^8.28.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-header": "^3.1.1", - "eslint-plugin-no-only-tests": "^3.3.0", + "eslint-plugin-jest": "^28.11.0", "eslint-plugin-no-unsanitized": "^4.0.2", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.31.11", @@ -1958,28 +1958,45 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.1.2", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1995,11 +2012,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -2008,11 +2029,13 @@ } }, "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2024,7 +2047,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.18.0", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2039,6 +2064,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { @@ -2050,6 +2077,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -2060,10 +2089,22 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@formatjs/ecma402-abstract": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.14.3.tgz", @@ -2156,12 +2197,15 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -2170,6 +2214,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -2178,11 +2224,13 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2195,6 +2243,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -2205,7 +2255,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, @@ -2222,7 +2274,10 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, @@ -2806,23 +2861,24 @@ "url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing" } ], + "license": "CC-BY-4.0", "dependencies": { "spacetrim": "0.11.59" } }, "node_modules/@puppeteer/browsers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", - "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.7.1.tgz", + "integrity": "sha512-MK7rtm8JjaxPN7Mf1JdZIZKPD2Z+W7osvrC1vjpvfOX1K0awDIHYbNi89f7eotp7eMUn2shWnt03HwVbriXtKQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "debug": "^4.3.5", + "debug": "^4.4.0", "extract-zip": "^2.0.1", "progress": "^2.0.3", - "proxy-agent": "^6.4.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.0", + "tar-fs": "^3.0.8", "yargs": "^17.7.2" }, "bin": { @@ -2837,6 +2893,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -2851,6 +2908,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2867,38 +2925,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/@puppeteer/browsers/node_modules/tar-fs": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", - "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", - "dev": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, - "node_modules/@puppeteer/browsers/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } + "license": "MIT" }, "node_modules/@puppeteer/browsers/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -2917,6 +2952,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -3728,7 +3764,8 @@ "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@trysound/sax": { "version": "0.2.0", @@ -4125,11 +4162,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/semver": { - "version": "7.3.13", - "dev": true, - "license": "MIT" - }, "node_modules/@types/serve-index": { "version": "1.9.1", "dev": true, @@ -4185,6 +4217,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", + "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/ws": { "version": "8.5.3", "dev": true, @@ -4211,96 +4250,75 @@ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", + "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/type-utils": "5.45.0", - "@typescript-eslint/utils": "5.45.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/type-utils": "8.24.1", + "@typescript-eslint/utils": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/@typescript-eslint/parser": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz", + "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/typescript-estree": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4312,20 +4330,24 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", + "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0" + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4333,37 +4355,37 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", + "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/typescript-estree": "8.24.1", + "@typescript-eslint/utils": "8.24.1", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4375,16 +4397,20 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/types": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", + "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4392,37 +4418,40 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", + "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4433,52 +4462,91 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/utils": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", + "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/typescript-estree": "8.24.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.45.0", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", + "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.45.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.24.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, "node_modules/@vitest/pretty-format": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", @@ -4517,25 +4585,12 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/@wdio/globals": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.9.1.tgz", - "integrity": "sha512-0sOgQcbX3QSsTpSmN+3mofNGam4d7hQze5D5WmRGmXHtWWmRztusmByWm+LbdJiheReEf6ynfGBpOvd+CuQnpA==", - "dev": true, - "engines": { - "node": ">=18.20.0" - }, - "optionalDependencies": { - "expect-webdriverio": "^5.1.0", - "webdriverio": "9.9.1" - } - }, - "node_modules/@wdio/globals/node_modules/@wdio/config": { + "node_modules/@wdio/config": { "version": "9.9.0", "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.9.0.tgz", "integrity": "sha512-TonCzSBjfk6fLV9zEvH58Opg3te4gl+VapZeShwfJWuL5T8YAWfSKIUVbb9auIEaOWx2OtOap4DK+jK9CLSTVA==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { "@wdio/logger": "9.4.4", "@wdio/types": "9.9.0", @@ -4548,212 +4603,72 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/globals/node_modules/@wdio/logger": { - "version": "9.4.4", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.4.4.tgz", - "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", + "node_modules/@wdio/config/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "optional": true, + "license": "ISC", "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=18.20.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wdio/globals/node_modules/@wdio/protocols": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.7.0.tgz", - "integrity": "sha512-5DI8cqJqT9K6oQn8UpaSTmcGAl4ufkUWC5FoPT3oXdLjILfxvweZDf/2XNBCbGMk4+VOMKqB2ofOqKhDIB2nAg==", - "dev": true, - "optional": true - }, - "node_modules/@wdio/globals/node_modules/@wdio/repl": { - "version": "9.4.4", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz", - "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/@wdio/types": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.9.0.tgz", - "integrity": "sha512-Mh7ryL7uWKECStKcF6pWSbYkC51OemOwQR2pmvymP5HOfG74s6RVbJ+Z6Om8ffiJeTI5nZuvNDzYNkUpm7Elzg==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/@wdio/utils": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.9.0.tgz", - "integrity": "sha512-CgPE/fh4SLTZmQZO99/B/swrQ8uwaavlVfeUtxQ5iZ5rTpXKx+V4ScCSuU0qX5Kwm9e1ZG6ALuzDTo8zQ1gJ4w==", + "node_modules/@wdio/config/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "optional": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.4.4", - "@wdio/types": "9.9.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "edgedriver": "^6.1.1", - "geckodriver": "^5.0.0", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.2.24", - "safaridriver": "^1.0.0", - "split2": "^4.2.0", - "wait-port": "^1.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=12" + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@wdio/globals/node_modules/archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "dev": true, - "optional": true, - "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" + "url": "https://github.com/sponsors/isaacs" }, - "engines": { - "node": ">= 14" + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@wdio/globals/node_modules/archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "node_modules/@wdio/config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "optional": true, + "license": "ISC", "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/globals/node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@wdio/globals/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "optional": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@wdio/globals/node_modules/compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "dev": true, - "optional": true, - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/globals/node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "dev": true, - "optional": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wdio/globals/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "node_modules/@wdio/globals": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.9.1.tgz", + "integrity": "sha512-0sOgQcbX3QSsTpSmN+3mofNGam4d7hQze5D5WmRGmXHtWWmRztusmByWm+LbdJiheReEf6ynfGBpOvd+CuQnpA==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, "engines": { - "node": ">=6.0" + "node": ">=18.20.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "optionalDependencies": { + "expect-webdriverio": "^5.1.0", + "webdriverio": "9.9.1" } }, - "node_modules/@wdio/globals/node_modules/devtools-protocol": { - "version": "0.0.1312386", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", - "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/@wdio/globals/node_modules/expect-webdriverio": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.1.0.tgz", @@ -4786,165 +4701,54 @@ } } }, - "node_modules/@wdio/globals/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "optional": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/globals/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "optional": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/@wdio/globals/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "optional": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/globals/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@wdio/globals/node_modules/puppeteer-core": { - "version": "22.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", - "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@puppeteer/browsers": "2.3.0", - "chromium-bidi": "0.6.3", - "debug": "^4.3.6", - "devtools-protocol": "0.0.1312386", - "ws": "^8.18.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@wdio/globals/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "node_modules/@wdio/logger": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.4.4.tgz", + "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.20.0" } }, - "node_modules/@wdio/globals/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/@wdio/globals/node_modules/serialize-error": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", - "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", + "node_modules/@wdio/logger/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "optional": true, - "dependencies": { - "type-fest": "^2.12.2" - }, + "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/globals/node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 10.x" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@wdio/globals/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" + "node_modules/@wdio/logger/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wdio/globals/node_modules/strip-ansi": { + "node_modules/@wdio/logger/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4955,111 +4759,72 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@wdio/globals/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "node_modules/@wdio/protocols": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.7.0.tgz", + "integrity": "sha512-5DI8cqJqT9K6oQn8UpaSTmcGAl4ufkUWC5FoPT3oXdLjILfxvweZDf/2XNBCbGMk4+VOMKqB2ofOqKhDIB2nAg==", "dev": true, - "optional": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } + "license": "MIT" }, - "node_modules/@wdio/globals/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/@wdio/repl": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz", + "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, - "optional": true, - "engines": { - "node": ">=12.20" + "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.20.0" } }, - "node_modules/@wdio/globals/node_modules/webdriver": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.9.1.tgz", - "integrity": "sha512-VqHDph80Pd/HmeEtoNiqX/ixML/ub8Rw54oviVYm6V7cbnzACrSbSlt9zpdWfjEk+Qkm/CytyYFggan30RfAiQ==", + "node_modules/@wdio/types": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.9.0.tgz", + "integrity": "sha512-Mh7ryL7uWKECStKcF6pWSbYkC51OemOwQR2pmvymP5HOfG74s6RVbJ+Z6Om8ffiJeTI5nZuvNDzYNkUpm7Elzg==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "9.9.0", - "@wdio/logger": "9.4.4", - "@wdio/protocols": "9.7.0", - "@wdio/types": "9.9.0", - "@wdio/utils": "9.9.0", - "deepmerge-ts": "^7.0.3", - "undici": "^6.20.1", - "ws": "^8.8.0" + "@types/node": "^20.1.0" }, "engines": { "node": ">=18.20.0" } }, - "node_modules/@wdio/globals/node_modules/webdriverio": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.9.1.tgz", - "integrity": "sha512-3TO8JcA2fylti2ExsIKgyicwdDvft5slWdq1wz50BXw41/3yOwyg4z8UkT6fUuSUYDOt8QPlfddALtOdQqvuKA==", + "node_modules/@wdio/utils": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.9.0.tgz", + "integrity": "sha512-CgPE/fh4SLTZmQZO99/B/swrQ8uwaavlVfeUtxQ5iZ5rTpXKx+V4ScCSuU0qX5Kwm9e1ZG6ALuzDTo8zQ1gJ4w==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "@types/node": "^20.11.30", - "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.9.0", + "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.4.4", - "@wdio/protocols": "9.7.0", - "@wdio/repl": "9.4.4", "@wdio/types": "9.9.0", - "@wdio/utils": "9.9.0", - "archiver": "^7.0.1", - "aria-query": "^5.3.0", - "cheerio": "^1.0.0-rc.12", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "grapheme-splitter": "^1.0.4", - "htmlfy": "^0.6.0", - "is-plain-obj": "^4.1.0", - "jszip": "^3.10.1", - "lodash.clonedeep": "^4.5.0", - "lodash.zip": "^4.2.0", - "query-selector-shadow-dom": "^1.0.1", - "resq": "^1.11.0", - "rgb2hex": "0.2.5", - "serialize-error": "^11.0.3", - "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.9.1" + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "edgedriver": "^6.1.1", + "geckodriver": "^5.0.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "safaridriver": "^1.0.0", + "split2": "^4.2.0", + "wait-port": "^1.1.0" }, "engines": { "node": ">=18.20.0" - }, - "peerDependencies": { - "puppeteer-core": "^22.3.0" - }, - "peerDependenciesMeta": { - "puppeteer-core": { - "optional": true - } } }, - "node_modules/@wdio/globals/node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "node_modules/@wdio/utils/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, - "optional": true, - "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">= 14" + "node": ">= 10.x" } }, "node_modules/@webassemblyjs/ast": { @@ -5258,6 +5023,7 @@ "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.57.tgz", "integrity": "sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "bun": ">=0.7.0", "deno": ">=1.0.0", @@ -5276,6 +5042,7 @@ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, + "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -5443,81 +5210,268 @@ "ajv": "^6.9.1" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", + "node_modules/ajv/node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "MIT" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { - "type-fest": "^0.21.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "engines": [ - "node >= 0.8.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } + "license": "MIT" }, - "node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.3", + "node_modules/archiver/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "license": "ISC", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/archiver/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "safe-buffer": "~5.2.0" } }, "node_modules/argparse": { @@ -5675,6 +5629,7 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -5927,6 +5882,7 @@ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.0.1.tgz", "integrity": "sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-events": "^2.0.0", @@ -5942,6 +5898,7 @@ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.4.0.tgz", "integrity": "sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA==", "dev": true, + "license": "Apache-2.0", "optional": true, "engines": { "bare": ">=1.6.0" @@ -5952,6 +5909,7 @@ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-os": "^3.0.1" @@ -5962,6 +5920,7 @@ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "streamx": "^2.21.0" @@ -6003,6 +5962,7 @@ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -6208,11 +6168,13 @@ } }, "node_modules/buffer-crc32": { - "version": "0.2.13", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=8.0.0" } }, "node_modules/buffer-from": { @@ -6590,22 +6552,6 @@ "node": ">=6.0" } }, - "node_modules/chromium-bidi": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", - "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", - "zod": "3.23.8" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, "node_modules/ci-info": { "version": "3.7.0", "dev": true, @@ -6849,6 +6795,71 @@ "dev": true, "license": "MIT" }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/compress-commons/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/compress-commons/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/compressible": { "version": "2.0.18", "dev": true, @@ -7004,31 +7015,95 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=10.13.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/core-util-is": { - "version": "1.0.3", + "node_modules/crc32-stream/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, - "node_modules/crc-32": { - "version": "1.2.2", + "node_modules/crc32-stream/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/create-jest": { @@ -7609,12 +7684,13 @@ } }, "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 12" } }, "node_modules/data-urls": { @@ -7689,6 +7765,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -7718,6 +7795,8 @@ }, "node_modules/deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, @@ -7734,6 +7813,7 @@ "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.4.tgz", "integrity": "sha512-fxqo6nHGQ9zOVgI4KXqtWXJR/yCLtC7aXIVq+6jc8tHPFUxlFmuUcm2kC4vztQ+LJxQ3gER/XAWearGYQ8niGA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=16.0.0" } @@ -7826,6 +7906,7 @@ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -7894,14 +7975,6 @@ "dev": true, "license": "MIT" }, - "node_modules/devtools-protocol": { - "version": "0.0.1260888", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1260888.tgz", - "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -8190,12 +8263,30 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "node_modules/edge-paths": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", + "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/which": "^2.0.1", + "which": "^2.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/shirshak55" + } + }, "node_modules/edgedriver": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz", "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -8214,74 +8305,22 @@ "node": ">=18.0.0" } }, - "node_modules/edgedriver/node_modules/@types/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", - "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", - "dev": true - }, - "node_modules/edgedriver/node_modules/@wdio/logger": { - "version": "9.4.4", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.4.4.tgz", - "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", - "dev": true, - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, "node_modules/edgedriver/node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } }, - "node_modules/edgedriver/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/edgedriver/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/edgedriver/node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/edgedriver/node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -8294,52 +8333,18 @@ } } }, - "node_modules/edgedriver/node_modules/edge-paths": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", - "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", - "dev": true, - "dependencies": { - "@types/which": "^2.0.1", - "which": "^2.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/shirshak55" - } - }, - "node_modules/edgedriver/node_modules/edge-paths/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/edgedriver/node_modules/fast-xml-parser": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz", - "integrity": "sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.2.tgz", + "integrity": "sha512-xmnYV9o0StIz/0ArdzmWTxn9oDy0lH8Z80/8X/TD2EUQKXY4DHxoT9mYBqgGIG17DgddCJtH1M6DriMbalNsAA==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } ], + "license": "MIT", "dependencies": { "strnum": "^1.0.5" }, @@ -8352,6 +8357,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -8365,6 +8371,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -8373,50 +8380,29 @@ "node": ">= 14" } }, - "node_modules/edgedriver/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/edgedriver/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "node_modules/edgedriver/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, + "license": "ISC", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "node": ">=16" } }, - "node_modules/edgedriver/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/edgedriver/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } + "license": "MIT" }, "node_modules/edgedriver/node_modules/which": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -8427,15 +8413,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/edgedriver/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -8799,48 +8776,50 @@ } }, "node_modules/eslint": { - "version": "8.29.0", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", - "grapheme-splitter": "^1.0.4", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -8873,14 +8852,30 @@ "eslint": ">=7.7.0" } }, - "node_modules/eslint-plugin-no-only-tests": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz", - "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==", + "node_modules/eslint-plugin-jest": { + "version": "28.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.11.0.tgz", + "integrity": "sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, "engines": { - "node": ">=5.0.0" + "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, "node_modules/eslint-plugin-no-unsanitized": { @@ -9072,53 +9067,33 @@ "bin": { "jsesc": "bin/jsesc" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "engines": { + "node": ">=6" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", + "node_modules/eslint-scope": { + "version": "5.1.1", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=10" + "node": ">=8.0.0" } }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/argparse": { @@ -9152,7 +9127,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9161,10 +9138,15 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -9203,7 +9185,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.18.0", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9286,13 +9270,15 @@ } }, "node_modules/espree": { - "version": "9.4.1", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9314,7 +9300,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9386,6 +9374,7 @@ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9560,6 +9549,7 @@ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -9576,12 +9566,13 @@ } }, "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -9597,6 +9588,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -9608,10 +9600,11 @@ } }, "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "2.0.1", @@ -9652,6 +9645,8 @@ }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, @@ -9721,6 +9716,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -9740,6 +9736,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -9989,6 +9986,7 @@ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, + "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" }, @@ -10140,6 +10138,7 @@ "integrity": "sha512-vn7TtQ3b9VMJtVXsyWtQQl1fyBVFhQy7UvJF96kPuuJ0or5THH496AD3eUyaDD11+EqCxH9t6V+EP9soZQk4YQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -10157,68 +10156,22 @@ "node": ">=18.0.0" } }, - "node_modules/geckodriver/node_modules/@wdio/logger": { - "version": "9.4.4", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.4.4.tgz", - "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", - "dev": true, - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, "node_modules/geckodriver/node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } }, - "node_modules/geckodriver/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/geckodriver/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/geckodriver/node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/geckodriver/node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -10236,6 +10189,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -10249,6 +10203,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -10262,6 +10217,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -10270,71 +10226,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/geckodriver/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/geckodriver/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/geckodriver/node_modules/tar-fs": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", - "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", - "dev": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, - "node_modules/geckodriver/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } + "license": "MIT" }, "node_modules/geckodriver/node_modules/which": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -10415,6 +10315,7 @@ "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -10455,6 +10356,7 @@ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", "dev": true, + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -10464,11 +10366,22 @@ "node": ">= 14" } }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/get-uri/node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -10485,7 +10398,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/glob": { "version": "7.2.3", @@ -10711,6 +10625,13 @@ "dev": true, "license": "MIT" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, "node_modules/gulp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz", @@ -11507,6 +11428,7 @@ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11593,6 +11515,7 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -11605,7 +11528,8 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/ipaddr.js": { "version": "2.0.1", @@ -13213,15 +13137,6 @@ "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/js-sdsl": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "license": "MIT" @@ -13242,7 +13157,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsdom": { "version": "20.0.3", @@ -13481,6 +13397,8 @@ }, "node_modules/lazystream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, "license": "MIT", "dependencies": { @@ -13491,7 +13409,9 @@ } }, "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.7", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { @@ -13568,6 +13488,8 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14027,6 +13949,7 @@ "url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing" } ], + "license": "Apache-2.0", "dependencies": { "@promptbook/utils": "0.69.5", "type-fest": "4.26.0", @@ -14038,6 +13961,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -14706,14 +14630,6 @@ "readable-stream": "2 || 3" } }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/mkdirp": { "version": "1.0.4", "dev": true, @@ -14862,11 +14778,6 @@ "dev": true, "license": "MIT" }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/negotiator": { "version": "0.6.3", "dev": true, @@ -14885,6 +14796,7 @@ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -14919,10 +14831,30 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "engines": { "node": ">=10.5.0" } }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/node-forge": { "version": "1.3.1", "dev": true, @@ -15476,7 +15408,9 @@ } }, "node_modules/optionator": { - "version": "0.9.1", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -15485,7 +15419,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -15541,6 +15475,7 @@ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", @@ -15560,6 +15495,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -15569,6 +15505,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -15586,6 +15523,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -15599,6 +15537,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -15611,13 +15550,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pac-resolver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, + "license": "MIT", "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -15630,7 +15571,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/package-name-regex": { "version": "2.0.6", @@ -15931,7 +15873,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.0", @@ -16646,6 +16589,8 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { @@ -16721,6 +16666,7 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -16792,6 +16738,7 @@ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -16811,6 +16758,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -16820,6 +16768,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -16837,6 +16786,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -16850,6 +16800,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -16863,6 +16814,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -16871,7 +16823,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/proxy-from-env": { "version": "1.1.0", @@ -17220,7 +17173,9 @@ } }, "node_modules/readdir-glob": { - "version": "1.1.2", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -17284,21 +17239,10 @@ "set-function-name": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regjsparser": { @@ -17705,6 +17649,7 @@ "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz", "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.0.0" } @@ -17877,10 +17822,11 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -17949,6 +17895,35 @@ "upper-case-first": "^2.0.2" } }, + "node_modules/serialize-error": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", + "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^2.12.2" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -18274,6 +18249,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -18311,6 +18287,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -18325,6 +18302,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -18339,6 +18317,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -18348,6 +18327,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -18364,7 +18344,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/source-map": { "version": "0.6.1", @@ -18411,7 +18392,8 @@ "type": "github", "url": "https://github.com/hejny/spacetrim/blob/main/README.md#%EF%B8%8F-contributing" } - ] + ], + "license": "Apache-2.0" }, "node_modules/sparkles": { "version": "2.1.0", @@ -19497,6 +19479,33 @@ "node": ">=6" } }, + "node_modules/tar-fs": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", + "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/teex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", @@ -19639,12 +19648,6 @@ "dev": true, "license": "MIT" }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, "node_modules/thunky": { "version": "1.1.0", "dev": true, @@ -19779,6 +19782,19 @@ "node": ">= 4.0.0" } }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ts-jest": { "version": "29.2.5", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", @@ -19858,27 +19874,10 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/tsutils": { - "version": "3.21.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { @@ -19899,6 +19898,8 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -20106,40 +20107,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unbzip2-stream/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -20290,6 +20257,7 @@ "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.1.tgz", "integrity": "sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -20497,6 +20465,7 @@ "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "commander": "^9.3.0", @@ -20514,6 +20483,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || >=14" } @@ -20523,6 +20493,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -20539,7 +20510,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/walker": { "version": "1.0.8", @@ -20575,10 +20547,78 @@ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, + "node_modules/webdriver": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.9.1.tgz", + "integrity": "sha512-VqHDph80Pd/HmeEtoNiqX/ixML/ub8Rw54oviVYm6V7cbnzACrSbSlt9zpdWfjEk+Qkm/CytyYFggan30RfAiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "9.9.0", + "@wdio/logger": "9.4.4", + "@wdio/protocols": "9.7.0", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.0", + "deepmerge-ts": "^7.0.3", + "undici": "^6.20.1", + "ws": "^8.8.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/webdriverio": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.9.1.tgz", + "integrity": "sha512-3TO8JcA2fylti2ExsIKgyicwdDvft5slWdq1wz50BXw41/3yOwyg4z8UkT6fUuSUYDOt8QPlfddALtOdQqvuKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^20.11.30", + "@types/sinonjs__fake-timers": "^8.1.5", + "@wdio/config": "9.9.0", + "@wdio/logger": "9.4.4", + "@wdio/protocols": "9.7.0", + "@wdio/repl": "9.4.4", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.0", + "archiver": "^7.0.1", + "aria-query": "^5.3.0", + "cheerio": "^1.0.0-rc.12", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "grapheme-splitter": "^1.0.4", + "htmlfy": "^0.6.0", + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "query-selector-shadow-dom": "^1.0.1", + "resq": "^1.11.0", + "rgb2hex": "0.2.5", + "serialize-error": "^11.0.3", + "urlpattern-polyfill": "^10.0.0", + "webdriver": "9.9.1" + }, + "engines": { + "node": ">=18.20.0" + }, + "peerDependencies": { + "puppeteer-core": "^22.3.0" + }, + "peerDependenciesMeta": { + "puppeteer-core": { + "optional": true + } + } + }, "node_modules/webpack": { "version": "5.94.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", @@ -21010,10 +21050,11 @@ "license": "MIT" }, "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21174,11 +21215,22 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, + "node_modules/yauzl/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "dev": true, @@ -21190,15 +21242,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", "dev": true, - "optional": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/zip-stream/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/zip-stream/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" } } } diff --git a/package.json b/package.json index a70f5c5f9e..8b2ae0fc44 100644 --- a/package.json +++ b/package.json @@ -80,8 +80,8 @@ "@types/react-test-renderer": "^18.3.0", "@types/react-transition-group": "^4.4.4", "@types/webpack-env": "^1.16.3", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", + "@typescript-eslint/eslint-plugin": "^8.24.1", + "@typescript-eslint/parser": "^8.24.1", "axe-core": "^4.7.2", "babel-jest": "^29.7.0", "change-case": "^4.1.2", @@ -94,7 +94,7 @@ "eslint": "^8.28.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-header": "^3.1.1", - "eslint-plugin-no-only-tests": "^3.3.0", + "eslint-plugin-jest": "^28.11.0", "eslint-plugin-no-unsanitized": "^4.0.2", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.31.11", diff --git a/src/__tests__/functional-tests/outer-form-submit.test.tsx b/src/__tests__/functional-tests/outer-form-submit.test.tsx index 24303041ca..5f7a78bbcf 100644 --- a/src/__tests__/functional-tests/outer-form-submit.test.tsx +++ b/src/__tests__/functional-tests/outer-form-submit.test.tsx @@ -33,7 +33,7 @@ describe('Check outer form submission', () => { .querySelectorAll('button') .forEach(button => button.click()); - expect(onSubmit).not.toBeCalled(); + expect(onSubmit).not.toHaveBeenCalled(); }); }); }); diff --git a/src/__tests__/functional-tests/test-utils.test.tsx b/src/__tests__/functional-tests/test-utils.test.tsx index dbefc3b11c..d606731719 100644 --- a/src/__tests__/functional-tests/test-utils.test.tsx +++ b/src/__tests__/functional-tests/test-utils.test.tsx @@ -95,7 +95,7 @@ describe('createWrapper', () => { createWrapperDom(container); - expect(spy).not.toBeCalled(); + expect(spy).not.toHaveBeenCalled(); }); test('given detached node when creating a wrapper then a warning is printed', () => { @@ -104,7 +104,7 @@ describe('createWrapper', () => { createWrapperDom(container); - expect(spy).toBeCalledTimes(1); + expect(spy).toHaveBeenCalledTimes(1); }); test('given node rendered with "@testing-library/react" when creating a wrapper then no warning is printed', () => { @@ -112,7 +112,7 @@ describe('createWrapper', () => { createWrapperDom(container); - expect(spy).not.toBeCalled(); + expect(spy).not.toHaveBeenCalled(); }); }); diff --git a/src/alert/__tests__/runtime-content.test.tsx b/src/alert/__tests__/runtime-content.test.tsx index 55bcd44ad4..21e3443473 100644 --- a/src/alert/__tests__/runtime-content.test.tsx +++ b/src/alert/__tests__/runtime-content.test.tsx @@ -213,10 +213,10 @@ test('calls unmount callback', () => { const { unmount } = render(Alert content); const alertWrapper = createWrapper().findAlert()!; expectContent(alertWrapper, stylesCss, { content: 'New content', contentReplaced: true }); - expect(unmountCallback).not.toBeCalled(); + expect(unmountCallback).not.toHaveBeenCalled(); unmount(); - expect(unmountCallback).toBeCalled(); + expect(unmountCallback).toHaveBeenCalled(); }); test('calls update callback', () => { @@ -227,12 +227,12 @@ test('calls update callback', () => { }; awsuiPlugins.alertContent.registerContentReplacer(plugin); const { rerender } = render(Alert content); - expect(update).toBeCalledTimes(1); - expect(plugin.runReplacer).toBeCalledTimes(1); + expect(update).toHaveBeenCalledTimes(1); + expect(plugin.runReplacer).toHaveBeenCalledTimes(1); rerender(Alert new content); - expect(update).toBeCalledTimes(2); - expect(plugin.runReplacer).toBeCalledTimes(1); + expect(update).toHaveBeenCalledTimes(2); + expect(plugin.runReplacer).toHaveBeenCalledTimes(1); }); describe('asynchronous rendering', () => { @@ -303,8 +303,8 @@ describe('asynchronous rendering', () => { await waitFor(() => { const assertWarningLogged = (method: string) => { const message = `"${method}" called after component unmounted`; - expect(consoleWarnSpy).toBeCalledWith('[AwsUi]', '[alert-content-replacer]', message); - expect(sendPanoramaMetricSpy).toBeCalledWith({ + expect(consoleWarnSpy).toHaveBeenCalledWith('[AwsUi]', '[alert-content-replacer]', message); + expect(sendPanoramaMetricSpy).toHaveBeenCalledWith({ eventContext: 'awsui-runtime-api-warning', eventDetail: { component: 'alert-content-replacer', @@ -319,8 +319,8 @@ describe('asynchronous rendering', () => { assertWarningLogged('hideContent'); assertWarningLogged('restoreContent'); assertWarningLogged('replaceContent'); - expect(headerFn).not.toBeCalled(); - expect(contentFn).not.toBeCalled(); + expect(headerFn).not.toHaveBeenCalled(); + expect(contentFn).not.toHaveBeenCalled(); }); }); }); diff --git a/src/app-layout/__integ__/app-layout-refresh-notifications.test.ts b/src/app-layout/__integ__/app-layout-refresh-notifications.test.ts index 16705ea806..31d83fb964 100644 --- a/src/app-layout/__integ__/app-layout-refresh-notifications.test.ts +++ b/src/app-layout/__integ__/app-layout-refresh-notifications.test.ts @@ -30,11 +30,11 @@ class AppLayoutRefreshNotoficationsPage extends BasePageObject { async assertNotificationsWidth(comparison = 0) { const contentWidth = await this.getContentWidth(); if (comparison < 0) { - expect(this.getNotificationsWidth()).resolves.toBeLessThan(contentWidth); + await expect(this.getNotificationsWidth()).resolves.toBeLessThan(contentWidth); } else if (comparison > 0) { - expect(this.getNotificationsWidth()).resolves.toBeGreaterThan(contentWidth); + await expect(this.getNotificationsWidth()).resolves.toBeGreaterThan(contentWidth); } else { - expect(this.getNotificationsWidth()).resolves.toEqual(contentWidth); + await expect(this.getNotificationsWidth()).resolves.toEqual(contentWidth); } } } diff --git a/src/app-layout/__tests__/trigger-button.test.tsx b/src/app-layout/__tests__/trigger-button.test.tsx index 65473c812c..33038b84a6 100644 --- a/src/app-layout/__tests__/trigger-button.test.tsx +++ b/src/app-layout/__tests__/trigger-button.test.tsx @@ -208,7 +208,7 @@ describe('Visual refresh trigger-button (not in appLayoutWidget toolbar)', () => const button = wrapper.find('button')!; expect(getByTestId(mockTestId)).toBeTruthy(); button.click(); - expect(mockClickSpy).toBeCalledTimes(disabledValue ? 0 : 1); + expect(mockClickSpy).toHaveBeenCalledTimes(disabledValue ? 0 : 1); }); test('renders an empty button when no iconName and iconSVG prop', () => { @@ -328,7 +328,7 @@ describe('Visual Refresh Toolbar trigger-button', () => { const button = wrapper.find('button')!; expect(getByTestId(mockTestId)).toBeTruthy(); button.click(); - expect(mockClickSpy).toBeCalledTimes(disabledValue ? 0 : 1); + expect(mockClickSpy).toHaveBeenCalledTimes(disabledValue ? 0 : 1); }); test('renders an empty button when no iconName and iconSVG prop', () => { diff --git a/src/area-chart/__integ__/area-chart.test.ts b/src/area-chart/__integ__/area-chart.test.ts index 4d672e26fe..c00f34598e 100644 --- a/src/area-chart/__integ__/area-chart.test.ts +++ b/src/area-chart/__integ__/area-chart.test.ts @@ -239,7 +239,7 @@ describe('Popover', () => { await expect(page.hasPopover()).resolves.toBe(true); const popover = page.getPopover(); const buttonDropdown = popover.findContent().findButtonDropdown(); - expect(page.getElementsCount(buttonDropdown.toSelector())).resolves.toBe(1); + await expect(page.getElementsCount(buttonDropdown.toSelector())).resolves.toBe(1); await page.keys(['Tab']); expect(await page.getFocusedElementText()).toBe('Actions'); await page.keys(['Tab']); diff --git a/src/autosuggest/__tests__/autosuggest.test.tsx b/src/autosuggest/__tests__/autosuggest.test.tsx index e526587aa6..1ce22047d1 100644 --- a/src/autosuggest/__tests__/autosuggest.test.tsx +++ b/src/autosuggest/__tests__/autosuggest.test.tsx @@ -117,7 +117,7 @@ test('should display entered text option/label', () => { ); wrapper.setInputValue('1'); - expect(enteredTextLabel).toBeCalledWith('1'); + expect(enteredTextLabel).toHaveBeenCalledWith('1'); expect(wrapper.findEnteredTextOption()!.getElement()).toHaveTextContent('Custom function with 1 placeholder'); }); @@ -297,8 +297,8 @@ describe('keyboard interactions', () => { const { wrapper } = renderAutosuggest(); wrapper.findNativeInput().keydown(KeyCode.down); wrapper.findNativeInput().keydown(KeyCode.enter); - expect(onChange).toBeCalledWith(expect.objectContaining({ detail: { value: '1' } })); - expect(onSelect).toBeCalledWith( + expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '1' } })); + expect(onSelect).toHaveBeenCalledWith( expect.objectContaining({ detail: { value: '1', selectedOption: defaultOptions[0] } }) ); }); @@ -327,18 +327,18 @@ describe('keyboard interactions', () => { wrapper.findNativeInput().keydown(KeyCode.escape); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).toBeCalledTimes(0); + expect(onChange).toHaveBeenCalledTimes(0); wrapper.findNativeInput().keydown(KeyCode.escape); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).toBeCalledTimes(1); - expect(onChange).toBeCalledWith(expect.objectContaining({ detail: { value: '' } })); + expect(onChange).toHaveBeenCalledTimes(1); + expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '' } })); rerender(); wrapper.findNativeInput().keydown(KeyCode.escape); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).toBeCalledTimes(1); + expect(onChange).toHaveBeenCalledTimes(1); }); test('arrow up key on first option should highlight last option', () => { diff --git a/src/autosuggest/__tests__/load-more-controller.test.ts b/src/autosuggest/__tests__/load-more-controller.test.ts index 64e541be78..2c424a20a8 100644 --- a/src/autosuggest/__tests__/load-more-controller.test.ts +++ b/src/autosuggest/__tests__/load-more-controller.test.ts @@ -12,7 +12,7 @@ describe('Autosuggest load-more-controller', () => { initialProps: { options: [], statusType: 'error', onLoadItems }, }); act(() => result.current.fireLoadMoreOnInputFocus()); - expect(onLoadItems).toBeCalledWith({ firstPage: true, samePage: false, filteringText: '' }); + expect(onLoadItems).toHaveBeenCalledWith({ firstPage: true, samePage: false, filteringText: '' }); }); test('calls onLoadItems on input change', () => { @@ -23,9 +23,9 @@ describe('Autosuggest load-more-controller', () => { act(() => result.current.fireLoadMoreOnInputChange('a')); act(() => result.current.fireLoadMoreOnInputChange('ab')); act(() => result.current.fireLoadMoreOnInputChange('ab')); - expect(onLoadItems).toBeCalledTimes(2); - expect(onLoadItems).toBeCalledWith({ firstPage: true, samePage: false, filteringText: 'a' }); - expect(onLoadItems).toBeCalledWith({ firstPage: true, samePage: false, filteringText: 'ab' }); + expect(onLoadItems).toHaveBeenCalledTimes(2); + expect(onLoadItems).toHaveBeenCalledWith({ firstPage: true, samePage: false, filteringText: 'a' }); + expect(onLoadItems).toHaveBeenCalledWith({ firstPage: true, samePage: false, filteringText: 'ab' }); }); test('calls onLoadItems on recovery click', () => { @@ -34,7 +34,7 @@ describe('Autosuggest load-more-controller', () => { initialProps: { options: [], statusType: 'error', onLoadItems }, }); act(() => result.current.fireLoadMoreOnRecoveryClick()); - expect(onLoadItems).toBeCalledWith({ firstPage: false, samePage: true, filteringText: '' }); + expect(onLoadItems).toHaveBeenCalledWith({ firstPage: false, samePage: true, filteringText: '' }); }); test('only calls onLoadItems on scroll when options are not empty and status is pending', () => { @@ -43,7 +43,7 @@ describe('Autosuggest load-more-controller', () => { initialProps: { options: [{ value: 'Option 0' }], statusType: 'pending', onLoadItems }, }); act(() => result.current.fireLoadMoreOnScroll()); - expect(onLoadItems).toBeCalledWith({ firstPage: false, samePage: false, filteringText: '' }); + expect(onLoadItems).toHaveBeenCalledWith({ firstPage: false, samePage: false, filteringText: '' }); rerender({ options: [], statusType: 'pending', onLoadItems }); act(() => result.current.fireLoadMoreOnScroll()); @@ -57,7 +57,7 @@ describe('Autosuggest load-more-controller', () => { rerender({ options: [{ value: 'Option 0' }], statusType: 'error', onLoadItems }); act(() => result.current.fireLoadMoreOnScroll()); - expect(onLoadItems).toBeCalledTimes(1); + expect(onLoadItems).toHaveBeenCalledTimes(1); }); test('returns current filtering text when called on input focus', () => { diff --git a/src/autosuggest/__tests__/options-controller.test.ts b/src/autosuggest/__tests__/options-controller.test.ts index 61f6893f1f..aa9f51860d 100644 --- a/src/autosuggest/__tests__/options-controller.test.ts +++ b/src/autosuggest/__tests__/options-controller.test.ts @@ -165,12 +165,12 @@ describe('useAutosuggestItems', () => { }); result.current[1].selectHighlightedOptionWithKeyboard(); - expect(onSelectItem).toBeCalledWith({ value: '1', type: 'use-entered', option: { value: '1' } }); + expect(onSelectItem).toHaveBeenCalledWith({ value: '1', type: 'use-entered', option: { value: '1' } }); jest.mocked(onSelectItem).mockClear(); result.current[1].moveHighlightWithKeyboard(1); result.current[1].selectHighlightedOptionWithKeyboard(); - expect(onSelectItem).toBeCalledWith(result.current[0].items[0]); + expect(onSelectItem).toHaveBeenCalledWith(result.current[0].items[0]); }); test('handles large amount of nested options', () => { @@ -207,19 +207,19 @@ describe('useAutosuggestItems', () => { const selectOption = jest.fn(); const { result } = render(selectOption); act(() => result.current[1].selectVisibleOptionWithMouse(2)); - expect(selectOption).toBeCalledWith(result.current[0].items[2]); + expect(selectOption).toHaveBeenCalledWith(result.current[0].items[2]); }); test('does not invoke the callback if the selected index is not in the options array', () => { const selectOption = jest.fn(); const { result } = render(selectOption); act(() => result.current[1].selectVisibleOptionWithMouse(5)); - expect(selectOption).not.toBeCalled(); + expect(selectOption).not.toHaveBeenCalled(); }); test('does not invoke the callback if the corresponding option is not interactive', () => { const selectOption = jest.fn(); const { result } = render(selectOption); act(() => result.current[1].selectVisibleOptionWithMouse(1)); - expect(selectOption).not.toBeCalled(); + expect(selectOption).not.toHaveBeenCalled(); }); }); }); diff --git a/src/breadcrumb-group/__integ__/breadcrumb-group.test.ts b/src/breadcrumb-group/__integ__/breadcrumb-group.test.ts index 676fa398b1..1ef87d279d 100644 --- a/src/breadcrumb-group/__integ__/breadcrumb-group.test.ts +++ b/src/breadcrumb-group/__integ__/breadcrumb-group.test.ts @@ -95,11 +95,11 @@ describe('BreadcrumbGroup', () => { 'Adjusts display when adding/removing items', setupTest(async page => { await page.setWindowSize({ width: 950, height: 800 }); - expect(page.isEllipsisVisible()).resolves.toBe(false); + await expect(page.isEllipsisVisible()).resolves.toBe(false); await page.click('#add'); - expect(page.isEllipsisVisible()).resolves.toBe(true); + await expect(page.isEllipsisVisible()).resolves.toBe(true); await page.click('#remove'); - expect(page.isEllipsisVisible()).resolves.toBe(false); + await expect(page.isEllipsisVisible()).resolves.toBe(false); }) ); diff --git a/src/button-dropdown/__tests__/create-items-tree.test.ts b/src/button-dropdown/__tests__/create-items-tree.test.ts index 7b1d20a0bd..e1250661ad 100644 --- a/src/button-dropdown/__tests__/create-items-tree.test.ts +++ b/src/button-dropdown/__tests__/create-items-tree.test.ts @@ -46,8 +46,8 @@ describe('create-items-tree util', () => { test('throws if item is not present', () => { const tree = createItemsTree(items); - expect(() => tree.getItemIndex({ id: 'i4', text: 'item4' })).toThrowError(); - expect(() => tree.getParentIndex({ id: 'i4', text: 'item4' })).toThrowError(); + expect(() => tree.getItemIndex({ id: 'i4', text: 'item4' })).toThrow(); + expect(() => tree.getParentIndex({ id: 'i4', text: 'item4' })).toThrow(); }); test('increments index', () => { diff --git a/src/cards/__integ__/sticky-header.test.ts b/src/cards/__integ__/sticky-header.test.ts index 0e9b89ac50..3eafbd6abd 100644 --- a/src/cards/__integ__/sticky-header.test.ts +++ b/src/cards/__integ__/sticky-header.test.ts @@ -78,7 +78,7 @@ describe('Cards Sticky Header', () => { await page.click(scrollTopToBtn); - expect(page.getElementScroll(overflowParent)).resolves.toEqual( + await expect(page.getElementScroll(overflowParent)).resolves.toEqual( expect.objectContaining({ top: 2 * overflowParentPageHeight }) ); }) @@ -91,7 +91,9 @@ describe('Cards Sticky Header', () => { await page.click(scrollTopToBtn); - expect(page.getElementScroll(overflowParent)).resolves.toEqual(expect.objectContaining({ top: verticalOffset })); + await expect(page.getElementScroll(overflowParent)).resolves.toEqual( + expect.objectContaining({ top: verticalOffset }) + ); }) ); @@ -103,7 +105,9 @@ describe('Cards Sticky Header', () => { await page.click(scrollTopToBtn); - expect(page.getElementScroll(overflowParent)).resolves.toEqual(expect.objectContaining({ top: verticalOffset })); + await expect(page.getElementScroll(overflowParent)).resolves.toEqual( + expect.objectContaining({ top: verticalOffset }) + ); }) ); diff --git a/src/code-editor/__tests__/code-editor.test.tsx b/src/code-editor/__tests__/code-editor.test.tsx index 10f200464d..5650a4e4aa 100644 --- a/src/code-editor/__tests__/code-editor.test.tsx +++ b/src/code-editor/__tests__/code-editor.test.tsx @@ -240,7 +240,7 @@ describe('Code editor component', () => { const textarea = editorMock.renderer.textarea; editorMock.renderer.textarea = null as any; - expect(() => renderCodeEditor({ ariaLabel: 'test aria label' })).not.toThrowError(); + expect(() => renderCodeEditor({ ariaLabel: 'test aria label' })).not.toThrow(); editorMock.renderer.textarea = textarea; @@ -425,7 +425,7 @@ describe('Code editor component', () => { wrapper.findErrorsTab()!.click(); - expect(onSubmit).not.toBeCalled(); + expect(onSubmit).not.toHaveBeenCalled(); }); it('closes the Pane on ESC', () => { @@ -514,16 +514,16 @@ describe('Code editor component', () => { editorMock.resize.mockClear(); fireEvent.mouseDown(wrapper.findByClassName(resizableStyles['resizable-box-handle'])!.getElement()); fireEvent.mouseMove(document.body, { clientY: 100 }); - expect(editorMock.resize).toBeCalledTimes(1); + expect(editorMock.resize).toHaveBeenCalledTimes(1); }); it('calls resize on initial render', () => { renderCodeEditor(); - expect(editorMock.resize).toBeCalledTimes(1); + expect(editorMock.resize).toHaveBeenCalledTimes(1); }); it('calls resize on initial render when editorHeight is set', () => { renderCodeEditor({ editorContentHeight: 240 }); - expect(editorMock.resize).toBeCalledTimes(1); + expect(editorMock.resize).toHaveBeenCalledTimes(1); }); it('should log a warning when no onEditorContentResize is undefined', () => { render(); diff --git a/src/container/__integ__/header-cover.test.ts b/src/container/__integ__/header-cover.test.ts index 93075c56b1..b858b98edd 100644 --- a/src/container/__integ__/header-cover.test.ts +++ b/src/container/__integ__/header-cover.test.ts @@ -39,7 +39,7 @@ test( 'Header cover is displayed in full-page variant', setupTest({}, async page => { await page.windowScrollTo({ top: 300 }); - expect(page.hasHeaderCover()).resolves.toBe(true); + await expect(page.hasHeaderCover()).resolves.toBe(true); }) ); @@ -47,7 +47,7 @@ test( 'Header cover is not displayed in container variant', setupTest({ search: 'tableVariant=container' }, async page => { await page.windowScrollTo({ top: 300 }); - expect(page.hasHeaderCover()).resolves.toBe(false); + await expect(page.hasHeaderCover()).resolves.toBe(false); }) ); @@ -55,7 +55,7 @@ test( 'Header cover is not displayed in mobile', setupTest({ viewport: viewports.mobile }, async page => { await page.windowScrollTo({ top: 300 }); - expect(page.hasHeaderCover()).resolves.toBe(false); + await expect(page.hasHeaderCover()).resolves.toBe(false); }) ); @@ -64,7 +64,7 @@ test( setupTest({}, async page => { await page.windowScrollTo({ top: 300 }); await page.windowScrollTo({ top: 0 }); - expect(page.hasHeaderCover()).resolves.toBe(false); + await expect(page.hasHeaderCover()).resolves.toBe(false); }) ); @@ -72,6 +72,6 @@ test( 'Header cover is not displayed in classic', setupTest({ visualRefresh: false }, async page => { await page.windowScrollTo({ top: 300 }); - expect(page.hasHeaderCover()).resolves.toBe(false); + await expect(page.hasHeaderCover()).resolves.toBe(false); }) ); diff --git a/src/date-input/__tests__/date-input.test.tsx b/src/date-input/__tests__/date-input.test.tsx index c0ba756ae4..f02c6ec07e 100644 --- a/src/date-input/__tests__/date-input.test.tsx +++ b/src/date-input/__tests__/date-input.test.tsx @@ -103,7 +103,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: separatorKey }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2001-' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2001-' } })); }); }); @@ -113,7 +113,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '3' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-02-03' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-02-03' } })); }); test('should correct "2" to "2002/01/01" on enter', () => { @@ -122,7 +122,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: 'Enter', keyCode: KeyCode.enter }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2002-01-01' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2002-01-01' } })); }); test('should correct "21" to "2021/01/01" on enter', () => { @@ -131,7 +131,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: 'Enter', keyCode: KeyCode.enter }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2021-01-01' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2021-01-01' } })); }); }); @@ -142,7 +142,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '/' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2001-' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2001-' } })); }); test('should correct "2018/1/" to "2018/01/"', () => { @@ -151,7 +151,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '/' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-01-' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-01-' } })); }); test('should correct "2018/0/" to "2018/01/"', () => { @@ -160,7 +160,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '/' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-01-' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-01-' } })); }); test('should correct "2018/1/2" to "2018/01/02"', () => { @@ -169,7 +169,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '/' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-01-02' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-01-02' } })); }); test('should allow entry of day 31 in January', () => { @@ -178,7 +178,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '1' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-01-31' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-01-31' } })); }); test('should allow entry of day 30 in March', () => { @@ -187,7 +187,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '0' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-03-30' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-03-30' } })); }); test('should disallow entry of day 31 in April', () => { @@ -195,7 +195,7 @@ describe('Date Input component', () => { value: '2018/04/3', }); wrapper.findNativeInput().keydown({ key: '1' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-04-30' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-04-30' } })); }); test('should disallow entry of day 29 in february', () => { @@ -204,7 +204,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '9' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-02-28' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-02-28' } })); }); test('should allow entry of day 29 in february, in a leap year', () => { @@ -213,7 +213,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '9' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2020-02-29' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2020-02-29' } })); }); }); // End limiting range @@ -224,7 +224,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '8' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-' } })); }); test('should automatically append colon after 6 digits entered', () => { @@ -233,7 +233,7 @@ describe('Date Input component', () => { }); wrapper.findNativeInput().keydown({ key: '1' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-11-' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-11-' } })); }); }); // End appending separator @@ -245,7 +245,7 @@ describe('Date Input component', () => { wrapper.findNativeInput().getElement().setSelectionRange(3, 3); wrapper.findNativeInput().keydown({ key: '9' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2019-01-02' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2019-01-02' } })); }); test('should autocorrect if value is over limit', () => { @@ -255,7 +255,7 @@ describe('Date Input component', () => { wrapper.findNativeInput().getElement().setSelectionRange(5, 5); wrapper.findNativeInput().keydown({ key: '5' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2018-12-02' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2018-12-02' } })); }); test('should swallow keys at separator - /', () => { @@ -290,7 +290,7 @@ describe('Date Input component', () => { wrapper.findNativeInput().getElement().setSelectionRange(3, 7); wrapper.findNativeInput().keydown({ key: '9' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2019-01-02' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2019-01-02' } })); }); test('should autocorrect day if month is changed to one with fewer days - 30', () => { @@ -301,7 +301,7 @@ describe('Date Input component', () => { wrapper.findNativeInput().getElement().setSelectionRange(6, 6); wrapper.findNativeInput().keydown({ key: '4' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2019-04-30' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2019-04-30' } })); }); test('should autocorrect day if month is changed to one with fewer days - 28', () => { @@ -311,7 +311,7 @@ describe('Date Input component', () => { wrapper.findNativeInput().getElement().setSelectionRange(6, 6); wrapper.findNativeInput().keydown({ key: '2' }); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { value: '2019-02-28' } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '2019-02-28' } })); }); }); // end entering value in middle of input }); diff --git a/src/date-range-picker/__tests__/date-range-picker-absolute.test.tsx b/src/date-range-picker/__tests__/date-range-picker-absolute.test.tsx index 38fa3d7aab..8136707604 100644 --- a/src/date-range-picker/__tests__/date-range-picker-absolute.test.tsx +++ b/src/date-range-picker/__tests__/date-range-picker-absolute.test.tsx @@ -830,7 +830,7 @@ describe('Date range picker', () => { ) ); - expect(getTimeOffset).toBeCalledTimes(granularity === 'day' ? 2 : 0); + expect(getTimeOffset).toHaveBeenCalledTimes(granularity === 'day' ? 2 : 0); }); }); diff --git a/src/date-range-picker/__tests__/time-offset.test.ts b/src/date-range-picker/__tests__/time-offset.test.ts index 3da76cb130..3e7a828f32 100644 --- a/src/date-range-picker/__tests__/time-offset.test.ts +++ b/src/date-range-picker/__tests__/time-offset.test.ts @@ -117,7 +117,7 @@ describe('Date range picker', () => { expect( normalizeTimeOffset({ type: 'absolute', startDate: '2020-06-01', endDate: '2021-06-01' }, getTimeOffset, 3) ).toEqual({ startDate: 2, endDate: 1 }); - expect(getTimeOffset).toBeCalledTimes(2); + expect(getTimeOffset).toHaveBeenCalledTimes(2); }); test('converts getTimeOffset argument to UTC', () => { @@ -128,24 +128,24 @@ describe('Date range picker', () => { getTimeOffset ); - expect(getTimeOffset).toBeCalledWith(new Date(Date.UTC(2020, 0, 1, 0, 0, 0))); - expect(getTimeOffset).toBeCalledWith(new Date(Date.UTC(2020, 5, 1, 23, 59, 59))); + expect(getTimeOffset).toHaveBeenCalledWith(new Date(Date.UTC(2020, 0, 1, 0, 0, 0))); + expect(getTimeOffset).toHaveBeenCalledWith(new Date(Date.UTC(2020, 5, 1, 23, 59, 59))); normalizeTimeOffset( { type: 'absolute', startDate: '2020-01-01T00:00:00Z', endDate: '2020-06-01T23:59:59Z' }, getTimeOffset ); - expect(getTimeOffset).toBeCalledWith(new Date(Date.UTC(2020, 0, 1, 0, 0, 0))); - expect(getTimeOffset).toBeCalledWith(new Date(Date.UTC(2020, 5, 1, 23, 59, 59))); + expect(getTimeOffset).toHaveBeenCalledWith(new Date(Date.UTC(2020, 0, 1, 0, 0, 0))); + expect(getTimeOffset).toHaveBeenCalledWith(new Date(Date.UTC(2020, 5, 1, 23, 59, 59))); normalizeTimeOffset( { type: 'absolute', startDate: '2020-01-01T00:00:00+01:00', endDate: '2020-06-01T23:59:59+02:00' }, getTimeOffset ); - expect(getTimeOffset).toBeCalledWith(new Date(Date.UTC(2020, 0, 1, 0, 0, 0))); - expect(getTimeOffset).toBeCalledWith(new Date(Date.UTC(2020, 5, 1, 23, 59, 59))); + expect(getTimeOffset).toHaveBeenCalledWith(new Date(Date.UTC(2020, 0, 1, 0, 0, 0))); + expect(getTimeOffset).toHaveBeenCalledWith(new Date(Date.UTC(2020, 5, 1, 23, 59, 59))); }); }); }); diff --git a/src/expandable-section/__tests__/interactions.test.tsx b/src/expandable-section/__tests__/interactions.test.tsx index ddb411ac62..eeec3a7eba 100644 --- a/src/expandable-section/__tests__/interactions.test.tsx +++ b/src/expandable-section/__tests__/interactions.test.tsx @@ -46,7 +46,7 @@ describe('Expandable Section - Interactions', () => { headerActions, }); wrapper.findExpandButton().click(); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { expanded: true } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { expanded: true } })); }); describe('when already expanded', () => { @@ -59,7 +59,7 @@ describe('Expandable Section - Interactions', () => { headerActions, }); wrapper.findExpandButton().click(); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { expanded: false } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { expanded: false } })); }); }); }); @@ -93,7 +93,7 @@ describe('Expandable Section - Interactions', () => { headerActions, }); wrapper.findExpandButton().keyup(KeyCode.enter); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { expanded: true } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { expanded: true } })); }); test('toggles from false to true when header receives "Space" keyboard input, change event fires', () => { const wrapper = renderExpandableSection({ @@ -103,7 +103,7 @@ describe('Expandable Section - Interactions', () => { headerActions, }); wrapper.findExpandButton().keyup(KeyCode.space); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { expanded: true } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { expanded: true } })); }); describe('when already expanded', () => { @@ -119,11 +119,11 @@ describe('Expandable Section - Interactions', () => { }); test('toggles from true to false when header receives "Enter" keyboard input, change event fires', () => { wrapper.findExpandButton().keyup(KeyCode.enter); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { expanded: false } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { expanded: false } })); }); test('toggles from true to false when header receives "Space" keyboard input, change event fires', () => { wrapper.findExpandButton().keyup(KeyCode.space); - expect(onChangeSpy).toBeCalledWith(expect.objectContaining({ detail: { expanded: false } })); + expect(onChangeSpy).toHaveBeenCalledWith(expect.objectContaining({ detail: { expanded: false } })); }); }); }); diff --git a/src/flashbar/__tests__/runtime-content.test.tsx b/src/flashbar/__tests__/runtime-content.test.tsx index 27d5896116..cbeeb04d1e 100644 --- a/src/flashbar/__tests__/runtime-content.test.tsx +++ b/src/flashbar/__tests__/runtime-content.test.tsx @@ -207,10 +207,10 @@ test('calls unmount callback', () => { const { unmount } = render(); const flashbarWrapper = createWrapper().findFlashbar()!; expectContent(flashbarWrapper.findItems()[0], stylesCss, { content: 'New content', contentReplaced: true }); - expect(unmountCallback).not.toBeCalled(); + expect(unmountCallback).not.toHaveBeenCalled(); unmount(); - expect(unmountCallback).toBeCalled(); + expect(unmountCallback).toHaveBeenCalled(); }); test('calls update callback', () => { @@ -221,12 +221,12 @@ test('calls update callback', () => { }; awsuiPlugins.flashContent.registerContentReplacer(plugin); const { rerender } = render(); - expect(update).toBeCalledTimes(1); - expect(plugin.runReplacer).toBeCalledTimes(1); + expect(update).toHaveBeenCalledTimes(1); + expect(plugin.runReplacer).toHaveBeenCalledTimes(1); rerender(); - expect(update).toBeCalledTimes(2); - expect(plugin.runReplacer).toBeCalledTimes(1); + expect(update).toHaveBeenCalledTimes(2); + expect(plugin.runReplacer).toHaveBeenCalledTimes(1); }); describe('asynchronous rendering', () => { @@ -298,8 +298,8 @@ describe('asynchronous rendering', () => { await waitFor(() => { const assertWarningLogged = (method: string) => { const message = `"${method}" called after component unmounted`; - expect(consoleWarnSpy).toBeCalledWith('[AwsUi]', '[flash-content-replacer]', message); - expect(sendPanoramaMetricSpy).toBeCalledWith({ + expect(consoleWarnSpy).toHaveBeenCalledWith('[AwsUi]', '[flash-content-replacer]', message); + expect(sendPanoramaMetricSpy).toHaveBeenCalledWith({ eventContext: 'awsui-runtime-api-warning', eventDetail: { component: 'flash-content-replacer', @@ -314,8 +314,8 @@ describe('asynchronous rendering', () => { assertWarningLogged('hideContent'); assertWarningLogged('restoreContent'); assertWarningLogged('replaceContent'); - expect(headerFn).not.toBeCalled(); - expect(contentFn).not.toBeCalled(); + expect(headerFn).not.toHaveBeenCalled(); + expect(contentFn).not.toHaveBeenCalled(); }); }); }); diff --git a/src/hotspot/__tests__/hotspot.test.tsx b/src/hotspot/__tests__/hotspot.test.tsx index 2340e773e3..39617d024a 100644 --- a/src/hotspot/__tests__/hotspot.test.tsx +++ b/src/hotspot/__tests__/hotspot.test.tsx @@ -31,13 +31,13 @@ test('registers and unregisters at the correct times', () => { ); - expect(context.registerHotspot).toBeCalledTimes(1); - expect(context.unregisterHotspot).not.toBeCalled(); + expect(context.registerHotspot).toHaveBeenCalledTimes(1); + expect(context.unregisterHotspot).not.toHaveBeenCalled(); unmount(); - expect(context.registerHotspot).toBeCalledTimes(1); - expect(context.unregisterHotspot).toBeCalledTimes(1); + expect(context.registerHotspot).toHaveBeenCalledTimes(1); + expect(context.unregisterHotspot).toHaveBeenCalledTimes(1); }); test('renders content from the context', () => { diff --git a/src/internal/components/autosuggest-input/__tests__/autosuggest-input.test.tsx b/src/internal/components/autosuggest-input/__tests__/autosuggest-input.test.tsx index 3cc37de123..5942bb87c0 100644 --- a/src/internal/components/autosuggest-input/__tests__/autosuggest-input.test.tsx +++ b/src/internal/components/autosuggest-input/__tests__/autosuggest-input.test.tsx @@ -104,18 +104,18 @@ describe('keyboard interactions', () => { wrapper.findInput().findNativeInput().keydown(KeyCode.escape); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).toBeCalledTimes(0); + expect(onChange).toHaveBeenCalledTimes(0); wrapper.findInput().findNativeInput().keydown(KeyCode.escape); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).toBeCalledTimes(1); - expect(onChange).toBeCalledWith(expect.objectContaining({ detail: { value: '' } })); + expect(onChange).toHaveBeenCalledTimes(1); + expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ detail: { value: '' } })); rerender(); wrapper.findInput().findNativeInput().keydown(KeyCode.escape); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).toBeCalledTimes(1); + expect(onChange).toHaveBeenCalledTimes(1); }); test('calls respective keyboard handlers on keypress', () => { @@ -136,29 +136,29 @@ describe('keyboard interactions', () => { ); wrapper.findInput().findNativeInput().keydown(KeyCode.down); - expect(onPressArrowDown).toBeCalledTimes(1); - expect(onKeyDown).toBeCalledTimes(0); + expect(onPressArrowDown).toHaveBeenCalledTimes(1); + expect(onKeyDown).toHaveBeenCalledTimes(0); wrapper.findInput().findNativeInput().keydown(KeyCode.up); - expect(onPressArrowUp).toBeCalledTimes(1); - expect(onKeyDown).toBeCalledTimes(0); + expect(onPressArrowUp).toHaveBeenCalledTimes(1); + expect(onKeyDown).toHaveBeenCalledTimes(0); wrapper.findInput().findNativeInput().keydown(KeyCode.enter); - expect(onPressEnter).toBeCalledTimes(1); - expect(onKeyDown).toBeCalledTimes(1); + expect(onPressEnter).toHaveBeenCalledTimes(1); + expect(onKeyDown).toHaveBeenCalledTimes(1); wrapper.findInput().findNativeInput().keydown(KeyCode.escape); - expect(onKeyDown).toBeCalledTimes(2); + expect(onKeyDown).toHaveBeenCalledTimes(2); wrapper.findInput().findNativeInput().keydown(KeyCode.left); - expect(onKeyDown).toBeCalledTimes(3); + expect(onKeyDown).toHaveBeenCalledTimes(3); wrapper.findInput().findNativeInput().keydown(KeyCode.enter); - expect(onPressEnter).toBeCalledTimes(1); - expect(onKeyDown).toBeCalledTimes(4); + expect(onPressEnter).toHaveBeenCalledTimes(1); + expect(onKeyDown).toHaveBeenCalledTimes(4); wrapper.findInput().findNativeInput().keydown(KeyCode.right); - expect(onKeyDown).toBeCalledTimes(5); + expect(onKeyDown).toHaveBeenCalledTimes(5); }); }); @@ -249,7 +249,7 @@ describe('blur handling', () => { ); wrapper.findInput().findNativeInput().focus(); getByTestId('target').focus(); - expect(onBlur).toBeCalledTimes(1); + expect(onBlur).toHaveBeenCalledTimes(1); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); }); @@ -267,7 +267,7 @@ describe('blur handling', () => { ); wrapper.findInput().findNativeInput().focus(); getByTestId('target').focus(); - expect(onBlur).not.toBeCalled(); + expect(onBlur).not.toHaveBeenCalled(); expect(wrapper.findDropdown()!.findOpenDropdown()).not.toBe(null); }); @@ -286,7 +286,7 @@ describe('blur handling', () => { ); wrapper.findInput().findNativeInput().focus(); getByTestId('target').focus(); - expect(onBlur).not.toBeCalled(); + expect(onBlur).not.toHaveBeenCalled(); expect(wrapper.findDropdown()!.findOpenDropdown()).not.toBe(null); }); @@ -308,7 +308,7 @@ describe('blur handling', () => { ); wrapper.findInput().findNativeInput().focus(); fireEvent.mouseDown(getByTestId('target')); - expect(onClose).not.toBeCalled(); + expect(onClose).not.toHaveBeenCalled(); expect(wrapper.findDropdown()!.findOpenDropdown()).not.toBe(null); }); }); diff --git a/src/internal/components/chart-status-container/__tests__/chart-status-container.test.tsx b/src/internal/components/chart-status-container/__tests__/chart-status-container.test.tsx index e7ace57b1a..92e882233f 100644 --- a/src/internal/components/chart-status-container/__tests__/chart-status-container.test.tsx +++ b/src/internal/components/chart-status-container/__tests__/chart-status-container.test.tsx @@ -61,6 +61,6 @@ describe('Chart status container', () => { ); wrapper.findLink()?.click(); - expect(cb).toBeCalledTimes(1); + expect(cb).toHaveBeenCalledTimes(1); }); }); diff --git a/src/internal/components/dropdown/__tests__/dropdown.test.tsx b/src/internal/components/dropdown/__tests__/dropdown.test.tsx index a6a29db567..10717b08b0 100644 --- a/src/internal/components/dropdown/__tests__/dropdown.test.tsx +++ b/src/internal/components/dropdown/__tests__/dropdown.test.tsx @@ -60,7 +60,7 @@ describe('Dropdown Component', () => { await runPendingEvents(); act(() => outsideElement.click()); - expect(handleCloseDropdown).toBeCalled(); + expect(handleCloseDropdown).toHaveBeenCalled(); }); test('does not fire close event when a portaled element inside dropdown is clicked', async () => { @@ -75,7 +75,7 @@ describe('Dropdown Component', () => { await runPendingEvents(); act(() => screen.getByTestId('inside').click()); - expect(handleCloseDropdown).not.toBeCalled(); + expect(handleCloseDropdown).not.toHaveBeenCalled(); }); test('does not fire close event when a self-destructible element inside dropdown was clicked', async () => { @@ -100,7 +100,7 @@ describe('Dropdown Component', () => { // NB: this should NOT be wrapped into act or React re-render will happen too late to reproduce the issue wrapper.find('[data-testid="dismiss"]')!.click(); - expect(handleCloseDropdown).not.toBeCalled(); + expect(handleCloseDropdown).not.toHaveBeenCalled(); expect(screen.getByTestId('after-dismiss')).toBeTruthy(); }); }); @@ -115,9 +115,9 @@ describe('Dropdown Component', () => { await runPendingEvents(); screen.getByTestId('trigger').focus(); - expect(handleFocus).toBeCalled(); + expect(handleFocus).toHaveBeenCalled(); outsideElement.focus(); - expect(handleBlur).toBeCalled(); + expect(handleBlur).toHaveBeenCalled(); }); test('does not fire focus and event when focus transitions from and to a element in the dropdown, even if portaled', async () => { @@ -137,8 +137,8 @@ describe('Dropdown Component', () => { handleFocus.mockClear(); screen.getByTestId('inside').focus(); screen.getByTestId('trigger').focus(); - expect(handleFocus).not.toBeCalled(); - expect(handleBlur).not.toBeCalled(); + expect(handleFocus).not.toHaveBeenCalled(); + expect(handleBlur).not.toHaveBeenCalled(); }); }); diff --git a/src/internal/components/tooltip/__tests__/registry.test.ts b/src/internal/components/tooltip/__tests__/registry.test.ts index 6b6b4d3bcf..0086f0c293 100644 --- a/src/internal/components/tooltip/__tests__/registry.test.ts +++ b/src/internal/components/tooltip/__tests__/registry.test.ts @@ -12,9 +12,9 @@ describe('registerTooltip', () => { registerTooltip(callbackOne); registerTooltip(callbackTwo); registerTooltip(callbackThree); - expect(callbackThree).toBeCalledTimes(0); - expect(callbackTwo).toBeCalledTimes(1); - expect(callbackOne).toBeCalledTimes(2); + expect(callbackThree).toHaveBeenCalledTimes(0); + expect(callbackTwo).toHaveBeenCalledTimes(1); + expect(callbackOne).toHaveBeenCalledTimes(2); }); test('does not call deregistered callbacks', () => { const callbackOne = jest.fn(); @@ -22,16 +22,16 @@ describe('registerTooltip', () => { const deregisterOne = registerTooltip(callbackOne); deregisterOne(); registerTooltip(callbackTwo); - expect(callbackTwo).toBeCalledTimes(0); - expect(callbackOne).toBeCalledTimes(0); + expect(callbackTwo).toHaveBeenCalledTimes(0); + expect(callbackOne).toHaveBeenCalledTimes(0); }); test('calls callbacks upon clicking on ESC', () => { const callbackOne = jest.fn(); const deregisterOne = registerTooltip(callbackOne); fireEvent.keyDown(document, { key: 'Escape' }); - expect(callbackOne).toBeCalledTimes(1); + expect(callbackOne).toHaveBeenCalledTimes(1); deregisterOne(); fireEvent.keyDown(document, { key: 'Escape' }); - expect(callbackOne).toBeCalledTimes(1); + expect(callbackOne).toHaveBeenCalledTimes(1); }); }); diff --git a/src/internal/hooks/use-debounce-callback/__tests__/use-debounce-callback.test.tsx b/src/internal/hooks/use-debounce-callback/__tests__/use-debounce-callback.test.tsx index 165424815a..b7a3c2af78 100644 --- a/src/internal/hooks/use-debounce-callback/__tests__/use-debounce-callback.test.tsx +++ b/src/internal/hooks/use-debounce-callback/__tests__/use-debounce-callback.test.tsx @@ -27,9 +27,9 @@ test('calls function with debounce', async () => { render( (component = value!)} callback={callback} />); component!.debounced('one'); component!.debounced('two'); - expect(callback).toBeCalledTimes(0); + expect(callback).toHaveBeenCalledTimes(0); await wait(0); - expect(callback).toBeCalledTimes(1); + expect(callback).toHaveBeenCalledTimes(1); expect(callback).toHaveBeenCalledWith('two'); }); @@ -41,10 +41,10 @@ test('calls the latest function instance', async () => { component!.debounced('one'); rerender( (component = value!)} callback={callback2} />); component!.debounced('two'); - expect(callback1).toBeCalledTimes(0); - expect(callback2).toBeCalledTimes(0); + expect(callback1).toHaveBeenCalledTimes(0); + expect(callback2).toHaveBeenCalledTimes(0); await wait(0); - expect(callback1).toBeCalledTimes(0); - expect(callback2).toBeCalledTimes(1); + expect(callback1).toHaveBeenCalledTimes(0); + expect(callback2).toHaveBeenCalledTimes(1); expect(callback2).toHaveBeenCalledWith('two'); }); diff --git a/src/internal/plugins/controllers/__tests__/drawers.test.ts b/src/internal/plugins/controllers/__tests__/drawers.test.ts index 71517cf5d5..fdb5e01e65 100644 --- a/src/internal/plugins/controllers/__tests__/drawers.test.ts +++ b/src/internal/plugins/controllers/__tests__/drawers.test.ts @@ -88,7 +88,7 @@ describe('update drawer', () => { test('throw error if the update drawer is not registered', () => { const drawers = new DrawersController(); - expect(() => drawers.updateDrawer({ id: 'test-drawer' } as UpdateDrawerConfig)).toThrowError( + expect(() => drawers.updateDrawer({ id: 'test-drawer' } as UpdateDrawerConfig)).toThrow( '[AwsUi] [runtime drawers] drawer with id test-drawer not found' ); }); diff --git a/src/internal/utils/__tests__/throttle.test.ts b/src/internal/utils/__tests__/throttle.test.ts index 9451580327..5ebf40c3b7 100644 --- a/src/internal/utils/__tests__/throttle.test.ts +++ b/src/internal/utils/__tests__/throttle.test.ts @@ -32,10 +32,10 @@ describe('throttle', () => { throttled('arg1', 'arg2'); - expect(funcMock).toBeCalledTimes(1); - expect(funcMock).toBeCalledWith('arg1', 'arg2'); - expect(dateNowSpy).toBeCalledTimes(1); - expect(requestAnimationFrameSpy).toBeCalledTimes(0); + expect(funcMock).toHaveBeenCalledTimes(1); + expect(funcMock).toHaveBeenCalledWith('arg1', 'arg2'); + expect(dateNowSpy).toHaveBeenCalledTimes(1); + expect(requestAnimationFrameSpy).toHaveBeenCalledTimes(0); }); it('should run the client function three times only', () => { @@ -50,9 +50,9 @@ describe('throttle', () => { tick(); } - expect(funcMock).toBeCalledTimes(3); - expect(funcMock).toBeCalledWith('arg-0'); - expect(funcMock).toBeCalledWith('arg-25'); - expect(funcMock).toBeCalledWith('arg-50'); + expect(funcMock).toHaveBeenCalledTimes(3); + expect(funcMock).toHaveBeenCalledWith('arg-0'); + expect(funcMock).toHaveBeenCalledWith('arg-25'); + expect(funcMock).toHaveBeenCalledWith('arg-50'); }); }); diff --git a/src/mixed-line-bar-chart/__integ__/mixed-line-bar-chart.test.ts b/src/mixed-line-bar-chart/__integ__/mixed-line-bar-chart.test.ts index e3a3b634bf..5a1d76370d 100644 --- a/src/mixed-line-bar-chart/__integ__/mixed-line-bar-chart.test.ts +++ b/src/mixed-line-bar-chart/__integ__/mixed-line-bar-chart.test.ts @@ -72,7 +72,7 @@ describe('Legend', () => { // Verify that no legend is highlighted await page.hoverElement(chartWrapper.findFilterContainer().toSelector()); - await expect(page.getText(legendWrapper.findHighlightedItem().toSelector())).rejects.toThrowError(); + await expect(page.getText(legendWrapper.findHighlightedItem().toSelector())).rejects.toThrow(); }) ); }); @@ -552,7 +552,7 @@ describe('Details popover', () => { await page.setWindowSize({ width: 900, height: 550 }); await page.openPopoverOnBarGroup(1, interactionType); const popover = page.findDetailPopover(); - expect(page.isDisplayed(popover.toSelector())).resolves.toBe(true); + await expect(page.isDisplayed(popover.toSelector())).resolves.toBe(true); const initialRect = await page.getPopoverRect(); await page.click(popover.findContent().findExpandableSection().toSelector()); const newRect = await page.getPopoverRect(); diff --git a/src/mixed-line-bar-chart/__tests__/mixed-chart.test.tsx b/src/mixed-line-bar-chart/__tests__/mixed-chart.test.tsx index 1970f7244c..34238aed0c 100644 --- a/src/mixed-line-bar-chart/__tests__/mixed-chart.test.tsx +++ b/src/mixed-line-bar-chart/__tests__/mixed-chart.test.tsx @@ -161,7 +161,7 @@ describe('Series', () => { ); }); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); test('supports time-based line series', () => { @@ -183,7 +183,7 @@ describe('Series', () => { ); }); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); it('excludes invalid categorical data points from a line chart', () => { @@ -227,7 +227,7 @@ describe('Series', () => { ); }); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); test('with time data', () => { @@ -255,7 +255,7 @@ describe('Series', () => { ); }); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); test('with number data', () => { @@ -283,7 +283,7 @@ describe('Series', () => { ); }); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); }) ); @@ -317,7 +317,7 @@ describe('Series', () => { expect(wrapper.findSeries()[i].getElement()).toHaveAttribute('aria-label', chartSeries.title) ); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); test(`${testDescription} with negative values`, () => { @@ -344,7 +344,7 @@ describe('Series', () => { expect(wrapper.findSeries()[i].getElement()).toHaveAttribute('aria-label', chartSeries.title) ); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); }) ) @@ -355,7 +355,7 @@ describe('Series', () => { renderMixedChart( ); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); renderMixedChart( { horizontalBars={true} /> ); - expect(consoleSpy).lastCalledWith( + expect(consoleSpy).toHaveBeenLastCalledWith( '[AwsUi] [MixedLineBarChart] Property horizontalBars can only be used with charts that contain only bar or threshold series.' ); }); @@ -448,10 +448,10 @@ describe('Series', () => { test('should warn when `series` changes with uncontrolled `visibleSeries`', () => { const { rerender } = renderMixedChart(); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); rerender(); - expect(consoleSpy).lastCalledWith( + expect(consoleSpy).toHaveBeenLastCalledWith( '[AwsUi] [MixedLineBarChart] The `series` value passed into the component changed. ' + 'This may cause problems with filtering - we recommend that you make the `series` value constant, ' + 'or provide a `visibleSeries` value that derives from the current `series` value.' @@ -461,44 +461,44 @@ describe('Series', () => { test('should not warn when `series` is constant with uncontrolled `visibleSeries`', () => { const series = [lineSeries]; const { rerender } = renderMixedChart(); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); rerender(); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); test('should not warn about `series` changes when `visibleSeries` is controlled', () => { const { rerender } = renderMixedChart( {}} /> ); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); rerender( {}} />); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); test('should not warn about `series` changes when filter is hidden', () => { const { rerender } = renderMixedChart(); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); rerender(); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); }); test('should warn when threshold series definition is incorrect', () => { renderMixedChart(); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); renderMixedChart(); - expect(consoleSpy).not.toBeCalled(); + expect(consoleSpy).not.toHaveBeenCalled(); renderMixedChart(); - expect(consoleSpy).lastCalledWith( + expect(consoleSpy).toHaveBeenLastCalledWith( '[AwsUi] [MixedLineBarChart] Series of type "threshold" must contain either x or y property.' ); renderMixedChart(); - expect(consoleSpy).lastCalledWith( + expect(consoleSpy).toHaveBeenLastCalledWith( '[AwsUi] [MixedLineBarChart] Series of type "threshold" must contain either x or y property.' ); }); @@ -519,7 +519,7 @@ describe('Scales', () => { (['linear', 'time'] as const).forEach(scaleType => { renderMixedChart(); - expect(consoleSpy).lastCalledWith( + expect(consoleSpy).toHaveBeenLastCalledWith( `[AwsUi] [MixedLineBarChart] Bar series cannot be used with a ${scaleType} scale. Use a categorical x axis instead.` ); }); diff --git a/src/pie-chart/__integ__/pie-chart.test.ts b/src/pie-chart/__integ__/pie-chart.test.ts index 8906b30cff..8b9ca10e7c 100644 --- a/src/pie-chart/__integ__/pie-chart.test.ts +++ b/src/pie-chart/__integ__/pie-chart.test.ts @@ -242,7 +242,7 @@ describe('Legend', () => { // Verify that no legend is highlighted await page.hoverElement(pieWrapper.findFilterContainer().toSelector()); - expect(page.getText(legendWrapper.findHighlightedItem().toSelector())).rejects.toThrow(); + await expect(page.getText(legendWrapper.findHighlightedItem().toSelector())).rejects.toThrow(); }) ); }); diff --git a/src/property-filter/__tests__/property-filter-extended-operators.test.tsx b/src/property-filter/__tests__/property-filter-extended-operators.test.tsx index 7c1c2c9bf3..cfadb280b6 100644 --- a/src/property-filter/__tests__/property-filter-extended-operators.test.tsx +++ b/src/property-filter/__tests__/property-filter-extended-operators.test.tsx @@ -116,7 +116,7 @@ describe('extended operators', () => { // Click cancel act(() => wrapper.findPropertyCancelButton()!.click()); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).not.toBeCalled(); + expect(onChange).not.toHaveBeenCalled(); expect(wrapper.findNativeInput().getElement()).toHaveFocus(); // Decrement value @@ -126,7 +126,7 @@ describe('extended operators', () => { // Click submit act(() => wrapper.findPropertySubmitButton()!.click()); expect(wrapper.findDropdown()!.findOpenDropdown()).toBe(null); - expect(onChange).toBeCalledWith( + expect(onChange).toHaveBeenCalledWith( expect.objectContaining({ detail: { operation: 'and', diff --git a/src/property-filter/__tests__/property-filter-token-list.test.tsx b/src/property-filter/__tests__/property-filter-token-list.test.tsx index 5aa2821964..34443389ba 100644 --- a/src/property-filter/__tests__/property-filter-token-list.test.tsx +++ b/src/property-filter/__tests__/property-filter-token-list.test.tsx @@ -366,7 +366,7 @@ describe('grouped token', () => { wrapper.findTokens()[0].findGroupTokens()[1].findTokenOperation()!.selectOption(2); expect(onChange).toHaveBeenCalledTimes(1); - expect(onChange).toBeCalledWith( + expect(onChange).toHaveBeenCalledWith( expect.objectContaining({ detail: { operation: 'and', @@ -391,7 +391,7 @@ describe('grouped token', () => { wrapper.findTokens()[0].findGroupTokens()[0].findRemoveButton()!.click(); expect(onChange).toHaveBeenCalledTimes(1); - expect(onChange).toBeCalledWith( + expect(onChange).toHaveBeenCalledWith( expect.objectContaining({ detail: { operation: 'and', @@ -404,7 +404,7 @@ describe('grouped token', () => { wrapper.findTokens()[0].findGroupTokens()[1].findRemoveButton()!.click(); expect(onChange).toHaveBeenCalledTimes(2); - expect(onChange).toBeCalledWith( + expect(onChange).toHaveBeenCalledWith( expect.objectContaining({ detail: { operation: 'and', @@ -417,7 +417,7 @@ describe('grouped token', () => { wrapper.findTokens()[0].findGroupTokens()[2].findRemoveButton()!.click(); expect(onChange).toHaveBeenCalledTimes(3); - expect(onChange).toBeCalledWith( + expect(onChange).toHaveBeenCalledWith( expect.objectContaining({ detail: { operation: 'and', diff --git a/src/table/__tests__/body-cell.test.tsx b/src/table/__tests__/body-cell.test.tsx index 4527bfc45f..58a43f414e 100644 --- a/src/table/__tests__/body-cell.test.tsx +++ b/src/table/__tests__/body-cell.test.tsx @@ -304,7 +304,7 @@ describe('TableBodyCell', () => { // Click on the TD itself fireEvent.click(container.querySelector('[data-inline-editing-active]')!); - expect(onEditStartMock).toBeCalled(); + expect(onEditStartMock).toHaveBeenCalled(); }); test('popover can be dismissed by clicking away', () => { @@ -318,7 +318,7 @@ describe('TableBodyCell', () => { // Click away fireEvent.click(screen.getByTestId('outside')); - expect(onEditEndMock).toBeCalledWith(true); + expect(onEditEndMock).toHaveBeenCalledWith(true); }); test('popover can be dismissed by pressing Escape', () => { @@ -330,7 +330,7 @@ describe('TableBodyCell', () => { const disabledButton = screen.getByRole('button'); fireEvent.focus(disabledButton); fireEvent.keyDown(disabledButton, { key: 'Escape' }); - expect(onEditEndMock).toBeCalledWith(true); + expect(onEditEndMock).toHaveBeenCalledWith(true); }); }); diff --git a/src/table/__tests__/expandable-rows.test.tsx b/src/table/__tests__/expandable-rows.test.tsx index 528a3acc25..7e08f8bc90 100644 --- a/src/table/__tests__/expandable-rows.test.tsx +++ b/src/table/__tests__/expandable-rows.test.tsx @@ -209,14 +209,14 @@ describe('Expandable rows', () => { }); table.findExpandToggle(1)!.click(); - expect(onExpandableItemToggle).toBeCalledTimes(1); - expect(onExpandableItemToggle).toBeCalledWith( + expect(onExpandableItemToggle).toHaveBeenCalledTimes(1); + expect(onExpandableItemToggle).toHaveBeenCalledWith( expect.objectContaining({ detail: { item: simpleItems[0], expanded: false } }) ); table.findExpandToggle(3)!.click(); - expect(onExpandableItemToggle).toBeCalledTimes(2); - expect(onExpandableItemToggle).toBeCalledWith( + expect(onExpandableItemToggle).toHaveBeenCalledTimes(2); + expect(onExpandableItemToggle).toHaveBeenCalledWith( expect.objectContaining({ detail: { item: simpleItems[2], expanded: true } }) ); }); diff --git a/src/tabs/__tests__/tabs.test.tsx b/src/tabs/__tests__/tabs.test.tsx index 64125c4136..e05920246f 100644 --- a/src/tabs/__tests__/tabs.test.tsx +++ b/src/tabs/__tests__/tabs.test.tsx @@ -887,7 +887,7 @@ describe('Tabs', () => { wrapper.findActiveTab()!.getElement().focus(); pressRight(wrapper); - expect(requestAnimationFrameSpy).not.toBeCalledTimes(0); + expect(requestAnimationFrameSpy).not.toHaveBeenCalledTimes(0); requestAnimationFrameSpy.mockRestore(); }); diff --git a/src/top-navigation/__tests__/top-navigation-overflow-menu.test.tsx b/src/top-navigation/__tests__/top-navigation-overflow-menu.test.tsx index 0e790cb84b..2e92b83d04 100644 --- a/src/top-navigation/__tests__/top-navigation-overflow-menu.test.tsx +++ b/src/top-navigation/__tests__/top-navigation-overflow-menu.test.tsx @@ -98,10 +98,10 @@ describe('Submenu', () => { ).find('a')!; act(() => wrapper.click()); - expect(onFollow).toBeCalledTimes(1); + expect(onFollow).toHaveBeenCalledTimes(1); act(() => wrapper.click({ ctrlKey: true })); - expect(onFollow).toBeCalledTimes(1); + expect(onFollow).toHaveBeenCalledTimes(1); }); test('onFollow event is not fired when an href is not set', () => { @@ -119,10 +119,10 @@ describe('Submenu', () => { ).find('a')!; act(() => wrapper.click()); - expect(onFollow).toBeCalledTimes(0); + expect(onFollow).toHaveBeenCalledTimes(0); act(() => wrapper.click({ ctrlKey: true })); - expect(onFollow).toBeCalledTimes(0); + expect(onFollow).toHaveBeenCalledTimes(0); }); test('onClick is fired on every click when an href is set', () => { @@ -141,10 +141,10 @@ describe('Submenu', () => { ).find('a')!; act(() => wrapper.click()); - expect(onClick).toBeCalledTimes(1); + expect(onClick).toHaveBeenCalledTimes(1); act(() => wrapper.click({ ctrlKey: true })); - expect(onClick).toBeCalledTimes(2); + expect(onClick).toHaveBeenCalledTimes(2); }); test('onClick is fired on every click when an href is not set', () => { @@ -163,10 +163,10 @@ describe('Submenu', () => { ).find('a')!; act(() => wrapper.click()); - expect(onClick).toBeCalledTimes(1); + expect(onClick).toHaveBeenCalledTimes(1); act(() => wrapper.click({ ctrlKey: true })); - expect(onClick).toBeCalledTimes(2); + expect(onClick).toHaveBeenCalledTimes(2); }); test('onClose is fired when clicking on submenuItem', () => { @@ -185,7 +185,7 @@ describe('Submenu', () => { ).find('a')!; act(() => wrapper.click()); - expect(onClose).toBeCalledTimes(1); + expect(onClose).toHaveBeenCalledTimes(1); }); test('renders menu items with role `button` if no href provided', () => { @@ -210,18 +210,22 @@ describe('UtilityMenuItem', () => { const { container } = render(); const linkWrapper = createWrapper(container).find(`a, button`)!; - expectation - ? expect(linkWrapper.getElement()).toHaveAttribute('target', expectation) - : expect(linkWrapper.getElement()).not.toHaveAttribute('target'); + if (expectation) { + expect(linkWrapper.getElement()).toHaveAttribute('target', expectation); + } else { + expect(linkWrapper.getElement()).not.toHaveAttribute('target'); + } }); test.each(linkRelExpectations)('"rel" property %s', (props, expectation) => { const { container } = render(); const linkWrapper = createWrapper(container).find('a, button')!; - expectation - ? expect(linkWrapper.getElement()).toHaveAttribute('rel', expectation) - : expect(linkWrapper.getElement()).not.toHaveAttribute('rel'); + if (expectation) { + expect(linkWrapper.getElement()).toHaveAttribute('rel', expectation); + } else { + expect(linkWrapper.getElement()).not.toHaveAttribute('rel'); + } }); test.each([undefined, 'link', 'primary-button'] as const)( @@ -234,7 +238,7 @@ describe('UtilityMenuItem', () => { const linkWrapper = createWrapper(container).find('a')!; linkWrapper.click(); - expect(onClick).toBeCalledWith(expect.objectContaining({ detail: {} })); + expect(onClick).toHaveBeenCalledWith(expect.objectContaining({ detail: {} })); } ); @@ -261,9 +265,9 @@ describe('UtilityMenuItem', () => { ); act(() => wrapper.find('button')!.click()); - expect(onClose).toBeCalledTimes(1); + expect(onClose).toHaveBeenCalledTimes(1); act(() => wrapper.find('a')!.click()); - expect(onClose).toBeCalledTimes(2); + expect(onClose).toHaveBeenCalledTimes(2); }); }); diff --git a/src/top-navigation/__tests__/top-navigation-utility.test.tsx b/src/top-navigation/__tests__/top-navigation-utility.test.tsx index 3443f51470..4220346d7a 100644 --- a/src/top-navigation/__tests__/top-navigation-utility.test.tsx +++ b/src/top-navigation/__tests__/top-navigation-utility.test.tsx @@ -99,7 +99,7 @@ describe('TopNavigation Utility part', () => { const buttonWrapper = renderUtility({ definition: { type: 'button', onClick } }).findButtonLinkType()!; buttonWrapper.click(); - expect(onClick).toBeCalledWith(expect.objectContaining({ detail: {} })); + expect(onClick).toHaveBeenCalledWith(expect.objectContaining({ detail: {} })); }); }); diff --git a/src/wizard/__tests__/analytics.test.tsx b/src/wizard/__tests__/analytics.test.tsx index a4c8e65b7a..5c33677f13 100644 --- a/src/wizard/__tests__/analytics.test.tsx +++ b/src/wizard/__tests__/analytics.test.tsx @@ -269,8 +269,8 @@ describe('Wizard Analytics', () => { rerender(); act(() => void jest.runAllTimers()); - expect(FunnelMetrics.funnelStart).toBeCalledTimes(1); - expect(FunnelMetrics.funnelStepStart).toBeCalledTimes(1); + expect(FunnelMetrics.funnelStart).toHaveBeenCalledTimes(1); + expect(FunnelMetrics.funnelStepStart).toHaveBeenCalledTimes(1); }); test('sends a funnelComplete metric clicking the submit button', () => { @@ -286,7 +286,7 @@ describe('Wizard Analytics', () => { // funnelComplete is called in the next tick after unmounting unmount(); - expect(FunnelMetrics.funnelComplete).toBeCalledTimes(1); + expect(FunnelMetrics.funnelComplete).toHaveBeenCalledTimes(1); expect(FunnelMetrics.funnelComplete).toHaveBeenCalledWith( expect.objectContaining({ funnelInteractionId: expect.any(String), @@ -305,7 +305,7 @@ describe('Wizard Analytics', () => { // funnelCancel is called in the next tick after unmounting unmount(); - expect(FunnelMetrics.funnelCancelled).toBeCalledTimes(1); + expect(FunnelMetrics.funnelCancelled).toHaveBeenCalledTimes(1); expect(FunnelMetrics.funnelCancelled).toHaveBeenCalledWith( expect.objectContaining({ funnelInteractionId: expect.any(String), @@ -324,7 +324,7 @@ describe('Wizard Analytics', () => { render(); act(() => void jest.runAllTimers()); - expect(FunnelMetrics.funnelError).toBeCalledTimes(1); + expect(FunnelMetrics.funnelError).toHaveBeenCalledTimes(1); expect(FunnelMetrics.funnelError).toHaveBeenCalledWith( expect.objectContaining({ funnelInteractionId: expect.any(String),