diff --git a/package-lock.json b/package-lock.json index 89478c5..e03e53a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "eslint-import-resolver-typescript": "^3.6.0", "eslint-plugin-cypress": "^2.14.0", "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "6.6.1", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-perfectionist": "^2.1.0", "eslint-plugin-prettier": "5.0.0", @@ -43,9 +44,6 @@ }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "eslint-plugin-jsx-a11y": "6.6.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -132,7 +130,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.15.tgz", "integrity": "sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==", - "peer": true, "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -824,7 +821,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.10.2", "@babel/runtime-corejs3": "^7.10.2" @@ -1003,8 +999,7 @@ "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "peer": true + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" }, "node_modules/asynciterator.prototype": { "version": "1.0.0", @@ -1195,7 +1190,6 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.0.tgz", "integrity": "sha512-ZtlVZobOeDQhb/y2lMK6mznDw7TJHDNcKx5/bbBkFvArIQ5CVFhSI6hWWQnMx9I8cNmNmZ30wpDyOC2E2nvgbQ==", - "peer": true, "engines": { "node": ">=4" } @@ -1203,8 +1197,7 @@ "node_modules/axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "peer": true + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" }, "node_modules/babel-plugin-macros": { "version": "3.1.0", @@ -1688,7 +1681,6 @@ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.1.tgz", "integrity": "sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ==", "hasInstallScript": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -1741,8 +1733,7 @@ "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "peer": true + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" }, "node_modules/date-time": { "version": "3.1.0", @@ -2344,7 +2335,6 @@ "version": "6.6.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.9", "aria-query": "^4.2.2", @@ -2370,14 +2360,12 @@ "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "peer": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -3885,14 +3873,12 @@ "node_modules/language-subtag-registry": { "version": "0.3.22", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "peer": true + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" }, "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "peer": true, "dependencies": { "language-subtag-registry": "^0.3.20" }, diff --git a/package.json b/package.json index d38f111..6309ad7 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "eslint-import-resolver-typescript": "^3.6.0", "eslint-plugin-cypress": "^2.14.0", "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "6.6.1", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-perfectionist": "^2.1.0", "eslint-plugin-prettier": "5.0.0", @@ -79,8 +80,5 @@ "typed-redux-saga": "1.4.0", "typescript": "5.2.2", "vitest": "^0.34.3" - }, - "peerDependencies": { - "eslint-plugin-jsx-a11y": "6.6.1" } } diff --git a/rule-sets/base.js b/rule-sets/base.js index 6fb40a4..633082a 100644 --- a/rule-sets/base.js +++ b/rule-sets/base.js @@ -4,6 +4,7 @@ import tsPlugin from '@typescript-eslint/eslint-plugin'; import tsParser from '@typescript-eslint/parser'; import confusingBrowserGlobals from 'confusing-browser-globals'; import importPlugin from 'eslint-plugin-import'; +import jsxA11yPlugin from 'eslint-plugin-jsx-a11y'; import noOnlyTestsPlugin from 'eslint-plugin-no-only-tests'; import perfectionist from 'eslint-plugin-perfectionist'; import prettier from 'eslint-plugin-prettier'; @@ -28,6 +29,7 @@ export default { '@typescript-eslint': tsPlugin, import: importPlugin, 'internal-rules': internalRules, + 'jsx-a11y': jsxA11yPlugin, 'no-only-tests': noOnlyTestsPlugin, perfectionist, prettier, @@ -37,6 +39,7 @@ export default { ...tsPlugin.configs['stylistic-type-checked'].rules, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access ...importPlugin.configs.typescript.rules, + ...jsxA11yPlugin.configs.recommended.rules, '@jambit/typed-redux-saga/delegate-effects': 'error', '@jambit/typed-redux-saga/use-typed-effects': ['error', 'macro'], '@typescript-eslint/array-type': ['error', { default: 'generic' }],