diff --git a/fixtures/.eslintrc b/fixtures/.eslintrc index f3cfb24..03a37d4 100644 --- a/fixtures/.eslintrc +++ b/fixtures/.eslintrc @@ -3,6 +3,6 @@ "vitest" ], "rules": { - "vitest/expect-expect": "error", + "vitest/expect-expect": "error" } } \ No newline at end of file diff --git a/package.json b/package.json index a6b8ad4..de5c22d 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "vitest eslint plugin", "vitest eslint" ], - "author": "Verite Mugabo Makuza ", + "author": "Verite Mugabo Makuza ", "main": "./dist/index.cjs", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", @@ -39,9 +39,10 @@ "devDependencies": { "@babel/types": "^7.22.5", "@types/mocha": "^10.0.1", - "@types/node": "^20.4.1", - "@typescript-eslint/eslint-plugin": "^5.61.0", - "@typescript-eslint/parser": "^5.61.0", + "@types/node": "^20.4.2", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "@typescript-eslint/rule-tester": "^6.0.0", "@veritem/eslint-config": "^0.0.11", "bumpp": "^9.1.1", "concurrently": "^8.2.0", @@ -60,9 +61,15 @@ "node": "14.x || >= 16" }, "peerDependencies": { - "eslint": ">=8.0.0" + "eslint": ">=8.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } }, "dependencies": { - "@typescript-eslint/utils": "^5.61.0" + "@typescript-eslint/utils": "^6.0.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbc98dd..f00af5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,8 +2,8 @@ lockfileVersion: '6.0' dependencies: '@typescript-eslint/utils': - specifier: ^5.61.0 - version: 5.61.0(eslint@8.44.0)(typescript@5.0.4) + specifier: ^6.0.0 + version: 6.0.0(eslint@8.44.0)(typescript@5.1.6) devDependencies: '@babel/types': @@ -13,17 +13,20 @@ devDependencies: specifier: ^10.0.1 version: 10.0.1 '@types/node': - specifier: ^20.4.1 - version: 20.4.1 + specifier: ^20.4.2 + version: 20.4.2 '@typescript-eslint/eslint-plugin': - specifier: ^5.61.0 - version: 5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.0.4) + specifier: ^6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.44.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: ^5.61.0 - version: 5.61.0(eslint@8.44.0)(typescript@5.0.4) + specifier: ^6.0.0 + version: 6.0.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/rule-tester': + specifier: ^6.0.0 + version: 6.0.0(@eslint/eslintrc@2.1.0)(eslint@8.44.0)(typescript@5.1.6) '@veritem/eslint-config': specifier: ^0.0.11 - version: 0.0.11(eslint@8.44.0)(typescript@5.0.4) + version: 0.0.11(eslint@8.44.0)(typescript@5.1.6) bumpp: specifier: ^9.1.1 version: 9.1.1 @@ -35,7 +38,7 @@ devDependencies: version: 8.44.0 eslint-doc-generator: specifier: ^1.4.3 - version: 1.4.3(eslint@8.44.0)(typescript@5.0.4) + version: 1.4.3(eslint@8.44.0)(typescript@5.1.6) eslint-plugin-eslint-plugin: specifier: ^5.1.0 version: 5.1.0(eslint@8.44.0) @@ -53,7 +56,7 @@ devDependencies: version: 1.19.1 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.4.1)(typescript@5.0.4) + version: 10.9.1(@types/node@20.4.2)(typescript@5.1.6) unbuild: specifier: ^1.2.1 version: 1.2.1 @@ -67,132 +70,123 @@ packages: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - /@ampproject/remapping@2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.18.6 + '@babel/highlight': 7.22.5 dev: true - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/compat-data@7.21.4: - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.21.4: - resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + /@babel/core@7.22.9: + resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.4 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helpers': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 '@babel/types': 7.22.5 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/generator@7.21.4: - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + /@babel/generator@7.22.9: + resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.4 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 dev: true - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 + '@babel/template': 7.22.5 '@babel/types': 7.22.5 dev: true - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + /@babel/helper-module-imports@7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-transforms@7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 @@ -203,81 +197,76 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option@7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + /@babel/helpers@7.22.6: + resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser@7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + /@babel/parser@7.22.7: + resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.22.5 dev: true - /@babel/runtime@7.22.5: - resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} + /@babel/runtime@7.22.6: + resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/standalone@7.21.4: - resolution: {integrity: sha512-Rw4nGqH/iyVeYxARKcz7iGP+njkPsVqJ45TmXMONoGoxooWjXCAs+CUcLeAZdBGCLqgaPvHKCYvIaDT2Iq+KfA==} + /@babel/standalone@7.22.9: + resolution: {integrity: sha512-RRUFpN2WiHaczMqIhmy7VoruvSw+c3NSq6BczondQ6elJXtKzr9cAWWsWWZvtZ/rYFQpoQlch5VxQe4aWTt8LA==} engines: {node: '>=6.9.0'} dev: true - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/parser': 7.21.4 + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.7 '@babel/types': 7.22.5 dev: true - /@babel/traverse@7.21.4: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + /@babel/traverse@7.22.8: + resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.7 '@babel/types': 7.22.5 debug: 4.3.4 globals: 11.12.0 @@ -301,8 +290,17 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@esbuild/android-arm64@0.17.16: - resolution: {integrity: sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==} + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.18.12: + resolution: {integrity: sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -310,8 +308,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -319,8 +317,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.16: - resolution: {integrity: sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==} + /@esbuild/android-arm@0.18.12: + resolution: {integrity: sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -328,8 +326,17 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.16: - resolution: {integrity: sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==} + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.12: + resolution: {integrity: sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -337,8 +344,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.16: - resolution: {integrity: sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==} + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -346,8 +353,26 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.16: - resolution: {integrity: sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==} + /@esbuild/darwin-arm64@0.18.12: + resolution: {integrity: sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.12: + resolution: {integrity: sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -355,8 +380,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.16: - resolution: {integrity: sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==} + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -364,8 +389,26 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.16: - resolution: {integrity: sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==} + /@esbuild/freebsd-arm64@0.18.12: + resolution: {integrity: sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.12: + resolution: {integrity: sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -373,8 +416,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.16: - resolution: {integrity: sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==} + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -382,8 +425,26 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.16: - resolution: {integrity: sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==} + /@esbuild/linux-arm64@0.18.12: + resolution: {integrity: sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.12: + resolution: {integrity: sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -391,8 +452,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.16: - resolution: {integrity: sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==} + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -400,8 +461,17 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.15.18: - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + /@esbuild/linux-ia32@0.18.12: + resolution: {integrity: sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -409,8 +479,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.16: - resolution: {integrity: sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==} + /@esbuild/linux-loong64@0.18.12: + resolution: {integrity: sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -418,8 +488,17 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.16: - resolution: {integrity: sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==} + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.12: + resolution: {integrity: sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -427,8 +506,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.16: - resolution: {integrity: sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==} + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -436,8 +515,26 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.16: - resolution: {integrity: sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==} + /@esbuild/linux-ppc64@0.18.12: + resolution: {integrity: sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.12: + resolution: {integrity: sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -445,8 +542,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.16: - resolution: {integrity: sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==} + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -454,8 +551,26 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.16: - resolution: {integrity: sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==} + /@esbuild/linux-s390x@0.18.12: + resolution: {integrity: sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.12: + resolution: {integrity: sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -463,8 +578,17 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.16: - resolution: {integrity: sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==} + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.12: + resolution: {integrity: sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -472,8 +596,17 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.16: - resolution: {integrity: sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==} + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.12: + resolution: {integrity: sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -481,8 +614,17 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.16: - resolution: {integrity: sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==} + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.12: + resolution: {integrity: sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -490,8 +632,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.16: - resolution: {integrity: sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==} + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -499,8 +641,26 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.16: - resolution: {integrity: sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==} + /@esbuild/win32-arm64@0.18.12: + resolution: {integrity: sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.12: + resolution: {integrity: sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -508,8 +668,17 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.16: - resolution: {integrity: sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==} + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.12: + resolution: {integrity: sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -526,8 +695,8 @@ packages: eslint: 8.44.0 eslint-visitor-keys: 3.4.1 - /@eslint-community/regexpp@4.5.0: - resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} /@eslint/eslintrc@2.1.0: @@ -537,8 +706,8 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.0 - globals: 13.19.0 - ignore: 5.2.0 + globals: 13.20.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -567,13 +736,6 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - /@jest/schemas@29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.24.51 - dev: true - /@jest/schemas@29.6.0: resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -581,25 +743,22 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping@0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 dev: true - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} dev: true @@ -616,8 +775,8 @@ packages: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 @@ -626,17 +785,17 @@ packages: /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /@jsdevtools/ez-spawn@3.0.4: resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} engines: {node: '>=10'} dependencies: - call-me-maybe: 1.0.1 + call-me-maybe: 1.0.2 cross-spawn: 7.0.3 - string-argv: 0.3.1 + string-argv: 0.3.2 type-detect: 4.0.8 dev: true @@ -668,9 +827,9 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.15.0 - /@rollup/plugin-alias@5.0.0(rollup@3.20.2): + /@rollup/plugin-alias@5.0.0(rollup@3.26.2): resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -679,11 +838,11 @@ packages: rollup: optional: true dependencies: - rollup: 3.20.2 + rollup: 3.26.2 slash: 4.0.0 dev: true - /@rollup/plugin-commonjs@24.1.0(rollup@3.20.2): + /@rollup/plugin-commonjs@24.1.0(rollup@3.26.2): resolution: {integrity: sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -692,16 +851,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 8.0.3 + glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.20.2 + rollup: 3.26.2 dev: true - /@rollup/plugin-json@6.0.0(rollup@3.20.2): + /@rollup/plugin-json@6.0.0(rollup@3.26.2): resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -710,12 +869,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) - rollup: 3.20.2 + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + rollup: 3.26.2 dev: true - /@rollup/plugin-node-resolve@15.0.2(rollup@3.20.2): - resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.2): + resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0 @@ -723,16 +882,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) '@types/resolve': 1.20.2 - deepmerge: 4.2.2 + deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.1 - rollup: 3.20.2 + resolve: 1.22.2 + rollup: 3.26.2 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.20.2): + /@rollup/plugin-replace@5.0.2(rollup@3.26.2): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -741,12 +900,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) magic-string: 0.27.0 - rollup: 3.20.2 + rollup: 3.26.2 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.20.2): + /@rollup/pluginutils@5.0.2(rollup@3.26.2): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -755,14 +914,10 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.20.2 - dev: true - - /@sinclair/typebox@0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + rollup: 3.26.2 dev: true /@sinclair/typebox@0.27.8: @@ -781,8 +936,8 @@ packages: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16@1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true /@types/chai-subset@1.3.3: @@ -795,29 +950,29 @@ packages: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/estree@1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true - /@types/json-schema@7.0.9: - resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/mdast@3.0.10: - resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + /@types/mdast@3.0.12: + resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 dev: true /@types/mocha@10.0.1: resolution: {integrity: sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==} dev: true - /@types/node@20.4.1: - resolution: {integrity: sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==} + /@types/node@20.4.2: + resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} dev: true /@types/normalize-package-data@2.4.1: @@ -828,19 +983,19 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} - /@types/unist@2.0.6: - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + /@types/unist@2.0.7: + resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} dev: true /@types/yoga-layout@1.9.2: resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==} dev: true - /@typescript-eslint/eslint-plugin@5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -850,25 +1005,56 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.61.0(eslint@8.44.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.61.0 - '@typescript-eslint/type-utils': 5.61.0(eslint@8.44.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.0.4) + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@8.44.0)(typescript@5.1.6) + debug: 4.3.4 + eslint: 8.44.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 6.0.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/type-utils': 6.0.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 eslint: 8.44.0 + grapheme-splitter: 1.0.4 graphemer: 1.4.0 - ignore: 5.2.0 + ignore: 5.2.4 + natural-compare: 1.4.0 natural-compare-lite: 1.4.0 - semver: 7.5.1 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.61.0(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==} + /@typescript-eslint/parser@5.62.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -877,25 +1063,73 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.61.0 - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) debug: 4.3.4 eslint: 8.44.0 - typescript: 5.0.4 + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.61.0: - resolution: {integrity: sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==} + /@typescript-eslint/parser@6.0.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + eslint: 8.44.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/rule-tester@6.0.0(@eslint/eslintrc@2.1.0)(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-mHB5phLdzK3Kt7Hf9LzkwF+bgDhfdTi3vggSeyl8/jA6TRk9N7N+td40U1seHEN1Kfp1bM6QJlO8ePTXtCzTmQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@eslint/eslintrc': '>=2' + eslint: '>=8' + dependencies: + '@eslint/eslintrc': 2.1.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.44.0)(typescript@5.1.6) + ajv: 6.12.6 + eslint: 8.44.0 + lodash.merge: 4.6.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/visitor-keys': 5.61.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.0.0: + resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 - /@typescript-eslint/type-utils@5.61.0(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -904,22 +1138,47 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.0.4) - '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@8.44.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.44.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.61.0: - resolution: {integrity: sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==} + /@typescript-eslint/type-utils@6.0.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.44.0)(typescript@5.1.6) + debug: 4.3.4 + eslint: 8.44.0 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.0.0: + resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + engines: {node: ^16.0.0 || >=18.0.0} - /@typescript-eslint/typescript-estree@5.61.0(typescript@5.0.4): - resolution: {integrity: sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -927,56 +1186,105 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/visitor-keys': 5.61.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.6): + resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.1 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color - /@typescript-eslint/utils@5.61.0(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==} + /@typescript-eslint/utils@5.62.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) - '@types/json-schema': 7.0.9 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.61.0 - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.0.4) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) eslint: 8.44.0 eslint-scope: 5.1.1 - semver: 7.5.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript + dev: true - /@typescript-eslint/visitor-keys@5.61.0: - resolution: {integrity: sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==} + /@typescript-eslint/utils@6.0.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + eslint: 8.44.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.61.0 + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@typescript-eslint/visitor-keys@6.0.0: + resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 eslint-visitor-keys: 3.4.1 - /@veritem/eslint-config-base@0.0.11(@typescript-eslint/eslint-plugin@5.61.0)(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.0.4): + /@veritem/eslint-config-base@0.0.11(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-tmDpz6DheFC4b7n8FxiyG/TCoHgSeiA3sECXvcvJi5ECokHfhubjoTJu4jha6XdE8rReiv5eXFx/CJtanSgpaw==} peerDependencies: typescript: '>=4.x' dependencies: eslint-plugin-eslint-comments: 3.2.0(eslint@8.44.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.61.0)(eslint@8.44.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint@8.44.0) eslint-plugin-markdown: 3.0.0(eslint@8.44.0) eslint-plugin-promise: 6.1.1(eslint@8.44.0) - eslint-plugin-unicorn: 46.0.0(eslint@8.44.0) - eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.61.0)(eslint@8.44.0) - typescript: 5.0.4 + eslint-plugin-unicorn: 46.0.1(eslint@8.44.0) + eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.44.0) + typescript: 5.1.6 transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' - '@typescript-eslint/parser' @@ -986,12 +1294,12 @@ packages: - supports-color dev: true - /@veritem/eslint-config-react@0.0.11(eslint@8.44.0)(typescript@5.0.4): + /@veritem/eslint-config-react@0.0.11(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-s5RbJvdrY5bYPAro3nsw0BWVYCIVyyw7cm6jbXASsqoBrUEkt+ubCm7h3oO0WGoO3ioqu8uBhQCTSZP9U4T/NA==} peerDependencies: eslint: '>=8.0.0' dependencies: - '@veritem/eslint-config-ts': 0.0.11(eslint@8.44.0)(typescript@5.0.4) + '@veritem/eslint-config-ts': 0.0.11(eslint@8.44.0)(typescript@5.1.6) eslint: 8.44.0 eslint-plugin-jsx-a11y: 6.7.1(eslint@8.44.0) eslint-plugin-react: 7.32.2(eslint@8.44.0) @@ -1003,14 +1311,14 @@ packages: - typescript dev: true - /@veritem/eslint-config-ts@0.0.11(eslint@8.44.0)(typescript@5.0.4): + /@veritem/eslint-config-ts@0.0.11(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-OZ6GzEtbZlTg0ZwUfPl2kHJKuQJapZ3fZf4/Uhs7xnbONtkUprgBlU4oH20+12XdS2CUQLmUEzvUGpgho/UniA==} peerDependencies: eslint: '>=8.0.0' dependencies: - '@typescript-eslint/eslint-plugin': 5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.0.4) - '@typescript-eslint/parser': 5.61.0(eslint@8.44.0)(typescript@5.0.4) - '@veritem/eslint-config-base': 0.0.11(@typescript-eslint/eslint-plugin@5.61.0)(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.62.0(eslint@8.44.0)(typescript@5.1.6) + '@veritem/eslint-config-base': 0.0.11(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.44.0)(typescript@5.1.6) eslint: 8.44.0 eslint-plugin-n: 15.7.0(eslint@8.44.0) transitivePeerDependencies: @@ -1020,10 +1328,10 @@ packages: - typescript dev: true - /@veritem/eslint-config@0.0.11(eslint@8.44.0)(typescript@5.0.4): + /@veritem/eslint-config@0.0.11(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-NTESflVjo4gdIab27tSmGaRoAI5rkSEvp24pSXouIULb7Ah7UaIZoGfmZpwhGJlgOafkySiofe0gqzFwrVPO3Q==} dependencies: - '@veritem/eslint-config-react': 0.0.11(eslint@8.44.0)(typescript@5.0.4) + '@veritem/eslint-config-react': 0.0.11(eslint@8.44.0)(typescript@5.1.6) transitivePeerDependencies: - eslint - eslint-import-resolver-typescript @@ -1095,18 +1403,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /acorn@8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -1124,8 +1420,8 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.11.2: - resolution: {integrity: sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==} + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -1177,10 +1473,17 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: - deep-equal: 2.2.0 + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 dev: true /array-includes@3.1.6: @@ -1188,9 +1491,9 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 - get-intrinsic: 1.1.3 + define-properties: 1.2.0 + es-abstract: 1.21.3 + get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true @@ -1203,8 +1506,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 es-shim-unscopables: 1.0.0 dev: true @@ -1213,8 +1516,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 es-shim-unscopables: 1.0.0 dev: true @@ -1222,10 +1525,10 @@ packages: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /assertion-error@1.1.0: @@ -1251,15 +1554,15 @@ packages: engines: {node: '>= 0.4'} dev: true - /axe-core@4.6.2: - resolution: {integrity: sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==} + /axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} dev: true - /axobject-query@3.1.1: - resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: - deep-equal: 2.2.0 + dequal: 2.0.3 dev: true /balanced-match@1.0.2: @@ -1292,15 +1595,15 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + /browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001431 - electron-to-chromium: 1.4.284 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10(browserslist@4.21.4) + caniuse-lite: 1.0.30001515 + electron-to-chromium: 1.4.460 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true /builtin-modules@3.3.0: @@ -1311,7 +1614,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.1 + semver: 7.5.4 dev: true /bumpp@9.1.1: @@ -1320,29 +1623,29 @@ packages: hasBin: true dependencies: '@jsdevtools/ez-spawn': 3.0.4 - c12: 1.4.1 + c12: 1.4.2 cac: 6.7.14 - fast-glob: 3.2.12 + fast-glob: 3.3.0 prompts: 2.4.2 - semver: 7.5.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true - /c12@1.4.1: - resolution: {integrity: sha512-0x7pWfLZpZsgtyotXtuepJc0rZYE0Aw8PwNAXs0jSG9zq6Sl5xmbWnFqfmRY01ieZLHNbvneSFm9/x88CvzAuw==} + /c12@1.4.2: + resolution: {integrity: sha512-3IP/MuamSVRVw8W8+CHWAz9gKN4gd+voF2zm/Ln6D25C2RhytEZ1ABbC8MjKr4BR9rhoV1JQ7jJA158LDiTkLg==} dependencies: chokidar: 3.5.3 defu: 6.1.2 - dotenv: 16.0.3 + dotenv: 16.3.1 giget: 1.1.2 jiti: 1.19.1 - mlly: 1.2.0 + mlly: 1.4.0 ohash: 1.1.2 - pathe: 1.1.0 - perfect-debounce: 0.1.3 - pkg-types: 1.0.2 - rc9: 2.1.0 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + rc9: 2.1.1 transitivePeerDependencies: - supports-color dev: true @@ -1356,19 +1659,19 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true - /call-me-maybe@1.0.1: - resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==} + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /caniuse-lite@1.0.30001431: - resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} + /caniuse-lite@1.0.30001515: + resolution: {integrity: sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==} dev: true /chai@4.3.7: @@ -1400,8 +1703,8 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -1445,8 +1748,8 @@ packages: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true - /ci-info@3.7.1: - resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true @@ -1512,12 +1815,12 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /colorette@2.0.19: - resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true - /commander@10.0.0: - resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} dev: true @@ -1544,8 +1847,9 @@ packages: yargs: 17.7.2 dev: true - /consola@3.0.2: - resolution: {integrity: sha512-o/Wau2FmZKiQgyp3c3IULgN6J5yc0lwYMnoyiZdEpdGxKGBtt2ACbkulBZ6BUsHy1HlSJqoP4YOyPIJLgRJyKQ==} + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} dev: true /convert-source-map@1.9.0: @@ -1557,8 +1861,8 @@ packages: engines: {node: '>= 4'} dev: true - /cosmiconfig@8.0.0: - resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + /cosmiconfig@8.2.0: + resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} engines: {node: '>=14'} dependencies: import-fresh: 3.3.0 @@ -1587,7 +1891,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.6 dev: true /debug@3.2.7: @@ -1598,7 +1902,7 @@ packages: supports-color: optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 dev: true /debug@4.3.4: @@ -1619,38 +1923,16 @@ packages: type-detect: 4.0.8 dev: true - /deep-equal@2.2.0: - resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} - dependencies: - call-bind: 1.0.2 - es-get-iterator: 1.1.3 - get-intrinsic: 1.1.3 - is-arguments: 1.1.1 - is-array-buffer: 3.0.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - side-channel: 1.0.4 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.9 - dev: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /deepmerge@4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true - /define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 @@ -1661,8 +1943,13 @@ packages: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} dev: true - /destr@1.2.2: - resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /destr@2.0.0: + resolution: {integrity: sha512-FJ9RDpf3GicEBvzI3jxc2XhHzbqD8p4ANw/1kPsFBfTvP1b7Gn/Lg1vO7R9J4IVgoMbyUmFrFGZafJ1hPZpvlg==} dev: true /diff-sequences@29.4.3: @@ -1703,373 +1990,182 @@ packages: dev: true /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils@3.0.1: - resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: true - - /dot-prop@7.2.0: - resolution: {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - type-fest: 2.19.0 - dev: true - - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} - dev: true - - /electron-to-chromium@1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es-abstract@1.21.0: - resolution: {integrity: sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.4 - is-array-buffer: 3.0.1 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.2 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 - dev: true - - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true - - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.1.3 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: true - - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /esbuild-android-64@0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64@0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64@0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64@0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64@0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64@0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32@0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - optional: true - /esbuild-linux-64@0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 dev: true - optional: true - /esbuild-linux-arm64@0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 dev: true - optional: true - /esbuild-linux-arm@0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true + /dot-prop@7.2.0: + resolution: {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + type-fest: 2.19.0 dev: true - optional: true - /esbuild-linux-mips64le@0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true dev: true - optional: true - /esbuild-linux-ppc64le@0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /electron-to-chromium@1.4.460: + resolution: {integrity: sha512-kKiHnbrHME7z8E6AYaw0ehyxY5+hdaRmeUbjBO22LZMdqTYCO29EvF0T1cQ3pJ1RN5fyMcHl1Lmcsdt9WWJpJQ==} dev: true - optional: true - /esbuild-linux-riscv64@0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - optional: true - /esbuild-linux-s390x@0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - optional: true - /esbuild-netbsd-64@0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} dev: true - optional: true - /esbuild-openbsd-64@0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 dev: true - optional: true - /esbuild-sunos-64@0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true + /es-abstract@1.21.3: + resolution: {integrity: sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.10 dev: true - optional: true - /esbuild-windows-32@0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 dev: true - optional: true - /esbuild-windows-64@0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 dev: true - optional: true - /esbuild-windows-arm64@0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 dev: true - optional: true - /esbuild@0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 - dev: true - - /esbuild@0.17.16: - resolution: {integrity: sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==} + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + dev: true + + /esbuild@0.18.12: + resolution: {integrity: sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.16 - '@esbuild/android-arm64': 0.17.16 - '@esbuild/android-x64': 0.17.16 - '@esbuild/darwin-arm64': 0.17.16 - '@esbuild/darwin-x64': 0.17.16 - '@esbuild/freebsd-arm64': 0.17.16 - '@esbuild/freebsd-x64': 0.17.16 - '@esbuild/linux-arm': 0.17.16 - '@esbuild/linux-arm64': 0.17.16 - '@esbuild/linux-ia32': 0.17.16 - '@esbuild/linux-loong64': 0.17.16 - '@esbuild/linux-mips64el': 0.17.16 - '@esbuild/linux-ppc64': 0.17.16 - '@esbuild/linux-riscv64': 0.17.16 - '@esbuild/linux-s390x': 0.17.16 - '@esbuild/linux-x64': 0.17.16 - '@esbuild/netbsd-x64': 0.17.16 - '@esbuild/openbsd-x64': 0.17.16 - '@esbuild/sunos-x64': 0.17.16 - '@esbuild/win32-arm64': 0.17.16 - '@esbuild/win32-ia32': 0.17.16 - '@esbuild/win32-x64': 0.17.16 + '@esbuild/android-arm': 0.18.12 + '@esbuild/android-arm64': 0.18.12 + '@esbuild/android-x64': 0.18.12 + '@esbuild/darwin-arm64': 0.18.12 + '@esbuild/darwin-x64': 0.18.12 + '@esbuild/freebsd-arm64': 0.18.12 + '@esbuild/freebsd-x64': 0.18.12 + '@esbuild/linux-arm': 0.18.12 + '@esbuild/linux-arm64': 0.18.12 + '@esbuild/linux-ia32': 0.18.12 + '@esbuild/linux-loong64': 0.18.12 + '@esbuild/linux-mips64el': 0.18.12 + '@esbuild/linux-ppc64': 0.18.12 + '@esbuild/linux-riscv64': 0.18.12 + '@esbuild/linux-s390x': 0.18.12 + '@esbuild/linux-x64': 0.18.12 + '@esbuild/netbsd-x64': 0.18.12 + '@esbuild/openbsd-x64': 0.18.12 + '@esbuild/sunos-x64': 0.18.12 + '@esbuild/win32-arm64': 0.18.12 + '@esbuild/win32-ia32': 0.18.12 + '@esbuild/win32-x64': 0.18.12 dev: true /escalade@3.1.1: @@ -2091,26 +2187,26 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-doc-generator@1.4.3(eslint@8.44.0)(typescript@5.0.4): + /eslint-doc-generator@1.4.3(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-cn9KXE7xuKlxKi/9VbirR3cbz7W1geRObwWzZjJAnpTeNBoqA8Rj+lD8/HHHJ7PnOdaTrRyhhoYdCtxqq3U7Bw==} engines: {node: ^14.18.0 || ^16.0.0 || >=18.0.0} hasBin: true peerDependencies: eslint: '>= 7' dependencies: - '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.0.4) - ajv: 8.11.2 + '@typescript-eslint/utils': 5.62.0(eslint@8.44.0)(typescript@5.1.6) + ajv: 8.12.0 boolean: 3.2.0 - commander: 10.0.0 - cosmiconfig: 8.0.0 - deepmerge: 4.2.2 + commander: 10.0.1 + cosmiconfig: 8.2.0 + deepmerge: 4.3.1 dot-prop: 7.2.0 eslint: 8.44.0 - jest-diff: 29.3.1 + jest-diff: 29.6.1 json-schema-traverse: 1.0.0 markdown-table: 3.0.3 no-case: 3.0.4 - type-fest: 3.2.0 + type-fest: 3.13.0 transitivePeerDependencies: - supports-color - typescript @@ -2120,14 +2216,14 @@ packages: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.11.0 - resolve: 1.22.1 + is-core-module: 2.12.1 + resolve: 1.22.2 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.61.0)(eslint-import-resolver-node@0.3.7)(eslint@8.44.0): - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@8.44.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2147,7 +2243,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.61.0(eslint@8.44.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.44.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.44.0 eslint-import-resolver-node: 0.3.7 @@ -2185,7 +2281,7 @@ packages: dependencies: escape-string-regexp: 1.0.5 eslint: 8.44.0 - ignore: 5.2.0 + ignore: 5.2.4 dev: true /eslint-plugin-eslint-plugin@5.1.0(eslint@8.44.0): @@ -2205,7 +2301,7 @@ packages: htmlparser2: 8.0.2 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.61.0)(eslint@8.44.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.62.0)(eslint@8.44.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -2215,7 +2311,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.61.0(eslint@8.44.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.44.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -2223,15 +2319,15 @@ packages: doctrine: 2.1.0 eslint: 8.44.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.61.0)(eslint-import-resolver-node@0.3.7)(eslint@8.44.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@8.44.0) has: 1.0.3 - is-core-module: 2.11.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 - resolve: 1.22.1 - semver: 6.3.0 - tsconfig-paths: 3.14.1 + resolve: 1.22.2 + semver: 6.3.1 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -2244,23 +2340,23 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.5 - aria-query: 5.1.3 + '@babel/runtime': 7.22.6 + aria-query: 5.3.0 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.6.2 - axobject-query: 3.1.1 + axe-core: 4.7.2 + axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 eslint: 8.44.0 has: 1.0.3 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.4 language-tags: 1.0.5 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 - semver: 6.3.0 + semver: 6.3.1 dev: true /eslint-plugin-markdown@3.0.0(eslint@8.44.0): @@ -2285,11 +2381,11 @@ packages: eslint: 8.44.0 eslint-plugin-es: 4.1.0(eslint@8.44.0) eslint-utils: 3.0.0(eslint@8.44.0) - ignore: 5.2.0 - is-core-module: 2.11.0 + ignore: 5.2.4 + is-core-module: 2.12.1 minimatch: 3.1.2 - resolve: 1.22.1 - semver: 7.5.1 + resolve: 1.22.2 + semver: 7.5.4 dev: true /eslint-plugin-node@11.1.0(eslint@8.44.0): @@ -2301,10 +2397,10 @@ packages: eslint: 8.44.0 eslint-plugin-es: 3.0.1(eslint@8.44.0) eslint-utils: 2.1.0 - ignore: 5.2.0 - minimatch: 3.0.4 - resolve: 1.21.0 - semver: 6.3.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.2 + semver: 6.3.1 dev: true /eslint-plugin-promise@6.1.1(eslint@8.44.0): @@ -2337,7 +2433,7 @@ packages: doctrine: 2.1.0 eslint: 8.44.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.4 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 @@ -2345,36 +2441,36 @@ packages: object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 - semver: 6.3.0 + semver: 6.3.1 string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-unicorn@46.0.0(eslint@8.44.0): - resolution: {integrity: sha512-j07WkC+PFZwk8J33LYp6JMoHa1lXc1u6R45pbSAipjpfpb7KIGr17VE2D685zCxR5VL4cjrl65kTJflziQWMDA==} + /eslint-plugin-unicorn@46.0.1(eslint@8.44.0): + resolution: {integrity: sha512-setGhMTiLAddg1asdwjZ3hekIN5zLznNa5zll7pBPwFOka6greCKDQydfqy4fqyUhndi74wpDzClSQMEcmOaew==} engines: {node: '>=14.18'} peerDependencies: eslint: '>=8.28.0' dependencies: '@babel/helper-validator-identifier': 7.22.5 '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) - ci-info: 3.7.1 + ci-info: 3.8.0 clean-regexp: 1.0.0 eslint: 8.44.0 - esquery: 1.4.2 + esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 lodash: 4.17.21 pluralize: 8.0.0 read-pkg-up: 7.0.1 - regexp-tree: 0.1.24 + regexp-tree: 0.1.27 regjsparser: 0.9.1 safe-regex: 2.1.1 - semver: 7.5.1 + semver: 7.5.4 strip-indent: 3.0.0 dev: true - /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.61.0)(eslint@8.44.0): + /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.44.0): resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2384,7 +2480,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.44.0)(typescript@5.1.6) eslint: 8.44.0 eslint-rule-composer: 0.3.0 dev: true @@ -2404,15 +2500,15 @@ packages: ts-node: optional: true dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.5 JSONStream: 1.3.5 chalk: 4.1.2 eslint: 8.44.0 ink: 3.2.0(react@17.0.2) object-hash: 3.0.0 react: 17.0.2 - simple-git: 3.15.1 - ts-node: 10.9.1(@types/node@20.4.1)(typescript@5.0.4) + simple-git: 3.19.1 + ts-node: 10.9.1(@types/node@20.4.2)(typescript@5.1.6) transitivePeerDependencies: - '@types/react' - bufferutil @@ -2476,7 +2572,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) - '@eslint-community/regexpp': 4.5.0 + '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.1.0 '@eslint/js': 8.44.0 '@humanwhocodes/config-array': 0.11.10 @@ -2491,15 +2587,15 @@ packages: eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.1 espree: 9.6.0 - esquery: 1.4.2 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 + globals: 13.20.0 graphemer: 1.4.0 - ignore: 5.2.0 + ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -2525,8 +2621,8 @@ packages: acorn-jsx: 5.3.2(acorn@8.10.0) eslint-visitor-keys: 3.4.1 - /esquery@1.4.2: - resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==} + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -2556,15 +2652,15 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 + micromatch: 4.0.5 /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -2572,8 +2668,8 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fastq@1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 @@ -2608,7 +2704,7 @@ packages: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.4 + flatted: 3.2.7 rimraf: 3.0.2 /flat@5.0.2: @@ -2616,8 +2712,8 @@ packages: hasBin: true dev: true - /flatted@3.2.4: - resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -2629,7 +2725,7 @@ packages: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} dependencies: - graceful-fs: 4.2.8 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -2661,8 +2757,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 functions-have-names: 1.2.3 dev: true @@ -2684,11 +2780,12 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 + has-proto: 1.0.1 has-symbols: 1.0.3 dev: true @@ -2697,20 +2794,20 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /giget@1.1.2: resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} hasBin: true dependencies: - colorette: 2.0.19 + colorette: 2.0.20 defu: 6.1.2 https-proxy-agent: 5.0.1 mri: 1.2.0 - node-fetch-native: 1.0.2 - pathe: 1.1.0 - tar: 6.1.13 + node-fetch-native: 1.2.0 + pathe: 1.1.1 + tar: 6.1.15 transitivePeerDependencies: - supports-color dev: true @@ -2727,8 +2824,8 @@ packages: dependencies: is-glob: 4.0.3 - /glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -2737,14 +2834,14 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.0 + minimatch: 5.1.6 once: 1.4.0 dev: true @@ -2753,8 +2850,8 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.19.0: - resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -2763,7 +2860,7 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.1.4 + define-properties: 1.2.0 dev: true /globby@11.1.0: @@ -2772,18 +2869,18 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.0 + fast-glob: 3.3.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - /globby@13.1.4: - resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.0 + fast-glob: 3.3.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 dev: true @@ -2791,11 +2888,15 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /graceful-fs@4.2.8: - resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true /graphemer@1.4.0: @@ -2817,7 +2918,7 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /has-proto@1.0.1: @@ -2857,7 +2958,7 @@ packages: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 entities: 4.5.0 dev: true @@ -2871,8 +2972,8 @@ packages: - supports-color dev: true - /ignore@5.2.0: - resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} /import-fresh@3.3.0: @@ -2922,7 +3023,7 @@ packages: lodash: 4.17.21 patch-console: 1.0.0 react: 17.0.2 - react-devtools-core: 4.27.1 + react-devtools-core: 4.28.0 react-reconciler: 0.26.2(react@17.0.2) scheduler: 0.20.2 signal-exit: 3.0.7 @@ -2939,11 +3040,11 @@ packages: - utf-8-validate dev: true - /internal-slot@1.0.4: - resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -2959,19 +3060,11 @@ packages: is-decimal: 1.0.4 dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-array-buffer@3.0.1: - resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 is-typed-array: 1.1.10 dev: true @@ -3019,14 +3112,8 @@ packages: ci-info: 2.0.0 dev: true - /is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - dev: true - - /is-core-module@2.8.0: - resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 dev: true @@ -3061,10 +3148,6 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true - /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -3092,7 +3175,7 @@ packages: /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 dev: true /is-regex@1.1.4: @@ -3103,10 +3186,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true - /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -3138,42 +3217,27 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true - /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - dev: true - - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /jest-diff@29.3.1: - resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + /jest-diff@29.6.1: + resolution: {integrity: sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.4.3 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + pretty-format: 29.6.1 dev: true - /jest-get-type@29.2.0: - resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -3227,7 +3291,7 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true /json5@2.2.3: @@ -3245,7 +3309,7 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.8 + graceful-fs: 4.2.11 dev: true /jsonparse@1.3.1: @@ -3253,12 +3317,14 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + /jsx-ast-utils@3.3.4: + resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 + array.prototype.flat: 1.3.1 object.assign: 4.1.4 + object.values: 1.1.6 dev: true /kleur@3.0.3: @@ -3328,7 +3394,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.4.1 + tslib: 2.6.0 dev: true /lru-cache@5.1.1: @@ -3347,14 +3413,7 @@ packages: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /magic-string@0.30.1: @@ -3375,7 +3434,7 @@ packages: /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.12 mdast-util-to-string: 2.0.0 micromark: 2.11.4 parse-entities: 2.0.0 @@ -3401,8 +3460,8 @@ packages: - supports-color dev: true - /micromatch@4.0.4: - resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 @@ -3418,26 +3477,20 @@ packages: engines: {node: '>=4'} dev: true - /minimatch@3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - dependencies: - brace-expansion: 1.1.11 - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist@1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true /minipass@3.3.6: @@ -3447,8 +3500,8 @@ packages: yallist: 4.0.0 dev: true - /minipass@4.2.5: - resolution: {integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==} + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} dev: true @@ -3466,7 +3519,7 @@ packages: hasBin: true dev: true - /mkdist@1.2.0(typescript@5.0.4): + /mkdist@1.2.0(typescript@5.1.6): resolution: {integrity: sha512-UTqu/bXmIk/+VKNVgufAeMyjUcNy1dn9Bl7wL1zZlCKVrpDgj/VllmZBeh3ZCC/2HWqUrt6frNFTKt9TRZbNvQ==} hasBin: true peerDependencies: @@ -3479,32 +3532,14 @@ packages: optional: true dependencies: defu: 6.1.2 - esbuild: 0.17.16 + esbuild: 0.17.19 fs-extra: 11.1.1 - globby: 13.1.4 + globby: 13.2.2 jiti: 1.19.1 - mlly: 1.2.0 + mlly: 1.4.0 mri: 1.2.0 - pathe: 1.1.0 - typescript: 5.0.4 - dev: true - - /mlly@1.1.1: - resolution: {integrity: sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==} - dependencies: - acorn: 8.8.2 - pathe: 1.1.0 - pkg-types: 1.0.2 - ufo: 1.1.0 - dev: true - - /mlly@1.2.0: - resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} - dependencies: - acorn: 8.8.2 - pathe: 1.1.0 - pkg-types: 1.0.2 - ufo: 1.1.1 + pathe: 1.1.1 + typescript: 5.1.6 dev: true /mlly@1.4.0: @@ -3524,8 +3559,12 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true @@ -3541,23 +3580,23 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.4.1 + tslib: 2.6.0 dev: true - /node-fetch-native@1.0.2: - resolution: {integrity: sha512-KIkvH1jl6b3O7es/0ShyCgWLcfXxlBrLBbP3rOr23WArC66IMcU4DeZEeYEOwnopYhawLTn7/y+YtmASe8DFVQ==} + /node-fetch-native@1.2.0: + resolution: {integrity: sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==} dev: true - /node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 - semver: 5.7.1 + resolve: 1.22.2 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -3576,16 +3615,8 @@ packages: engines: {node: '>= 6'} dev: true - /object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - dev: true - - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true /object-keys@1.1.1: @@ -3598,7 +3629,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -3608,8 +3639,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 dev: true /object.fromentries@2.0.6: @@ -3617,15 +3648,15 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 dev: true /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 dev: true /object.values@1.1.6: @@ -3633,8 +3664,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 dev: true /ohash@1.1.2: @@ -3723,7 +3754,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -3754,10 +3785,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pathe@1.1.0: - resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} - dev: true - /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true @@ -3766,8 +3793,8 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /perfect-debounce@0.1.3: - resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} dev: true /picocolors@1.0.0: @@ -3778,14 +3805,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pkg-types@1.0.2: - resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.1.1 - pathe: 1.1.0 - dev: true - /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: @@ -3799,11 +3818,11 @@ packages: engines: {node: '>=4'} dev: true - /postcss@8.4.18: - resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} + /postcss@8.4.26: + resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -3817,15 +3836,6 @@ packages: engines: {node: ^14.13.1 || >=16.0.0} dev: true - /pretty-format@29.3.1: - resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.0.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /pretty-format@29.6.1: resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3851,25 +3861,25 @@ packages: react-is: 16.13.1 dev: true - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /rc9@2.1.0: - resolution: {integrity: sha512-ROO9bv8PPqngWKoiUZU3JDQ4sugpdRs9DfwHnzDSxK25XtQn6BEHL6EOd/OtKuDT2qodrtNR+0WkPT6l0jxH5Q==} + /rc9@2.1.1: + resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} dependencies: defu: 6.1.2 - destr: 1.2.2 + destr: 2.0.0 flat: 5.0.2 dev: true - /react-devtools-core@4.27.1: - resolution: {integrity: sha512-qXhcxxDWiFmFAOq48jts9YQYe1+wVoUXzJTlY4jbaATzyio6dd6CUGu3dXBhREeVgpZ+y4kg6vFJzIOZh6vY2w==} + /react-devtools-core@4.28.0: + resolution: {integrity: sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg==} dependencies: - shell-quote: 1.7.4 + shell-quote: 1.8.1 ws: 7.5.9 transitivePeerDependencies: - bufferutil @@ -3934,17 +3944,17 @@ packages: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regexp-tree@0.1.24: - resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true dev: true - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 functions-have-names: 1.2.3 dev: true @@ -3974,20 +3984,11 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve@1.21.0: - resolution: {integrity: sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==} - hasBin: true - dependencies: - is-core-module: 2.8.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -3996,7 +3997,7 @@ packages: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -4017,32 +4018,24 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 - /rollup-plugin-dts@5.3.0(rollup@3.20.2)(typescript@5.0.4): + /rollup-plugin-dts@5.3.0(rollup@3.26.2)(typescript@5.1.6): resolution: {integrity: sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ==} engines: {node: '>=v14'} peerDependencies: rollup: ^3.0.0 typescript: ^4.1 || ^5.0 dependencies: - magic-string: 0.30.0 - rollup: 3.20.2 - typescript: 5.0.4 - optionalDependencies: - '@babel/code-frame': 7.21.4 - dev: true - - /rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true + magic-string: 0.30.1 + rollup: 3.26.2 + typescript: 5.1.6 optionalDependencies: - fsevents: 2.3.2 + '@babel/code-frame': 7.22.5 dev: true - /rollup@3.20.2: - resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} + /rollup@3.26.2: + resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -4057,21 +4050,21 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.4.1 + tslib: 2.6.0 dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 is-regex: 1.1.4 dev: true /safe-regex@2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} dependencies: - regexp-tree: 0.1.24 + regexp-tree: 0.1.27 dev: true /scheduler@0.20.2: @@ -4085,18 +4078,18 @@ packages: resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} dev: true - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true dev: true - /semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -4112,10 +4105,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote@1.7.4: - resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} - dev: true - /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true @@ -4124,8 +4113,8 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 dev: true /siginfo@2.0.0: @@ -4136,8 +4125,8 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /simple-git@3.15.1: - resolution: {integrity: sha512-73MVa5984t/JP4JcQt0oZlKGr42ROYWC3BcUZfuHtT3IHKPspIvL0cZBnvPXF7LL3S/qVeVHVdYYmJ3LOTw4Rg==} + /simple-git@3.19.1: + resolution: {integrity: sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w==} dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 @@ -4177,11 +4166,11 @@ packages: resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} dev: true - /spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 + spdx-license-ids: 3.0.13 dev: true /spdx-exceptions@2.3.0: @@ -4192,11 +4181,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 + spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids@3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true /stack-utils@2.0.6: @@ -4214,15 +4203,8 @@ packages: resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: true - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.4 - dev: true - - /string-argv@0.3.1: - resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} dev: true @@ -4239,29 +4221,38 @@ packages: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 - get-intrinsic: 1.1.3 + define-properties: 1.2.0 + es-abstract: 1.21.3 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 - internal-slot: 1.0.4 - regexp.prototype.flags: 1.4.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 dev: true + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.3 + dev: true + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 dev: true /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.0 + define-properties: 1.2.0 + es-abstract: 1.21.3 dev: true /strip-ansi@6.0.1: @@ -4317,13 +4308,13 @@ packages: engines: {node: '>= 0.4'} dev: true - /tar@6.1.13: - resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} + /tar@6.1.15: + resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 4.2.5 + minipass: 5.0.0 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 @@ -4366,7 +4357,15 @@ packages: hasBin: true dev: true - /ts-node@10.9.1(@types/node@20.4.1)(typescript@5.0.4): + /ts-api-utils@1.0.1(typescript@5.1.6): + resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.1.6 + + /ts-node@10.9.1(@types/node@20.4.2)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -4384,43 +4383,45 @@ packages: '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.4.1 - acorn: 8.8.1 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.4.2 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.0.4 + typescript: 5.1.6 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfig-paths@3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 - minimist: 1.2.7 + minimist: 1.2.8 strip-bom: 3.0.0 dev: true /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true - /tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib@2.6.0: + resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} dev: true - /tsutils@3.21.0(typescript@5.0.4): + /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 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' dependencies: tslib: 1.14.1 - typescript: 5.0.4 + typescript: 5.1.6 + dev: true /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -4462,11 +4463,22 @@ packages: engines: {node: '>=12.20'} dev: true - /type-fest@3.2.0: - resolution: {integrity: sha512-Il3wdLRzWvbAEtocgxGQA9YOoRVeVUGOMBtel5LdEpNeEAol6GJTLw8GbX6Z8EIMfvfhoOXs2bwOijtAZdK5og==} + /type-fest@3.13.0: + resolution: {integrity: sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==} engines: {node: '>=14.16'} dev: true + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.10 + dev: true + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -4475,19 +4487,11 @@ packages: is-typed-array: 1.1.10 dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} hasBin: true - /ufo@1.1.0: - resolution: {integrity: sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==} - dev: true - - /ufo@1.1.1: - resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} - dev: true - /ufo@1.1.2: resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} dev: true @@ -4505,30 +4509,30 @@ packages: resolution: {integrity: sha512-J4efk69Aye43tWcBPCsLK7TIRppGrEN4pAlDzRKo3HSE6MgTSTBxSEuE3ccx7ixc62JvGQ/CoFXYqqF2AHozow==} hasBin: true dependencies: - '@rollup/plugin-alias': 5.0.0(rollup@3.20.2) - '@rollup/plugin-commonjs': 24.1.0(rollup@3.20.2) - '@rollup/plugin-json': 6.0.0(rollup@3.20.2) - '@rollup/plugin-node-resolve': 15.0.2(rollup@3.20.2) - '@rollup/plugin-replace': 5.0.2(rollup@3.20.2) - '@rollup/pluginutils': 5.0.2(rollup@3.20.2) - chalk: 5.2.0 - consola: 3.0.2 + '@rollup/plugin-alias': 5.0.0(rollup@3.26.2) + '@rollup/plugin-commonjs': 24.1.0(rollup@3.26.2) + '@rollup/plugin-json': 6.0.0(rollup@3.26.2) + '@rollup/plugin-node-resolve': 15.1.0(rollup@3.26.2) + '@rollup/plugin-replace': 5.0.2(rollup@3.26.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + chalk: 5.3.0 + consola: 3.2.3 defu: 6.1.2 - esbuild: 0.17.16 - globby: 13.1.4 + esbuild: 0.17.19 + globby: 13.2.2 hookable: 5.5.3 jiti: 1.19.1 - magic-string: 0.30.0 - mkdist: 1.2.0(typescript@5.0.4) - mlly: 1.2.0 + magic-string: 0.30.1 + mkdist: 1.2.0(typescript@5.1.6) + mlly: 1.4.0 mri: 1.2.0 - pathe: 1.1.0 - pkg-types: 1.0.2 + pathe: 1.1.1 + pkg-types: 1.0.3 pretty-bytes: 6.1.0 - rollup: 3.20.2 - rollup-plugin-dts: 5.3.0(rollup@3.20.2)(typescript@5.0.4) + rollup: 3.26.2 + rollup-plugin-dts: 5.3.0(rollup@3.26.2)(typescript@5.1.6) scule: 1.0.0 - typescript: 5.0.4 + typescript: 5.1.6 untyped: 1.3.2 transitivePeerDependencies: - sass @@ -4538,7 +4542,7 @@ packages: /unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: - '@types/unist': 2.0.6 + '@types/unist': 2.0.7 dev: true /universalify@2.0.0: @@ -4550,8 +4554,8 @@ packages: resolution: {integrity: sha512-z219Z65rOGD6jXIvIhpZFfwWdqQckB8sdZec2NO+TkcH1Bph7gL0hwLzRJs1KsOo4Jz4mF9guBXhsEnyEBGVfw==} hasBin: true dependencies: - '@babel/core': 7.21.4 - '@babel/standalone': 7.21.4 + '@babel/core': 7.22.9 + '@babel/standalone': 7.22.9 '@babel/types': 7.22.5 defu: 6.1.2 jiti: 1.19.1 @@ -4561,13 +4565,13 @@ packages: - supports-color dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.4): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + /update-browserslist-db@1.0.11(browserslist@4.21.9): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.4 + browserslist: 4.21.9 escalade: 3.1.1 picocolors: 1.0.0 dev: true @@ -4575,7 +4579,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -4584,11 +4588,11 @@ packages: /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: - spdx-correct: 3.1.1 + spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true - /vite-node@0.33.0(@types/node@20.4.1): + /vite-node@0.33.0(@types/node@20.4.2): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -4598,10 +4602,11 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 3.2.3(@types/node@20.4.1) + vite: 4.4.4(@types/node@20.4.2) transitivePeerDependencies: - '@types/node' - less + - lightningcss - sass - stylus - sugarss @@ -4609,13 +4614,14 @@ packages: - terser dev: true - /vite@3.2.3(@types/node@20.4.1): - resolution: {integrity: sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==} + /vite@4.4.4(@types/node@20.4.2): + resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -4625,6 +4631,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -4634,11 +4642,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.1 - esbuild: 0.15.18 - postcss: 8.4.18 - resolve: 1.22.1 - rollup: 2.79.1 + '@types/node': 20.4.2 + esbuild: 0.18.12 + postcss: 8.4.26 + rollup: 3.26.2 optionalDependencies: fsevents: 2.3.2 dev: true @@ -4676,7 +4683,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.4.1 + '@types/node': 20.4.2 '@vitest/expect': 0.33.0 '@vitest/runner': 0.33.0 '@vitest/snapshot': 0.33.0 @@ -4695,11 +4702,12 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 3.2.3(@types/node@20.4.1) - vite-node: 0.33.0(@types/node@20.4.1) + vite: 4.4.4(@types/node@20.4.2) + vite-node: 0.33.0(@types/node@20.4.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less + - lightningcss - sass - stylus - sugarss @@ -4717,17 +4725,8 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 - dev: true - - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + /which-typed-array@1.1.10: + resolution: {integrity: sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 diff --git a/src/index.ts b/src/index.ts index 544310a..17411db 100644 --- a/src/index.ts +++ b/src/index.ts @@ -99,7 +99,6 @@ const allRules = { [requireHookName]: 'warn', [preferTodoName]: 'warn', [preferSpyOnName]: 'warn', - [preferTodoName]: 'warn', [preferComparisonMatcherName]: 'warn', [preferToContainName]: 'warn' } @@ -163,7 +162,6 @@ export default { [requireHookName]: requireHook, [preferTodoName]: preferTodo, [preferSpyOnName]: preferSpyOn, - [preferTodoName]: preferTodo, [preferComparisonMatcherName]: preferComparisonMatcher, [preferToContainName]: preferToContain }, diff --git a/src/rules/consistent-test-filename.test.ts b/src/rules/consistent-test-filename.test.ts index 098748a..815b4fd 100644 --- a/src/rules/consistent-test-filename.test.ts +++ b/src/rules/consistent-test-filename.test.ts @@ -1,12 +1,8 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './consistent-test-filename' describe(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - it(`${RULE_NAME}`, () => { ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/src/rules/consistent-test-it.test.ts b/src/rules/consistent-test-it.test.ts index ae12a01..128279f 100644 --- a/src/rules/consistent-test-it.test.ts +++ b/src/rules/consistent-test-it.test.ts @@ -1,301 +1,301 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' import { TestCaseName } from '../utils/types' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './consistent-test-it' describe(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - it(`${RULE_NAME} - fn=it`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - { - code: `it("shows error", () => { + it(`${RULE_NAME} - fn=it`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + { + code: `it("shows error", () => { expect(true).toBe(false); });`, - options: [{ fn: TestCaseName.it }] - }, - { - code: `it("foo", function () { + options: [{ fn: TestCaseName.it }] + }, + { + code: `it("foo", function () { expect(true).toBe(false); })`, - options: [{ fn: TestCaseName.it }] - }, - { - code: ` it('foo', () => { + options: [{ fn: TestCaseName.it }] + }, + { + code: ` it('foo', () => { expect(true).toBe(false); }); function myTest() { if ('bar') {} }`, - options: [{ fn: TestCaseName.it }] - } - ], - invalid: [ - { - code: 'test("shows error", () => {});', - options: [{ fn: TestCaseName.it }], - output: 'it("shows error", () => {});', - errors: [{ messageId: 'consistentMethod' }] - }, - { - code: 'test.skip("shows error");', - output: 'it.skip("shows error");', - options: [{ fn: TestCaseName.it }], - errors: [{ - messageId: 'consistentMethod', - data: { - testFnKeyWork: TestCaseName.it, - oppositeTestKeyword: TestCaseName.test - } - }] - }, - { - code: 'test.only(\'shows error\');', - output: 'it.only(\'shows error\');', - options: [{ fn: TestCaseName.it }], - errors: [{ - messageId: 'consistentMethod', - data: { - testFnKeyWork: TestCaseName.it, - oppositeTestKeyword: TestCaseName.test - } - }] - }, - { - code: 'describe(\'foo\', () => { it(\'bar\', () => {}); });', - output: 'describe(\'foo\', () => { test(\'bar\', () => {}); });', - options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.test }], - errors: [ - { - messageId: 'consistentMethodWithinDescribe', - data: { - testKeywordWithinDescribe: TestCaseName.test, - oppositeTestKeyword: TestCaseName.it - } - } - ] - } - ] - }) - }) + options: [{ fn: TestCaseName.it }] + } + ], + invalid: [ + { + code: 'test("shows error", () => {});', + options: [{ fn: TestCaseName.it }], + output: 'it("shows error", () => {});', + errors: [{ messageId: 'consistentMethod' }] + }, + { + code: 'test.skip("shows error");', + output: 'it.skip("shows error");', + options: [{ fn: TestCaseName.it }], + errors: [ + { + messageId: 'consistentMethod', + data: { + testFnKeyWork: TestCaseName.it, + oppositeTestKeyword: TestCaseName.test + } + } + ] + }, + { + code: 'test.only(\'shows error\');', + output: 'it.only(\'shows error\');', + options: [{ fn: TestCaseName.it }], + errors: [ + { + messageId: 'consistentMethod', + data: { + testFnKeyWork: TestCaseName.it, + oppositeTestKeyword: TestCaseName.test + } + } + ] + }, + { + code: 'describe(\'foo\', () => { it(\'bar\', () => {}); });', + output: 'describe(\'foo\', () => { test(\'bar\', () => {}); });', + options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.test }], + errors: [ + { + messageId: 'consistentMethodWithinDescribe', + data: { + testKeywordWithinDescribe: TestCaseName.test, + oppositeTestKeyword: TestCaseName.it + } + } + ] + } + ] + }) + }) - it(`${RULE_NAME} - fn=test`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - { - code: `test("shows error", () => { + it(`${RULE_NAME} - fn=test`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + { + code: `test("shows error", () => { expect(true).toBe(false); });`, - options: [{ fn: TestCaseName.test }] - }, - { - code: 'test.skip("foo")', - options: [{ fn: TestCaseName.test }] - }, - { - code: 'test.concurrent("foo")', - options: [{ fn: TestCaseName.test }] - }, - { - code: 'xtest("foo")', - options: [{ fn: TestCaseName.test }] - }, - { - code: 'test.each([])("foo")', - options: [{ fn: TestCaseName.test }] - }, - { - code: 'test.each``("foo")', - options: [{ fn: TestCaseName.test }] - }, - { - code: 'describe("suite", () => { test("foo") })', - options: [{ fn: TestCaseName.test }] - } - ], - invalid: [ - { - code: 'it("shows error", () => {});', - options: [{ fn: TestCaseName.test }], - output: 'test("shows error", () => {});', - errors: [{ messageId: 'consistentMethod' }] - }, - { - code: 'describe("suite", () => { it("foo") })', - output: 'describe("suite", () => { test("foo") })', - options: [{ fn: TestCaseName.test }], - errors: [ - { - messageId: 'consistentMethodWithinDescribe', - data: { - testKeywordWithinDescribe: TestCaseName.test, - oppositeTestKeyword: TestCaseName.it - } - } - ] - } - ] - }) - }) + options: [{ fn: TestCaseName.test }] + }, + { + code: 'test.skip("foo")', + options: [{ fn: TestCaseName.test }] + }, + { + code: 'test.concurrent("foo")', + options: [{ fn: TestCaseName.test }] + }, + { + code: 'xtest("foo")', + options: [{ fn: TestCaseName.test }] + }, + { + code: 'test.each([])("foo")', + options: [{ fn: TestCaseName.test }] + }, + { + code: 'test.each``("foo")', + options: [{ fn: TestCaseName.test }] + }, + { + code: 'describe("suite", () => { test("foo") })', + options: [{ fn: TestCaseName.test }] + } + ], + invalid: [ + { + code: 'it("shows error", () => {});', + options: [{ fn: TestCaseName.test }], + output: 'test("shows error", () => {});', + errors: [{ messageId: 'consistentMethod' }] + }, + { + code: 'describe("suite", () => { it("foo") })', + output: 'describe("suite", () => { test("foo") })', + options: [{ fn: TestCaseName.test }], + errors: [ + { + messageId: 'consistentMethodWithinDescribe', + data: { + testKeywordWithinDescribe: TestCaseName.test, + oppositeTestKeyword: TestCaseName.it + } + } + ] + } + ] + }) + }) - it(`${RULE_NAME} - with fn=it and withinDescribe=it`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - { - code: 'describe("suite", () => { it("foo") })', - options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }] - }, - { - code: 'it("foo")', - options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }] - } - ], - invalid: [ - { - code: 'describe("suite", () => { test("foo") })', - output: 'describe("suite", () => { it("foo") })', - options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }], - errors: [ - { - messageId: 'consistentMethodWithinDescribe', - data: { - testKeywordWithinDescribe: TestCaseName.it, - oppositeTestKeyword: TestCaseName.test - } - } - ] - }, - { - code: 'test("foo")', - output: 'it("foo")', - options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }], - errors: [ - { - messageId: 'consistentMethod', - data: { - testFnKeyWork: TestCaseName.it, - oppositeTestKeyword: TestCaseName.test - } - } - ] - } - ] - }) - }) + it(`${RULE_NAME} - with fn=it and withinDescribe=it`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + { + code: 'describe("suite", () => { it("foo") })', + options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }] + }, + { + code: 'it("foo")', + options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }] + } + ], + invalid: [ + { + code: 'describe("suite", () => { test("foo") })', + output: 'describe("suite", () => { it("foo") })', + options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }], + errors: [ + { + messageId: 'consistentMethodWithinDescribe', + data: { + testKeywordWithinDescribe: TestCaseName.it, + oppositeTestKeyword: TestCaseName.test + } + } + ] + }, + { + code: 'test("foo")', + output: 'it("foo")', + options: [{ fn: TestCaseName.it, withinDescribe: TestCaseName.it }], + errors: [ + { + messageId: 'consistentMethod', + data: { + testFnKeyWork: TestCaseName.it, + oppositeTestKeyword: TestCaseName.test + } + } + ] + } + ] + }) + }) - it(`${RULE_NAME} defaults without config object`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - { - code: 'test("shows error", () => {});' - } - ], - invalid: [ - { - code: 'describe("suite", () => { test("foo") })', - output: 'describe("suite", () => { it("foo") })', - errors: [ - { - messageId: 'consistentMethodWithinDescribe', - data: { - testKeywordWithinDescribe: TestCaseName.it, - oppositeTestKeyword: TestCaseName.test - } - } - ] - } - ] - }) - }) + it(`${RULE_NAME} defaults without config object`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + { + code: 'test("shows error", () => {});' + } + ], + invalid: [ + { + code: 'describe("suite", () => { test("foo") })', + output: 'describe("suite", () => { it("foo") })', + errors: [ + { + messageId: 'consistentMethodWithinDescribe', + data: { + testKeywordWithinDescribe: TestCaseName.it, + oppositeTestKeyword: TestCaseName.test + } + } + ] + } + ] + }) + }) - it(`${RULE_NAME} - with withinDescribe=it`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - { - code: 'test("foo")', - options: [{ withinDescribe: TestCaseName.it }] - }, - { - code: 'describe("suite", () => { it("foo") })', - options: [{ withinDescribe: TestCaseName.it }] - } - ], - invalid: [ - { - code: 'it("foo")', - output: 'test("foo")', - options: [{ withinDescribe: TestCaseName.it }], - errors: [ - { - messageId: 'consistentMethod', - data: { - testFnKeyWork: TestCaseName.test, - oppositeTestKeyword: TestCaseName.it - } - } - ] - }, - { - code: 'describe("suite", () => { test("foo") })', - output: 'describe("suite", () => { it("foo") })', - options: [{ withinDescribe: TestCaseName.it }], - errors: [ - { - messageId: 'consistentMethodWithinDescribe', - data: { - testKeywordWithinDescribe: TestCaseName.it, - oppositeTestKeyword: TestCaseName.test - } - } - ] - } - ] - }) - }) + it(`${RULE_NAME} - with withinDescribe=it`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + { + code: 'test("foo")', + options: [{ withinDescribe: TestCaseName.it }] + }, + { + code: 'describe("suite", () => { it("foo") })', + options: [{ withinDescribe: TestCaseName.it }] + } + ], + invalid: [ + { + code: 'it("foo")', + output: 'test("foo")', + options: [{ withinDescribe: TestCaseName.it }], + errors: [ + { + messageId: 'consistentMethod', + data: { + testFnKeyWork: TestCaseName.test, + oppositeTestKeyword: TestCaseName.it + } + } + ] + }, + { + code: 'describe("suite", () => { test("foo") })', + output: 'describe("suite", () => { it("foo") })', + options: [{ withinDescribe: TestCaseName.it }], + errors: [ + { + messageId: 'consistentMethodWithinDescribe', + data: { + testKeywordWithinDescribe: TestCaseName.it, + oppositeTestKeyword: TestCaseName.test + } + } + ] + } + ] + }) + }) - it(`${RULE_NAME} - with withinDescribe=test`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - { - code: 'test("foo")', - options: [{ withinDescribe: TestCaseName.test }] - }, - { - code: 'describe("suite", () => { test("foo") })', - options: [{ withinDescribe: TestCaseName.test }] - } - ], - invalid: [ - { - code: 'it("foo")', - output: 'test("foo")', - options: [{ withinDescribe: TestCaseName.test }], - errors: [ - { - messageId: 'consistentMethod', - data: { - testFnKeyWork: TestCaseName.test, - oppositeTestKeyword: TestCaseName.it - } - } - ] - }, - { - code: 'describe("suite", () => { it("foo") })', - output: 'describe("suite", () => { test("foo") })', - options: [{ withinDescribe: TestCaseName.test }], - errors: [ - { - messageId: 'consistentMethodWithinDescribe', - data: { - testKeywordWithinDescribe: TestCaseName.test, - oppositeTestKeyword: TestCaseName.it - } - } - ] - } - ] - }) - }) + it(`${RULE_NAME} - with withinDescribe=test`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + { + code: 'test("foo")', + options: [{ withinDescribe: TestCaseName.test }] + }, + { + code: 'describe("suite", () => { test("foo") })', + options: [{ withinDescribe: TestCaseName.test }] + } + ], + invalid: [ + { + code: 'it("foo")', + output: 'test("foo")', + options: [{ withinDescribe: TestCaseName.test }], + errors: [ + { + messageId: 'consistentMethod', + data: { + testFnKeyWork: TestCaseName.test, + oppositeTestKeyword: TestCaseName.it + } + } + ] + }, + { + code: 'describe("suite", () => { it("foo") })', + output: 'describe("suite", () => { test("foo") })', + options: [{ withinDescribe: TestCaseName.test }], + errors: [ + { + messageId: 'consistentMethodWithinDescribe', + data: { + testKeywordWithinDescribe: TestCaseName.test, + oppositeTestKeyword: TestCaseName.it + } + } + ] + } + ] + }) + }) }) diff --git a/src/rules/expect-expect.test.ts b/src/rules/expect-expect.test.ts index 431aaac..4f59c55 100644 --- a/src/rules/expect-expect.test.ts +++ b/src/rules/expect-expect.test.ts @@ -1,77 +1,73 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './expect-expect' describe(RULE_NAME, () => { - it(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - ruleTester.run(RULE_NAME, rule, { - valid: [ - `test("shows error", () => { + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + `test("shows error", () => { expect(true).toBe(false); });`, - `it("foo", function () { + `it("foo", function () { expect(true).toBe(false); })`, - `it('foo', () => { + `it('foo', () => { expect(true).toBe(false); }); function myTest() { if ('bar') {} }`, - `function myTest(param) {} + `function myTest(param) {} describe('my test', () => { it('should do something', () => { myTest("num"); expect(1).toEqual(1); }); });`, - `const myFunc = () => {}; + `const myFunc = () => {}; it("works", () => expect(myFunc()).toBe(undefined));`, - `describe('title', () => { + `describe('title', () => { it('test is not ok', () => { [1, 2, 3, 4, 5, 6].forEach((n) => { expect(n).toBe(1); }); }); });`, - `desctibe('title', () => { + `desctibe('title', () => { test('some test', () => { expect(obj1).not.toEqual(obj2); }) })`, - 'it("should pass", () => expect(true).toBeDefined())', - `const myFunc = () => {}; + 'it("should pass", () => expect(true).toBeDefined())', + `const myFunc = () => {}; it("works", () => expect(myFunc()).toBe(undefined));`, - `const myFunc = () => {}; + `const myFunc = () => {}; it("works", () => expect(myFunc()).toBe(undefined));` - ], - invalid: [ - { - code: 'test("shows error", () => {});', - errors: [{ messageId: 'expectedExpect' }] - }, - { - code: `it("foo", function () { + ], + invalid: [ + { + code: 'test("shows error", () => {});', + errors: [{ messageId: 'expectedExpect' }] + }, + { + code: `it("foo", function () { if (1 === 2) {} })`, - errors: [{ messageId: 'expectedExpect' }] - }, - { - code: `import { it } from 'vitest'; + errors: [{ messageId: 'expectedExpect' }] + }, + { + code: `import { it } from 'vitest'; describe('Button with increment', () => { it('should show name props', () => { console.log('test with missing expect'); }); });`, - errors: [{ messageId: 'expectedExpect' }] - }, - { - code: 'it("should also fail",() => expectSaga(mySaga).returns());', - errors: [{ messageId: 'expectedExpect' }] - } - ] - }) - }) + errors: [{ messageId: 'expectedExpect' }] + }, + { + code: 'it("should also fail",() => expectSaga(mySaga).returns());', + errors: [{ messageId: 'expectedExpect' }] + } + ] + }) + }) }) diff --git a/src/rules/max-expect.test.ts b/src/rules/max-expect.test.ts index 927a1fe..4c7be1e 100644 --- a/src/rules/max-expect.test.ts +++ b/src/rules/max-expect.test.ts @@ -1,33 +1,29 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './max-expect' describe(RULE_NAME, () => { - it(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'test(\'should pass\')', - 'test(\'should pass\', () => {})', - 'test.skip(\'should pass\', () => {})', - `test('should pass', () => { + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'test(\'should pass\')', + 'test(\'should pass\', () => {})', + 'test.skip(\'should pass\', () => {})', + `test('should pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - `test('should pass', () => { + `test('should pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - ` test('should pass', async () => { + ` test('should pass', async () => { expect.hasAssertions(); expect(true).toBeDefined(); @@ -36,10 +32,10 @@ describe(RULE_NAME, () => { expect(true).toBeDefined(); expect(true).toEqual(expect.any(Boolean)); });` - ], - invalid: [ - { - code: `test('should not pass', function () { + ], + invalid: [ + { + code: `test('should not pass', function () { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); @@ -48,16 +44,16 @@ describe(RULE_NAME, () => { expect(true).toBeDefined(); }); `, - errors: [ - { - messageId: 'maxExpect', - line: 7, - column: 8 - } - ] - }, - { - code: `test('should not pass', () => { + errors: [ + { + messageId: 'maxExpect', + line: 7, + column: 8 + } + ] + }, + { + code: `test('should not pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); @@ -73,38 +69,38 @@ describe(RULE_NAME, () => { expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - errors: [ - { - messageId: 'maxExpect', - line: 7, - column: 7 - }, - { - messageId: 'maxExpect', - line: 15, - column: 7 - } - ] - }, - { - code: `test('should not pass', () => { + errors: [ + { + messageId: 'maxExpect', + line: 7, + column: 7 + }, + { + messageId: 'maxExpect', + line: 15, + column: 7 + } + ] + }, + { + code: `test('should not pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - options: [ - { - max: 1 - } - ], - errors: [ - { - messageId: 'maxExpect', - line: 3, - column: 7 - } - ] - } - ] - }) - }) + options: [ + { + max: 1 + } + ], + errors: [ + { + messageId: 'maxExpect', + line: 3, + column: 7 + } + ] + } + ] + }) + }) }) diff --git a/src/rules/max-expects.test.ts b/src/rules/max-expects.test.ts index 01f9c5d..65b0053 100644 --- a/src/rules/max-expects.test.ts +++ b/src/rules/max-expects.test.ts @@ -1,33 +1,29 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './max-expects' describe(RULE_NAME, () => { - it(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'test(\'should pass\')', - 'test(\'should pass\', () => {})', - 'test.skip(\'should pass\', () => {})', - `test('should pass', () => { + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'test(\'should pass\')', + 'test(\'should pass\', () => {})', + 'test.skip(\'should pass\', () => {})', + `test('should pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - `test('should pass', () => { + `test('should pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - ` test('should pass', async () => { + ` test('should pass', async () => { expect.hasAssertions(); expect(true).toBeDefined(); @@ -36,10 +32,10 @@ describe(RULE_NAME, () => { expect(true).toBeDefined(); expect(true).toEqual(expect.any(Boolean)); });` - ], - invalid: [ - { - code: `test('should not pass', function () { + ], + invalid: [ + { + code: `test('should not pass', function () { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); @@ -48,16 +44,16 @@ describe(RULE_NAME, () => { expect(true).toBeDefined(); }); `, - errors: [ - { - messageId: 'maxExpect', - line: 7, - column: 8 - } - ] - }, - { - code: `test('should not pass', () => { + errors: [ + { + messageId: 'maxExpect', + line: 7, + column: 8 + } + ] + }, + { + code: `test('should not pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); expect(true).toBeDefined(); @@ -73,38 +69,38 @@ describe(RULE_NAME, () => { expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - errors: [ - { - messageId: 'maxExpect', - line: 7, - column: 7 - }, - { - messageId: 'maxExpect', - line: 15, - column: 7 - } - ] - }, - { - code: `test('should not pass', () => { + errors: [ + { + messageId: 'maxExpect', + line: 7, + column: 7 + }, + { + messageId: 'maxExpect', + line: 15, + column: 7 + } + ] + }, + { + code: `test('should not pass', () => { expect(true).toBeDefined(); expect(true).toBeDefined(); });`, - options: [ - { - max: 1 - } - ], - errors: [ - { - messageId: 'maxExpect', - line: 3, - column: 7 - } - ] - } - ] - }) - }) + options: [ + { + max: 1 + } + ], + errors: [ + { + messageId: 'maxExpect', + line: 3, + column: 7 + } + ] + } + ] + }) + }) }) diff --git a/src/rules/max-nested-describe.test.ts b/src/rules/max-nested-describe.test.ts index ecc104c..d925316 100644 --- a/src/rules/max-nested-describe.test.ts +++ b/src/rules/max-nested-describe.test.ts @@ -1,9 +1,9 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './max-nested-describe' const valids = [ - `describe('another suite', () => { + `describe('another suite', () => { describe('another suite', () => { it('skipped test', () => { // Test skipped, as tests are running in Only mode @@ -16,7 +16,7 @@ const valids = [ }) }) })`, - `describe('another suite', () => { + `describe('another suite', () => { describe('another suite', () => { describe('another suite', () => { describe('another suite', () => { @@ -28,7 +28,7 @@ const valids = [ ] const invalids = [ - `describe('another suite', () => { + `describe('another suite', () => { describe('another suite', () => { describe('another suite', () => { describe('another suite', () => { @@ -41,7 +41,7 @@ const invalids = [ }) }) })`, - `describe('another suite', () => { + `describe('another suite', () => { describe('another suite', () => { describe('another suite', () => { describe('another suite', () => { @@ -65,15 +65,12 @@ const invalids = [ ] it('max-nested-describe', () => { - const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - ruleTester.run(RULE_NAME, rule, { - valid: valids, - invalid: invalids.map((i) => ({ - code: i, - output: i, - errors: [{ messageId: 'maxNestedDescribe' }] - })) - }) + ruleTester.run(RULE_NAME, rule, { + valid: valids, + invalid: invalids.map((i) => ({ + code: i, + output: i, + errors: [{ messageId: 'maxNestedDescribe' }] + })) + }) }) diff --git a/src/rules/no-alias-methods.test.ts b/src/rules/no-alias-methods.test.ts index 2a607f1..570fbe5 100644 --- a/src/rules/no-alias-methods.test.ts +++ b/src/rules/no-alias-methods.test.ts @@ -1,76 +1,72 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-alias-methods' describe(RULE_NAME, () => { - it(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'expect(a).toHaveBeenCalled()', - 'expect(a).toHaveBeenCalledTimes()', - 'expect(a).toHaveBeenCalledWith()', - 'expect(a).toHaveBeenLastCalledWith()', - 'expect(a).toHaveBeenNthCalledWith()', - 'expect(a).toHaveReturned()', - 'expect(a).toHaveReturnedTimes()', - 'expect(a).toHaveReturnedWith()', - 'expect(a).toHaveLastReturnedWith()', - 'expect(a).toHaveNthReturnedWith()', - 'expect(a).toThrow()', - 'expect(a).rejects;', - 'expect(a);' - ], - invalid: [ - { - code: 'expect(a).toBeCalled()', - output: 'expect(a).toHaveBeenCalled()', - errors: [ - { - messageId: 'noAliasMethods', - data: { - alias: 'toBeCalled', - canonical: 'toHaveBeenCalled' - }, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).toBeCalledTimes()', - output: 'expect(a).toHaveBeenCalledTimes()', - errors: [ - { - messageId: 'noAliasMethods', - data: { - alias: 'toBeCalledTimes', - canonical: 'toHaveBeenCalledTimes' - }, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).not["toThrowError"]()', - output: 'expect(a).not[\'toThrow\']()', - errors: [ - { - messageId: 'noAliasMethods', - data: { - alias: 'toThrowError', - canonical: 'toThrow' - }, - column: 15, - line: 1 - } - ] - } - ] - }) - }) + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect(a).toHaveBeenCalled()', + 'expect(a).toHaveBeenCalledTimes()', + 'expect(a).toHaveBeenCalledWith()', + 'expect(a).toHaveBeenLastCalledWith()', + 'expect(a).toHaveBeenNthCalledWith()', + 'expect(a).toHaveReturned()', + 'expect(a).toHaveReturnedTimes()', + 'expect(a).toHaveReturnedWith()', + 'expect(a).toHaveLastReturnedWith()', + 'expect(a).toHaveNthReturnedWith()', + 'expect(a).toThrow()', + 'expect(a).rejects;', + 'expect(a);' + ], + invalid: [ + { + code: 'expect(a).toBeCalled()', + output: 'expect(a).toHaveBeenCalled()', + errors: [ + { + messageId: 'noAliasMethods', + data: { + alias: 'toBeCalled', + canonical: 'toHaveBeenCalled' + }, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).toBeCalledTimes()', + output: 'expect(a).toHaveBeenCalledTimes()', + errors: [ + { + messageId: 'noAliasMethods', + data: { + alias: 'toBeCalledTimes', + canonical: 'toHaveBeenCalledTimes' + }, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).not["toThrowError"]()', + output: 'expect(a).not[\'toThrow\']()', + errors: [ + { + messageId: 'noAliasMethods', + data: { + alias: 'toThrowError', + canonical: 'toThrow' + }, + column: 15, + line: 1 + } + ] + } + ] + }) + }) }) diff --git a/src/rules/no-commented-out-tests.test.ts b/src/rules/no-commented-out-tests.test.ts index 8492326..34486f1 100644 --- a/src/rules/no-commented-out-tests.test.ts +++ b/src/rules/no-commented-out-tests.test.ts @@ -1,70 +1,66 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-commented-out-tests' describe(RULE_NAME, () => { - it(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - ruleTester.run(RULE_NAME, rule, { - valid: [ - '// foo("bar", function () {})', - 'describe("foo", function () {})', - 'it("foo", function () {})', - 'describe.only("foo", function () {})', - 'it.only("foo", function () {})', - 'it.concurrent("foo", function () {})', - 'test("foo", function () {})', - 'test.only("foo", function () {})', - 'test.concurrent("foo", function () {})', - 'var appliedSkip = describe.skip; appliedSkip.apply(describe)', - 'var calledSkip = it.skip; calledSkip.call(it)', - '({ f: function () {} }).f()', - '(a || b).f()', - 'itHappensToStartWithIt()', - 'testSomething()', - '// latest(dates)', - '// TODO: unify with Git implementation from Shipit (?)', - '#!/usr/bin/env node' - ], - invalid: [ - { - code: '// describe(\'foo\', function () {})\'', - errors: [ - { - messageId: 'noCommentedOutTests' - } - ] - }, - { - code: '// test.concurrent("foo", function () {})', - errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] - }, - { - code: '// test["skip"]("foo", function () {})', - errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] - }, - { - code: '// xdescribe("foo", function () {})', - errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] - }, - { - code: '// xit("foo", function () {})', - errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] - }, - { - code: '// fit("foo", function () {})', - errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] - }, - { - code: ` // test( + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + '// foo("bar", function () {})', + 'describe("foo", function () {})', + 'it("foo", function () {})', + 'describe.only("foo", function () {})', + 'it.only("foo", function () {})', + 'it.concurrent("foo", function () {})', + 'test("foo", function () {})', + 'test.only("foo", function () {})', + 'test.concurrent("foo", function () {})', + 'var appliedSkip = describe.skip; appliedSkip.apply(describe)', + 'var calledSkip = it.skip; calledSkip.call(it)', + '({ f: function () {} }).f()', + '(a || b).f()', + 'itHappensToStartWithIt()', + 'testSomething()', + '// latest(dates)', + '// TODO: unify with Git implementation from Shipit (?)', + '#!/usr/bin/env node' + ], + invalid: [ + { + code: '// describe(\'foo\', function () {})\'', + errors: [ + { + messageId: 'noCommentedOutTests' + } + ] + }, + { + code: '// test.concurrent("foo", function () {})', + errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] + }, + { + code: '// test["skip"]("foo", function () {})', + errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] + }, + { + code: '// xdescribe("foo", function () {})', + errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] + }, + { + code: '// xit("foo", function () {})', + errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] + }, + { + code: '// fit("foo", function () {})', + errors: [{ messageId: 'noCommentedOutTests', column: 1, line: 1 }] + }, + { + code: ` // test( // "foo", function () {} // )`, - errors: [{ messageId: 'noCommentedOutTests', column: 2, line: 1 }] - } - ] - }) - }) + errors: [{ messageId: 'noCommentedOutTests', column: 2, line: 1 }] + } + ] + }) + }) }) diff --git a/src/rules/no-conditional-expect.test.ts b/src/rules/no-conditional-expect.test.ts index c811d49..47985b7 100644 --- a/src/rules/no-conditional-expect.test.ts +++ b/src/rules/no-conditional-expect.test.ts @@ -1,37 +1,33 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-conditional-expect' describe(RULE_NAME, () => { - it(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - ruleTester.run(`${RULE_NAME}-common tests`, rule, { - valid: [ - ` + it(RULE_NAME, () => { + ruleTester.run(`${RULE_NAME}-common tests`, rule, { + valid: [ + ` it('foo', () => { expect(1).toBe(2); }); `, - ` + ` it('foo', () => { expect(!true).toBe(false); }); ` - ], - invalid: [] - }) + ], + invalid: [] + }) - ruleTester.run(`${RULE_NAME}-logical conditions`, rule, { - valid: [ - `it('foo', () => { + ruleTester.run(`${RULE_NAME}-logical conditions`, rule, { + valid: [ + `it('foo', () => { process.env.FAIL && setNum(1); expect(num).toBe(2); });`, - ` + ` function getValue() { let num = 2; @@ -44,7 +40,7 @@ describe(RULE_NAME, () => { expect(getValue()).toBe(2); }); `, - ` + ` function getValue() { let num = 2; @@ -57,67 +53,67 @@ describe(RULE_NAME, () => { expect(getValue()).toBe(2); }); ` - ], - invalid: [ - { - code: ` it('foo', () => { + ], + invalid: [ + { + code: ` it('foo', () => { something && expect(something).toHaveBeenCalled(); })`, - errors: [ - { - messageId: 'noConditionalExpect' - } - ] - }, - { - code: ` it('foo', () => { + errors: [ + { + messageId: 'noConditionalExpect' + } + ] + }, + { + code: ` it('foo', () => { a || (b && expect(something).toHaveBeenCalled()); })`, - errors: [ - { - messageId: 'noConditionalExpect' - } - ] - }, - { - code: ` + errors: [ + { + messageId: 'noConditionalExpect' + } + ] + }, + { + code: ` it.each\`\`('foo', () => { something || expect(something).toHaveBeenCalled(); }) `, - errors: [{ messageId: 'noConditionalExpect' }] - }, - { - code: ` + errors: [{ messageId: 'noConditionalExpect' }] + }, + { + code: ` it.each()('foo', () => { something || expect(something).toHaveBeenCalled(); }) `, - errors: [{ messageId: 'noConditionalExpect' }] - }, - { - code: ` + errors: [{ messageId: 'noConditionalExpect' }] + }, + { + code: ` function getValue() { something || expect(something).toHaveBeenCalled(); } it('foo', getValue); `, - errors: [{ messageId: 'noConditionalExpect' }] - } - ] - }) + errors: [{ messageId: 'noConditionalExpect' }] + } + ] + }) - ruleTester.run(`${RULE_NAME}-conditional conditions`, rule, { - valid: [ - ` + ruleTester.run(`${RULE_NAME}-conditional conditions`, rule, { + valid: [ + ` it('foo', () => { const num = process.env.FAIL ? 1 : 2; expect(num).toBe(2); }); `, - ` + ` function getValue() { return process.env.FAIL ? 1 : 2 } @@ -126,35 +122,35 @@ describe(RULE_NAME, () => { expect(getValue()).toBe(2); }); ` - ], - invalid: [ - { - code: ` + ], + invalid: [ + { + code: ` it('foo', () => { something ? expect(something).toHaveBeenCalled() : noop(); }) `, - errors: [{ messageId: 'noConditionalExpect' }] - }, - { - code: ` + errors: [{ messageId: 'noConditionalExpect' }] + }, + { + code: ` function getValue() { something ? expect(something).toHaveBeenCalled() : noop(); } it('foo', getValue); `, - errors: [{ messageId: 'noConditionalExpect' }] - }, - { - code: ` + errors: [{ messageId: 'noConditionalExpect' }] + }, + { + code: ` it('foo', () => { something ? noop() : expect(something).toHaveBeenCalled(); }) `, - errors: [{ messageId: 'noConditionalExpect' }] - } - ] - }) - }) + errors: [{ messageId: 'noConditionalExpect' }] + } + ] + }) + }) }) diff --git a/src/rules/no-conditional-in-test.test.ts b/src/rules/no-conditional-in-test.test.ts index 6235234..8337695 100644 --- a/src/rules/no-conditional-in-test.test.ts +++ b/src/rules/no-conditional-in-test.test.ts @@ -1,54 +1,50 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-conditional-tests' describe(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - it('conditional expressions', () => { - ruleTester.run(`${RULE_NAME}-conditional expressions`, rule, { - valid: [ - 'const x = y ? 1 : 0', - `const foo = function (bar) { + it('conditional expressions', () => { + ruleTester.run(`${RULE_NAME}-conditional expressions`, rule, { + valid: [ + 'const x = y ? 1 : 0', + `const foo = function (bar) { return foo ? bar : null; }; it('foo', () => { foo(); });`, - `it.concurrent('foo', () => { + `it.concurrent('foo', () => { switch('bar') {} })` - ], - invalid: [ - { - code: `it('foo', function () { + ], + invalid: [ + { + code: `it('foo', function () { const foo = function (bar) { return foo ? bar : null; }; });`, - errors: [ - { - messageId: 'noConditionalTests' - } - ] - } - ] - }) - }) + errors: [ + { + messageId: 'noConditionalTests' + } + ] + } + ] + }) + }) - it('switch statements', () => { - ruleTester.run(`${RULE_NAME}-switch statements`, rule, { - valid: [ - 'it(\'foo\', () => {})', - `switch (true) { + it('switch statements', () => { + ruleTester.run(`${RULE_NAME}-switch statements`, rule, { + valid: [ + 'it(\'foo\', () => {})', + `switch (true) { case true: {} }`, - `describe('foo', () => { + `describe('foo', () => { switch('bar') {} })`, - `const values = something.map(thing => { + `const values = something.map(thing => { switch (thing.isFoo) { case true: return thing.foo; @@ -60,10 +56,10 @@ describe(RULE_NAME, () => { it('valid', () => { expect(values).toStrictEqual(['foo']); });` - ], - invalid: [ - { - code: `it('is invalid', () => { + ], + invalid: [ + { + code: `it('is invalid', () => { const values = something.map(thing => { switch (thing.isFoo) { case true: @@ -75,30 +71,30 @@ describe(RULE_NAME, () => { expect(values).toStrictEqual(['foo']); });`, - errors: [ - { - messageId: 'noConditionalTests', - column: 9, - line: 3 - } - ] - }, - { - code: `it('foo', () => { + errors: [ + { + messageId: 'noConditionalTests', + column: 9, + line: 3 + } + ] + }, + { + code: `it('foo', () => { switch (true) { case true: {} } })`, - errors: [ - { - messageId: 'noConditionalTests', - column: 7, - line: 2 - } - ] - }, - { - code: `describe('foo', () => { + errors: [ + { + messageId: 'noConditionalTests', + column: 7, + line: 2 + } + ] + }, + { + code: `describe('foo', () => { it('bar', () => { switch('bar') {} }) @@ -107,26 +103,26 @@ describe(RULE_NAME, () => { switch('quux') {} }) })`, - errors: [ - { - messageId: 'noConditionalTests', - column: 9, - line: 3 - }, - { - messageId: 'noConditionalTests', - column: 9, - line: 6 - }, - { - messageId: 'noConditionalTests', - column: 9, - line: 7 - } - ] - }, - { - code: `describe('valid', () => { + errors: [ + { + messageId: 'noConditionalTests', + column: 9, + line: 3 + }, + { + messageId: 'noConditionalTests', + column: 9, + line: 6 + }, + { + messageId: 'noConditionalTests', + column: 9, + line: 7 + } + ] + }, + { + code: `describe('valid', () => { describe('still valid', () => { it('is not valid', () => { const values = something.map((thing) => { @@ -145,36 +141,36 @@ describe(RULE_NAME, () => { }); }); });`, - errors: [ - { - messageId: 'noConditionalTests', - column: 10, - line: 5 - }, - { - messageId: 'noConditionalTests', - column: 8, - line: 13 - } - ] - } - ] - }) - }) + errors: [ + { + messageId: 'noConditionalTests', + column: 10, + line: 5 + }, + { + messageId: 'noConditionalTests', + column: 8, + line: 13 + } + ] + } + ] + }) + }) - it('if statements', () => { - ruleTester.run(`${RULE_NAME}-if statements`, rule, { - valid: [ - 'if (foo) {}', - 'it(\'foo\', () => {})', - 'it("foo", function () {})', - 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }', - `describe.each\`\`('foo', () => { + it('if statements', () => { + ruleTester.run(`${RULE_NAME}-if statements`, rule, { + valid: [ + 'if (foo) {}', + 'it(\'foo\', () => {})', + 'it("foo", function () {})', + 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }', + `describe.each\`\`('foo', () => { afterEach(() => { if ('bar') {} }); })`, - `const values = something.map((thing) => { + `const values = something.map((thing) => { if (thing.isFoo) { return thing.foo } else { @@ -187,10 +183,10 @@ describe(RULE_NAME, () => { expect(values).toStrictEqual(['foo']); }); });` - ], - invalid: [ - { - code: `it('foo', () => { + ], + invalid: [ + { + code: `it('foo', () => { const foo = function(bar) { if (bar) { return 1; @@ -199,16 +195,16 @@ describe(RULE_NAME, () => { } }; });`, - errors: [ - { - messageId: 'noConditionalTests', - column: 9, - line: 3 - } - ] - }, - { - code: ` describe('foo', () => { + errors: [ + { + messageId: 'noConditionalTests', + column: 9, + line: 3 + } + ] + }, + { + code: ` describe('foo', () => { it('bar', () => { if ('bar') {} }) @@ -217,14 +213,14 @@ describe(RULE_NAME, () => { if ('quux') {} }) })`, - errors: [ - { messageId: 'noConditionalTests', column: 9, line: 3 }, - { messageId: 'noConditionalTests', column: 9, line: 6 }, - { messageId: 'noConditionalTests', column: 9, line: 7 } - ] - }, - { - code: `test("shows error", () => { + errors: [ + { messageId: 'noConditionalTests', column: 9, line: 3 }, + { messageId: 'noConditionalTests', column: 9, line: 6 }, + { messageId: 'noConditionalTests', column: 9, line: 7 } + ] + }, + { + code: `test("shows error", () => { if (1 === 2) { expect(true).toBe(false); } @@ -236,12 +232,12 @@ describe(RULE_NAME, () => { expect(true).toBe(false); } });`, - errors: [ - { messageId: 'noConditionalTests', column: 7, line: 2 }, - { messageId: 'noConditionalTests', column: 7, line: 9 } - ] - } - ] - }) - }) + errors: [ + { messageId: 'noConditionalTests', column: 7, line: 2 }, + { messageId: 'noConditionalTests', column: 7, line: 9 } + ] + } + ] + }) + }) }) diff --git a/src/rules/no-conditional-tests.test.ts b/src/rules/no-conditional-tests.test.ts index 124efaf..855c615 100644 --- a/src/rules/no-conditional-tests.test.ts +++ b/src/rules/no-conditional-tests.test.ts @@ -1,19 +1,15 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { it, describe } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-conditional-tests' describe(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - it('if statements', () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'test("shows error", () => {});', - 'it("foo", function () {})', - 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }', - `function myFunc(str: string) { + it('if statements', () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'test("shows error", () => {});', + 'it("foo", function () {})', + 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }', + `function myFunc(str: string) { return str; } @@ -24,81 +20,81 @@ describe(RULE_NAME, () => { ).toEqual("5"); }); });` - ], - invalid: [ - { - code: `test("shows error", () => { + ], + invalid: [ + { + code: `test("shows error", () => { if (1 === 2) { expect(true).toBe(false); } });`, - output: `test("shows error", () => { + output: `test("shows error", () => { if (1 === 2) { expect(true).toBe(false); } });`, - errors: [{ messageId: 'noConditionalTests' }] - }, - { - code: `it("foo", function () { + errors: [{ messageId: 'noConditionalTests' }] + }, + { + code: `it("foo", function () { if (1 === 2) { expect(true).toBe(false); } })`, - output: `it("foo", function () { + output: `it("foo", function () { if (1 === 2) { expect(true).toBe(false); } })`, - errors: [{ messageId: 'noConditionalTests' }] - } - ] - }) - }) + errors: [{ messageId: 'noConditionalTests' }] + } + ] + }) + }) - it('ternary statements', () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'test("shows error", () => {});', - 'it("foo", function () {})', - 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }' - ], - invalid: [ - { - code: `test("shows error", () => { + it('ternary statements', () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'test("shows error", () => {});', + 'it("foo", function () {})', + 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }' + ], + invalid: [ + { + code: `test("shows error", () => { const foo = true ? 'foo' : 'bar'; expect(foo).toBe('foo'); });`, - output: `test("shows error", () => { + output: `test("shows error", () => { const foo = true ? 'foo' : 'bar'; expect(foo).toBe('foo'); });`, - errors: [{ messageId: 'noConditionalTests' }] - }, - { - code: `it("foo", function () { + errors: [{ messageId: 'noConditionalTests' }] + }, + { + code: `it("foo", function () { const foo = true ? 'foo' : 'bar'; expect(foo).toBe('foo'); })`, - output: `it("foo", function () { + output: `it("foo", function () { const foo = true ? 'foo' : 'bar'; expect(foo).toBe('foo'); })`, - errors: [{ messageId: 'noConditionalTests' }] - } - ] - }) + errors: [{ messageId: 'noConditionalTests' }] + } + ] + }) - it('switch statements', () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'test("shows error", () => {});', - 'it("foo", function () {})', - 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }' - ], - invalid: [ - { - code: `test("shows error", () => { + it('switch statements', () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'test("shows error", () => {});', + 'it("foo", function () {})', + 'it(\'foo\', () => {}); function myTest() { if (\'bar\') {} }' + ], + invalid: [ + { + code: `test("shows error", () => { switch (1) { case 1: expect(true).toBe(false); @@ -107,7 +103,7 @@ describe(RULE_NAME, () => { expect(true).toBe(false); } });`, - output: `test("shows error", () => { + output: `test("shows error", () => { switch (1) { case 1: expect(true).toBe(false); @@ -116,10 +112,10 @@ describe(RULE_NAME, () => { expect(true).toBe(false); } });`, - errors: [{ messageId: 'noConditionalTests' }] - }, - { - code: `it("foo", function () { + errors: [{ messageId: 'noConditionalTests' }] + }, + { + code: `it("foo", function () { switch (1) { case 1: expect(true).toBe(false); @@ -128,7 +124,7 @@ describe(RULE_NAME, () => { expect(true).toBe(false); } })`, - output: `it("foo", function () { + output: `it("foo", function () { switch (1) { case 1: expect(true).toBe(false); @@ -137,10 +133,10 @@ describe(RULE_NAME, () => { expect(true).toBe(false); } })`, - errors: [{ messageId: 'noConditionalTests' }] - } - ] - }) - }) - }) + errors: [{ messageId: 'noConditionalTests' }] + } + ] + }) + }) + }) }) diff --git a/src/rules/no-done-callback.test.ts b/src/rules/no-done-callback.test.ts index 13b471c..89ceb27 100644 --- a/src/rules/no-done-callback.test.ts +++ b/src/rules/no-done-callback.test.ts @@ -1,116 +1,115 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-done-callback' describe(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - it(RULE_NAME, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'test("something", () => {})', - 'test("something", async () => {})', - 'test("something", function() {})', - 'test.each``("something", ({ a, b }) => {})', - 'test.each()("something", ({ a, b }) => {})', - 'it.each()("something", ({ a, b }) => {})', - 'it.each([])("something", (a, b) => {})', - 'it.each``("something", ({ a, b }) => {})', - 'it.each([])("something", (a, b) => { a(); b(); })', - 'it.each``("something", ({ a, b }) => { a(); b(); })', - 'test("something", async function () {})', - 'test("something", someArg)', - 'beforeEach(() => {})', - 'beforeAll(async () => {})', - 'afterAll(() => {})', - 'afterAll(async function () {})', - 'afterAll(async function () {}, 5)' - ], - invalid: [ - { - code: 'test("something", (...args) => {args[0]();})', - errors: [ - { messageId: 'noDoneCallback', line: 1, column: 20 } - ] - }, - { - code: 'test("something", done => {done();})', - errors: [ - { - messageId: 'noDoneCallback', - line: 1, - column: 1, - suggestions: [ - { - messageId: 'suggestWrappingInPromise', - data: { callback: 'done' }, - output: 'test("something", () => {return new Promise(done => {done();})})' - } - ] - } - ] - }, - { - code: 'test("something", finished => {finished();})', - errors: [ - { - messageId: 'noDoneCallback', - line: 1, - column: 1, - suggestions: [ - { - messageId: 'suggestWrappingInPromise', - data: { callback: 'finished' }, - output: - 'test("something", () => {return new Promise(finished => {finished();})})' - } - ] - } - ] - }, - { - code: 'beforeAll(async done => {done();})', - errors: [{ messageId: 'useAwaitInsteadOfCallback', line: 1, column: 17 }] - }, - { - code: 'beforeEach((done) => {done();});', - errors: [ - { - messageId: 'noDoneCallback', - line: 1, - column: 1, - suggestions: [ - { - messageId: 'suggestWrappingInPromise', - data: { callback: 'done' }, - output: 'beforeEach(() => {return new Promise(done => {done();})});' - }] - } - ] - }, - { - code: 'test.each``("something", ({ a, b }, done) => { done(); })', - errors: [ - { - messageId: 'noDoneCallback', - line: 1, - column: 1 - } - ] - }, - { - code: 'it.each``("something", ({ a, b }, done) => { done(); })', - errors: [ - { - messageId: 'noDoneCallback', - line: 1, - column: 1 - } - ] - } - ] - }) - }) + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'test("something", () => {})', + 'test("something", async () => {})', + 'test("something", function() {})', + 'test.each``("something", ({ a, b }) => {})', + 'test.each()("something", ({ a, b }) => {})', + 'it.each()("something", ({ a, b }) => {})', + 'it.each([])("something", (a, b) => {})', + 'it.each``("something", ({ a, b }) => {})', + 'it.each([])("something", (a, b) => { a(); b(); })', + 'it.each``("something", ({ a, b }) => { a(); b(); })', + 'test("something", async function () {})', + 'test("something", someArg)', + 'beforeEach(() => {})', + 'beforeAll(async () => {})', + 'afterAll(() => {})', + 'afterAll(async function () {})', + 'afterAll(async function () {}, 5)' + ], + invalid: [ + { + code: 'test("something", (...args) => {args[0]();})', + errors: [{ messageId: 'noDoneCallback', line: 1, column: 20 }] + }, + { + code: 'test("something", done => {done();})', + errors: [ + { + messageId: 'noDoneCallback', + line: 1, + column: 1, + suggestions: [ + { + messageId: 'suggestWrappingInPromise', + data: { callback: 'done' }, + output: + 'test("something", () => {return new Promise(done => {done();})})' + } + ] + } + ] + }, + { + code: 'test("something", finished => {finished();})', + errors: [ + { + messageId: 'noDoneCallback', + line: 1, + column: 1, + suggestions: [ + { + messageId: 'suggestWrappingInPromise', + data: { callback: 'finished' }, + output: + 'test("something", () => {return new Promise(finished => {finished();})})' + } + ] + } + ] + }, + { + code: 'beforeAll(async done => {done();})', + errors: [ + { messageId: 'useAwaitInsteadOfCallback', line: 1, column: 17 } + ] + }, + { + code: 'beforeEach((done) => {done();});', + errors: [ + { + messageId: 'noDoneCallback', + line: 1, + column: 1, + suggestions: [ + { + messageId: 'suggestWrappingInPromise', + data: { callback: 'done' }, + output: + 'beforeEach(() => {return new Promise(done => {done();})});' + } + ] + } + ] + }, + { + code: 'test.each``("something", ({ a, b }, done) => { done(); })', + errors: [ + { + messageId: 'noDoneCallback', + line: 1, + column: 1 + } + ] + }, + { + code: 'it.each``("something", ({ a, b }, done) => { done(); })', + errors: [ + { + messageId: 'noDoneCallback', + line: 1, + column: 1 + } + ] + } + ] + }) + }) }) diff --git a/src/rules/no-duplicate-hooks.test.ts b/src/rules/no-duplicate-hooks.test.ts index d4b5668..82a05c7 100644 --- a/src/rules/no-duplicate-hooks.test.ts +++ b/src/rules/no-duplicate-hooks.test.ts @@ -1,29 +1,22 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-duplicate-hooks' -const ruleTester = new RuleTester({ - parser: require('@typescript-eslint/parser'), - parserOptions: { - ecmaVersion: 2015 - } -}) - describe(RULE_NAME, () => { - it(`${RULE_NAME} - single describe block`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - `describe("foo", () => { + it(`${RULE_NAME} - single describe block`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + `describe("foo", () => { beforeEach(() => {}) test("bar", () => { someFn(); }) })`, - `beforeEach(() => {}) + `beforeEach(() => {}) test("bar", () => { someFn(); })`, - `describe("foo", () => { + `describe("foo", () => { beforeAll(() => {}), beforeEach(() => {}) afterEach(() => {}) @@ -33,27 +26,27 @@ describe(RULE_NAME, () => { someFn(); }) })` - ], - invalid: [ - { - code: `describe("foo", () => { + ], + invalid: [ + { + code: `describe("foo", () => { beforeEach(() => {}), beforeEach(() => {}), test("bar", () => { someFn(); }) })`, - errors: [ - { - messageId: 'noDuplicateHooks', - data: { hook: 'beforeEach' }, - column: 7, - line: 3 - } - ] - }, - { - code: ` + errors: [ + { + messageId: 'noDuplicateHooks', + data: { hook: 'beforeEach' }, + column: 7, + line: 3 + } + ] + }, + { + code: ` describe.skip("foo", () => { afterEach(() => {}), afterEach(() => {}), @@ -62,23 +55,23 @@ describe(RULE_NAME, () => { }) }) `, - errors: [ - { - messageId: 'noDuplicateHooks', - data: { hook: 'afterEach' }, - column: 7, - line: 4 - } - ] - } - ] - }) - }) + errors: [ + { + messageId: 'noDuplicateHooks', + data: { hook: 'afterEach' }, + column: 7, + line: 4 + } + ] + } + ] + }) + }) - it(`${RULE_NAME} - multiple describe blocks`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - `describe.skip("foo", () => { + it(`${RULE_NAME} - multiple describe blocks`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + `describe.skip("foo", () => { beforeEach(() => {}), beforeAll(() => {}), test("bar", () => { @@ -91,10 +84,11 @@ describe(RULE_NAME, () => { test("bar", () => { someFn(); }) - })`], - invalid: [ - { - code: `describe.skip("foo", () => { + })` + ], + invalid: [ + { + code: `describe.skip("foo", () => { beforeEach(() => {}), beforeAll(() => {}), test("bar", () => { @@ -109,23 +103,23 @@ describe(RULE_NAME, () => { someFn(); }) })`, - errors: [ - { - messageId: 'noDuplicateHooks', - data: { hook: 'beforeEach' }, - column: 7, - line: 10 - } - ] - } - ] - }) - }) + errors: [ + { + messageId: 'noDuplicateHooks', + data: { hook: 'beforeEach' }, + column: 7, + line: 10 + } + ] + } + ] + }) + }) - it(`${RULE_NAME} - nested describe blocks`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - ` describe("foo", () => { + it(`${RULE_NAME} - nested describe blocks`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + ` describe("foo", () => { beforeEach(() => {}), test("bar", () => { someFn(); @@ -137,10 +131,10 @@ describe(RULE_NAME, () => { }) }) })` - ], - invalid: [ - { - code: `describe.skip("foo", () => { + ], + invalid: [ + { + code: `describe.skip("foo", () => { beforeEach(() => {}), beforeAll(() => {}), test("bar", () => { @@ -155,52 +149,52 @@ describe(RULE_NAME, () => { someFn(); }) })`, - errors: [ - { - messageId: 'noDuplicateHooks', - data: { hook: 'beforeEach' }, - column: 7, - line: 10 - } - ] - } - ] - }) - }) + errors: [ + { + messageId: 'noDuplicateHooks', + data: { hook: 'beforeEach' }, + column: 7, + line: 10 + } + ] + } + ] + }) + }) - it(`${RULE_NAME} - describe.each blocks`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - ` describe.each(['hello'])('%s', () => { + it(`${RULE_NAME} - describe.each blocks`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + ` describe.each(['hello'])('%s', () => { beforeEach(() => {}); it('is fine', () => {}); });`, - `describe.each(['hello'])('%s', () => { + `describe.each(['hello'])('%s', () => { beforeEach(() => {}); it('is fine', () => {}); });` - ], - invalid: [ - { - code: `describe.each(['hello'])('%s', () => { + ], + invalid: [ + { + code: `describe.each(['hello'])('%s', () => { beforeEach(() => {}); beforeEach(() => {}); it('is not fine', () => {}); });`, - errors: [ - { - messageId: 'noDuplicateHooks', - data: { hook: 'beforeEach' }, - column: 7, - line: 3 - } - ] - }, - { - code: ` describe('something', () => { + errors: [ + { + messageId: 'noDuplicateHooks', + data: { hook: 'beforeEach' }, + column: 7, + line: 3 + } + ] + }, + { + code: ` describe('something', () => { describe.each(['hello'])('%s', () => { beforeEach(() => {}); @@ -214,16 +208,16 @@ describe(RULE_NAME, () => { it('is not fine', () => {}); }); });`, - errors: [ - { - messageId: 'noDuplicateHooks', - data: { hook: 'beforeEach' }, - column: 9, - line: 10 - } - ] - } - ] - }) - }) + errors: [ + { + messageId: 'noDuplicateHooks', + data: { hook: 'beforeEach' }, + column: 9, + line: 10 + } + ] + } + ] + }) + }) }) diff --git a/src/rules/no-focused-tests.test.ts b/src/rules/no-focused-tests.test.ts index d596a4a..775aaea 100644 --- a/src/rules/no-focused-tests.test.ts +++ b/src/rules/no-focused-tests.test.ts @@ -1,68 +1,64 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-focused-tests' it(RULE_NAME, () => { - const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) + ruleTester.run(RULE_NAME, rule, { + valid: ['it("test", () => {});', 'describe("test group", () => {});'], - ruleTester.run(RULE_NAME, rule, { - valid: ['it("test", () => {});', 'describe("test group", () => {});'], - - invalid: [ - { - code: 'it.only("test", () => {});', - errors: [ - { - column: 4, - endColumn: 8, - endLine: 1, - line: 1, - messageId: 'noFocusedTests' - } - ], - output: 'it.only("test", () => {});' - }, - { - code: 'describe.only("test", () => {});', - errors: [ - { - column: 10, - endColumn: 14, - endLine: 1, - line: 1, - messageId: 'noFocusedTests' - } - ], - output: 'describe.only("test", () => {});' - }, - { - code: 'test.only("test", () => {});', - errors: [ - { - column: 6, - endColumn: 10, - endLine: 1, - line: 1, - messageId: 'noFocusedTests' - } - ], - output: 'test.only("test", () => {});' - }, - { - code: 'it.only.each([])("test", () => {});', - errors: [ - { - column: 4, - endColumn: 8, - endLine: 1, - line: 1, - messageId: 'noFocusedTests' - } - ], - output: 'it.only.each([])("test", () => {});' - } - ] - }) + invalid: [ + { + code: 'it.only("test", () => {});', + errors: [ + { + column: 4, + endColumn: 8, + endLine: 1, + line: 1, + messageId: 'noFocusedTests' + } + ], + output: 'it.only("test", () => {});' + }, + { + code: 'describe.only("test", () => {});', + errors: [ + { + column: 10, + endColumn: 14, + endLine: 1, + line: 1, + messageId: 'noFocusedTests' + } + ], + output: 'describe.only("test", () => {});' + }, + { + code: 'test.only("test", () => {});', + errors: [ + { + column: 6, + endColumn: 10, + endLine: 1, + line: 1, + messageId: 'noFocusedTests' + } + ], + output: 'test.only("test", () => {});' + }, + { + code: 'it.only.each([])("test", () => {});', + errors: [ + { + column: 4, + endColumn: 8, + endLine: 1, + line: 1, + messageId: 'noFocusedTests' + } + ], + output: 'it.only.each([])("test", () => {});' + } + ] + }) }) diff --git a/src/rules/no-hooks.test.ts b/src/rules/no-hooks.test.ts index ea68643..d2c3ad7 100644 --- a/src/rules/no-hooks.test.ts +++ b/src/rules/no-hooks.test.ts @@ -1,69 +1,82 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { it } from 'vitest' import { HookName } from '../utils/types' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-hooks' it(RULE_NAME, () => { - const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'test("foo")', - 'describe("foo", () => { it("bar") })', - 'test("foo", () => { expect(subject.beforeEach()).toBe(true) })', - { - code: 'afterEach(() => {}); afterAll(() => {});', - options: [{ allow: [HookName.afterEach, HookName.afterAll] }] - }, - { code: 'test("foo")', options: [{ allow: undefined }] } - ], - invalid: [ - { - code: 'beforeAll(() => {})', - errors: [ - { messageId: 'unexpectedHook', data: { hookName: HookName.beforeAll } } - ] - }, - { - code: 'beforeEach(() => {})', - errors: [ - { messageId: 'unexpectedHook', data: { hookName: HookName.beforeEach } } - ] - }, - { - code: 'afterAll(() => {})', - errors: [ - { messageId: 'unexpectedHook', data: { hookName: HookName.afterAll } } - ] - }, - { - code: 'afterEach(() => {})', - errors: [ - { messageId: 'unexpectedHook', data: { hookName: HookName.afterEach } } - ] - }, - { - code: 'beforeEach(() => {}); afterEach(() => { vi.resetModules() });', - options: [{ allow: [HookName.afterEach] }], - errors: [{ - messageId: 'unexpectedHook', - data: { hookName: HookName.beforeEach } - }] - }, - { - code: ` + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'test("foo")', + 'describe("foo", () => { it("bar") })', + 'test("foo", () => { expect(subject.beforeEach()).toBe(true) })', + { + code: 'afterEach(() => {}); afterAll(() => {});', + options: [{ allow: [HookName.afterEach, HookName.afterAll] }] + }, + { code: 'test("foo")', options: [{ allow: undefined }] } + ], + invalid: [ + { + code: 'beforeAll(() => {})', + errors: [ + { + messageId: 'unexpectedHook', + data: { hookName: HookName.beforeAll } + } + ] + }, + { + code: 'beforeEach(() => {})', + errors: [ + { + messageId: 'unexpectedHook', + data: { hookName: HookName.beforeEach } + } + ] + }, + { + code: 'afterAll(() => {})', + errors: [ + { + messageId: 'unexpectedHook', + data: { hookName: HookName.afterAll } + } + ] + }, + { + code: 'afterEach(() => {})', + errors: [ + { + messageId: 'unexpectedHook', + data: { hookName: HookName.afterEach } + } + ] + }, + { + code: 'beforeEach(() => {}); afterEach(() => { vi.resetModules() });', + options: [{ allow: [HookName.afterEach] }], + errors: [ + { + messageId: 'unexpectedHook', + data: { hookName: HookName.beforeEach } + } + ] + }, + { + code: ` import { beforeEach as afterEach, afterEach as beforeEach, vi } from 'vitest'; afterEach(() => {}); beforeEach(() => { vi.resetModules() }); `, - options: [{ allow: [HookName.afterEach] }], - parserOptions: { sourceType: 'module' }, - errors: [{ - messageId: 'unexpectedHook', - data: { hookName: HookName.beforeEach } - }] - } - ] - }) + options: [{ allow: [HookName.afterEach] }], + parserOptions: { sourceType: 'module' }, + errors: [ + { + messageId: 'unexpectedHook', + data: { hookName: HookName.beforeEach } + } + ] + } + ] + }) }) diff --git a/src/rules/no-identical-title.test.ts b/src/rules/no-identical-title.test.ts index 3399e70..452d933 100644 --- a/src/rules/no-identical-title.test.ts +++ b/src/rules/no-identical-title.test.ts @@ -1,32 +1,27 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' -import { it } from 'vitest' +import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-identical-title' -it('no identical title', () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'it(); it();', - 'test("two", () => {});' - ], - invalid: [ +describe(RULE_NAME, () => { + it('no identical title', () => { + ruleTester.run(RULE_NAME, rule, { + valid: ['it(); it();', 'test("two", () => {});'], + invalid: [ { code: `describe('foo', () => { - it('works', () => {}); - it('works', () => {}); - });`, + it('works', () => {}); + it('works', () => {}); + });`, errors: [{ messageId: 'multipleTestTitle' }] }, { code: `xdescribe('foo', () => { - it('works', () => {}); - it('works', () => {}); - });`, + it('works', () => {}); + it('works', () => {}); + });`, errors: [{ messageId: 'multipleTestTitle' }] } ] + }) }) }) diff --git a/src/rules/no-interpolation-in-snapshots.test.ts b/src/rules/no-interpolation-in-snapshots.test.ts index 9850eef..46ffd26 100644 --- a/src/rules/no-interpolation-in-snapshots.test.ts +++ b/src/rules/no-interpolation-in-snapshots.test.ts @@ -1,78 +1,75 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-interpolation-in-snapshots' describe(RULE_NAME, () => { - const tester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - it(RULE_NAME, () => { - tester.run(RULE_NAME, rule, { - valid: [ - 'expect("something").toEqual("else");', - 'expect(something).toMatchInlineSnapshot();', - 'expect(something).toMatchInlineSnapshot(`No interpolation`);', - 'expect(something).toMatchInlineSnapshot({}, `No interpolation`);', - 'expect(something);', - 'expect(something).not;', - 'expect.toHaveAssertions();', - // eslint-disable-next-line no-template-curly-in-string - 'myObjectWants.toMatchInlineSnapshot({}, `${interpolated}`);', - // eslint-disable-next-line no-template-curly-in-string - 'myObjectWants.toMatchInlineSnapshot({}, `${interpolated1} ${interpolated2}`);', - // eslint-disable-next-line no-template-curly-in-string - 'toMatchInlineSnapshot({}, `${interpolated}`);', - // eslint-disable-next-line no-template-curly-in-string - 'toMatchInlineSnapshot({}, `${interpolated1} ${interpolated2}`);', - 'expect(something).toThrowErrorMatchingInlineSnapshot();', - 'expect(something).toThrowErrorMatchingInlineSnapshot(`No interpolation`);' - ], - invalid: [ - { - // eslint-disable-next-line no-template-curly-in-string - code: 'expect(something).toMatchInlineSnapshot(`${interpolated}`);', - errors: [ - { - messageId: 'noInterpolationInSnapshots', - column: 41, - line: 1 - } - ] - }, - { - // eslint-disable-next-line no-template-curly-in-string - code: 'expect(something).not.toMatchInlineSnapshot(`${interpolated}`);', - errors: [ - { - messageId: 'noInterpolationInSnapshots', - column: 45, - line: 1 - } - ] - }, { - // eslint-disable-next-line no-template-curly-in-string - code: 'expect(something).toThrowErrorMatchingInlineSnapshot(`${interpolated}`);', - errors: [ - { - endColumn: 71, - column: 54, - messageId: 'noInterpolationInSnapshots' - } - ] - }, - { - // eslint-disable-next-line no-template-curly-in-string - code: 'expect(something).not.toThrowErrorMatchingInlineSnapshot(`${interpolated}`);', - errors: [ - { - endColumn: 75, - column: 58, - messageId: 'noInterpolationInSnapshots' - } - ] - } - ] - }) - }) + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect("something").toEqual("else");', + 'expect(something).toMatchInlineSnapshot();', + 'expect(something).toMatchInlineSnapshot(`No interpolation`);', + 'expect(something).toMatchInlineSnapshot({}, `No interpolation`);', + 'expect(something);', + 'expect(something).not;', + 'expect.toHaveAssertions();', + // eslint-disable-next-line no-template-curly-in-string + 'myObjectWants.toMatchInlineSnapshot({}, `${interpolated}`);', + // eslint-disable-next-line no-template-curly-in-string + 'myObjectWants.toMatchInlineSnapshot({}, `${interpolated1} ${interpolated2}`);', + // eslint-disable-next-line no-template-curly-in-string + 'toMatchInlineSnapshot({}, `${interpolated}`);', + // eslint-disable-next-line no-template-curly-in-string + 'toMatchInlineSnapshot({}, `${interpolated1} ${interpolated2}`);', + 'expect(something).toThrowErrorMatchingInlineSnapshot();', + 'expect(something).toThrowErrorMatchingInlineSnapshot(`No interpolation`);' + ], + invalid: [ + { + // eslint-disable-next-line no-template-curly-in-string + code: 'expect(something).toMatchInlineSnapshot(`${interpolated}`);', + errors: [ + { + messageId: 'noInterpolationInSnapshots', + column: 41, + line: 1 + } + ] + }, + { + // eslint-disable-next-line no-template-curly-in-string + code: 'expect(something).not.toMatchInlineSnapshot(`${interpolated}`);', + errors: [ + { + messageId: 'noInterpolationInSnapshots', + column: 45, + line: 1 + } + ] + }, + { + // eslint-disable-next-line no-template-curly-in-string + code: 'expect(something).toThrowErrorMatchingInlineSnapshot(`${interpolated}`);', + errors: [ + { + endColumn: 71, + column: 54, + messageId: 'noInterpolationInSnapshots' + } + ] + }, + { + // eslint-disable-next-line no-template-curly-in-string + code: 'expect(something).not.toThrowErrorMatchingInlineSnapshot(`${interpolated}`);', + errors: [ + { + endColumn: 75, + column: 58, + messageId: 'noInterpolationInSnapshots' + } + ] + } + ] + }) + }) }) diff --git a/src/rules/no-large-snapshots.test.ts b/src/rules/no-large-snapshots.test.ts index fa7e94b..ef09efc 100644 --- a/src/rules/no-large-snapshots.test.ts +++ b/src/rules/no-large-snapshots.test.ts @@ -1,155 +1,156 @@ import { TSESLint } from '@typescript-eslint/utils' -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, expect, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-large-snapshots' -const generateSnaShotLines = (lines: number) => `\`\n${'line\n'.repeat(lines)}\`` +const generateSnaShotLines = (lines: number) => + `\`\n${'line\n'.repeat(lines)}\`` const generateExportsSnapshotString = ( - lines: number, - title = 'a big component 1' + lines: number, + title = 'a big component 1' ) => `exports[\`${title}\`] = ${generateSnaShotLines(lines - 1)};` const generateExpectInlineSnapsCode = ( - lines: number, - matcher: 'toMatchInlineSnapshot' | 'toThrowErrorMatchingInlineSnapshot' + lines: number, + matcher: 'toMatchInlineSnapshot' | 'toThrowErrorMatchingInlineSnapshot' ) => `expect(something).${matcher}(${generateSnaShotLines(lines)});` describe(RULE_NAME, () => { - const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - - it(RULE_NAME, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'expect(something)', - 'expect(something).toBe(1)', - 'expect(something).toMatchInlineSnapshot', - 'expect(something).toMatchInlineSnapshot()', - { - filename: 'mock.js', - code: generateExpectInlineSnapsCode(2, 'toMatchInlineSnapshot') - }, - { - filename: 'mock.jsx', - code: generateExpectInlineSnapsCode(20, 'toMatchInlineSnapshot'), - options: [ - { - maxSize: 19, - inlineMaxSize: 21 - } - ] - }, - { - filename: 'mock.jsx', - code: generateExpectInlineSnapsCode(60, 'toMatchInlineSnapshot'), - options: [ - { - maxSize: 61 - } - ] - }, - { - // "it should not report snapshots that are allowed to be large" - filename: '/mock-component.jsx.snap', - code: generateExportsSnapshotString(58), - options: [ - { - allowedSnapshots: { - '/mock-component.jsx.snap': ['a big component 1'] - } - } - ] - } - ], - invalid: [ - { - filename: 'mock.js', - code: generateExpectInlineSnapsCode(50, 'toMatchInlineSnapshot'), - errors: [ - { - messageId: 'tooLongSnapShot', - data: { lineLimit: 50, lineCount: 51 } - } - ] - }, - { - filename: 'mock.js', - code: generateExpectInlineSnapsCode( - 50, - 'toThrowErrorMatchingInlineSnapshot' - ), - errors: [ - { - messageId: 'tooLongSnapShot', - data: { lineLimit: 50, lineCount: 51 } - } - ] - }, - { - filename: 'mock.js', - code: generateExpectInlineSnapsCode( - 50, - 'toThrowErrorMatchingInlineSnapshot' - ), - options: [{ maxSize: 51, inlineMaxSize: 50 }], - errors: [ - { - messageId: 'tooLongSnapShot', - data: { lineLimit: 50, lineCount: 51 } - } - ] - }, - { - // "should not report allowed large snapshots based on regexp" - filename: '/mock-component.jsx.snap', - code: [ - generateExportsSnapshotString(58, 'a big component w/ text'), - generateExportsSnapshotString(58, 'a big component 2') - ].join('\n\n'), - options: [ - { - allowedSnapshots: { - '/mock-component.jsx.snap': [/a big component \d+/u] - } - } - ], - errors: [ - { - messageId: 'tooLongSnapShot', - data: { lineLimit: 50, lineCount: 58 } - } - ] - } - ] - }) - }) + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect(something)', + 'expect(something).toBe(1)', + 'expect(something).toMatchInlineSnapshot', + 'expect(something).toMatchInlineSnapshot()', + { + filename: 'mock.js', + code: generateExpectInlineSnapsCode(2, 'toMatchInlineSnapshot') + }, + { + filename: 'mock.jsx', + code: generateExpectInlineSnapsCode(20, 'toMatchInlineSnapshot'), + options: [ + { + maxSize: 19, + inlineMaxSize: 21 + } + ] + }, + { + filename: 'mock.jsx', + code: generateExpectInlineSnapsCode(60, 'toMatchInlineSnapshot'), + options: [ + { + maxSize: 61 + } + ] + }, + { + // "it should not report snapshots that are allowed to be large" + filename: '/mock-component.jsx.snap', + code: generateExportsSnapshotString(58), + options: [ + { + allowedSnapshots: { + '/mock-component.jsx.snap': ['a big component 1'] + } + } + ] + } + ], + invalid: [ + { + filename: 'mock.js', + code: generateExpectInlineSnapsCode(50, 'toMatchInlineSnapshot'), + errors: [ + { + messageId: 'tooLongSnapShot', + data: { lineLimit: 50, lineCount: 51 } + } + ] + }, + { + filename: 'mock.js', + code: generateExpectInlineSnapsCode( + 50, + 'toThrowErrorMatchingInlineSnapshot' + ), + errors: [ + { + messageId: 'tooLongSnapShot', + data: { lineLimit: 50, lineCount: 51 } + } + ] + }, + { + filename: 'mock.js', + code: generateExpectInlineSnapsCode( + 50, + 'toThrowErrorMatchingInlineSnapshot' + ), + options: [{ maxSize: 51, inlineMaxSize: 50 }], + errors: [ + { + messageId: 'tooLongSnapShot', + data: { lineLimit: 50, lineCount: 51 } + } + ] + }, + { + // "should not report allowed large snapshots based on regexp" + filename: '/mock-component.jsx.snap', + code: [ + generateExportsSnapshotString(58, 'a big component w/ text'), + generateExportsSnapshotString(58, 'a big component 2') + ].join('\n\n'), + options: [ + { + allowedSnapshots: { + '/mock-component.jsx.snap': [/a big component \d+/u] + } + } + ], + errors: [ + { + messageId: 'tooLongSnapShot', + data: { lineLimit: 50, lineCount: 58 } + } + ] + } + ] + }) + }) }) describe(RULE_NAME, () => { - describe('when "allowedSnapshots" options contains relative paths', () => { - it('should throw an exception', () => { - expect(() => { - const linter = new TSESLint.Linter() + describe('when "allowedSnapshots" options contains relative paths', () => { + it('should throw an exception', () => { + expect(() => { + const linter = new TSESLint.Linter() - linter.defineRule(RULE_NAME, rule) + linter.defineRule(RULE_NAME, rule) - linter.verify('console.log()', { - rules: { - 'no-large-snapshots': [ - 'error', - { - allowedSnapshots: { - './mock-component.jsx.snap': [/a big component \d+/u] - } - } - ] - } - }, - 'mock-component.jsx.snap' - ) - }).toThrow('All paths for allowedSnapshots must be absolute. You can use JS config and `path.resolve`') - }) - }) + linter.verify( + 'console.log()', + { + rules: { + 'no-large-snapshots': [ + 'error', + { + allowedSnapshots: { + './mock-component.jsx.snap': [/a big component \d+/u] + } + } + ] + } + }, + 'mock-component.jsx.snap' + ) + }).toThrow( + 'All paths for allowedSnapshots must be absolute. You can use JS config and `path.resolve`' + ) + }) + }) }) diff --git a/src/rules/no-mocks-import.test.ts b/src/rules/no-mocks-import.test.ts index b4f0c1b..032706a 100644 --- a/src/rules/no-mocks-import.test.ts +++ b/src/rules/no-mocks-import.test.ts @@ -1,57 +1,53 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-mocks-import' -const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') -}) - describe(RULE_NAME, () => { - it(RULE_NAME, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'import something from "something"', - 'require("somethingElse")', - 'require("./__mocks__.js")', - 'require("./__mocks__x")', - 'require("./__mocks__x/x")', - 'require("./x__mocks__")', - 'require("./x__mocks__/x")', - 'require()', - 'var path = "./__mocks__.js"; require(path)', - 'entirelyDifferent(fn)' - ], - invalid: [ - { - code: 'require("./__mocks__")', - errors: [{ endColumn: 22, column: 9, messageId: 'noMocksImport' }] - }, - { - code: 'require("./__mocks__/")', - errors: [{ endColumn: 23, column: 9, messageId: 'noMocksImport' }] - }, - { - code: 'require("./__mocks__/index")', - errors: [{ endColumn: 28, column: 9, messageId: 'noMocksImport' }] - }, - { - code: 'require("__mocks__")', - errors: [{ endColumn: 20, column: 9, messageId: 'noMocksImport' }] - }, - { - code: 'require("__mocks__/")', - errors: [{ endColumn: 21, column: 9, messageId: 'noMocksImport' }] - }, - { - code: 'require("__mocks__/index")', - errors: [{ endColumn: 26, column: 9, messageId: 'noMocksImport' }] - }, - { - code: 'import thing from "./__mocks__/index"', - parserOptions: { sourceType: 'module' }, - errors: [{ endColumn: 38, column: 1, messageId: 'noMocksImport' }] - } - ] - }) - }) + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'import something from "something"', + 'require("somethingElse")', + 'require("./__mocks__.js")', + 'require("./__mocks__x")', + 'require("./__mocks__x/x")', + 'require("./x__mocks__")', + 'require("./x__mocks__/x")', + 'require()', + 'var path = "./__mocks__.js"; require(path)', + 'entirelyDifferent(fn)' + ], + invalid: [ + { + code: 'require("./__mocks__")', + errors: [{ endColumn: 22, column: 9, messageId: 'noMocksImport' }] + }, + { + code: 'require("./__mocks__/")', + errors: [{ endColumn: 23, column: 9, messageId: 'noMocksImport' }] + }, + { + code: 'require("./__mocks__/index")', + errors: [{ endColumn: 28, column: 9, messageId: 'noMocksImport' }] + }, + { + code: 'require("__mocks__")', + errors: [{ endColumn: 20, column: 9, messageId: 'noMocksImport' }] + }, + { + code: 'require("__mocks__/")', + errors: [{ endColumn: 21, column: 9, messageId: 'noMocksImport' }] + }, + { + code: 'require("__mocks__/index")', + errors: [{ endColumn: 26, column: 9, messageId: 'noMocksImport' }] + }, + { + code: 'import thing from "./__mocks__/index"', + parserOptions: { sourceType: 'module' }, + errors: [{ endColumn: 38, column: 1, messageId: 'noMocksImport' }] + } + ] + }) + }) }) diff --git a/src/rules/no-restricted-matchers.test.ts b/src/rules/no-restricted-matchers.test.ts index 7f663ec..8358dab 100644 --- a/src/rules/no-restricted-matchers.test.ts +++ b/src/rules/no-restricted-matchers.test.ts @@ -1,214 +1,210 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-restricted-matchers' -const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') -}) - describe(RULE_NAME, () => { - it(RULE_NAME, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'expect(a).toHaveBeenCalled()', - 'expect(a).not.toHaveBeenCalled()', - 'expect(a).toHaveBeenCalledTimes()', - 'expect(a).toHaveBeenCalledWith()', - 'expect(a).toHaveBeenLastCalledWith()', - 'expect(a).toHaveBeenNthCalledWith()', - 'expect(a).toHaveReturned()', - 'expect(a).toHaveReturnedTimes()', - 'expect(a).toHaveReturnedWith()', - 'expect(a).toHaveLastReturnedWith()', - 'expect(a).toHaveNthReturnedWith()', - 'expect(a).toThrow()', - 'expect(a).rejects;', - 'expect(a);', - { - code: 'expect(a).resolves', - options: [{ not: null }] - }, - { - code: 'expect(a).toBe(b)', - options: [{ 'not.toBe': null }] - }, - { - code: 'expect(a).toBeUndefined(b)', - options: [{ toBe: null }] - }, - { - code: 'expect(a)["toBe"](b)', - options: [{ 'not.toBe': null }] - }, - { - code: 'expect(a).resolves.not.toBe(b)', - options: [{ not: null }] - }, - { - code: 'expect(a).resolves.not.toBe(b)', - options: [{ 'not.toBe': null }] - } - ], - invalid: [ - { - code: 'expect(a).not.toBe(b)', - options: [{ not: null }], - errors: [ - { - messageId: 'restrictedChain', - data: { - message: null, - restriction: 'not' - }, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).resolves.toBe(b)', - options: [{ resolves: null }], - errors: [ - { - messageId: 'restrictedChain', - data: { - message: null, - restriction: 'resolves' - }, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).resolves.not.toBe(b)', - options: [{ resolves: null }], - errors: [ - { - messageId: 'restrictedChain', - data: { - message: null, - restriction: 'resolves' - }, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).resolves.not.toBe(b)', - options: [{ 'resolves.not': null }], - errors: [ - { - messageId: 'restrictedChain', - data: { - message: null, - restriction: 'resolves.not' - }, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).not.toBe(b)', - options: [{ 'not.toBe': null }], - errors: [ - { - messageId: 'restrictedChain', - data: { - message: null, - restriction: 'not.toBe' - }, - endColumn: 19, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).resolves.not.toBe(b)', - options: [{ 'resolves.not.toBe': null }], - errors: [ - { - messageId: 'restrictedChain', - data: { - message: null, - restriction: 'resolves.not.toBe' - }, - endColumn: 28, - column: 11, - line: 1 - } - ] - }, - { - code: 'expect(a).toBe(b)', - options: [{ toBe: 'Prefer `toStrictEqual` instead' }], - errors: [ - { - messageId: 'restrictedChainWithMessage', - data: { - message: 'Prefer `toStrictEqual` instead', - restriction: 'toBe' - }, - column: 11, - line: 1 - } - ] - }, - { - code: ` + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect(a).toHaveBeenCalled()', + 'expect(a).not.toHaveBeenCalled()', + 'expect(a).toHaveBeenCalledTimes()', + 'expect(a).toHaveBeenCalledWith()', + 'expect(a).toHaveBeenLastCalledWith()', + 'expect(a).toHaveBeenNthCalledWith()', + 'expect(a).toHaveReturned()', + 'expect(a).toHaveReturnedTimes()', + 'expect(a).toHaveReturnedWith()', + 'expect(a).toHaveLastReturnedWith()', + 'expect(a).toHaveNthReturnedWith()', + 'expect(a).toThrow()', + 'expect(a).rejects;', + 'expect(a);', + { + code: 'expect(a).resolves', + options: [{ not: null }] + }, + { + code: 'expect(a).toBe(b)', + options: [{ 'not.toBe': null }] + }, + { + code: 'expect(a).toBeUndefined(b)', + options: [{ toBe: null }] + }, + { + code: 'expect(a)["toBe"](b)', + options: [{ 'not.toBe': null }] + }, + { + code: 'expect(a).resolves.not.toBe(b)', + options: [{ not: null }] + }, + { + code: 'expect(a).resolves.not.toBe(b)', + options: [{ 'not.toBe': null }] + } + ], + invalid: [ + { + code: 'expect(a).not.toBe(b)', + options: [{ not: null }], + errors: [ + { + messageId: 'restrictedChain', + data: { + message: null, + restriction: 'not' + }, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).resolves.toBe(b)', + options: [{ resolves: null }], + errors: [ + { + messageId: 'restrictedChain', + data: { + message: null, + restriction: 'resolves' + }, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).resolves.not.toBe(b)', + options: [{ resolves: null }], + errors: [ + { + messageId: 'restrictedChain', + data: { + message: null, + restriction: 'resolves' + }, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).resolves.not.toBe(b)', + options: [{ 'resolves.not': null }], + errors: [ + { + messageId: 'restrictedChain', + data: { + message: null, + restriction: 'resolves.not' + }, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).not.toBe(b)', + options: [{ 'not.toBe': null }], + errors: [ + { + messageId: 'restrictedChain', + data: { + message: null, + restriction: 'not.toBe' + }, + endColumn: 19, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).resolves.not.toBe(b)', + options: [{ 'resolves.not.toBe': null }], + errors: [ + { + messageId: 'restrictedChain', + data: { + message: null, + restriction: 'resolves.not.toBe' + }, + endColumn: 28, + column: 11, + line: 1 + } + ] + }, + { + code: 'expect(a).toBe(b)', + options: [{ toBe: 'Prefer `toStrictEqual` instead' }], + errors: [ + { + messageId: 'restrictedChainWithMessage', + data: { + message: 'Prefer `toStrictEqual` instead', + restriction: 'toBe' + }, + column: 11, + line: 1 + } + ] + }, + { + code: ` test('some test', async () => { await expect(Promise.resolve(1)).resolves.toBe(1); }); `, - options: [{ resolves: 'Use `expect(await promise)` instead.' }], - errors: [ - { - messageId: 'restrictedChainWithMessage', - data: { - message: 'Use `expect(await promise)` instead.', - restriction: 'resolves' - }, - endColumn: 53, - column: 40 - } - ] - }, - { - code: 'expect(Promise.resolve({})).rejects.toBeFalsy()', - options: [{ 'rejects.toBeFalsy': null }], - errors: [ - { - messageId: 'restrictedChain', - data: { - message: null, - restriction: 'rejects.toBeFalsy' - }, - endColumn: 46, - column: 29 - } - ] - }, - { - code: 'expect(uploadFileMock).not.toHaveBeenCalledWith(\'file.name\')', - options: [ - { 'not.toHaveBeenCalledWith': 'Use not.toHaveBeenCalled instead' } - ], - errors: [ - { - messageId: 'restrictedChainWithMessage', - data: { - message: 'Use not.toHaveBeenCalled instead', - restriction: 'not.toHaveBeenCalledWith' - }, - endColumn: 48, - column: 24 - } - ] - } - ] - }) - }) + options: [{ resolves: 'Use `expect(await promise)` instead.' }], + errors: [ + { + messageId: 'restrictedChainWithMessage', + data: { + message: 'Use `expect(await promise)` instead.', + restriction: 'resolves' + }, + endColumn: 53, + column: 40 + } + ] + }, + { + code: 'expect(Promise.resolve({})).rejects.toBeFalsy()', + options: [{ 'rejects.toBeFalsy': null }], + errors: [ + { + messageId: 'restrictedChain', + data: { + message: null, + restriction: 'rejects.toBeFalsy' + }, + endColumn: 46, + column: 29 + } + ] + }, + { + code: 'expect(uploadFileMock).not.toHaveBeenCalledWith(\'file.name\')', + options: [ + { 'not.toHaveBeenCalledWith': 'Use not.toHaveBeenCalled instead' } + ], + errors: [ + { + messageId: 'restrictedChainWithMessage', + data: { + message: 'Use not.toHaveBeenCalled instead', + restriction: 'not.toHaveBeenCalledWith' + }, + endColumn: 48, + column: 24 + } + ] + } + ] + }) + }) }) diff --git a/src/rules/no-restricted-vi-methods.test.ts b/src/rules/no-restricted-vi-methods.test.ts index 2d66c8b..5cb1430 100644 --- a/src/rules/no-restricted-vi-methods.test.ts +++ b/src/rules/no-restricted-vi-methods.test.ts @@ -1,84 +1,89 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { it } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './no-restricted-vi-methods' it(RULE_NAME, () => { - const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'vi', - 'vi()', - 'vi.mock()', - 'expect(a).rejects;', - 'expect(a);', - { - code: ` + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'vi', + 'vi()', + 'vi.mock()', + 'expect(a).rejects;', + 'expect(a);', + { + code: ` import { vi } from 'vitest'; vi; `, - parserOptions: { sourceType: 'module' } - } - ], + parserOptions: { sourceType: 'module' } + } + ], - invalid: [ - { - code: 'vi.fn()', - options: [{ fn: null }], - errors: [{ - messageId: 'restrictedViMethod', - data: { - message: null, - restriction: 'fn' - }, - column: 4, - line: 1 - }] - }, - { - code: 'vi.mock()', - options: [{ mock: 'Do not use mocks' }], - errors: [{ - messageId: 'restrictedViMethodWithMessage', - data: { - message: 'Do not use mocks', - restriction: 'mock' - }, - column: 4, - line: 1 - }] - }, - { - code: ` + invalid: [ + { + code: 'vi.fn()', + options: [{ fn: null }], + errors: [ + { + messageId: 'restrictedViMethod', + data: { + message: null, + restriction: 'fn' + }, + column: 4, + line: 1 + } + ] + }, + { + code: 'vi.mock()', + options: [{ mock: 'Do not use mocks' }], + errors: [ + { + messageId: 'restrictedViMethodWithMessage', + data: { + message: 'Do not use mocks', + restriction: 'mock' + }, + column: 4, + line: 1 + } + ] + }, + { + code: ` import { vi } from 'vitest'; vi.advanceTimersByTime(); `, - options: [{ advanceTimersByTime: null }], - parserOptions: { sourceType: 'module' }, - errors: [{ - messageId: 'restrictedViMethod', - data: { - message: null, - restriction: 'advanceTimersByTime' - }, - column: 9, - line: 3 - }] - }, - { - code: 'vi["fn"]()', - options: [{ fn: null }], - errors: [{ - messageId: 'restrictedViMethod', - data: { - message: null, - restriction: 'fn' - }, - column: 4, - line: 1 - }] - } - ] - }) + options: [{ advanceTimersByTime: null }], + parserOptions: { sourceType: 'module' }, + errors: [ + { + messageId: 'restrictedViMethod', + data: { + message: null, + restriction: 'advanceTimersByTime' + }, + column: 9, + line: 3 + } + ] + }, + { + code: 'vi["fn"]()', + options: [{ fn: null }], + errors: [ + { + messageId: 'restrictedViMethod', + data: { + message: null, + restriction: 'fn' + }, + column: 4, + line: 1 + } + ] + } + ] + }) }) diff --git a/src/rules/prefer-lowercase-title.test.ts b/src/rules/prefer-lowercase-title.test.ts index 0873cc2..142aba7 100644 --- a/src/rules/prefer-lowercase-title.test.ts +++ b/src/rules/prefer-lowercase-title.test.ts @@ -1,63 +1,62 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { describe, it } from 'vitest' import { TestCaseName } from '../utils/types' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './prefer-lowercase-title' describe(RULE_NAME, () => { - it(RULE_NAME, () => { - const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'it.each()', - 'it.each()(1)', - 'it.todo();', - 'describe("oo", function () {})', - 'test("foo", function () {})', - 'test(`123`, function () {})' - ], - invalid: [ - { - code: 'it("Foo MM mm", function () {})', - output: 'it("foo MM mm", function () {})', - errors: [ - { - messageId: 'lowerCaseTitle', - data: { - method: TestCaseName.it - } - } - ] - }, - { - code: 'test(`Foo MM mm`, function () {})', - output: 'test(`foo MM mm`, function () {})', - errors: [ - { - messageId: 'lowerCaseTitle', - data: { - method: TestCaseName.test - } - } - ] - }, - { - code: 'test(`SFC Compile`, function () {})', - output: 'test(`sfc compile`, function () {})', - errors: [ - { - messageId: 'lowerCaseTitle', - data: { - method: TestCaseName.test - } - } - ], - options: [{ - lowercaseFirstCharacterOnly: false - }] - } - ] - }) - }) + it(RULE_NAME, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'it.each()', + 'it.each()(1)', + 'it.todo();', + 'describe("oo", function () {})', + 'test("foo", function () {})', + 'test(`123`, function () {})' + ], + invalid: [ + { + code: 'it("Foo MM mm", function () {})', + output: 'it("foo MM mm", function () {})', + errors: [ + { + messageId: 'lowerCaseTitle', + data: { + method: TestCaseName.it + } + } + ] + }, + { + code: 'test(`Foo MM mm`, function () {})', + output: 'test(`foo MM mm`, function () {})', + errors: [ + { + messageId: 'lowerCaseTitle', + data: { + method: TestCaseName.test + } + } + ] + }, + { + code: 'test(`SFC Compile`, function () {})', + output: 'test(`sfc compile`, function () {})', + errors: [ + { + messageId: 'lowerCaseTitle', + data: { + method: TestCaseName.test + } + } + ], + options: [ + { + lowercaseFirstCharacterOnly: false + } + ] + } + ] + }) + }) }) diff --git a/src/rules/prefer-to-be.test.ts b/src/rules/prefer-to-be.test.ts index cf72208..4830dbd 100644 --- a/src/rules/prefer-to-be.test.ts +++ b/src/rules/prefer-to-be.test.ts @@ -1,122 +1,118 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' import { it, describe } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './prefer-to-be' describe(RULE_NAME, () => { - const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') - }) + it(`${RULE_NAME} toBe`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect(null).toBeNull();', + 'expect(null).not.toBeNull();', + 'expect(null).toBe(1);', + 'expect(null).toBe(-1);', + 'expect(null).toBe(1);', + 'expect(obj).toStrictEqual([ x, 1 ]);', + 'expect(obj).toStrictEqual({ x: 1 });', + 'expect(obj).not.toStrictEqual({ x: 1 });', + 'expect(value).toMatchSnapshot();', + 'expect(catchError()).toStrictEqual({ message: \'oh noes!\' })', + 'expect("something");', + 'expect(token).toStrictEqual(/[abc]+/g);', + 'expect(token).toStrictEqual(new RegExp(\'[abc]+\', \'g\'));', + 'expect(0.1 + 0.2).toEqual(0.3);' + ], + invalid: [ + { + code: 'expect(value).toEqual("my string");', + output: 'expect(value).toBe("my string");', + errors: [{ messageId: 'useToBe' }] + }, + { + code: 'expect("a string").not.toEqual(null);', + output: 'expect("a string").not.toBeNull();', + errors: [{ messageId: 'useToBeNull', column: 24, line: 1 }] + }, + { + code: 'expect("a string").not.toStrictEqual(null);', + output: 'expect("a string").not.toBeNull();', + errors: [{ messageId: 'useToBeNull', column: 24, line: 1 }] + } + ] + }) + }) - it(`${RULE_NAME} toBe`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'expect(null).toBeNull();', - 'expect(null).not.toBeNull();', - 'expect(null).toBe(1);', - 'expect(null).toBe(-1);', - 'expect(null).toBe(1);', - 'expect(obj).toStrictEqual([ x, 1 ]);', - 'expect(obj).toStrictEqual({ x: 1 });', - 'expect(obj).not.toStrictEqual({ x: 1 });', - 'expect(value).toMatchSnapshot();', - 'expect(catchError()).toStrictEqual({ message: \'oh noes!\' })', - 'expect("something");', - 'expect(token).toStrictEqual(/[abc]+/g);', - 'expect(token).toStrictEqual(new RegExp(\'[abc]+\', \'g\'));', - 'expect(0.1 + 0.2).toEqual(0.3);' - ], - invalid: [ - { - code: 'expect(value).toEqual("my string");', - output: 'expect(value).toBe("my string");', - errors: [{ messageId: 'useToBe' }] - }, - { - code: 'expect("a string").not.toEqual(null);', - output: 'expect("a string").not.toBeNull();', - errors: [{ messageId: 'useToBeNull', column: 24, line: 1 }] - }, - { - code: 'expect("a string").not.toStrictEqual(null);', - output: 'expect("a string").not.toBeNull();', - errors: [{ messageId: 'useToBeNull', column: 24, line: 1 }] - } - ] - }) - }) + it(`${RULE_NAME} NaN`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect(NaN).toBeNaN();', + 'expect(true).not.toBeNaN();', + 'expect({}).toEqual({});', + 'expect(something).toBe()', + 'expect(something).toBe(somethingElse)', + 'expect(something).toEqual(somethingElse)', + 'expect(something).not.toBe(somethingElse)', + 'expect(something).not.toEqual(somethingElse)', + 'expect(undefined).toBe', + 'expect("something");' + ], + invalid: [ + { + code: 'expect(NaN).toBe(NaN);', + output: 'expect(NaN).toBeNaN();', + errors: [{ messageId: 'useToBeNaN', column: 13, line: 1 }] + }, + { + code: 'expect("a string").not.toBe(NaN);', + output: 'expect("a string").not.toBeNaN();', + errors: [{ messageId: 'useToBeNaN', column: 24, line: 1 }] + }, + { + code: 'expect("a string").not.toStrictEqual(NaN);', + output: 'expect("a string").not.toBeNaN();', + errors: [{ messageId: 'useToBeNaN', column: 24, line: 1 }] + } + ] + }) + }) - it(`${RULE_NAME} NaN`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'expect(NaN).toBeNaN();', - 'expect(true).not.toBeNaN();', - 'expect({}).toEqual({});', - 'expect(something).toBe()', - 'expect(something).toBe(somethingElse)', - 'expect(something).toEqual(somethingElse)', - 'expect(something).not.toBe(somethingElse)', - 'expect(something).not.toEqual(somethingElse)', - 'expect(undefined).toBe', - 'expect("something");' - ], - invalid: [ - { - code: 'expect(NaN).toBe(NaN);', - output: 'expect(NaN).toBeNaN();', - errors: [{ messageId: 'useToBeNaN', column: 13, line: 1 }] - }, - { - code: 'expect("a string").not.toBe(NaN);', - output: 'expect("a string").not.toBeNaN();', - errors: [{ messageId: 'useToBeNaN', column: 24, line: 1 }] - }, - { - code: 'expect("a string").not.toStrictEqual(NaN);', - output: 'expect("a string").not.toBeNaN();', - errors: [{ messageId: 'useToBeNaN', column: 24, line: 1 }] - } - ] - }) - }) - - it(`${RULE_NAME} null`, () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'expect(null).toBeNull();', - 'expect(null).not.toBeNull();', - 'expect(null).toBe(1);', - 'expect(obj).toStrictEqual([ x, 1 ]);', - 'expect(obj).toStrictEqual({ x: 1 });', - 'expect(obj).not.toStrictEqual({ x: 1 });' - ], - invalid: [ - { - code: 'expect(null).toBe(null);', - output: 'expect(null).toBeNull();', - errors: [{ messageId: 'useToBeNull', column: 14, line: 1 }] - }, - { - code: 'expect(null).toEqual(null);', - output: 'expect(null).toBeNull();', - parserOptions: { ecmaVersion: 2017 }, - errors: [{ messageId: 'useToBeNull', column: 14, line: 1 }] - }, - { - code: 'expect("a string").not.toEqual(null as number);', - output: 'expect("a string").not.toBeNull();', - errors: [{ messageId: 'useToBeNull', column: 24, line: 1 }] - }, - { - code: 'expect(undefined).toBe(undefined as unknown as string as any);', - output: 'expect(undefined).toBeUndefined();', - errors: [{ messageId: 'useToBeUndefined', column: 19, line: 1 }] - }, - { - code: 'expect("a string").toEqual(undefined as number);', - output: 'expect("a string").toBeUndefined();', - errors: [{ messageId: 'useToBeUndefined', column: 20, line: 1 }] - } - ] - }) - }) + it(`${RULE_NAME} null`, () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect(null).toBeNull();', + 'expect(null).not.toBeNull();', + 'expect(null).toBe(1);', + 'expect(obj).toStrictEqual([ x, 1 ]);', + 'expect(obj).toStrictEqual({ x: 1 });', + 'expect(obj).not.toStrictEqual({ x: 1 });' + ], + invalid: [ + { + code: 'expect(null).toBe(null);', + output: 'expect(null).toBeNull();', + errors: [{ messageId: 'useToBeNull', column: 14, line: 1 }] + }, + { + code: 'expect(null).toEqual(null);', + output: 'expect(null).toBeNull();', + parserOptions: { ecmaVersion: 2017 }, + errors: [{ messageId: 'useToBeNull', column: 14, line: 1 }] + }, + { + code: 'expect("a string").not.toEqual(null as number);', + output: 'expect("a string").not.toBeNull();', + errors: [{ messageId: 'useToBeNull', column: 24, line: 1 }] + }, + { + code: 'expect(undefined).toBe(undefined as unknown as string as any);', + output: 'expect(undefined).toBeUndefined();', + errors: [{ messageId: 'useToBeUndefined', column: 19, line: 1 }] + }, + { + code: 'expect("a string").toEqual(undefined as number);', + output: 'expect("a string").toBeUndefined();', + errors: [{ messageId: 'useToBeUndefined', column: 20, line: 1 }] + } + ] + }) + }) }) diff --git a/src/rules/valid-expect.test.ts b/src/rules/valid-expect.test.ts index 72da790..47ed855 100644 --- a/src/rules/valid-expect.test.ts +++ b/src/rules/valid-expect.test.ts @@ -1,71 +1,66 @@ -import { RuleTester } from '@typescript-eslint/utils/dist/ts-eslint' -import { describe, test } from 'vitest' +import { ruleTester } from '../utils/test' import rule, { RULE_NAME } from './valid-expect' -const ruleTester: RuleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser') -}) - -describe(RULE_NAME, () => { - test(RULE_NAME + ' in promise', () => { - ruleTester.run(RULE_NAME, rule, { - valid: [ - 'expect.hasAssertions', - 'expect.hasAssertions()', - 'expect("something").toEqual("else");', - 'expect(true).toBeDefined();', - 'expect([1, 2, 3]).toEqual([1, 2, 3]);', - 'expect(undefined).not.toBeDefined();', - 'test("valid-expect", () => { return expect(Promise.resolve(2)).resolves.toBeDefined(); });', - 'test("valid-expect", () => { return expect(Promise.reject(2)).rejects.toBeDefined(); });', - 'test("valid-expect", () => { return expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', - 'test("valid-expect", () => { return expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', - 'test("valid-expect", function () { return expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', - 'test("valid-expect", function () { return expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', - 'test("valid-expect", function () { return Promise.resolve(expect(Promise.resolve(2)).resolves.not.toBeDefined()); });', - 'test("valid-expect", function () { return Promise.resolve(expect(Promise.resolve(2)).rejects.not.toBeDefined()); });', - 'test("valid-expect", () => expect(Promise.resolve(2)).resolves.toBeDefined());', - 'test("valid-expect", () => expect(Promise.resolve(2)).resolves.toBeDefined());', - 'test("valid-expect", () => expect(Promise.reject(2)).rejects.toBeDefined());', - 'test("valid-expect", () => expect(Promise.reject(2)).resolves.not.toBeDefined());', - 'test("valid-expect", () => expect(Promise.reject(2)).rejects.not.toBeDefined());', - 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined(); });', - 'test("valid-expect", async () => { await expect(Promise.reject(2)).rejects.not.toBeDefined(); });', - 'test("valid-expect", async function () { await expect(Promise.reject(2)).resolves.not.toBeDefined(); });', - 'test("valid-expect", async function () { await expect(Promise.reject(2)).rejects.not.toBeDefined(); });', - 'test("valid-expect", async () => { await Promise.resolve(expect(Promise.reject(2)).rejects.not.toBeDefined()); });', - 'test("valid-expect", async () => { await Promise.reject(expect(Promise.reject(2)).rejects.not.toBeDefined()); });', - 'test("valid-expect", async () => { await Promise.all([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', - 'test("valid-expect", async () => { await Promise.race([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', - 'test("valid-expect", async () => { await Promise.allSettled([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', - 'test("valid-expect", async () => { await Promise.any([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', - 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")); });', - 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).then(() => console.log("another valid case")); });', - 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().catch(() => console.log("valid-case")); });', - 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).catch(() => console.log("another valid case")); });', - 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => { expect(someMock).toHaveBeenCalledTimes(1); }); });', - 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")); });', - 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).then(() => console.log("another valid case")); });', - 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().catch(() => console.log("valid-case")); });', - 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).catch(() => console.log("another valid case")); });', - 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => { expect(someMock).toHaveBeenCalledTimes(1); }); });', - ` test("valid-expect", () => { +// describe(RULE_NAME, () => { +// test(RULE_NAME + ' in promise', () => { + ruleTester.run(RULE_NAME, rule, { + valid: [ + 'expect.hasAssertions', + 'expect.hasAssertions()', + 'expect("something").toEqual("else");', + 'expect(true).toBeDefined();', + 'expect([1, 2, 3]).toEqual([1, 2, 3]);', + 'expect(undefined).not.toBeDefined();', + 'test("valid-expect", () => { return expect(Promise.resolve(2)).resolves.toBeDefined(); });', + 'test("valid-expect", () => { return expect(Promise.reject(2)).rejects.toBeDefined(); });', + 'test("valid-expect", () => { return expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', + 'test("valid-expect", () => { return expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', + 'test("valid-expect", function () { return expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', + 'test("valid-expect", function () { return expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', + 'test("valid-expect", function () { return Promise.resolve(expect(Promise.resolve(2)).resolves.not.toBeDefined()); });', + 'test("valid-expect", function () { return Promise.resolve(expect(Promise.resolve(2)).rejects.not.toBeDefined()); });', + 'test("valid-expect", () => expect(Promise.resolve(2)).resolves.toBeDefined());', + 'test("valid-expect", () => expect(Promise.resolve(2)).resolves.toBeDefined());', + 'test("valid-expect", () => expect(Promise.reject(2)).rejects.toBeDefined());', + 'test("valid-expect", () => expect(Promise.reject(2)).resolves.not.toBeDefined());', + 'test("valid-expect", () => expect(Promise.reject(2)).rejects.not.toBeDefined());', + 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined(); });', + 'test("valid-expect", async () => { await expect(Promise.reject(2)).rejects.not.toBeDefined(); });', + 'test("valid-expect", async function () { await expect(Promise.reject(2)).resolves.not.toBeDefined(); });', + 'test("valid-expect", async function () { await expect(Promise.reject(2)).rejects.not.toBeDefined(); });', + 'test("valid-expect", async () => { await Promise.resolve(expect(Promise.reject(2)).rejects.not.toBeDefined()); });', + 'test("valid-expect", async () => { await Promise.reject(expect(Promise.reject(2)).rejects.not.toBeDefined()); });', + 'test("valid-expect", async () => { await Promise.all([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', + 'test("valid-expect", async () => { await Promise.race([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', + 'test("valid-expect", async () => { await Promise.allSettled([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', + 'test("valid-expect", async () => { await Promise.any([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', + 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")); });', + 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).then(() => console.log("another valid case")); });', + 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().catch(() => console.log("valid-case")); });', + 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).catch(() => console.log("another valid case")); });', + 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => { expect(someMock).toHaveBeenCalledTimes(1); }); });', + 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")); });', + 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).then(() => console.log("another valid case")); });', + 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().catch(() => console.log("valid-case")); });', + 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).catch(() => console.log("another valid case")); });', + 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => { expect(someMock).toHaveBeenCalledTimes(1); }); });', + ` test("valid-expect", () => { return expect(functionReturningAPromise()).resolves.toEqual(1).then(() => { return expect(Promise.resolve(2)).resolves.toBe(1); }); }); `, - ` test("valid-expect", () => { + ` test("valid-expect", () => { return expect(functionReturningAPromise()).resolves.toEqual(1).then(async () => { await expect(Promise.resolve(2)).resolves.toBe(1); }); }); `, - ` test("valid-expect", () => { + ` test("valid-expect", () => { return expect(functionReturningAPromise()).resolves.toEqual(1).then(() => expect(Promise.resolve(2)).resolves.toBe(1)); }); `, - ` expect.extend({ + ` expect.extend({ toResolve(obj) { return this.isNot ? expect(obj).toBe(true) @@ -73,7 +68,7 @@ describe(RULE_NAME, () => { } }); `, - ` expect.extend({ + ` expect.extend({ toResolve(obj) { return this.isNot ? expect(obj).resolves.not.toThrow() @@ -81,7 +76,7 @@ describe(RULE_NAME, () => { } }); `, - ` expect.extend({ + ` expect.extend({ toResolve(obj) { return this.isNot ? expect(obj).toBe(true) @@ -91,314 +86,314 @@ describe(RULE_NAME, () => { } }); `, - { - code: 'expect(1).toBe(2);', - options: [{ maxArgs: 2 }] - }, - { - code: 'expect(1, "1 !== 2").toBe(2);', - options: [{ maxArgs: 2 }] - }, - { - code: 'test("valid-expect", () => { expect(2).not.toBe(2); });', - options: [{ asyncMatchers: ['toRejectWith'] }] - }, - { - code: 'test("valid-expect", () => { expect(Promise.reject(2)).toRejectWith(2); });', - options: [{ asyncMatchers: ['toResolveWith'] }] - }, - { - code: 'test("valid-expect", async () => { await expect(Promise.resolve(2)).toResolve(); });', - options: [{ asyncMatchers: ['toResolveWith'] }] - }, - { - code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).toResolve(); });', - options: [{ asyncMatchers: ['toResolveWith'] }] - } - ], - invalid: [ - { - code: 'expect().toBe(2);', - options: [{ minArgs: undefined, maxArgs: undefined }], - errors: [ - { - messageId: 'notEnoughArgs', - data: { - s: '', - amount: 1 - } - } - ] - }, - { - code: 'expect().toBe(true);', - errors: [ - { - endColumn: 8, - column: 7, - messageId: 'notEnoughArgs', - data: { - s: '', - amount: 1 - } - } - ] - }, - { - code: 'expect().toEqual("something");', - errors: [ - { - endColumn: 8, - column: 7, - messageId: 'notEnoughArgs', - data: { - s: '', - amount: 1 - } - } - ] - }, - { - code: 'expect("something", "else").toEqual("something");', - errors: [ - { - endColumn: 28, - column: 21, - messageId: 'tooManyArgs', - data: { - s: '', - amount: 1 - } - } - ] - }, - { - code: 'expect("something", "else", "entirely").toEqual("something");', - options: [{ maxArgs: 2 }], - errors: [ - { - endColumn: 40, - column: 29, - messageId: 'tooManyArgs', - data: { - s: 's', - amount: 2 - } - } - ] - }, - { - code: 'expect("something", "else", "entirely").toEqual("something");', - options: [{ maxArgs: 2, minArgs: 2 }], - errors: [ - { - endColumn: 40, - column: 29, - messageId: 'tooManyArgs', - data: { - s: 's', - amount: 2 - } - } - ] - }, - { - code: 'expect("something", "else", "entirely").toEqual("something");', - options: [{ maxArgs: 2, minArgs: 1 }], - errors: [ - { - endColumn: 40, - column: 29, - messageId: 'tooManyArgs', - data: { - s: 's', - amount: 2 - } - } - ] - }, - { - code: 'expect("something").toEqual("something");', - options: [{ minArgs: 2 }], - errors: [ - { - endColumn: 8, - column: 7, - messageId: 'notEnoughArgs', - data: { - s: 's', - amount: 2 - } - } - ] - }, - { - code: 'expect("something", "else").toEqual("something");', - options: [{ maxArgs: 1, minArgs: 3 }], - errors: [ - { - endColumn: 8, - column: 7, - messageId: 'notEnoughArgs', - data: { - s: 's', - amount: 3 - } - }, - { - endColumn: 28, - column: 21, - messageId: 'tooManyArgs', - data: { - s: '', - amount: 1 - } - } - ] - }, - { - code: 'expect("something");', - errors: [{ endColumn: 20, column: 1, messageId: 'matcherNotFound' }] - }, - { - code: 'expect();', - errors: [{ endColumn: 9, column: 1, messageId: 'matcherNotFound' }] - }, - { - code: 'expect(true).toBeDefined;', - errors: [ - { - endColumn: 25, - column: 14, - messageId: 'matcherNotCalled' - } - ] - }, - { - code: 'expect(true).not.toBeDefined;', - errors: [ - { - endColumn: 29, - column: 18, - messageId: 'matcherNotCalled' - } - ] - }, - { - code: 'expect(true).nope.toBeDefined;', - errors: [ - { - endColumn: 30, - column: 19, - messageId: 'matcherNotCalled' - } - ] - }, - { - code: 'expect(true).nope.toBeDefined();', - errors: [ - { - endColumn: 32, - column: 1, - messageId: 'modifierUnknown' - } - ] - }, - { - code: 'expect(true).not.resolves.toBeDefined();', - errors: [ - { - endColumn: 40, - column: 1, - messageId: 'modifierUnknown' - } - ] - }, - { - code: 'expect(true).not.not.toBeDefined();', - errors: [ - { - endColumn: 35, - column: 1, - messageId: 'modifierUnknown' - } - ] - }, - { - code: 'expect(true).resolves.not.exactly.toBeDefined();', - errors: [ - { - endColumn: 48, - column: 1, - messageId: 'modifierUnknown' - } - ] - }, - { - code: 'expect(true).resolves;', - errors: [ - { - endColumn: 22, - column: 14, - messageId: 'matcherNotFound' - } - ] - }, - { - code: 'expect(true).rejects;', - errors: [ - { - endColumn: 21, - column: 14, - messageId: 'matcherNotFound' - } - ] - }, - { - code: 'expect(true).not;', - errors: [ - { - endColumn: 17, - column: 14, - messageId: 'matcherNotFound' - } - ] - }, - { - code: 'expect(Promise.resolve(2)).resolves.toBeDefined();', - errors: [ - { - column: 1, - endColumn: 50, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'expect(Promise.resolve(2)).rejects.toBeDefined();', - errors: [ - { - column: 1, - endColumn: 49, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'expect(Promise.resolve(2)).resolves.toBeDefined();', - options: [{ alwaysAwait: true }], - errors: [ - { - column: 1, - endColumn: 50, - messageId: 'asyncMustBeAwaited' - } - ] - }, - { - code: ` + { + code: 'expect(1).toBe(2);', + options: [{ maxArgs: 2 }] + }, + { + code: 'expect(1, "1 !== 2").toBe(2);', + options: [{ maxArgs: 2 }] + }, + { + code: 'test("valid-expect", () => { expect(2).not.toBe(2); });', + options: [{ asyncMatchers: ['toRejectWith'] }] + }, + { + code: 'test("valid-expect", () => { expect(Promise.reject(2)).toRejectWith(2); });', + options: [{ asyncMatchers: ['toResolveWith'] }] + }, + { + code: 'test("valid-expect", async () => { await expect(Promise.resolve(2)).toResolve(); });', + options: [{ asyncMatchers: ['toResolveWith'] }] + }, + { + code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).toResolve(); });', + options: [{ asyncMatchers: ['toResolveWith'] }] + } + ], + invalid: [ + { + code: 'expect().toBe(2);', + options: [{ minArgs: undefined, maxArgs: undefined }], + errors: [ + { + messageId: 'notEnoughArgs', + data: { + s: '', + amount: 1 + } + } + ] + }, + { + code: 'expect().toBe(true);', + errors: [ + { + endColumn: 8, + column: 7, + messageId: 'notEnoughArgs', + data: { + s: '', + amount: 1 + } + } + ] + }, + { + code: 'expect().toEqual("something");', + errors: [ + { + endColumn: 8, + column: 7, + messageId: 'notEnoughArgs', + data: { + s: '', + amount: 1 + } + } + ] + }, + { + code: 'expect("something", "else").toEqual("something");', + errors: [ + { + endColumn: 28, + column: 21, + messageId: 'tooManyArgs', + data: { + s: '', + amount: 1 + } + } + ] + }, + { + code: 'expect("something", "else", "entirely").toEqual("something");', + options: [{ maxArgs: 2 }], + errors: [ + { + endColumn: 40, + column: 29, + messageId: 'tooManyArgs', + data: { + s: 's', + amount: 2 + } + } + ] + }, + { + code: 'expect("something", "else", "entirely").toEqual("something");', + options: [{ maxArgs: 2, minArgs: 2 }], + errors: [ + { + endColumn: 40, + column: 29, + messageId: 'tooManyArgs', + data: { + s: 's', + amount: 2 + } + } + ] + }, + { + code: 'expect("something", "else", "entirely").toEqual("something");', + options: [{ maxArgs: 2, minArgs: 1 }], + errors: [ + { + endColumn: 40, + column: 29, + messageId: 'tooManyArgs', + data: { + s: 's', + amount: 2 + } + } + ] + }, + { + code: 'expect("something").toEqual("something");', + options: [{ minArgs: 2 }], + errors: [ + { + endColumn: 8, + column: 7, + messageId: 'notEnoughArgs', + data: { + s: 's', + amount: 2 + } + } + ] + }, + { + code: 'expect("something", "else").toEqual("something");', + options: [{ maxArgs: 1, minArgs: 3 }], + errors: [ + { + endColumn: 8, + column: 7, + messageId: 'notEnoughArgs', + data: { + s: 's', + amount: 3 + } + }, + { + endColumn: 28, + column: 21, + messageId: 'tooManyArgs', + data: { + s: '', + amount: 1 + } + } + ] + }, + { + code: 'expect("something");', + errors: [{ endColumn: 20, column: 1, messageId: 'matcherNotFound' }] + }, + { + code: 'expect();', + errors: [{ endColumn: 9, column: 1, messageId: 'matcherNotFound' }] + }, + { + code: 'expect(true).toBeDefined;', + errors: [ + { + endColumn: 25, + column: 14, + messageId: 'matcherNotCalled' + } + ] + }, + { + code: 'expect(true).not.toBeDefined;', + errors: [ + { + endColumn: 29, + column: 18, + messageId: 'matcherNotCalled' + } + ] + }, + { + code: 'expect(true).nope.toBeDefined;', + errors: [ + { + endColumn: 30, + column: 19, + messageId: 'matcherNotCalled' + } + ] + }, + { + code: 'expect(true).nope.toBeDefined();', + errors: [ + { + endColumn: 32, + column: 1, + messageId: 'modifierUnknown' + } + ] + }, + { + code: 'expect(true).not.resolves.toBeDefined();', + errors: [ + { + endColumn: 40, + column: 1, + messageId: 'modifierUnknown' + } + ] + }, + { + code: 'expect(true).not.not.toBeDefined();', + errors: [ + { + endColumn: 35, + column: 1, + messageId: 'modifierUnknown' + } + ] + }, + { + code: 'expect(true).resolves.not.exactly.toBeDefined();', + errors: [ + { + endColumn: 48, + column: 1, + messageId: 'modifierUnknown' + } + ] + }, + { + code: 'expect(true).resolves;', + errors: [ + { + endColumn: 22, + column: 14, + messageId: 'matcherNotFound' + } + ] + }, + { + code: 'expect(true).rejects;', + errors: [ + { + endColumn: 21, + column: 14, + messageId: 'matcherNotFound' + } + ] + }, + { + code: 'expect(true).not;', + errors: [ + { + endColumn: 17, + column: 14, + messageId: 'matcherNotFound' + } + ] + }, + { + code: 'expect(Promise.resolve(2)).resolves.toBeDefined();', + errors: [ + { + column: 1, + endColumn: 50, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'expect(Promise.resolve(2)).rejects.toBeDefined();', + errors: [ + { + column: 1, + endColumn: 49, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'expect(Promise.resolve(2)).resolves.toBeDefined();', + options: [{ alwaysAwait: true }], + errors: [ + { + column: 1, + endColumn: 50, + messageId: 'asyncMustBeAwaited' + } + ] + }, + { + code: ` expect.extend({ toResolve(obj) { this.isNot @@ -407,16 +402,16 @@ describe(RULE_NAME, () => { } }); `, - errors: [ - { - column: 11, - endColumn: 45, - messageId: 'asyncMustBeAwaited' - } - ] - }, - { - code: ` + errors: [ + { + column: 11, + endColumn: 45, + messageId: 'asyncMustBeAwaited' + } + ] + }, + { + code: ` expect.extend({ toResolve(obj) { this.isNot @@ -425,262 +420,262 @@ describe(RULE_NAME, () => { } }); `, - errors: [ - { - column: 11, - endColumn: 45, - messageId: 'asyncMustBeAwaited' - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).resolves.toBeDefined(); });', - errors: [ - { - column: 30, - endColumn: 79, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toResolve(); });', - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 30, - line: 1 - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toResolve(); });', - options: [{ asyncMatchers: undefined }], - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 30, - line: 1 - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toReject(); });', - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 30, - line: 1 - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).not.toReject(); });', - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 30, - line: 1 - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', - errors: [ - { - column: 30, - endColumn: 83, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).rejects.toBeDefined(); });', - errors: [ - { - column: 30, - endColumn: 78, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', - errors: [ - { - column: 30, - endColumn: 82, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.toBeDefined(); });', - errors: [ - { - column: 36, - endColumn: 85, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', - errors: [ - { - column: 36, - endColumn: 89, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.reject(2)).toRejectWith(2); });', - options: [{ asyncMatchers: ['toRejectWith'] }], - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 30 - } - ] - }, - { - code: 'test("valid-expect", () => { expect(Promise.reject(2)).rejects.toBe(2); });', - options: [{ asyncMatchers: ['toRejectWith'] }], - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 30 - } - ] - }, - { - code: ` + errors: [ + { + column: 11, + endColumn: 45, + messageId: 'asyncMustBeAwaited' + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).resolves.toBeDefined(); });', + errors: [ + { + column: 30, + endColumn: 79, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toResolve(); });', + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 30, + line: 1 + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toResolve(); });', + options: [{ asyncMatchers: undefined }], + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 30, + line: 1 + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toReject(); });', + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 30, + line: 1 + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).not.toReject(); });', + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 30, + line: 1 + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', + errors: [ + { + column: 30, + endColumn: 83, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).rejects.toBeDefined(); });', + errors: [ + { + column: 30, + endColumn: 78, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', + errors: [ + { + column: 30, + endColumn: 82, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.toBeDefined(); });', + errors: [ + { + column: 36, + endColumn: 85, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', + errors: [ + { + column: 36, + endColumn: 89, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.reject(2)).toRejectWith(2); });', + options: [{ asyncMatchers: ['toRejectWith'] }], + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 30 + } + ] + }, + { + code: 'test("valid-expect", () => { expect(Promise.reject(2)).rejects.toBe(2); });', + options: [{ asyncMatchers: ['toRejectWith'] }], + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 30 + } + ] + }, + { + code: ` test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); expect(Promise.resolve(1)).rejects.toBeDefined(); }); `, - errors: [ - { - line: 3, - column: 7, - endColumn: 60, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - }, - { - line: 4, - column: 7, - endColumn: 55, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 3, + column: 7, + endColumn: 60, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + }, + { + line: 4, + column: 7, + endColumn: 55, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", async () => { await expect(Promise.resolve(2)).resolves.not.toBeDefined(); expect(Promise.resolve(1)).rejects.toBeDefined(); }); `, - errors: [ - { - line: 4, - column: 7, - endColumn: 55, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 4, + column: 7, + endColumn: 55, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); return expect(Promise.resolve(1)).rejects.toBeDefined(); }); `, - options: [{ alwaysAwait: true }], - errors: [ - { - line: 3, - column: 7, - endColumn: 60, - messageId: 'asyncMustBeAwaited' - }, - { - line: 4, - column: 14, - endColumn: 62, - messageId: 'asyncMustBeAwaited' - } - ] - }, - { - code: ` + options: [{ alwaysAwait: true }], + errors: [ + { + line: 3, + column: 7, + endColumn: 60, + messageId: 'asyncMustBeAwaited' + }, + { + line: 4, + column: 14, + endColumn: 62, + messageId: 'asyncMustBeAwaited' + } + ] + }, + { + code: ` test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); return expect(Promise.resolve(1)).rejects.toBeDefined(); }); `, - errors: [ - { - line: 3, - column: 7, - endColumn: 60, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 3, + column: 7, + endColumn: 60, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", () => { Promise.x(expect(Promise.resolve(2)).resolves.not.toBeDefined()); }); `, - errors: [ - { - line: 3, - column: 7, - endColumn: 71, - messageId: 'promisesWithAsyncAssertionsMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 3, + column: 7, + endColumn: 71, + messageId: 'promisesWithAsyncAssertionsMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", () => { Promise.resolve(expect(Promise.resolve(2)).resolves.not.toBeDefined()); }); `, - options: [{ alwaysAwait: true }], - errors: [ - { - line: 3, - column: 8, - endColumn: 78, - messageId: 'promisesWithAsyncAssertionsMustBeAwaited' - } - ] - }, - { - code: ` + options: [{ alwaysAwait: true }], + errors: [ + { + line: 3, + column: 8, + endColumn: 78, + messageId: 'promisesWithAsyncAssertionsMustBeAwaited' + } + ] + }, + { + code: ` test("valid-expect", () => { Promise.all([ expect(Promise.resolve(2)).resolves.not.toBeDefined(), @@ -688,38 +683,38 @@ describe(RULE_NAME, () => { ]); }); `, - errors: [ - { - line: 3, - column: 7, - endLine: 6, - endColumn: 9, - messageId: 'promisesWithAsyncAssertionsMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 3, + column: 7, + endLine: 6, + endColumn: 9, + messageId: 'promisesWithAsyncAssertionsMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", () => { Promise.x([ expect(Promise.resolve(2)).resolves.not.toBeDefined(), expect(Promise.resolve(3)).resolves.not.toBeDefined(), ]); });`, - errors: [ - { - line: 3, - column: 7, - endLine: 6, - endColumn: 9, - messageId: 'promisesWithAsyncAssertionsMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 3, + column: 7, + endLine: 6, + endColumn: 9, + messageId: 'promisesWithAsyncAssertionsMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", () => { const assertions = [ expect(Promise.resolve(2)).resolves.not.toBeDefined(), @@ -727,27 +722,27 @@ describe(RULE_NAME, () => { ] }); `, - errors: [ - { - line: 4, - column: 9, - endLine: 4, - endColumn: 62, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - }, - { - line: 5, - column: 9, - endLine: 5, - endColumn: 62, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 4, + column: 9, + endLine: 4, + endColumn: 62, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + }, + { + line: 5, + column: 9, + endLine: 5, + endColumn: 62, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", () => { const assertions = [ expect(Promise.resolve(2)).toResolve(), @@ -755,23 +750,23 @@ describe(RULE_NAME, () => { ] }); `, - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 7, - line: 4 - }, - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 7, - line: 5 - } - ] - }, - { - code: ` + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 7, + line: 4 + }, + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 7, + line: 5 + } + ] + }, + { + code: ` test("valid-expect", () => { const assertions = [ expect(Promise.resolve(2)).not.toResolve(), @@ -779,52 +774,52 @@ describe(RULE_NAME, () => { ] }); `, - errors: [ - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 9, - line: 4 - }, - { - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' }, - column: 9, - line: 5 - } - ] - }, - { - code: 'expect(Promise.resolve(2)).resolves.toBe;', - errors: [ - { - column: 37, - endColumn: 41, - messageId: 'matcherNotCalled' - } - ] - }, - { - code: ` + errors: [ + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 9, + line: 4 + }, + { + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' }, + column: 9, + line: 5 + } + ] + }, + { + code: 'expect(Promise.resolve(2)).resolves.toBe;', + errors: [ + { + column: 37, + endColumn: 41, + messageId: 'matcherNotCalled' + } + ] + }, + { + code: ` test("valid-expect", () => { return expect(functionReturningAPromise()).resolves.toEqual(1).then(() => { expect(Promise.resolve(2)).resolves.toBe(1); }); }); `, - errors: [ - { - line: 4, - column: 9, - endLine: 4, - endColumn: 52, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 4, + column: 9, + endLine: 4, + endColumn: 52, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", () => { return expect(functionReturningAPromise()).resolves.toEqual(1).then(async () => { await expect(Promise.resolve(2)).resolves.toBe(1); @@ -832,26 +827,26 @@ describe(RULE_NAME, () => { }); }); `, - errors: [ - { - line: 5, - column: 9, - endLine: 5, - endColumn: 52, - messageId: 'asyncMustBeAwaited', - data: { orReturned: ' or returned' } - } - ] - }, - { - code: ` + errors: [ + { + line: 5, + column: 9, + endLine: 5, + endColumn: 52, + messageId: 'asyncMustBeAwaited', + data: { orReturned: ' or returned' } + } + ] + }, + { + code: ` test("valid-expect", async () => { await expect(Promise.resolve(1)); }); `, - errors: [{ endColumn: 39, column: 13, messageId: 'matcherNotFound' }] - } - ] - }) - }) -}) + errors: [{ endColumn: 39, column: 13, messageId: 'matcherNotFound' }] + } + ] + }) +// }) +// }) diff --git a/src/utils/index.ts b/src/utils/index.ts index 9e4eaa5..6587c19 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -3,61 +3,77 @@ // Imported from https://github.com/jest-community/eslint-plugin-jest/blob/main/src/rules/utils/accessors.ts#L6 // eslint-disable-next-line eslint-comments/disable-enable-pair /* eslint-disable no-use-before-define */ -import { TSESLint, AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils' -import { KnownMemberExpression, ParsedExpectVitestFnCall } from './parseVitestFnCall' - -export const createEslintRule = ESLintUtils.RuleCreator((ruleName) => `https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/${ruleName}.md`) - -export const joinNames = (a: string | null, b: string | null): string | null => a && b ? `${a}.${b}` : null +import { + TSESLint, + AST_NODE_TYPES, + ESLintUtils, + TSESTree +} from '@typescript-eslint/utils' +import { + KnownMemberExpression, + ParsedExpectVitestFnCall +} from './parseVitestFnCall' + +export const createEslintRule = ESLintUtils.RuleCreator( + (ruleName) => + `https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/${ruleName}.md` +) + +export const joinNames = (a: string | null, b: string | null): string | null => + a && b ? `${a}.${b}` : null interface TemplateLiteral - extends TSESTree.TemplateLiteral { - quasis: [TSESTree.TemplateElement & { value: { raw: Value; cooked: Value } }]; + extends TSESTree.TemplateLiteral { + quasis: [TSESTree.TemplateElement & { value: { raw: Value; cooked: Value } }]; } interface StringLiteral - extends TSESTree.StringLiteral { - value: Value; + extends TSESTree.StringLiteral { + value: Value; } export type StringNode = - | StringLiteral - | TemplateLiteral; + | StringLiteral + | TemplateLiteral; export type FunctionExpression = - | TSESTree.ArrowFunctionExpression - | TSESTree.FunctionExpression; + | TSESTree.ArrowFunctionExpression + | TSESTree.FunctionExpression; export const isFunction = (node: TSESTree.Node): node is FunctionExpression => - node.type === AST_NODE_TYPES.FunctionExpression || - node.type === AST_NODE_TYPES.ArrowFunctionExpression + node.type === AST_NODE_TYPES.FunctionExpression || + node.type === AST_NODE_TYPES.ArrowFunctionExpression /** * An `Identifier` with a known `name` value - i.e `expect`. */ interface KnownIdentifier extends TSESTree.Identifier { - name: Name; + name: Name; } export function getNodeName(node: TSESTree.Node): string | null { - if (isSupportedAccessor(node)) - return getAccessorValue(node) - - switch (node.type) { - case AST_NODE_TYPES.TaggedTemplateExpression: - return getNodeName(node.tag) - case AST_NODE_TYPES.MemberExpression: - return joinNames(getNodeName(node.object), getNodeName(node.property)) - case AST_NODE_TYPES.NewExpression: - case AST_NODE_TYPES.CallExpression: - return getNodeName(node.callee) - } - return null + if (isSupportedAccessor(node)) return getAccessorValue(node) + + switch (node.type) { + case AST_NODE_TYPES.TaggedTemplateExpression: + return getNodeName(node.tag) + case AST_NODE_TYPES.MemberExpression: + return joinNames(getNodeName(node.object), getNodeName(node.property)) + case AST_NODE_TYPES.NewExpression: + case AST_NODE_TYPES.CallExpression: + return getNodeName(node.callee) + } + return null } -export type AccessorNode = StringNode | KnownIdentifier +export type AccessorNode = + | StringNode + | KnownIdentifier; -export const isSupportedAccessor = (node: TSESTree.Node, value?: V): node is AccessorNode => { - return isIdentifier(node, value) || isStringNode(node, value) +export const isSupportedAccessor = ( + node: TSESTree.Node, + value?: V +): node is AccessorNode => { + return isIdentifier(node, value) || isStringNode(node, value) } /** @@ -67,11 +83,13 @@ export const isSupportedAccessor = (node: TSESTree.Node, value * the `name` will be compared to that of the `identifier`. */ export const isIdentifier = ( - node: TSESTree.Node, - name?: V + node: TSESTree.Node, + name?: V ): node is KnownIdentifier => { - return node.type === AST_NODE_TYPES.Identifier && - (name === undefined || node.name === name) + return ( + node.type === AST_NODE_TYPES.Identifier && + (name === undefined || node.name === name) + ) } /** @@ -83,12 +101,14 @@ export const isIdentifier = ( * the `value` will be compared to that of the `TemplateLiteral`. */ const isTemplateLiteral = ( - node: TSESTree.Node, - value?: V + node: TSESTree.Node, + value?: V ): node is StringLiteral => { - return node.type === AST_NODE_TYPES.TemplateLiteral && - node.quasis.length === 1 && - (value === undefined || node.quasis[0].value.raw === value) + return ( + node.type === AST_NODE_TYPES.TemplateLiteral && + node.quasis.length === 1 && + (value === undefined || node.quasis[0].value.raw === value) + ) } /** @@ -98,31 +118,32 @@ const isTemplateLiteral = ( * the `value` will be compared to that of the `StringLiteral`. */ const isStringLiteral = ( - node: TSESTree.Node, - value?: V + node: TSESTree.Node, + value?: V ): node is StringLiteral => - node.type === AST_NODE_TYPES.Literal && - typeof node.value === 'string' && - (value === undefined || node.value === value) + node.type === AST_NODE_TYPES.Literal && + typeof node.value === 'string' && + (value === undefined || node.value === value) /** * Checks if the given `node` is a {@link StringNode}. */ export const isStringNode = ( - node: TSESTree.Node, - specifics?: V + node: TSESTree.Node, + specifics?: V ): node is StringNode => - isStringLiteral(node, specifics) || isTemplateLiteral(node, specifics) + isStringLiteral(node, specifics) || isTemplateLiteral(node, specifics) /** * Gets the value of the given `AccessorNode`, * account for the different node types. */ -export const getAccessorValue = - (accessor: AccessorNode): S => - accessor.type === AST_NODE_TYPES.Identifier - ? accessor.name - : getStringValue(accessor) +export const getAccessorValue = ( + accessor: AccessorNode +): S => + accessor.type === AST_NODE_TYPES.Identifier + ? accessor.name + : getStringValue(accessor) /** * Gets the value of the given `StringNode`. @@ -130,61 +151,60 @@ export const getAccessorValue = * If the `node` is a `TemplateLiteral`, the `raw` value is used; * otherwise, `value` is returned instead. */ -export const getStringValue = - (node: StringNode): S => - node?.type === AST_NODE_TYPES.TemplateLiteral - ? node.quasis[0].value.raw - : node?.value +export const getStringValue = (node: StringNode): S => + node?.type === AST_NODE_TYPES.TemplateLiteral + ? node.quasis[0].value.raw + : node?.value export const replaceAccessorFixer = ( - fixer: TSESLint.RuleFixer, - node: AccessorNode, - text: string + fixer: TSESLint.RuleFixer, + node: AccessorNode, + text: string ) => { - return fixer.replaceText( - node, - node.type === AST_NODE_TYPES.Identifier ? text : `'${text}'` - ) + return fixer.replaceText( + node, + node.type === AST_NODE_TYPES.Identifier ? text : `'${text}'` + ) } export const removeExtraArgumentsFixer = ( - fixer: TSESLint.RuleFixer, - context: TSESLint.RuleContext, - func: TSESTree.CallExpression, - from: number + fixer: TSESLint.RuleFixer, + context: TSESLint.RuleContext, + func: TSESTree.CallExpression, + from: number ): TSESLint.RuleFix => { - const firstArg = func.arguments[from] - const lastArg = func.arguments[func.arguments.length - 1] + const firstArg = func.arguments[from] + const lastArg = func.arguments[func.arguments.length - 1] - const sourceCode = context.getSourceCode() + const sourceCode = context.getSourceCode() - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - let tokenAfterLastParam = sourceCode.getTokenAfter(lastArg)! + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + let tokenAfterLastParam = sourceCode.getTokenAfter(lastArg)! - if (tokenAfterLastParam.value === ',') - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - tokenAfterLastParam = sourceCode.getTokenAfter(tokenAfterLastParam)! + if (tokenAfterLastParam.value === ',') + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + tokenAfterLastParam = sourceCode.getTokenAfter(tokenAfterLastParam)! - return fixer.removeRange([firstArg.range[0], tokenAfterLastParam.range[0]]) + return fixer.removeRange([firstArg.range[0], tokenAfterLastParam.range[0]]) } interface CalledKnownMemberExpression - extends KnownMemberExpression { - parent: KnownCallExpression; + extends KnownMemberExpression { + parent: KnownCallExpression; } export interface KnownCallExpression - extends TSESTree.CallExpression { - callee: CalledKnownMemberExpression; + extends TSESTree.CallExpression { + callee: CalledKnownMemberExpression; } export const isParsedInstanceOfMatcherCall = ( - expectFnCall: ParsedExpectVitestFnCall, - classArg?: string + expectFnCall: ParsedExpectVitestFnCall, + classArg?: string ) => { - return ( - getAccessorValue(expectFnCall.matcher) === 'toBeInstanceOf' && - expectFnCall.args.length === 1 && - isSupportedAccessor(expectFnCall.args[0], classArg) - ) + return ( + getAccessorValue(expectFnCall.matcher) === 'toBeInstanceOf' && + expectFnCall.args.length === 1 && + isSupportedAccessor(expectFnCall.args[0], classArg) + ) } diff --git a/src/utils/test.ts b/src/utils/test.ts new file mode 100644 index 0000000..3e845c0 --- /dev/null +++ b/src/utils/test.ts @@ -0,0 +1,10 @@ +import { RuleTester } from '@typescript-eslint/rule-tester' +import { afterAll, describe, it } from 'vitest' + +RuleTester.afterAll = afterAll +RuleTester.describe = describe +RuleTester.it = it + +export const ruleTester: RuleTester = new RuleTester({ + parser: '@typescript-eslint/parser' +})