From 567e67decf9cf674c80d633eed3fee854ec5ffaa Mon Sep 17 00:00:00 2001 From: Aleksey Kovalevsky Date: Fri, 7 Mar 2025 00:51:59 +0200 Subject: [PATCH] eslint-config-seekingalpha-react ver. 8.0.0 - [new] expose flat config --- .../CHANGELOG.md | 4 + .../eslint-config-seekingalpha-react/flat.js | 16 ++ .../package.json | 2 +- .../prettier.js | 21 --- .../rules/eslint-plugin-jsx-a11y/flat.js | 10 ++ .../rules/eslint-plugin-react-hooks/flat.js | 10 ++ .../rules/eslint-plugin-react/flat.js | 14 ++ .../rules/eslint-plugin-react/jsx.js | 158 +++++++++--------- package.json | 2 +- 9 files changed, 132 insertions(+), 105 deletions(-) create mode 100644 eslint-configs/eslint-config-seekingalpha-react/flat.js delete mode 100644 eslint-configs/eslint-config-seekingalpha-react/prettier.js create mode 100644 eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-jsx-a11y/flat.js create mode 100644 eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react-hooks/flat.js create mode 100644 eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/flat.js diff --git a/eslint-configs/eslint-config-seekingalpha-react/CHANGELOG.md b/eslint-configs/eslint-config-seekingalpha-react/CHANGELOG.md index 31f51145..b50390df 100644 --- a/eslint-configs/eslint-config-seekingalpha-react/CHANGELOG.md +++ b/eslint-configs/eslint-config-seekingalpha-react/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 8.0.0 - 2025-03-07 + +- [new] expose flat config + ## 7.49.0 - 2025-03-01 - [deps] upgrade `eslint-plugin-react-hooks` to version `5.2.0` diff --git a/eslint-configs/eslint-config-seekingalpha-react/flat.js b/eslint-configs/eslint-config-seekingalpha-react/flat.js new file mode 100644 index 00000000..0d8c277e --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-react/flat.js @@ -0,0 +1,16 @@ +import jsxA11yConfig from './rules/eslint-plugin-jsx-a11y/flat.js'; +import reactConfig from './rules/eslint-plugin-react/flat.js'; +import reactHooksConfig from './rules/eslint-plugin-react-hooks/flat.js'; + +export default { + plugins: { + ...jsxA11yConfig.plugins, + ...reactConfig.plugins, + ...reactHooksConfig.plugins, + }, + rules: { + ...jsxA11yConfig.rules, + ...reactConfig.rules, + ...reactHooksConfig.rules, + }, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-react/package.json b/eslint-configs/eslint-config-seekingalpha-react/package.json index 47957951..942b3323 100644 --- a/eslint-configs/eslint-config-seekingalpha-react/package.json +++ b/eslint-configs/eslint-config-seekingalpha-react/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-seekingalpha-react", - "version": "7.49.0", + "version": "8.0.0", "description": "SeekingAlpha's sharable React.js ESLint config", "main": "index.js", "scripts": { diff --git a/eslint-configs/eslint-config-seekingalpha-react/prettier.js b/eslint-configs/eslint-config-seekingalpha-react/prettier.js deleted file mode 100644 index 336bc5aa..00000000 --- a/eslint-configs/eslint-config-seekingalpha-react/prettier.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - extends: ['./index.js'], - - rules: { - 'react/jsx-child-element-spacing': 'off', - 'react/jsx-closing-bracket-location': 'off', - 'react/jsx-closing-tag-location': 'off', - 'react/jsx-curly-newline': 'off', - 'react/jsx-curly-spacing': 'off', - 'react/jsx-equals-spacing': 'off', - 'react/jsx-first-prop-new-line': 'off', - 'react/jsx-indent': 'off', - 'react/jsx-indent-props': 'off', - 'react/jsx-max-props-per-line': 'off', - 'react/jsx-newline': 'off', - 'react/jsx-one-expression-per-line': 'off', - 'react/jsx-props-no-multi-spaces': 'off', - 'react/jsx-tag-spacing': 'off', - 'react/jsx-wrap-multilines': 'off', - }, -}; diff --git a/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-jsx-a11y/flat.js b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-jsx-a11y/flat.js new file mode 100644 index 00000000..8d02c8b2 --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-jsx-a11y/flat.js @@ -0,0 +1,10 @@ +import jsxA11y from 'eslint-plugin-jsx-a11y'; + +import config from './index.js'; + +export default { + plugins: { + 'jsx-a11y': jsxA11y, + }, + rules: config.rules, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react-hooks/flat.js b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react-hooks/flat.js new file mode 100644 index 00000000..01886f06 --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react-hooks/flat.js @@ -0,0 +1,10 @@ +import reactHooksPlugin from 'eslint-plugin-react-hooks'; + +import config from './index.js'; + +export default { + plugins: { + 'react-hooks': reactHooksPlugin, + }, + rules: config.rules, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/flat.js b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/flat.js new file mode 100644 index 00000000..f73653de --- /dev/null +++ b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/flat.js @@ -0,0 +1,14 @@ +import reactPlugin from 'eslint-plugin-react'; + +import jsxConfig from './jsx.js'; +import reactConfig from './react.js'; + +export default { + plugins: { + react: reactPlugin, + }, + rules: { + ...jsxConfig.rules, + ...reactConfig.rules, + }, +}; diff --git a/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/jsx.js b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/jsx.js index 15df32eb..26843683 100644 --- a/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/jsx.js +++ b/eslint-configs/eslint-config-seekingalpha-react/rules/eslint-plugin-react/jsx.js @@ -13,35 +13,35 @@ module.exports = { }, ], - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md - 'react/jsx-child-element-spacing': 'error', + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md + * Disabled to work with prettier + */ + 'react/jsx-child-element-spacing': 'off', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md - 'react/jsx-closing-bracket-location': [ - 'error', - { - selfClosing: 'tag-aligned', - nonEmpty: 'tag-aligned', - }, - ], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md + * disable to work with prettier + */ + 'react/jsx-closing-bracket-location': 'off', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md - 'react/jsx-closing-tag-location': 'error', + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md + * disable to work with prettier + */ + 'react/jsx-closing-tag-location': 'off', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-spacing.md - 'react/jsx-curly-spacing': [ - 'error', - { - when: 'never', - allowMultiline: true, - spacing: { - objectLiterals: 'always', - }, - }, - ], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-spacing.md + * disable to work with prettier + */ + 'react/jsx-curly-spacing': 'off', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-equals-spacing.md - 'react/jsx-equals-spacing': ['error', 'never'], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-equals-spacing.md + * disable to work with prettier + */ + 'react/jsx-equals-spacing': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md 'react/jsx-filename-extension': [ @@ -51,20 +51,29 @@ module.exports = { }, ], - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-first-prop-new-line.md - 'react/jsx-first-prop-new-line': ['error', 'multiline-multiprop'], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-first-prop-new-line.md + * disable to work with prettier + */ + 'react/jsx-first-prop-new-line': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-fragments.md 'react/jsx-fragments': ['error', 'syntax'], // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-handler-names.md - 'react/jsx-handler-names': ['off'], + 'react/jsx-handler-names': 'off', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-indent.md - 'react/jsx-indent': ['error', config.jsxIndent], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-indent.md + * disable to work with prettier + */ + 'react/jsx-indent': 'off', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-indent-props.md - 'react/jsx-indent-props': ['error', config.jsxIndentProps], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-indent-props.md + * disable ti work with prettier + */ + 'react/jsx-indent-props': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-key.md 'react/jsx-key': [ @@ -84,17 +93,17 @@ module.exports = { }, ], - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-max-props-per-line.md - 'react/jsx-max-props-per-line': [ - 'error', - { - maximum: config.jsxMaxPropsPerLine, - when: 'always', - }, - ], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-max-props-per-line.md + * disable to work with prettier + */ + 'react/jsx-max-props-per-line': 'off', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md - 'react/jsx-newline': 'error', + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md + * disable to work with prettier + */ + 'react/jsx-newline': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md 'react/jsx-no-bind': 'off', @@ -138,13 +147,11 @@ module.exports = { // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md 'react/jsx-no-undef': 'error', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md - 'react/jsx-one-expression-per-line': [ - 'error', - { - allow: 'literal', - }, - ], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md + * disable to worl with prettier + */ + 'react/jsx-one-expression-per-line': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-brace-presence.md 'react/jsx-curly-brace-presence': [ @@ -164,8 +171,11 @@ module.exports = { }, ], - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md - 'react/jsx-props-no-multi-spaces': 'error', + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md + * disable to work with prettier + */ + 'react/jsx-props-no-multi-spaces': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/sort-default-props.md 'react/sort-default-props': 'off', @@ -183,16 +193,11 @@ module.exports = { }, ], - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-tag-spacing.md - 'react/jsx-tag-spacing': [ - 'error', - { - closingSlash: 'never', - beforeSelfClosing: 'always', - afterOpening: 'never', - beforeClosing: 'never', - }, - ], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-tag-spacing.md + * disable to work with prettier + */ + 'react/jsx-tag-spacing': 'off', /* * off after update to 16.4 @@ -203,19 +208,11 @@ module.exports = { // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md 'react/jsx-uses-vars': 'error', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md - 'react/jsx-wrap-multilines': [ - 'error', - { - declaration: 'parens-new-line', - assignment: 'parens-new-line', - return: 'parens-new-line', - arrow: 'parens-new-line', - condition: 'parens-new-line', - logical: 'parens-new-line', - prop: 'parens-new-line', - }, - ], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md + * disable to work with prettier + */ + 'react/jsx-wrap-multilines': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-danger.md 'react/no-danger': 'error', @@ -226,14 +223,11 @@ module.exports = { // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-read-only-props.md 'react/prefer-read-only-props': 'error', - // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md - 'react/jsx-curly-newline': [ - 'error', - { - multiline: 'consistent', - singleline: 'consistent', - }, - ], + /* + * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md + * disable to work with prettier + */ + 'react/jsx-curly-newline': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md 'react/jsx-no-useless-fragment': [ diff --git a/package.json b/package.json index a2aadcc9..4de6b4bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "seekingalpha-javascript-style", - "version": "6.1.0", + "version": "6.2.0", "description": "Set of linting rules, guides and best practices for best Javascript code", "main": "index.js", "type": "module",