diff --git a/package-lock.json b/package-lock.json index aa275fd6..eccd87ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6777,27 +6777,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/typescript-estree": "8.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, "node_modules/@typescript-eslint/parser": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", @@ -6864,27 +6843,6 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/typescript-estree": "8.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, "node_modules/@typescript-eslint/types": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", @@ -6925,122 +6883,24 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", - "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0" + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", - "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", - "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { @@ -7115,6 +6975,28 @@ } } }, + "node_modules/@vitest/eslint-plugin": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.1.4.tgz", + "integrity": "sha512-kudjgefmJJ7xQ2WfbUU6pZbm7Ou4gLYRaao/8Ynide3G0QhVKHd978sDyWX4KOH0CCMH9cyrGAkFd55eGzJ48Q==", + "peerDependencies": { + "@typescript-eslint/utils": ">= 8.0", + "eslint": ">= 8.57.0", + "typescript": ">= 5.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/utils": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, "node_modules/@vitest/expect": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.1.tgz", @@ -11241,34 +11123,6 @@ "node": ">=8" } }, - "node_modules/eslint-plugin-vitest": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.5.4.tgz", - "integrity": "sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==", - "dependencies": { - "@typescript-eslint/utils": "^7.7.1" - }, - "engines": { - "node": "^18.0.0 || >= 20.0.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "vitest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "vitest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-vitest-globals": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.5.0.tgz", - "integrity": "sha512-ZSsVOaOIig0oVLzRTyk8lUfBfqzWxr/J3/NFMfGGRIkGQPejJYmDH3gXmSJxAojts77uzAGB/UmVrwi2DC4LYA==" - }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -24305,6 +24159,7 @@ "dependencies": { "@typescript-eslint/eslint-plugin": "^8.3.0", "@typescript-eslint/parser": "^8.3.0", + "@vitest/eslint-plugin": "^1.1.4", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.30.0", "eslint-plugin-jest": "^28.8.3", @@ -24313,9 +24168,7 @@ "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.36.1", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-testing-library": "^6.3.0", - "eslint-plugin-vitest": "^0.5.4", - "eslint-plugin-vitest-globals": "^1.5.0" + "eslint-plugin-testing-library": "^6.3.0" }, "bin": { "init-eslint-config": "bin/init.js" diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index b02d3b7c..1193c6aa 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -29,6 +29,7 @@ "dependencies": { "@typescript-eslint/eslint-plugin": "^8.3.0", "@typescript-eslint/parser": "^8.3.0", + "@vitest/eslint-plugin": "^1.1.4", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.30.0", "eslint-plugin-jest": "^28.8.3", @@ -37,9 +38,7 @@ "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.36.1", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-testing-library": "^6.3.0", - "eslint-plugin-vitest": "^0.5.4", - "eslint-plugin-vitest-globals": "^1.5.0" + "eslint-plugin-testing-library": "^6.3.0" }, "peerDependencies": { "eslint": "^8.57.0", diff --git a/packages/eslint-config/rules/vitest.js b/packages/eslint-config/rules/vitest.js index afbbad6d..01c7f4b9 100644 --- a/packages/eslint-config/rules/vitest.js +++ b/packages/eslint-config/rules/vitest.js @@ -2,10 +2,7 @@ module.exports = { overrides: [ { files: ['*.{test,spec,steps}.{js,jsx,ts,tsx}'], - plugins: ['vitest', 'vitest-globals'], - env: { - 'vitest-globals/env': true, - }, + plugins: ['@vitest'], rules: { // eslint-plugin-import https://github.com/import-js/eslint-plugin-import @@ -17,215 +14,215 @@ module.exports = { // Require .spec test file pattern // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md - 'vitest/consistent-test-filename': 'off', + '@vitest/consistent-test-filename': 'off', // Enforce using test or it but not both // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md - 'vitest/consistent-test-it': 'off', + '@vitest/consistent-test-it': 'off', // Enforce having expectation in test body // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md - 'vitest/expect-expect': 'off', + '@vitest/expect-expect': 'off', // Enforce a maximum number of expect per test // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md - 'vitest/max-expects': 'off', + '@vitest/max-expects': 'off', // Require describe block to be less than set max value or default value // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md - 'vitest/max-nested-describe': 'off', + '@vitest/max-nested-describe': 'off', // Disallow alias methods // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md - 'vitest/no-alias-methods': 'off', + '@vitest/no-alias-methods': 'off', // Disallow commented out tests // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md - 'vitest/no-commented-out-tests': 'off', + '@vitest/no-commented-out-tests': 'off', // Disallow conditional expects // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md - 'vitest/no-conditional-expect': 'error', + '@vitest/no-conditional-expect': 'error', // Disallow conditional tests // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md - 'vitest/no-conditional-in-test': 'off', + '@vitest/no-conditional-in-test': 'off', // Disallow conditional tests // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md - 'vitest/no-conditional-tests': 'off', + '@vitest/no-conditional-tests': 'off', // Disallow disabled tests // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md - 'vitest/no-disabled-tests': 'off', + '@vitest/no-disabled-tests': 'off', // Disallow using a callback in asynchronous tests and hooks // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md - 'vitest/no-done-callback': 'off', + '@vitest/no-done-callback': 'off', // Disallow duplicate hooks and teardown hooks // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md - 'vitest/no-duplicate-hooks': 'off', + '@vitest/no-duplicate-hooks': 'off', // Disallow focused tests // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md - 'vitest/no-focused-tests': 'off', + '@vitest/no-focused-tests': 'off', // Disallow setup and teardown hooks // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md - 'vitest/no-hooks': 'off', + '@vitest/no-hooks': 'off', // Disallow identical titles // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md - 'vitest/no-identical-title': 'error', + '@vitest/no-identical-title': 'error', // Disallow importing node:test // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md - 'vitest/no-import-node-test': 'off', + '@vitest/no-import-node-test': 'off', // Disallow string interpolation in snapshots // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md - 'vitest/no-interpolation-in-snapshots': 'error', + '@vitest/no-interpolation-in-snapshots': 'error', // Disallow large snapshots // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md - 'vitest/no-large-snapshots': 'off', + '@vitest/no-large-snapshots': 'off', // Disallow importing from mocks directory // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md - 'vitest/no-mocks-import': 'error', + '@vitest/no-mocks-import': 'error', // Disallow the use of certain matchers // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md - 'vitest/no-restricted-matchers': 'off', + '@vitest/no-restricted-matchers': 'off', // Disallow specific vi. methods // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md - 'vitest/no-restricted-vi-methods': 'off', + '@vitest/no-restricted-vi-methods': 'off', // Disallow using expect outside of it or test blocks // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md - 'vitest/no-standalone-expect': 'off', + '@vitest/no-standalone-expect': 'off', // Disallow using test as a prefix // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md - 'vitest/no-test-prefixes': 'off', + '@vitest/no-test-prefixes': 'off', // Disallow return statements in tests // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md - 'vitest/no-test-return-statement': 'off', + '@vitest/no-test-return-statement': 'off', // Enforce using toBeCalledWith() or toHaveBeenCalledWith() // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md - 'vitest/prefer-called-with': 'error', + '@vitest/prefer-called-with': 'error', // Enforce using the built-in comparison matchers // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md - 'vitest/prefer-comparison-matcher': 'off', + '@vitest/prefer-comparison-matcher': 'off', // Enforce using each rather than manual loops // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md - 'vitest/prefer-each': 'off', + '@vitest/prefer-each': 'off', // Enforce using the built-in quality matchers // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md - 'vitest/prefer-equality-matcher': 'off', + '@vitest/prefer-equality-matcher': 'off', // Enforce using expect assertions instead of callbacks // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md - 'vitest/prefer-expect-assertions': 'off', + '@vitest/prefer-expect-assertions': 'off', // Enforce using expect().resolves over expect(await ...) syntax // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md - 'vitest/prefer-expect-resolves': 'off', + '@vitest/prefer-expect-resolves': 'off', // Enforce having hooks in consistent order (vitest/prefer-hooks-in-order) // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md - 'vitest/prefer-hooks-in-order': 'off', + '@vitest/prefer-hooks-in-order': 'off', // Enforce having hooks before any test cases // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md - 'vitest/prefer-hooks-on-top': 'off', + '@vitest/prefer-hooks-on-top': 'off', // Enforce lowercase titles // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md - 'vitest/prefer-lowercase-title': 'off', + '@vitest/prefer-lowercase-title': 'off', // Enforce mock resolved/rejected shorthands for promises // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md - 'vitest/prefer-mock-promise-shorthand': 'off', + '@vitest/prefer-mock-promise-shorthand': 'off', // Enforce including a hint with external snapshots // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md - 'vitest/prefer-snapshot-hint': 'off', + '@vitest/prefer-snapshot-hint': 'off', // Enforce using vi.spyOn // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md - 'vitest/prefer-spy-on': 'off', + '@vitest/prefer-spy-on': 'off', // Enforce strict equal over equal // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md - 'vitest/prefer-strict-equal': 'error', + '@vitest/prefer-strict-equal': 'error', // Enforce using toBe() // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md - 'vitest/prefer-to-be': 'off', + '@vitest/prefer-to-be': 'off', // Enforce using toBeFalsy() // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md - 'vitest/prefer-to-be-falsy': 'error', + '@vitest/prefer-to-be-falsy': 'error', // Enforce using toBeObject() // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md - 'vitest/prefer-to-be-object': 'error', + '@vitest/prefer-to-be-object': 'error', // Enforce using toBeTruthy // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md - 'vitest/prefer-to-be-truthy': 'error', + '@vitest/prefer-to-be-truthy': 'error', // Enforce using toContain() // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md - 'vitest/prefer-to-contain': 'error', + '@vitest/prefer-to-contain': 'error', // Enforce using toHaveLength() // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md - 'vitest/prefer-to-have-length': 'error', + '@vitest/prefer-to-have-length': 'error', // Enforce using test.todo // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md - 'vitest/prefer-todo': 'off', + '@vitest/prefer-todo': 'off', // Require setup and teardown to be within a hook // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md - 'vitest/require-hook': 'off', + '@vitest/require-hook': 'off', // Require local Test Context for concurrent snapshot tests // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md - 'vitest/require-local-test-context-for-concurrent-snapshots': 'off', + '@vitest/require-local-test-context-for-concurrent-snapshots': 'off', // Require toThrow() to be called with an error message // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md - 'vitest/require-to-throw-message': 'off', + '@vitest/require-to-throw-message': 'off', // Enforce that all tests are in a top-level describe // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md - 'vitest/require-top-level-describe': 'off', + '@vitest/require-top-level-describe': 'off', // Enforce unbound methods are called with their expected scope // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/unbound-method.md - 'vitest/unbound-method': 'off', + '@vitest/unbound-method': 'off', // Enforce valid describe callback // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md - 'vitest/valid-describe-callback': 'error', + '@vitest/valid-describe-callback': 'error', // Enforce valid expect() usage // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md - 'vitest/valid-expect': 'error', + '@vitest/valid-expect': 'error', // Enforce valid titles // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md - 'vitest/valid-title': 'warn', + '@vitest/valid-title': 'warn', }, }, ],