diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8998893d6f..6fd7e29382 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -23,6 +23,8 @@ updates: patterns: - 'vitest' - '@vitest/*' + exclude-patterns: + - '@vitest/eslint-plugin' - package-ecosystem: 'github-actions' directory: '/' diff --git a/eslint.config.ts b/eslint.config.ts index 2f228ba2e9..2e47a7ffae 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -275,7 +275,7 @@ export default defineConfig([ 'react-hooks/use-memo': 1, // ESLint React - // https://www.eslint-react.xyz/docs/rules/overview + // https://eslint-react.xyz/docs/rules /* // copy all the rules from the rules table for easy pasting copy( @@ -332,6 +332,7 @@ copy( '@eslint-react/no-unstable-default-props': 1, '@eslint-react/no-unused-class-component-members': 1, '@eslint-react/no-unused-props': 1, + '@eslint-react/no-unused-state': 1, '@eslint-react/no-use-context': 1, '@eslint-react/purity': 1, '@eslint-react/refs': 1, @@ -369,6 +370,7 @@ copy( '@eslint-react/dom-no-void-elements-with-children': 1, '@eslint-react/web-api-no-leaked-event-listener': 1, '@eslint-react/web-api-no-leaked-fetch': 1, + '@eslint-react/web-api-no-leaked-intersection-observer': 1, '@eslint-react/web-api-no-leaked-interval': 1, '@eslint-react/web-api-no-leaked-resize-observer': 1, '@eslint-react/web-api-no-leaked-timeout': 1, diff --git a/package-lock.json b/package-lock.json index f7d6fd5c82..458bd52a3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -367,152 +367,152 @@ } }, "node_modules/@eslint-react/ast": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-5.7.8.tgz", - "integrity": "sha512-AmMqth2ryBXU6B8aM940sxO1oWo7Vs1H/taoudflNOpuv5WPLvI4mF+GuIy6+uRC78BqwZlGU1wjLoAxpOHj3A==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-5.9.0.tgz", + "integrity": "sha512-D5DmbsEGYYmHOC2J68BRC2iJhYsD4K0x8mllgB08SeSQ0T/nP2BRogg/ohn5ZeRMb87ZDqN6NtGR7G7qTwgOSw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/typescript-estree": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/typescript-estree": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "string-ts": "^2.3.1" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/@eslint-react/core": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-5.7.8.tgz", - "integrity": "sha512-7F56PDcjxWorkWTdFnbnLae73VvWFeh61x74NjtSM82Io3iJ0V5b/UC5L1ixmgpd2AuaEAq0hSKu4dPHlQ3ZdQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-5.9.0.tgz", + "integrity": "sha512-GzARSlLTJT3FY9sUO9bYLoFtgiuUoNKzVv68oJkjAIembiu/6s1vyjs/I/1PEt+pEU6eu5hPjKHJXzd4boSDmQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/jsx": "5.7.8", - "@eslint-react/shared": "5.7.8", - "@eslint-react/var": "5.7.8", - "@typescript-eslint/scope-manager": "^8.59.3", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "@eslint-react/ast": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/jsx": "5.9.0", + "@eslint-react/shared": "5.9.0", + "@eslint-react/var": "5.9.0", + "@typescript-eslint/scope-manager": "^8.61.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "ts-pattern": "^5.9.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/@eslint-react/eslint": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/@eslint-react/eslint/-/eslint-5.7.8.tgz", - "integrity": "sha512-OTRtnMzfaAObDiMnOYLBfzed8HSIIHPt3sNzQEj0OG4HgG/XgugzxsXpp38ZHpfVLacCKimlvKCwcckYyb947w==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@eslint-react/eslint/-/eslint-5.9.0.tgz", + "integrity": "sha512-PEJPNXLjzlpdq2A4+9XlVdYziZPGq7wM+PB8jtmUzurQuZ8dqfCoBiQNuu+8TYMPGet1lUjHhijCO8MM9mEfrg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.59.3" + "@typescript-eslint/utils": "^8.61.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/@eslint-react/eslint-plugin": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-5.7.8.tgz", - "integrity": "sha512-AtqdzdZ+WGJ2JgSuCBUz6Xrdi4gEHEvfKuZ40leFU04wc8G4LOx6UOStTZfNCnmWZO2FrSl47wmz/WWOdRHK1w==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-5.9.0.tgz", + "integrity": "sha512-BQFiLhxgYnGldiydecjjRXSIixHUsYb8YNSdlrGkoQU3ZFidW6d5R0I1Reooz8DAg/m6sjwZ17MRVRNm3Z4PyA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/shared": "5.7.8", - "eslint-plugin-react-dom": "5.7.8", - "eslint-plugin-react-jsx": "5.7.8", - "eslint-plugin-react-naming-convention": "5.7.8", - "eslint-plugin-react-rsc": "5.7.8", - "eslint-plugin-react-web-api": "5.7.8", - "eslint-plugin-react-x": "5.7.8" + "@eslint-react/shared": "5.9.0", + "eslint-plugin-react-dom": "5.9.0", + "eslint-plugin-react-jsx": "5.9.0", + "eslint-plugin-react-naming-convention": "5.9.0", + "eslint-plugin-react-rsc": "5.9.0", + "eslint-plugin-react-web-api": "5.9.0", + "eslint-plugin-react-x": "5.9.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/@eslint-react/jsx": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/@eslint-react/jsx/-/jsx-5.7.8.tgz", - "integrity": "sha512-bf4J4mzF0gnOHsMW5voEGcCZ0HJnKp59Xgr5uBsSVahtxcRLSikK1fBnmdiZ00fMpPVWIK5SZjGBYTHUH/xvRQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@eslint-react/jsx/-/jsx-5.9.0.tgz", + "integrity": "sha512-dc6hBagLgCt+CSkWSJjbyPDGGcs/J9qHTdymMQrw51bO+DIztQpuy42E42EjOdxWcaw3U0eUtu330nZEcKqGMw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/shared": "5.7.8", - "@eslint-react/var": "5.7.8", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "@eslint-react/ast": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/shared": "5.9.0", + "@eslint-react/var": "5.9.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "ts-pattern": "^5.9.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/@eslint-react/shared": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-5.7.8.tgz", - "integrity": "sha512-J/lP9ZEXoO9plx8eXsYIsf4EnSodQkYzKJub8/Tpps6rFMktLhnlQFTm3MeYkAoOxVBIRC450vce23/D1A9ViQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-5.9.0.tgz", + "integrity": "sha512-Ln255YTTUSlONr+e0Lu1wi2X9fTuOlNNJNXTz6PYaNZFAwCNWdlhkzFL8HdIBgPiWPUKrt+OMuah8o0xVoHswA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eslint": "5.7.8", - "@typescript-eslint/utils": "^8.59.3", + "@eslint-react/eslint": "5.9.0", + "@typescript-eslint/utils": "^8.61.0", "ts-pattern": "^5.9.0", - "zod": "^4.4.3" + "zod": "^3.25.0 || ^4.0.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/@eslint-react/var": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-5.7.8.tgz", - "integrity": "sha512-p2QG1rhSJ3NK66ck6GG/XjceO86TbPewpJHZygEKBGadSPXCiNPMza7F0TAYA8SzAorOeNb5Ayl7rUTgnHWrPw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-5.9.0.tgz", + "integrity": "sha512-vNz4y4eFKRYetihXiiZueGgClsyTFhR3kltMDPwoZyJaERdkyeoUylY09OnWakJFitao1+s2eBkSVuFqA8dqrA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@typescript-eslint/scope-manager": "^8.59.3", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "@eslint-react/ast": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@typescript-eslint/scope-manager": "^8.61.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "ts-pattern": "^5.9.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, @@ -3135,25 +3135,25 @@ } }, "node_modules/eslint-plugin-react-dom": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-5.7.8.tgz", - "integrity": "sha512-83JXHVbfm+w4RaqGD76BV1ZHlD8WizgRKMloWz5nv+11tz8i3KF7Xbi0nhWpUp86I+VUDhZZL6BSCHfs63HHkA==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-5.9.0.tgz", + "integrity": "sha512-gBlV304swaW2S0MqVFkQhii0C+KAy2WmxFtVtho39h5GzWdjKjNIxdUdOPQvLAFd7B1/lkbJflqGQKf6sjWGTg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/jsx": "5.7.8", - "@eslint-react/shared": "5.7.8", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "@eslint-react/ast": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/jsx": "5.9.0", + "@eslint-react/shared": "5.9.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "compare-versions": "^6.1.1" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, @@ -3178,88 +3178,88 @@ } }, "node_modules/eslint-plugin-react-jsx": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-jsx/-/eslint-plugin-react-jsx-5.7.8.tgz", - "integrity": "sha512-ItC1Z52V/fa6Rr/mBBD0T2OmvktrHx5XEr4SpdTaH1wATpbdHMi7GGHBANggOzDcaEmvJRxfZpzzu2rrCESE4g==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-jsx/-/eslint-plugin-react-jsx-5.9.0.tgz", + "integrity": "sha512-K/8RtAb8GDuhoIsR+Feo5Cr57Ts1N2juekocxk9TuF3azx2bCOuHiuU/rqMStMWi5oLTPrg2XqquD2LeS7x6iQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/core": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/jsx": "5.7.8", - "@eslint-react/shared": "5.7.8", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3" + "@eslint-react/ast": "5.9.0", + "@eslint-react/core": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/jsx": "5.9.0", + "@eslint-react/shared": "5.9.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/eslint-plugin-react-naming-convention": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-5.7.8.tgz", - "integrity": "sha512-Hxuw1zjMor6IaAlUQbFxH/0qT1Gv9uVQQA5ayQGXij/4sdgD85apCwKXRfVf02p76VnVboJXrxXNOEx1BjtuOg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-5.9.0.tgz", + "integrity": "sha512-0VYdfPXZZLDiNzvp8DmgYFwZ+vO8pljU0Pcr83/Hj8PSilF4kL2rZWh4fkh+IVQv8iIpIv7HLRbBD/nU/QSh+w==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/core": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/var": "5.7.8", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "@eslint-react/ast": "5.9.0", + "@eslint-react/core": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/var": "5.9.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "ts-pattern": "^5.9.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/eslint-plugin-react-rsc": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-rsc/-/eslint-plugin-react-rsc-5.7.8.tgz", - "integrity": "sha512-b2NFpOCAdE2MTggofthnhom0qlYGh+fgNwdpjvxGEMVA9Rt0xjhKiNvtxnOrDLWdHVVBigP9Ilr7jzqInfufEg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-rsc/-/eslint-plugin-react-rsc-5.9.0.tgz", + "integrity": "sha512-hcP7lTqV5JNx8QpmMKric50IBEuFwj5mlM7cyaYB/2UWJaaQvScywHeg/CRZrDauFxkIVx9JXcORBqW+h7VGdQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/core": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/shared": "5.7.8", - "@eslint-react/var": "5.7.8", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3" + "@eslint-react/ast": "5.9.0", + "@eslint-react/core": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/shared": "5.9.0", + "@eslint-react/var": "5.9.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/eslint-plugin-react-web-api": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-5.7.8.tgz", - "integrity": "sha512-vfnbkJwOInykYqnoGSbiab+3yXdr6bcLwVwO3mJFrKPcJMqPGDS1gur9C4xhK3nB9ZV78ch8yP8CnsmFasq2lQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-5.9.0.tgz", + "integrity": "sha512-AlKMpAFHbgJ10hcTIw80NXzEPKxB1zugA98joPnMKDSuf/wScoWGwl5X6SmigVn4KChPBudYchdN0OrBUqO02g==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/core": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/shared": "5.7.8", - "@eslint-react/var": "5.7.8", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "@eslint-react/ast": "5.9.0", + "@eslint-react/core": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/shared": "5.9.0", + "@eslint-react/var": "5.9.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "birecord": "^0.1.1", "ts-pattern": "^5.9.0" }, @@ -3267,28 +3267,28 @@ "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } }, "node_modules/eslint-plugin-react-x": { - "version": "5.7.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-5.7.8.tgz", - "integrity": "sha512-Oia7nSq+F+ezgKYPQ73CnipWRlLUBqAt8JQVi34dylN3seSW6coaSZb8CkRdu/JaGBgntyD0u2RYHgaXGol4Fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-react/ast": "5.7.8", - "@eslint-react/core": "5.7.8", - "@eslint-react/eslint": "5.7.8", - "@eslint-react/jsx": "5.7.8", - "@eslint-react/shared": "5.7.8", - "@eslint-react/var": "5.7.8", - "@typescript-eslint/scope-manager": "^8.59.3", - "@typescript-eslint/type-utils": "^8.59.3", - "@typescript-eslint/types": "^8.59.3", - "@typescript-eslint/typescript-estree": "^8.59.3", - "@typescript-eslint/utils": "^8.59.3", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-5.9.0.tgz", + "integrity": "sha512-urgjMTtZpUzhkFBbQqp4+vdFhQmSkgeLnpq1h/2gemnzKjiMpDa9cCbo1vhjHnYQLzU6YRbxJ1hhqVv+9nXbjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-react/ast": "5.9.0", + "@eslint-react/core": "5.9.0", + "@eslint-react/eslint": "5.9.0", + "@eslint-react/jsx": "5.9.0", + "@eslint-react/shared": "5.9.0", + "@eslint-react/var": "5.9.0", + "@typescript-eslint/scope-manager": "^8.61.0", + "@typescript-eslint/type-utils": "^8.61.0", + "@typescript-eslint/types": "^8.61.0", + "@typescript-eslint/typescript-estree": "^8.61.0", + "@typescript-eslint/utils": "^8.61.0", "compare-versions": "^6.1.1", "string-ts": "^2.3.1", "ts-api-utils": "^2.5.0", @@ -3298,7 +3298,7 @@ "node": ">=22.0.0" }, "peerDependencies": { - "eslint": "^10.3.0", + "eslint": "*", "typescript": "*" } },