Bump version

This commit is contained in:
Alex
2024-06-27 01:19:33 -04:00
parent 674eaf1811
commit 1e6d679af3
8 changed files with 297 additions and 613 deletions

18
dist/package.json vendored
View File

@ -1,18 +1,19 @@
{ {
"name": "@aet/eslint-rules", "name": "@aet/eslint-rules",
"version": "0.0.27", "version": "0.0.32",
"license": "UNLICENSED", "license": "UNLICENSED",
"peerDependencies": { "peerDependencies": {
"eslint": "^8.57.0", "eslint": "^8.57.0",
"typescript": "^5.4.4" "typescript": "^5.4.4"
}, },
"dependencies": { "dependencies": {
"@aet/eslint-define-config": "0.1.0-beta.1",
"@eslint-community/eslint-utils": "^4.4.0", "@eslint-community/eslint-utils": "^4.4.0",
"@types/eslint": "^8.56.10", "@types/eslint": "^8.56.10",
"@typescript-eslint/eslint-plugin": "^7.13.0", "@typescript-eslint/eslint-plugin": "^7.14.1",
"@typescript-eslint/parser": "^7.13.0", "@typescript-eslint/parser": "^7.14.1",
"@typescript-eslint/type-utils": "^7.13.0", "@typescript-eslint/type-utils": "^7.14.1",
"@typescript-eslint/utils": "^7.13.0", "@typescript-eslint/utils": "^7.14.1",
"aria-query": "^5.3.0", "aria-query": "^5.3.0",
"axe-core": "^4.9.1", "axe-core": "^4.9.1",
"axobject-query": "^4.0.0", "axobject-query": "^4.0.0",
@ -22,12 +23,11 @@
"emoji-regex": "^10.3.0", "emoji-regex": "^10.3.0",
"enhanced-resolve": "^5.17.0", "enhanced-resolve": "^5.17.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-define-config": "^1.24.1",
"eslint-import-resolver-node": "^0.3.9", "eslint-import-resolver-node": "^0.3.9",
"eslint-module-utils": "^2.8.1", "eslint-module-utils": "^2.8.1",
"eslint-plugin-es-x": "^7.7.0", "eslint-plugin-es-x": "^7.7.0",
"eslint-plugin-import-x": "^0.5.1", "eslint-plugin-import-x": "^0.5.2",
"eslint-plugin-jsdoc": "^48.2.12", "eslint-plugin-jsdoc": "^48.5.0",
"eslint-plugin-unicorn": "^54.0.0", "eslint-plugin-unicorn": "^54.0.0",
"esprima": "^4.0.1", "esprima": "^4.0.1",
"esquery": "^1.5.0", "esquery": "^1.5.0",
@ -39,7 +39,7 @@
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"language-tags": "^1.0.9", "language-tags": "^1.0.9",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"minimatch": "^9.0.4", "minimatch": "^9.0.5",
"resolve": "^2.0.0-next.5", "resolve": "^2.0.0-next.5",
"semver": "^7.6.2", "semver": "^7.6.2",
"tsconfig-paths": "^4.2.0" "tsconfig-paths": "^4.2.0"

View File

@ -18,12 +18,12 @@
"@types/estree": "^1.0.5", "@types/estree": "^1.0.5",
"@types/estree-jsx": "^1.0.5", "@types/estree-jsx": "^1.0.5",
"@types/lodash": "^4.17.5", "@types/lodash": "^4.17.5",
"@types/node": "^20.14.2", "@types/node": "^20.14.9",
"@typescript-eslint/eslint-plugin": "7.13.0", "@typescript-eslint/eslint-plugin": "7.14.1",
"@typescript-eslint/type-utils": "^7.13.0", "@typescript-eslint/type-utils": "^7.14.1",
"@typescript-eslint/types": "^7.13.0", "@typescript-eslint/types": "^7.14.1",
"@typescript-eslint/typescript-estree": "^7.13.0", "@typescript-eslint/typescript-estree": "^7.14.1",
"@typescript-eslint/utils": "^7.13.0", "@typescript-eslint/utils": "^7.14.1",
"babel-plugin-macros": "^3.1.0", "babel-plugin-macros": "^3.1.0",
"dts-bundle-generator": "9.4.0", "dts-bundle-generator": "9.4.0",
"esbin": "0.0.4", "esbin": "0.0.4",
@ -31,19 +31,19 @@
"esbuild-plugin-alias": "^0.2.1", "esbuild-plugin-alias": "^0.2.1",
"eslint": "8.57.0", "eslint": "8.57.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^0.5.1", "eslint-plugin-import-x": "^0.5.2",
"esprima": "^4.0.1", "esprima": "^4.0.1",
"esquery": "^1.5.0", "esquery": "^1.5.0",
"fast-glob": "^3.3.2", "fast-glob": "^3.3.2",
"find-cache-dir": "^5.0.0", "find-cache-dir": "^5.0.0",
"json-schema-to-ts": "^3.1.0", "json-schema-to-ts": "^3.1.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"minimatch": "^9.0.4", "minimatch": "^9.0.5",
"patch-package": "^8.0.0", "patch-package": "^8.0.0",
"picocolors": "^1.0.1", "picocolors": "^1.0.1",
"prettier": "^3.3.2", "prettier": "^3.3.2",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
"typescript": "^5.4.5" "typescript": "^5.5.2"
}, },
"prettier": { "prettier": {
"arrowParens": "avoid", "arrowParens": "avoid",

View File

@ -1,10 +1,16 @@
diff --git a/src/index.js b/src/index.js diff --git a/src/index.js b/src/index.js
index 752ff61..99a42a3 100644 index 2fa185f..627af9b 100644
--- a/src/index.js --- a/src/index.js
+++ b/src/index.js +++ b/src/index.js
@@ -1,70 +1,110 @@ @@ -1,48 +1,90 @@
/* eslint-disable global-require */ /* eslint-disable global-require */
+// @ts-check -const flatConfigBase = require('./configs/flat-config-base');
-const legacyConfigBase = require('./configs/legacy-config-base');
-const { name, version } = require('../package.json');
+import flatConfigBase from './configs/flat-config-base';
+import legacyConfigBase from './configs/legacy-config-base';
+import { name, version } from '../package.json';
+
+import accessibleEmoji from './rules/accessible-emoji'; +import accessibleEmoji from './rules/accessible-emoji';
+import altText from './rules/alt-text'; +import altText from './rules/alt-text';
+import anchorAmbiguousText from './rules/anchor-ambiguous-text'; +import anchorAmbiguousText from './rules/anchor-ambiguous-text';
@ -45,8 +51,7 @@ index 752ff61..99a42a3 100644
+import scope from './rules/scope'; +import scope from './rules/scope';
+import tabindexNoPositive from './rules/tabindex-no-positive'; +import tabindexNoPositive from './rules/tabindex-no-positive';
-module.exports = { const allRules = {
- rules: {
- 'accessible-emoji': require('./rules/accessible-emoji'), - 'accessible-emoji': require('./rules/accessible-emoji'),
- 'alt-text': require('./rules/alt-text'), - 'alt-text': require('./rules/alt-text'),
- 'anchor-ambiguous-text': require('./rules/anchor-ambiguous-text'), - 'anchor-ambiguous-text': require('./rules/anchor-ambiguous-text'),
@ -86,179 +91,71 @@ index 752ff61..99a42a3 100644
- 'role-supports-aria-props': require('./rules/role-supports-aria-props'), - 'role-supports-aria-props': require('./rules/role-supports-aria-props'),
- scope: require('./rules/scope'), - scope: require('./rules/scope'),
- 'tabindex-no-positive': require('./rules/tabindex-no-positive'), - 'tabindex-no-positive': require('./rules/tabindex-no-positive'),
- }, + 'accessible-emoji': accessibleEmoji,
- configs: { + 'alt-text': altText,
- recommended: { + 'anchor-ambiguous-text': anchorAmbiguousText,
- plugins: [ + 'anchor-has-content': anchorHasContent,
- 'jsx-a11y', + 'anchor-is-valid': anchorIsValid,
- ], + 'aria-activedescendant-has-tabindex': ariaActivedescendantHasTabindex,
- parserOptions: { + 'aria-props': ariaProps,
- ecmaFeatures: { + 'aria-proptypes': ariaProptypes,
- jsx: true, + 'aria-role': ariaRole,
- }, + 'aria-unsupported-elements': ariaUnsupportedElements,
+export const rules = kebabCase({ + 'autocomplete-valid': autocompleteValid,
+ accessibleEmoji, + 'click-events-have-key-events': clickEventsHaveKeyEvents,
+ altText, + 'control-has-associated-label': controlHasAssociatedLabel,
+ anchorAmbiguousText, + 'heading-has-content': headingHasContent,
+ anchorHasContent, + 'html-has-lang': htmlHasLang,
+ anchorIsValid, + 'iframe-has-title': iframeHasTitle,
+ ariaActivedescendantHasTabindex, + 'img-redundant-alt': imgRedundantAlt,
+ ariaProps, + 'interactive-supports-focus': interactiveSupportsFocus,
+ ariaProptypes, + 'label-has-associated-control': labelHasAssociatedControl,
+ ariaRole, + 'label-has-for': labelHasFor,
+ ariaUnsupportedElements,
+ autocompleteValid,
+ clickEventsHaveKeyEvents,
+ controlHasAssociatedLabel,
+ headingHasContent,
+ htmlHasLang,
+ iframeHasTitle,
+ imgRedundantAlt,
+ interactiveSupportsFocus,
+ labelHasAssociatedControl,
+ labelHasFor,
+ lang, + lang,
+ mediaHasCaption, + 'media-has-caption': mediaHasCaption,
+ mouseEventsHaveKeyEvents, + 'mouse-events-have-key-events': mouseEventsHaveKeyEvents,
+ noAccessKey, + 'no-access-key': noAccessKey,
+ noAriaHiddenOnFocusable, + 'no-aria-hidden-on-focusable': noAriaHiddenOnFocusable,
+ noAutofocus, + 'no-autofocus': noAutofocus,
+ noDistractingElements, + 'no-distracting-elements': noDistractingElements,
+ 'no-interactive-element-to-noninteractive-role':
+ noInteractiveElementToNoninteractiveRole, + noInteractiveElementToNoninteractiveRole,
+ noNoninteractiveElementInteractions, + 'no-noninteractive-element-interactions': noNoninteractiveElementInteractions,
+ 'no-noninteractive-element-to-interactive-role':
+ noNoninteractiveElementToInteractiveRole, + noNoninteractiveElementToInteractiveRole,
+ noNoninteractiveTabindex, + 'no-noninteractive-tabindex': noNoninteractiveTabindex,
+ noOnChange, + 'no-onchange': noOnChange,
+ noRedundantRoles, + 'no-redundant-roles': noRedundantRoles,
+ noStaticElementInteractions, + 'no-static-element-interactions': noStaticElementInteractions,
+ preferTagOverRole, + 'prefer-tag-over-role': preferTagOverRole,
+ roleHasRequiredAriaProps, + 'role-has-required-aria-props': roleHasRequiredAriaProps,
+ roleSupportsAriaProps, + 'role-supports-aria-props': roleSupportsAriaProps,
+ scope, + scope,
+ tabindexNoPositive, + 'tabindex-no-positive': tabindexNoPositive,
+}); };
+
+export const configs = { const recommendedRules = {
+ recommended: { @@ -60,15 +102,7 @@ const recommendedRules = {
+ plugins: ['jsx-a11y'], 'jsx-a11y/control-has-associated-label': [
+ parserOptions: { 'off',
+ ecmaFeatures: { {
+ jsx: true, - ignoreElements: [
}, - 'audio',
- rules: { - 'canvas',
- 'jsx-a11y/alt-text': 'error', - 'embed',
- 'jsx-a11y/anchor-ambiguous-text': 'off', // TODO: error - 'input',
- 'jsx-a11y/anchor-has-content': 'error', - 'textarea',
- 'jsx-a11y/anchor-is-valid': 'error', - 'tr',
- 'jsx-a11y/aria-activedescendant-has-tabindex': 'error', - 'video',
- 'jsx-a11y/aria-props': 'error',
- 'jsx-a11y/aria-proptypes': 'error',
- 'jsx-a11y/aria-role': 'error',
- 'jsx-a11y/aria-unsupported-elements': 'error',
- 'jsx-a11y/autocomplete-valid': 'error',
- 'jsx-a11y/click-events-have-key-events': 'error',
- 'jsx-a11y/control-has-associated-label': ['off', {
+ },
+ rules: {
+ 'jsx-a11y/alt-text': 'error',
+ 'jsx-a11y/anchor-ambiguous-text': 'off', // TODO: error
+ 'jsx-a11y/anchor-has-content': 'error',
+ 'jsx-a11y/anchor-is-valid': 'error',
+ 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
+ 'jsx-a11y/aria-props': 'error',
+ 'jsx-a11y/aria-proptypes': 'error',
+ 'jsx-a11y/aria-role': 'error',
+ 'jsx-a11y/aria-unsupported-elements': 'error',
+ 'jsx-a11y/autocomplete-valid': 'error',
+ 'jsx-a11y/click-events-have-key-events': 'error',
+ 'jsx-a11y/control-has-associated-label': [
+ 'off',
+ {
ignoreElements: [
'audio',
'canvas',
@@ -86,140 +126,122 @@ module.exports = {
'tree',
'treegrid',
],
- includeRoles: [
- 'alert',
- 'dialog',
+ includeRoles: ['alert', 'dialog'],
+ },
+ ],
+ 'jsx-a11y/heading-has-content': 'error',
+ 'jsx-a11y/html-has-lang': 'error',
+ 'jsx-a11y/iframe-has-title': 'error',
+ 'jsx-a11y/img-redundant-alt': 'error',
+ 'jsx-a11y/interactive-supports-focus': [
+ 'error',
+ {
+ tabbable: [
+ 'button',
+ 'checkbox',
+ 'link',
+ 'searchbox',
+ 'spinbutton',
+ 'switch',
+ 'textbox',
],
- }],
- 'jsx-a11y/heading-has-content': 'error',
- 'jsx-a11y/html-has-lang': 'error',
- 'jsx-a11y/iframe-has-title': 'error',
- 'jsx-a11y/img-redundant-alt': 'error',
- 'jsx-a11y/interactive-supports-focus': [
- 'error',
- {
- tabbable: [
- 'button',
- 'checkbox',
- 'link',
- 'searchbox',
- 'spinbutton',
- 'switch',
- 'textbox',
- ], - ],
- }, + ignoreElements: ['audio', 'canvas', 'embed', 'input', 'textarea', 'tr', 'video'],
- ], ignoreRoles: [
- 'jsx-a11y/label-has-associated-control': 'error', 'grid',
- 'jsx-a11y/label-has-for': 'off', 'listbox',
- 'jsx-a11y/media-has-caption': 'error', @@ -139,24 +173,8 @@ const recommendedRules = {
- 'jsx-a11y/mouse-events-have-key-events': 'error', 'jsx-a11y/no-noninteractive-element-to-interactive-role': [
- 'jsx-a11y/no-access-key': 'error', 'error',
- 'jsx-a11y/no-autofocus': 'error', {
- 'jsx-a11y/no-distracting-elements': 'error',
- 'jsx-a11y/no-interactive-element-to-noninteractive-role': [
- 'error',
- {
- tr: ['none', 'presentation'],
- canvas: ['img'],
- },
- ],
- 'jsx-a11y/no-noninteractive-element-interactions': [
- 'error',
- {
- handlers: [
- 'onClick',
- 'onError',
- 'onLoad',
- 'onMouseDown',
- 'onMouseUp',
- 'onKeyPress',
- 'onKeyDown',
- 'onKeyUp',
- ],
- alert: ['onKeyUp', 'onKeyDown', 'onKeyPress'],
- body: ['onError', 'onLoad'],
- dialog: ['onKeyUp', 'onKeyDown', 'onKeyPress'],
- iframe: ['onError', 'onLoad'],
- img: ['onError', 'onLoad'],
- },
- ],
- 'jsx-a11y/no-noninteractive-element-to-interactive-role': [
- 'error',
- {
- ul: [ - ul: [
- 'listbox', - 'listbox',
- 'menu', - 'menu',
@ -277,272 +174,58 @@ index 752ff61..99a42a3 100644
- 'tree', - 'tree',
- 'treegrid', - 'treegrid',
- ], - ],
- li: ['menuitem', 'menuitemradio', 'menuitemcheckbox', 'option', 'row', 'tab', 'treeitem'],
- table: ['grid'],
- td: ['gridcell'],
- fieldset: ['radiogroup', 'presentation'],
- },
- ],
- 'jsx-a11y/no-noninteractive-tabindex': [
- 'error',
- {
- tags: [],
- roles: ['tabpanel'],
- allowExpressionValues: true,
- },
- ],
- 'jsx-a11y/no-redundant-roles': 'error',
- 'jsx-a11y/no-static-element-interactions': [
- 'error',
- {
- allowExpressionValues: true,
- handlers: [
- 'onClick',
- 'onMouseDown',
- 'onMouseUp',
- 'onKeyPress',
- 'onKeyDown',
- 'onKeyUp',
- ],
- },
- ],
- 'jsx-a11y/role-has-required-aria-props': 'error',
- 'jsx-a11y/role-supports-aria-props': 'error',
- 'jsx-a11y/scope': 'error',
- 'jsx-a11y/tabindex-no-positive': 'error',
- },
- },
- strict: {
- plugins: [
- 'jsx-a11y',
+ },
+ ],
+ 'jsx-a11y/label-has-associated-control': 'error',
+ 'jsx-a11y/label-has-for': 'off',
+ 'jsx-a11y/media-has-caption': 'error',
+ 'jsx-a11y/mouse-events-have-key-events': 'error',
+ 'jsx-a11y/no-access-key': 'error',
+ 'jsx-a11y/no-autofocus': 'error',
+ 'jsx-a11y/no-distracting-elements': 'error',
+ 'jsx-a11y/no-interactive-element-to-noninteractive-role': [
+ 'error',
+ {
+ tr: ['none', 'presentation'],
+ canvas: ['img'],
+ },
+ ],
+ 'jsx-a11y/no-noninteractive-element-interactions': [
+ 'error',
+ {
+ handlers: [
+ 'onClick',
+ 'onError',
+ 'onLoad',
+ 'onMouseDown',
+ 'onMouseUp',
+ 'onKeyPress',
+ 'onKeyDown',
+ 'onKeyUp',
+ ],
+ alert: ['onKeyUp', 'onKeyDown', 'onKeyPress'],
+ body: ['onError', 'onLoad'],
+ dialog: ['onKeyUp', 'onKeyDown', 'onKeyPress'],
+ iframe: ['onError', 'onLoad'],
+ img: ['onError', 'onLoad'],
+ },
+ ],
+ 'jsx-a11y/no-noninteractive-element-to-interactive-role': [
+ 'error',
+ {
+ ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'],
+ ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'],
+ li: ['menuitem', 'option', 'row', 'tab', 'treeitem'], li: [
+ table: ['grid'], 'menuitem',
+ td: ['gridcell'], 'menuitemradio',
+ fieldset: ['radiogroup', 'presentation'], @@ -214,15 +232,7 @@ const strictRules = {
+ }, 'jsx-a11y/control-has-associated-label': [
+ ], 'off',
+ 'jsx-a11y/no-noninteractive-tabindex': [ {
+ 'error', - ignoreElements: [
+ { - 'audio',
+ tags: [], - 'canvas',
+ roles: ['tabpanel'], - 'embed',
+ allowExpressionValues: true, - 'input',
+ }, - 'textarea',
], - 'tr',
- parserOptions: { - 'video',
- ecmaFeatures: {
- jsx: true,
+ 'jsx-a11y/no-redundant-roles': 'error',
+ 'jsx-a11y/no-static-element-interactions': [
+ 'error',
+ {
+ allowExpressionValues: true,
+ handlers: [
+ 'onClick',
+ 'onMouseDown',
+ 'onMouseUp',
+ 'onKeyPress',
+ 'onKeyDown',
+ 'onKeyUp',
+ ],
},
+ ],
+ 'jsx-a11y/role-has-required-aria-props': 'error',
+ 'jsx-a11y/role-supports-aria-props': 'error',
+ 'jsx-a11y/scope': 'error',
+ 'jsx-a11y/tabindex-no-positive': 'error',
+ },
+ },
+ strict: {
+ plugins: ['jsx-a11y'],
+ parserOptions: {
+ ecmaFeatures: {
+ jsx: true,
},
- rules: {
- 'jsx-a11y/alt-text': 'error',
- 'jsx-a11y/anchor-has-content': 'error',
- 'jsx-a11y/anchor-is-valid': 'error',
- 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
- 'jsx-a11y/aria-props': 'error',
- 'jsx-a11y/aria-proptypes': 'error',
- 'jsx-a11y/aria-role': 'error',
- 'jsx-a11y/aria-unsupported-elements': 'error',
- 'jsx-a11y/autocomplete-valid': 'error',
- 'jsx-a11y/click-events-have-key-events': 'error',
- 'jsx-a11y/control-has-associated-label': ['off', {
+ },
+ rules: {
+ 'jsx-a11y/alt-text': 'error',
+ 'jsx-a11y/anchor-has-content': 'error',
+ 'jsx-a11y/anchor-is-valid': 'error',
+ 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
+ 'jsx-a11y/aria-props': 'error',
+ 'jsx-a11y/aria-proptypes': 'error',
+ 'jsx-a11y/aria-role': 'error',
+ 'jsx-a11y/aria-unsupported-elements': 'error',
+ 'jsx-a11y/autocomplete-valid': 'error',
+ 'jsx-a11y/click-events-have-key-events': 'error',
+ 'jsx-a11y/control-has-associated-label': [
+ 'off',
+ {
ignoreElements: [
'audio',
'canvas',
@@ -241,56 +263,63 @@ module.exports = {
'tree',
'treegrid',
],
- includeRoles: [
- 'alert',
- 'dialog',
+ includeRoles: ['alert', 'dialog'],
+ },
+ ],
+ 'jsx-a11y/heading-has-content': 'error',
+ 'jsx-a11y/html-has-lang': 'error',
+ 'jsx-a11y/iframe-has-title': 'error',
+ 'jsx-a11y/img-redundant-alt': 'error',
+ 'jsx-a11y/interactive-supports-focus': [
+ 'error',
+ {
+ tabbable: [
+ 'button',
+ 'checkbox',
+ 'link',
+ 'progressbar',
+ 'searchbox',
+ 'slider',
+ 'spinbutton',
+ 'switch',
+ 'textbox',
],
- }],
- 'jsx-a11y/heading-has-content': 'error',
- 'jsx-a11y/html-has-lang': 'error',
- 'jsx-a11y/iframe-has-title': 'error',
- 'jsx-a11y/img-redundant-alt': 'error',
- 'jsx-a11y/interactive-supports-focus': [
- 'error',
- {
- tabbable: [
- 'button',
- 'checkbox',
- 'link',
- 'progressbar',
- 'searchbox',
- 'slider',
- 'spinbutton',
- 'switch',
- 'textbox',
- ], - ],
- }, + ignoreElements: ['audio', 'canvas', 'embed', 'input', 'textarea', 'tr', 'video'],
- ], ignoreRoles: [
- 'jsx-a11y/label-has-for': 'off', 'grid',
- 'jsx-a11y/label-has-associated-control': 'error', 'listbox',
- 'jsx-a11y/media-has-caption': 'error', @@ -299,22 +309,22 @@ const jsxA11y = {
- 'jsx-a11y/mouse-events-have-key-events': 'error', const createConfig = (rules, flatConfigName) => ({
- 'jsx-a11y/no-access-key': 'error', ...(flatConfigName
- 'jsx-a11y/no-autofocus': 'error', ? {
- 'jsx-a11y/no-distracting-elements': 'error', - ...flatConfigBase,
- 'jsx-a11y/no-interactive-element-to-noninteractive-role': 'error', - name: `jsx-a11y/${flatConfigName}`,
- 'jsx-a11y/no-noninteractive-element-interactions': [ - plugins: { 'jsx-a11y': jsxA11y },
- 'error', - }
- { + ...flatConfigBase,
- body: ['onError', 'onLoad'], + name: `jsx-a11y/${flatConfigName}`,
- iframe: ['onError', 'onLoad'], + plugins: { 'jsx-a11y': jsxA11y },
- img: ['onError', 'onLoad'], + }
- }, : { ...legacyConfigBase, plugins: ['jsx-a11y'] }),
- ], rules: { ...rules },
- 'jsx-a11y/no-noninteractive-element-to-interactive-role': 'error', });
- 'jsx-a11y/no-noninteractive-tabindex': 'error',
- 'jsx-a11y/no-redundant-roles': 'error', // Create configs for the plugin object
- 'jsx-a11y/no-static-element-interactions': 'error', -const configs = {
- 'jsx-a11y/role-has-required-aria-props': 'error', +export const configs = {
- 'jsx-a11y/role-supports-aria-props': 'error', recommended: createConfig(recommendedRules),
- 'jsx-a11y/scope': 'error', strict: createConfig(strictRules),
- 'jsx-a11y/tabindex-no-positive': 'error',
- },
+ },
+ ],
+ 'jsx-a11y/label-has-for': 'off',
+ 'jsx-a11y/label-has-associated-control': 'error',
+ 'jsx-a11y/media-has-caption': 'error',
+ 'jsx-a11y/mouse-events-have-key-events': 'error',
+ 'jsx-a11y/no-access-key': 'error',
+ 'jsx-a11y/no-autofocus': 'error',
+ 'jsx-a11y/no-distracting-elements': 'error',
+ 'jsx-a11y/no-interactive-element-to-noninteractive-role': 'error',
+ 'jsx-a11y/no-noninteractive-element-interactions': [
+ 'error',
+ {
+ body: ['onError', 'onLoad'],
+ iframe: ['onError', 'onLoad'],
+ img: ['onError', 'onLoad'],
+ },
+ ],
+ 'jsx-a11y/no-noninteractive-element-to-interactive-role': 'error',
+ 'jsx-a11y/no-noninteractive-tabindex': 'error',
+ 'jsx-a11y/no-redundant-roles': 'error',
+ 'jsx-a11y/no-static-element-interactions': 'error',
+ 'jsx-a11y/role-has-required-aria-props': 'error',
+ 'jsx-a11y/role-supports-aria-props': 'error',
+ 'jsx-a11y/scope': 'error',
+ 'jsx-a11y/tabindex-no-positive': 'error',
},
},
}; };
+ -const flatConfigs = {
+/** @param {object} obj */ +export const flatConfigs = {
+function kebabCase(obj) { recommended: createConfig(recommendedRules, 'recommended'),
+ return Object.fromEntries( strict: createConfig(strictRules, 'strict'),
+ Object.entries(obj).map(([key, value]) => [ };
+ key.replace(/([A-Z])/g, '-$1').toLowerCase(),
+ value, -module.exports = { ...jsxA11y, configs, flatConfigs };
+ ]), +export default { ...jsxA11y, configs, flatConfigs };
+ );
+}
diff --git a/src/util/mayContainChildComponent.js b/src/util/mayContainChildComponent.js diff --git a/src/util/mayContainChildComponent.js b/src/util/mayContainChildComponent.js
index 43a03ef..5e1035e 100644 index 43a03ef..5e1035e 100644
--- a/src/util/mayContainChildComponent.js --- a/src/util/mayContainChildComponent.js

View File

@ -171,7 +171,7 @@ index 4dadb076..de01ae32 100644
const variableUtil = require('../util/variable'); const variableUtil = require('../util/variable');
const testReactVersion = require('../util/version').testReactVersion; const testReactVersion = require('../util/version').testReactVersion;
diff --git a/lib/rules/jsx-key.js b/lib/rules/jsx-key.js diff --git a/lib/rules/jsx-key.js b/lib/rules/jsx-key.js
index feee7ad5..c2bd9265 100644 index 825d21f4..fb4459dd 100644
--- a/lib/rules/jsx-key.js --- a/lib/rules/jsx-key.js
+++ b/lib/rules/jsx-key.js +++ b/lib/rules/jsx-key.js
@@ -5,8 +5,7 @@ @@ -5,8 +5,7 @@

168
pnpm-lock.yaml generated
View File

@ -56,23 +56,23 @@ importers:
specifier: ^4.17.5 specifier: ^4.17.5
version: 4.17.5 version: 4.17.5
'@types/node': '@types/node':
specifier: ^20.14.2 specifier: ^20.14.9
version: 20.14.2 version: 20.14.9
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: 7.13.0 specifier: 7.14.1
version: 7.13.0(@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) version: 7.14.1(@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)
'@typescript-eslint/type-utils': '@typescript-eslint/type-utils':
specifier: ^7.13.0 specifier: ^7.14.1
version: 7.13.0(eslint@8.57.0)(typescript@5.4.5) version: 7.14.1(eslint@8.57.0)(typescript@5.5.2)
'@typescript-eslint/types': '@typescript-eslint/types':
specifier: ^7.13.0 specifier: ^7.14.1
version: 7.13.0 version: 7.14.1
'@typescript-eslint/typescript-estree': '@typescript-eslint/typescript-estree':
specifier: ^7.13.0 specifier: ^7.14.1
version: 7.13.0(typescript@5.4.5) version: 7.14.1(typescript@5.5.2)
'@typescript-eslint/utils': '@typescript-eslint/utils':
specifier: ^7.13.0 specifier: ^7.14.1
version: 7.13.0(eslint@8.57.0)(typescript@5.4.5) version: 7.14.1(eslint@8.57.0)(typescript@5.5.2)
babel-plugin-macros: babel-plugin-macros:
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0 version: 3.1.0
@ -95,8 +95,8 @@ importers:
specifier: ^9.1.0 specifier: ^9.1.0
version: 9.1.0(eslint@8.57.0) version: 9.1.0(eslint@8.57.0)
eslint-plugin-import-x: eslint-plugin-import-x:
specifier: ^0.5.1 specifier: ^0.5.2
version: 0.5.1(eslint@8.57.0)(typescript@5.4.5) version: 0.5.2(eslint@8.57.0)(typescript@5.5.2)
esprima: esprima:
specifier: ^4.0.1 specifier: ^4.0.1
version: 4.0.1 version: 4.0.1
@ -116,8 +116,8 @@ importers:
specifier: ^4.17.21 specifier: ^4.17.21
version: 4.17.21 version: 4.17.21
minimatch: minimatch:
specifier: ^9.0.4 specifier: ^9.0.5
version: 9.0.4 version: 9.0.5
patch-package: patch-package:
specifier: ^8.0.0 specifier: ^8.0.0
version: 8.0.0 version: 8.0.0
@ -131,8 +131,8 @@ importers:
specifier: ^15.8.1 specifier: ^15.8.1
version: 15.8.1 version: 15.8.1
typescript: typescript:
specifier: ^5.4.5 specifier: ^5.5.2
version: 5.4.5 version: 5.5.2
packages: packages:
@ -1036,14 +1036,14 @@ packages:
'@types/lodash@4.17.5': '@types/lodash@4.17.5':
resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==} resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==}
'@types/node@20.14.2': '@types/node@20.14.9':
resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
'@types/parse-json@4.0.2': '@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
'@typescript-eslint/eslint-plugin@7.13.0': '@typescript-eslint/eslint-plugin@7.14.1':
resolution: {integrity: sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==} resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^7.0.0 '@typescript-eslint/parser': ^7.0.0
@ -1067,12 +1067,12 @@ packages:
resolution: {integrity: sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g==} resolution: {integrity: sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
'@typescript-eslint/scope-manager@7.13.0': '@typescript-eslint/scope-manager@7.14.1':
resolution: {integrity: sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==} resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
'@typescript-eslint/type-utils@7.13.0': '@typescript-eslint/type-utils@7.14.1':
resolution: {integrity: sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==} resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
eslint: ^8.56.0 eslint: ^8.56.0
@ -1085,8 +1085,8 @@ packages:
resolution: {integrity: sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA==} resolution: {integrity: sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
'@typescript-eslint/types@7.13.0': '@typescript-eslint/types@7.14.1':
resolution: {integrity: sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==} resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
'@typescript-eslint/typescript-estree@7.0.2': '@typescript-eslint/typescript-estree@7.0.2':
@ -1098,8 +1098,8 @@ packages:
typescript: typescript:
optional: true optional: true
'@typescript-eslint/typescript-estree@7.13.0': '@typescript-eslint/typescript-estree@7.14.1':
resolution: {integrity: sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==} resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@ -1107,8 +1107,8 @@ packages:
typescript: typescript:
optional: true optional: true
'@typescript-eslint/utils@7.13.0': '@typescript-eslint/utils@7.14.1':
resolution: {integrity: sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==} resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
eslint: ^8.56.0 eslint: ^8.56.0
@ -1117,8 +1117,8 @@ packages:
resolution: {integrity: sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ==} resolution: {integrity: sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
'@typescript-eslint/visitor-keys@7.13.0': '@typescript-eslint/visitor-keys@7.14.1':
resolution: {integrity: sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==} resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
'@ungap/structured-clone@1.2.0': '@ungap/structured-clone@1.2.0':
@ -1336,8 +1336,8 @@ packages:
eslint-import-resolver-node@0.3.9: eslint-import-resolver-node@0.3.9:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
eslint-plugin-import-x@0.5.1: eslint-plugin-import-x@0.5.2:
resolution: {integrity: sha512-2JK8bbFOLes+gG6tgdnM8safCxMAj4u2wjX8X1BRFPfnY7Ct2hFYESoIcVwABX/DDcdpQFLGtKmzbNEWJZD9iQ==} resolution: {integrity: sha512-6f1YMmg3PdLwfiJDYnCRPfh67zJKbwbOKL99l6xGZDmIFkMht/4xyudafGEcDOmDlgp36e41W4RXDfOn7+pGRg==}
engines: {node: '>=16'} engines: {node: '>=16'}
peerDependencies: peerDependencies:
eslint: ^8.56.0 || ^9.0.0-0 eslint: ^8.56.0 || ^9.0.0-0
@ -1644,8 +1644,8 @@ packages:
resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.4: minimatch@9.0.5:
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
minimist@1.2.8: minimist@1.2.8:
@ -1916,8 +1916,8 @@ packages:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
typescript@5.4.5: typescript@5.5.2:
resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==}
engines: {node: '>=14.17'} engines: {node: '>=14.17'}
hasBin: true hasBin: true
@ -3023,40 +3023,40 @@ snapshots:
'@types/lodash@4.17.5': {} '@types/lodash@4.17.5': {}
'@types/node@20.14.2': '@types/node@20.14.9':
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
'@types/parse-json@4.0.2': {} '@types/parse-json@4.0.2': {}
'@typescript-eslint/eslint-plugin@7.13.0(@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)':
dependencies: dependencies:
'@eslint-community/regexpp': 4.10.0 '@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 7.0.2(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.0.2(eslint@8.57.0)(typescript@5.5.2)
'@typescript-eslint/scope-manager': 7.13.0 '@typescript-eslint/scope-manager': 7.14.1
'@typescript-eslint/type-utils': 7.13.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.2)
'@typescript-eslint/utils': 7.13.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.2)
'@typescript-eslint/visitor-keys': 7.13.0 '@typescript-eslint/visitor-keys': 7.14.1
eslint: 8.57.0 eslint: 8.57.0
graphemer: 1.4.0 graphemer: 1.4.0
ignore: 5.3.1 ignore: 5.3.1
natural-compare: 1.4.0 natural-compare: 1.4.0
ts-api-utils: 1.3.0(typescript@5.4.5) ts-api-utils: 1.3.0(typescript@5.5.2)
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.5.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.4.5)': '@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.5.2)':
dependencies: dependencies:
'@typescript-eslint/scope-manager': 7.0.2 '@typescript-eslint/scope-manager': 7.0.2
'@typescript-eslint/types': 7.0.2 '@typescript-eslint/types': 7.0.2
'@typescript-eslint/typescript-estree': 7.0.2(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.5.2)
'@typescript-eslint/visitor-keys': 7.0.2 '@typescript-eslint/visitor-keys': 7.0.2
debug: 4.3.4 debug: 4.3.4
eslint: 8.57.0 eslint: 8.57.0
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.5.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3065,28 +3065,28 @@ snapshots:
'@typescript-eslint/types': 7.0.2 '@typescript-eslint/types': 7.0.2
'@typescript-eslint/visitor-keys': 7.0.2 '@typescript-eslint/visitor-keys': 7.0.2
'@typescript-eslint/scope-manager@7.13.0': '@typescript-eslint/scope-manager@7.14.1':
dependencies: dependencies:
'@typescript-eslint/types': 7.13.0 '@typescript-eslint/types': 7.14.1
'@typescript-eslint/visitor-keys': 7.13.0 '@typescript-eslint/visitor-keys': 7.14.1
'@typescript-eslint/type-utils@7.13.0(eslint@8.57.0)(typescript@5.4.5)': '@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.5.2)':
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2)
'@typescript-eslint/utils': 7.13.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.2)
debug: 4.3.4 debug: 4.3.4
eslint: 8.57.0 eslint: 8.57.0
ts-api-utils: 1.3.0(typescript@5.4.5) ts-api-utils: 1.3.0(typescript@5.5.2)
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.5.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/types@7.0.2': {} '@typescript-eslint/types@7.0.2': {}
'@typescript-eslint/types@7.13.0': {} '@typescript-eslint/types@7.14.1': {}
'@typescript-eslint/typescript-estree@7.0.2(typescript@5.4.5)': '@typescript-eslint/typescript-estree@7.0.2(typescript@5.5.2)':
dependencies: dependencies:
'@typescript-eslint/types': 7.0.2 '@typescript-eslint/types': 7.0.2
'@typescript-eslint/visitor-keys': 7.0.2 '@typescript-eslint/visitor-keys': 7.0.2
@ -3095,33 +3095,33 @@ snapshots:
is-glob: 4.0.3 is-glob: 4.0.3
minimatch: 9.0.3 minimatch: 9.0.3
semver: 7.6.0 semver: 7.6.0
ts-api-utils: 1.3.0(typescript@5.4.5) ts-api-utils: 1.3.0(typescript@5.5.2)
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.5.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/typescript-estree@7.13.0(typescript@5.4.5)': '@typescript-eslint/typescript-estree@7.14.1(typescript@5.5.2)':
dependencies: dependencies:
'@typescript-eslint/types': 7.13.0 '@typescript-eslint/types': 7.14.1
'@typescript-eslint/visitor-keys': 7.13.0 '@typescript-eslint/visitor-keys': 7.14.1
debug: 4.3.4 debug: 4.3.4
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
minimatch: 9.0.4 minimatch: 9.0.5
semver: 7.6.0 semver: 7.6.0
ts-api-utils: 1.3.0(typescript@5.4.5) ts-api-utils: 1.3.0(typescript@5.5.2)
optionalDependencies: optionalDependencies:
typescript: 5.4.5 typescript: 5.5.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@7.13.0(eslint@8.57.0)(typescript@5.4.5)': '@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.5.2)':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@typescript-eslint/scope-manager': 7.13.0 '@typescript-eslint/scope-manager': 7.14.1
'@typescript-eslint/types': 7.13.0 '@typescript-eslint/types': 7.14.1
'@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2)
eslint: 8.57.0 eslint: 8.57.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3132,9 +3132,9 @@ snapshots:
'@typescript-eslint/types': 7.0.2 '@typescript-eslint/types': 7.0.2
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@typescript-eslint/visitor-keys@7.13.0': '@typescript-eslint/visitor-keys@7.14.1':
dependencies: dependencies:
'@typescript-eslint/types': 7.13.0 '@typescript-eslint/types': 7.14.1
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@ungap/structured-clone@1.2.0': {} '@ungap/structured-clone@1.2.0': {}
@ -3307,7 +3307,7 @@ snapshots:
dts-bundle-generator@9.4.0: dts-bundle-generator@9.4.0:
dependencies: dependencies:
typescript: 5.4.5 typescript: 5.5.2
yargs: 17.7.2 yargs: 17.7.2
electron-to-chromium@1.4.722: {} electron-to-chromium@1.4.722: {}
@ -3373,16 +3373,16 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-plugin-import-x@0.5.1(eslint@8.57.0)(typescript@5.4.5): eslint-plugin-import-x@0.5.2(eslint@8.57.0)(typescript@5.5.2):
dependencies: dependencies:
'@typescript-eslint/utils': 7.13.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.2)
debug: 4.3.4 debug: 4.3.4
doctrine: 3.0.0 doctrine: 3.0.0
eslint: 8.57.0 eslint: 8.57.0
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
get-tsconfig: 4.7.5 get-tsconfig: 4.7.5
is-glob: 4.0.3 is-glob: 4.0.3
minimatch: 9.0.4 minimatch: 9.0.5
semver: 7.6.0 semver: 7.6.0
tslib: 2.6.3 tslib: 2.6.3
transitivePeerDependencies: transitivePeerDependencies:
@ -3714,7 +3714,7 @@ snapshots:
dependencies: dependencies:
brace-expansion: 2.0.1 brace-expansion: 2.0.1
minimatch@9.0.4: minimatch@9.0.5:
dependencies: dependencies:
brace-expansion: 2.0.1 brace-expansion: 2.0.1
@ -3940,9 +3940,9 @@ snapshots:
ts-algebra@2.0.0: {} ts-algebra@2.0.0: {}
ts-api-utils@1.3.0(typescript@5.4.5): ts-api-utils@1.3.0(typescript@5.5.2):
dependencies: dependencies:
typescript: 5.4.5 typescript: 5.5.2
tsconfig-paths@4.2.0: tsconfig-paths@4.2.0:
dependencies: dependencies:
@ -3958,7 +3958,7 @@ snapshots:
type-fest@0.20.2: {} type-fest@0.20.2: {}
typescript@5.4.5: {} typescript@5.5.2: {}
undici-types@5.26.5: {} undici-types@5.26.5: {}

View File

@ -4,7 +4,6 @@ sync() (
) )
sync eslint-import-resolver-typescript sync eslint-import-resolver-typescript
sync eslint-plugin-import
sync eslint-plugin-jsx-a11y sync eslint-plugin-jsx-a11y
sync eslint-plugin-n sync eslint-plugin-n
sync eslint-plugin-react sync eslint-plugin-react

View File

@ -12,10 +12,10 @@
"subject": "chore(deps): update dependency eslint to ^8.57.0 (#287)" "subject": "chore(deps): update dependency eslint to ^8.57.0 (#287)"
}, },
"eslint-plugin-jsx-a11y": { "eslint-plugin-jsx-a11y": {
"hash": "5d1440825a8838ae10dc94cc3a4a7e1e967644b4", "hash": "0be7ea95f560c6afc6817d381054d914ebd0b2ca",
"date": "2024-06-10T09:28:24-07:00", "date": "2024-06-23T23:41:48-04:00",
"committer": "Jordan Harband", "committer": "Jordan Harband",
"subject": "[Deps] update `@babel/runtime`, `array-includes`, `es-iterator-helpers`, `hasown`, `object.fromentries`, `safe-regex-test`" "subject": "[readme] remove deprecated travis ci badge; add github actions badge"
}, },
"eslint-plugin-n": { "eslint-plugin-n": {
"hash": "67bbfdf3c6862dcbfe455a4afbd83fa60f9d1ea4", "hash": "67bbfdf3c6862dcbfe455a4afbd83fa60f9d1ea4",
@ -24,10 +24,10 @@
"subject": "chore(master): release 17.9.0 (#299)" "subject": "chore(master): release 17.9.0 (#299)"
}, },
"eslint-plugin-react": { "eslint-plugin-react": {
"hash": "393bfa2fc071bfd08cef2327790e2ccc95507d72", "hash": "3c1d5203438965b3999911520a930306f6e9c58f",
"date": "2024-06-12T20:49:45-04:00", "date": "2024-06-23T23:00:32-07:00",
"committer": "Jordan Harband", "committer": "Jordan Harband",
"subject": "[Fix] `no-object-type-as-default-prop`: enable rule for components with many parameters" "subject": "[Dev Deps] downgrade `eslint-remote-tester-repositories`"
}, },
"jsx-ast-utils": { "jsx-ast-utils": {
"hash": "5943318eaf23764eec3ff397ebb969613d728a95", "hash": "5943318eaf23764eec3ff397ebb969613d728a95",

View File

@ -102,6 +102,8 @@ export function extendConfig(of: InputConfig = {}): ESLintConfig {
extends: _extends, extends: _extends,
overrides, overrides,
customRuleFiles, customRuleFiles,
// @ts-expect-error
localRules: _,
...rest ...rest
} = of; } = of;
@ -124,7 +126,7 @@ export function extendConfig(of: InputConfig = {}): ESLintConfig {
const result: InputConfig = { const result: InputConfig = {
root: true, root: true,
parser: '@typescript-eslint/parser', parser: '@typescript-eslint/parser',
plugins: unique('@typescript-eslint', 'import', 'rules', plugins), plugins: unique('@typescript-eslint', 'import-x', 'rules', plugins),
env: { node: true, browser: true, es2023: true }, env: { node: true, browser: true, es2023: true },
reportUnusedDisableDirectives: true, reportUnusedDisableDirectives: true,
parserOptions: { parserOptions: {
@ -134,8 +136,8 @@ export function extendConfig(of: InputConfig = {}): ESLintConfig {
'eslint:recommended', 'eslint:recommended',
'prettier', 'prettier',
'plugin:@typescript-eslint/recommended-type-checked', 'plugin:@typescript-eslint/recommended-type-checked',
'plugin:import/errors', 'plugin:import-x/errors',
'plugin:import/typescript', 'plugin:import-x/typescript',
hasReact && [ hasReact && [
'plugin:react/recommended', 'plugin:react/recommended',
'plugin:react-hooks/recommended', 'plugin:react-hooks/recommended',
@ -146,10 +148,10 @@ export function extendConfig(of: InputConfig = {}): ESLintConfig {
_extends, _extends,
), ),
settings: { settings: {
'import/parsers': { 'import-x/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx', '.mts', '.cts'], '@typescript-eslint/parser': ['.ts', '.tsx', '.mts', '.cts'],
}, },
'import/resolver': { 'import-x/resolver': {
typescript: { typescript: {
alwaysTryTypes: true, alwaysTryTypes: true,
}, },