eslint-config-seekingalpha-react 10.39.3 → 10.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
 
3
+ ## 10.40.0 - 2026-07-22
4
+
5
+ - [new] remove oxlint config
6
+
3
7
  ## 10.39.3 - 2026-06-16
4
8
 
5
9
  - [new] extend oxlint config
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-config-seekingalpha-react",
3
- "version": "10.39.3",
3
+ "version": "10.40.0",
4
4
  "description": "SeekingAlpha's sharable React.js ESLint config",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/oxc.js DELETED
@@ -1,16 +0,0 @@
1
- import config from './index.js';
2
- import { ESLintPluginA11YDisabled } from './rules/eslint-plugin-jsx-a11y/oxlint-disabled.js';
3
- import { ESLintPluginReactHooksDisabled } from './rules/eslint-plugin-react-hooks/oxlint-disabled.js';
4
- import { ESLintPluginReactDisabled } from './rules/eslint-plugin-react/oxlint-disabled.js';
5
-
6
- const oxcConfig = {
7
- ...config,
8
- rules: {
9
- ...config.rules,
10
- ...ESLintPluginReactDisabled,
11
- ...ESLintPluginA11YDisabled,
12
- ...ESLintPluginReactHooksDisabled,
13
- },
14
- };
15
-
16
- export default oxcConfig;
package/oxlint-config.js DELETED
@@ -1,7 +0,0 @@
1
- import jsxA11yConfig from './rules/eslint-plugin-jsx-a11y/oxlint-config.js';
2
- import reactHooksConfig from './rules/eslint-plugin-react-hooks/oxlint-config.js';
3
- import reactConfig from './rules/eslint-plugin-react/oxlint-config.js';
4
-
5
- export default {
6
- extends: [reactConfig, jsxA11yConfig, reactHooksConfig],
7
- };
@@ -1,161 +0,0 @@
1
- export default {
2
- plugins: ['jsx-a11y'],
3
- rules: {
4
- 'jsx-a11y/alt-text': [
5
- 'error',
6
- {
7
- elements: ['img', 'object', 'area', "input[type='image']"],
8
- img: [],
9
- object: [],
10
- area: [],
11
- "input[type='image']": [],
12
- },
13
- ],
14
- 'jsx-a11y/anchor-ambiguous-text': 'off',
15
- 'jsx-a11y/anchor-has-content': 'off',
16
- 'jsx-a11y/anchor-is-valid': [
17
- 'error',
18
- {
19
- components: ['Anchor', 'Link'],
20
- specialLink: ['to'],
21
- aspects: ['noHref', 'invalidHref', 'preferButton'],
22
- },
23
- ],
24
- 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
25
- 'jsx-a11y/aria-props': 'error',
26
- 'jsx-a11y/aria-proptypes': 'error',
27
- 'jsx-a11y/aria-role': [
28
- 'error',
29
- {
30
- ignoreNonDOM: false,
31
- },
32
- ],
33
- 'jsx-a11y/aria-unsupported-elements': 'error',
34
- 'jsx-a11y/autocomplete-valid': 'error',
35
- 'jsx-a11y/click-events-have-key-events': 'error',
36
- 'jsx-a11y/control-has-associated-label': 'error',
37
- 'jsx-a11y/heading-has-content': [
38
- 'error',
39
- {
40
- components: [''],
41
- },
42
- ],
43
- 'jsx-a11y/html-has-lang': 'error',
44
- 'jsx-a11y/iframe-has-title': 'error',
45
- 'jsx-a11y/img-redundant-alt': 'error',
46
- 'jsx-a11y/interactive-supports-focus': [
47
- 'error',
48
- {
49
- tabbable: [
50
- 'button',
51
- 'checkbox',
52
- 'columnheader',
53
- 'combobox',
54
- 'grid',
55
- 'gridcell',
56
- 'link',
57
- 'listbox',
58
- 'menu',
59
- 'menubar',
60
- 'menuitem',
61
- 'menuitemcheckbox',
62
- 'menuitemradio',
63
- 'option',
64
- 'progressbar',
65
- 'radio',
66
- 'radiogroup',
67
- 'row',
68
- 'rowheader',
69
- 'searchbox',
70
- 'slider',
71
- 'spinbutton',
72
- 'switch',
73
- 'tab',
74
- 'tablist',
75
- 'textbox',
76
- 'tree',
77
- 'treegrid',
78
- 'treeitem',
79
- 'doc-backlink',
80
- 'doc-biblioref',
81
- 'doc-glossref',
82
- 'doc-noteref',
83
- ],
84
- },
85
- ],
86
- 'jsx-a11y/lang': 'error',
87
- 'jsx-a11y/media-has-caption': [
88
- 'error',
89
- {
90
- audio: [],
91
- video: [],
92
- track: [],
93
- },
94
- ],
95
- 'jsx-a11y/mouse-events-have-key-events': 'error',
96
- 'jsx-a11y/no-access-key': 'error',
97
- 'jsx-a11y/no-aria-hidden-on-focusable': 'off',
98
- 'jsx-a11y/no-autofocus': [
99
- 'error',
100
- {
101
- ignoreNonDOM: true,
102
- },
103
- ],
104
- 'jsx-a11y/no-distracting-elements': 'error',
105
- 'jsx-a11y/no-noninteractive-element-interactions': [
106
- 'error',
107
- {
108
- handlers: [
109
- 'onClick',
110
- 'onMouseDown',
111
- 'onMouseUp',
112
- 'onKeyPress',
113
- 'onKeyDown',
114
- 'onKeyUp',
115
- ],
116
- },
117
- ],
118
- 'jsx-a11y/no-noninteractive-element-to-interactive-role': 'error',
119
- 'jsx-a11y/no-interactive-element-to-noninteractive-role': [
120
- 'error',
121
- {
122
- tr: ['none', 'presentation'],
123
- },
124
- ],
125
- 'jsx-a11y/no-noninteractive-tabindex': [
126
- 'error',
127
- {
128
- tags: [],
129
- roles: ['tabpanel'],
130
- },
131
- ],
132
- 'jsx-a11y/no-redundant-roles': 'error',
133
- 'jsx-a11y/no-static-element-interactions': [
134
- 'error',
135
- {
136
- handlers: [
137
- 'onClick',
138
- 'onMouseDown',
139
- 'onKeyPress',
140
- 'onKeyDown',
141
- 'onKeyUp',
142
- ],
143
- },
144
- ],
145
- 'jsx-a11y/role-has-required-aria-props': 'error',
146
- 'jsx-a11y/role-supports-aria-props': 'error',
147
- 'jsx-a11y/scope': 'error',
148
- 'jsx-a11y/tabindex-no-positive': 'error',
149
- 'jsx-a11y/label-has-associated-control': [
150
- 'error',
151
- {
152
- labelComponents: [],
153
- labelAttributes: [],
154
- controlComponents: [],
155
- assert: 'both',
156
- depth: 10,
157
- },
158
- ],
159
- 'jsx-a11y/prefer-tag-over-role': 'error',
160
- },
161
- };
@@ -1,38 +0,0 @@
1
- export const ESLintPluginA11YDisabled = {
2
- 'jsx-a11y/alt-text': 'off',
3
- 'jsx-a11y/anchor-ambiguous-text': 'off',
4
- 'jsx-a11y/anchor-has-content': 'off',
5
- 'jsx-a11y/anchor-is-valid': 'off',
6
- 'jsx-a11y/aria-activedescendant-has-tabindex': 'off',
7
- 'jsx-a11y/aria-props': 'off',
8
- 'jsx-a11y/aria-proptypes': 'off',
9
- 'jsx-a11y/aria-role': 'off',
10
- 'jsx-a11y/aria-unsupported-elements': 'off',
11
- 'jsx-a11y/autocomplete-valid': 'off',
12
- 'jsx-a11y/click-events-have-key-events': 'off',
13
- 'jsx-a11y/control-has-associated-label': 'error',
14
- 'jsx-a11y/heading-has-content': 'off',
15
- 'jsx-a11y/html-has-lang': 'off',
16
- 'jsx-a11y/iframe-has-title': 'off',
17
- 'jsx-a11y/img-redundant-alt': 'off',
18
- 'jsx-a11y/interactive-supports-focus': 'off',
19
- 'jsx-a11y/lang': 'off',
20
- 'jsx-a11y/media-has-caption': 'off',
21
- 'jsx-a11y/mouse-events-have-key-events': 'off',
22
- 'jsx-a11y/no-access-key': 'off',
23
- 'jsx-a11y/no-aria-hidden-on-focusable': 'off',
24
- 'jsx-a11y/no-autofocus': 'off',
25
- 'jsx-a11y/no-distracting-elements': 'off',
26
- 'jsx-a11y/no-noninteractive-element-interactions': 'off',
27
- 'jsx-a11y/no-noninteractive-element-to-interactive-role': 'off',
28
- 'jsx-a11y/no-interactive-element-to-noninteractive-role': 'off',
29
- 'jsx-a11y/no-noninteractive-tabindex': 'off',
30
- 'jsx-a11y/no-redundant-roles': 'off',
31
- 'jsx-a11y/no-static-element-interactions': 'off',
32
- 'jsx-a11y/role-has-required-aria-props': 'off',
33
- 'jsx-a11y/role-supports-aria-props': 'off',
34
- 'jsx-a11y/scope': 'off',
35
- 'jsx-a11y/tabindex-no-positive': 'off',
36
- 'jsx-a11y/label-has-associated-control': 'off',
37
- 'jsx-a11y/prefer-tag-over-role': 'off',
38
- };
@@ -1,187 +0,0 @@
1
- export default {
2
- plugins: ['react'],
3
- rules: {
4
- 'react/jsx-boolean-value': [
5
- 'error',
6
- 'never',
7
- {
8
- always: [],
9
- },
10
- ],
11
- 'react/jsx-filename-extension': [
12
- 'error',
13
- {
14
- extensions: ['.tsx'],
15
- },
16
- ],
17
- 'react/jsx-fragments': ['error', 'syntax'],
18
- 'react/jsx-handler-names': 'off',
19
- 'react/jsx-key': [
20
- 'error',
21
- {
22
- checkFragmentShorthand: true,
23
- checkKeyMustBeforeSpread: true,
24
- warnOnDuplicates: true,
25
- },
26
- ],
27
- 'react/jsx-max-depth': [
28
- 'error',
29
- {
30
- max: 10,
31
- },
32
- ],
33
- 'react/jsx-no-comment-textnodes': 'error',
34
- 'react/jsx-no-constructed-context-values': 'error',
35
- 'react/jsx-no-duplicate-props': 'error',
36
- 'react/jsx-no-literals': 'off',
37
- 'react/jsx-props-no-spread-multi': 'error',
38
- 'react/no-multi-comp': 'off',
39
- 'react/jsx-no-target-blank': [
40
- 'error',
41
- {
42
- enforceDynamicLinks: 'always',
43
- },
44
- ],
45
- 'react/jsx-no-undef': 'error',
46
- 'react/jsx-curly-brace-presence': [
47
- 'error',
48
- {
49
- props: 'never',
50
- children: 'never',
51
- },
52
- ],
53
- 'react/jsx-pascal-case': [
54
- 'error',
55
- {
56
- allowAllCaps: false,
57
- ignore: [],
58
- },
59
- ],
60
- 'react/no-danger': 'error',
61
- 'react/jsx-props-no-spreading': 'off',
62
- 'react/jsx-no-useless-fragment': [
63
- 'error',
64
- {
65
- allowExpressions: true,
66
- },
67
- ],
68
- 'react/jsx-no-script-url': 'error',
69
- 'react/button-has-type': [
70
- 'error',
71
- {
72
- button: true,
73
- submit: true,
74
- reset: true,
75
- },
76
- ],
77
- 'react/checked-requires-onchange-or-readonly': 'error',
78
- 'react/display-name': 'off',
79
- 'react/forbid-component-props': [
80
- 'error',
81
- {
82
- forbid: [
83
- 'style',
84
- {
85
- propName: 'className',
86
- allowedFor: ['Button', 'Icon', 'Link'],
87
- },
88
- ],
89
- },
90
- ],
91
- 'react/forbid-dom-props': [
92
- 'error',
93
- {
94
- forbid: [
95
- 'abbr',
96
- 'align',
97
- 'axis',
98
- 'bgcolor',
99
- 'border',
100
- 'cellpadding',
101
- 'cellspacing',
102
- 'char',
103
- 'charoff',
104
- 'charset',
105
- 'clear',
106
- 'coords',
107
- 'frame',
108
- 'frameborder',
109
- 'hspace',
110
- 'longdesc',
111
- 'marginheight',
112
- 'marginwidth',
113
- 'rev',
114
- 'scope',
115
- 'scrolling',
116
- 'shape',
117
- 'size',
118
- 'valign',
119
- 'vspace',
120
- ],
121
- },
122
- ],
123
- 'react/forbid-elements': [
124
- 'error',
125
- {
126
- forbid: [
127
- 'acronym',
128
- 'applet',
129
- 'basefont',
130
- 'big',
131
- 'center',
132
- 'dir',
133
- 'font',
134
- 'frame',
135
- 'frameset',
136
- 'noframes',
137
- 'isindex',
138
- 'noframes',
139
- 's',
140
- 'strike',
141
- 'tt',
142
- 'u',
143
- ],
144
- },
145
- ],
146
- 'react/forward-ref-uses-ref': 'error',
147
- 'react/hook-use-state': [
148
- 'error',
149
- {
150
- allowDestructuredState: true,
151
- },
152
- ],
153
- 'react/iframe-missing-sandbox': 'error',
154
- 'react/no-array-index-key': 'error',
155
- 'react/no-children-prop': 'error',
156
- 'react/no-danger-with-children': 'error',
157
- 'react/no-did-mount-set-state': 'off',
158
- 'react/no-did-update-set-state': 'off',
159
- 'react/no-direct-mutation-state': 'error',
160
- 'react/no-find-dom-node': 'error',
161
- 'react/no-is-mounted': 'error',
162
- 'react/no-namespace': 'error',
163
- 'react/no-object-type-as-default-prop': 'error',
164
- 'react/no-redundant-should-component-update': 'error',
165
- 'react/no-render-return-value': 'error',
166
- 'react/no-set-state': 'off',
167
- 'react/only-export-components': 'off',
168
- 'react/no-string-refs': 'error',
169
- 'react/no-this-in-sfc': 'error',
170
- 'react/no-unescaped-entities': 'error',
171
- 'react/no-unknown-property': 'error',
172
- 'react/no-unsafe': 'error',
173
- 'react/no-unstable-nested-components': 'error',
174
- 'react/no-will-update-set-state': 'error',
175
- 'react/prefer-es6-class': ['error', 'always'],
176
- 'react/react-in-jsx-scope': 'off',
177
- 'react/require-render-return': 'error',
178
- 'react/self-closing-comp': 'error',
179
- 'react/style-prop-object': 'error',
180
- 'react/void-dom-elements-no-children': 'error',
181
- 'react/state-in-constructor': ['error', 'always'],
182
-
183
- // Oxlint specific rules
184
- 'react/no-clone-element': 'error',
185
- 'react/no-react-children': 'error',
186
- },
187
- };
@@ -1,58 +0,0 @@
1
- export const ESLintPluginReactDisabled = {
2
- 'react/jsx-boolean-value': 'off',
3
- 'react/jsx-filename-extension': 'off',
4
- 'react/jsx-fragments': 'off',
5
- 'react/jsx-handler-names': 'off',
6
- 'react/jsx-key': 'off',
7
- 'react/jsx-max-depth': 'off',
8
- 'react/jsx-no-comment-textnodes': 'off',
9
- 'react/jsx-no-constructed-context-values': 'off',
10
- 'react/jsx-no-duplicate-props': 'off',
11
- 'react/jsx-props-no-spread-multi': 'off',
12
- 'react/jsx-no-literals': 'off',
13
- 'react/jsx-no-target-blank': 'off',
14
- 'react/jsx-no-undef': 'off',
15
- 'react/jsx-curly-brace-presence': 'off',
16
- 'react/jsx-pascal-case': 'off',
17
- 'react/no-danger': 'off',
18
- 'react/jsx-props-no-spreading': 'off',
19
- 'react/jsx-no-useless-fragment': 'off',
20
- 'react/jsx-no-script-url': 'off',
21
- 'react/button-has-type': 'off',
22
- 'react/checked-requires-onchange-or-readonly': 'off',
23
- 'react/display-name': 'off',
24
- 'react/forbid-component-props': 'off',
25
- 'react/forbid-dom-props': 'off',
26
- 'react/forbid-elements': 'off',
27
- 'react/forward-ref-uses-ref': 'off',
28
- 'react/hook-use-state': 'off',
29
- 'react/iframe-missing-sandbox': 'off',
30
- 'react/no-array-index-key': 'off',
31
- 'react/no-children-prop': 'off',
32
- 'react/no-danger-with-children': 'off',
33
- 'react/no-did-mount-set-state': 'off',
34
- 'react/no-did-update-set-state': 'off',
35
- 'react/no-direct-mutation-state': 'off',
36
- 'react/no-find-dom-node': 'off',
37
- 'react/no-is-mounted': 'off',
38
- 'react/no-namespace': 'off',
39
- 'react/no-object-type-as-default-prop': 'off',
40
- 'react/no-multi-comp': 'off',
41
- 'react/no-redundant-should-component-update': 'off',
42
- 'react/no-render-return-value': 'off',
43
- 'react/no-set-state': 'off',
44
- 'react/no-string-refs': 'off',
45
- 'react/no-this-in-sfc': 'off',
46
- 'react/no-unescaped-entities': 'off',
47
- 'react/no-unknown-property': 'off',
48
- 'react/no-unsafe': 'off',
49
- 'react/no-unstable-nested-components': 'off',
50
- 'react/no-will-update-set-state': 'off',
51
- 'react/prefer-es6-class': 'off',
52
- 'react/react-in-jsx-scope': 'off',
53
- 'react/require-render-return': 'off',
54
- 'react/self-closing-comp': 'off',
55
- 'react/style-prop-object': 'off',
56
- 'react/void-dom-elements-no-children': 'off',
57
- 'react/state-in-constructor': 'off',
58
- };
@@ -1,7 +0,0 @@
1
- export default {
2
- plugins: ['react'],
3
- rules: {
4
- 'react/rules-of-hooks': 'error',
5
- 'react/exhaustive-deps': 'error',
6
- },
7
- };
@@ -1,4 +0,0 @@
1
- export const ESLintPluginReactHooksDisabled = {
2
- 'react-hooks/rules-of-hooks': 'off',
3
- 'react-hooks/exhaustive-deps': 'off',
4
- };