eslint-config-setup 0.2.8 → 0.3.1

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.
@@ -13,7 +13,6 @@ import oxlintPlugin from "eslint-plugin-oxlint"
13
13
  import packageJsonPlugin from "eslint-plugin-package-json"
14
14
  import perfectionistPlugin from "eslint-plugin-perfectionist"
15
15
  import playwrightPlugin from "eslint-plugin-playwright"
16
- import reactPlugin from "eslint-plugin-react"
17
16
  import regexpPlugin from "eslint-plugin-regexp"
18
17
  import securityPlugin from "eslint-plugin-security"
19
18
  import sonarjsPlugin from "eslint-plugin-sonarjs"
@@ -41,7 +40,6 @@ export default [
41
40
  "jsx-a11y": jsxA11yPlugin,
42
41
  "node": nodePlugin,
43
42
  "perfectionist": perfectionistPlugin,
44
- "react": reactPlugin,
45
43
  "regexp": regexpPlugin,
46
44
  "security": securityPlugin,
47
45
  "sonarjs": sonarjsPlugin,
@@ -175,12 +173,43 @@ export default [
175
173
  ],
176
174
  "@typescript-eslint/naming-convention": [
177
175
  "error",
176
+ {
177
+ "selector": "variable",
178
+ "format": [
179
+ "strictCamelCase",
180
+ "UPPER_CASE"
181
+ ],
182
+ "leadingUnderscore": "allowSingleOrDouble",
183
+ "trailingUnderscore": "allow",
184
+ "filter": {
185
+ "regex": "[- ]",
186
+ "match": false
187
+ }
188
+ },
189
+ {
190
+ "selector": "function",
191
+ "format": [
192
+ "strictCamelCase"
193
+ ]
194
+ },
195
+ {
196
+ "selector": "parameter",
197
+ "format": [
198
+ "strictCamelCase"
199
+ ],
200
+ "leadingUnderscore": "allow"
201
+ },
202
+ {
203
+ "selector": "import",
204
+ "format": [
205
+ "strictCamelCase",
206
+ "StrictPascalCase",
207
+ "UPPER_CASE"
208
+ ]
209
+ },
178
210
  {
179
211
  "selector": [
180
- "variable",
181
- "function",
182
212
  "classProperty",
183
- "objectLiteralProperty",
184
213
  "parameterProperty",
185
214
  "classMethod",
186
215
  "objectLiteralMethod",
@@ -197,6 +226,13 @@ export default [
197
226
  "match": false
198
227
  }
199
228
  },
229
+ {
230
+ "selector": [
231
+ "objectLiteralProperty",
232
+ "typeProperty"
233
+ ],
234
+ "format": null
235
+ },
200
236
  {
201
237
  "selector": "typeLike",
202
238
  "format": [
@@ -699,8 +735,6 @@ export default [
699
735
  "prefer-template": "error",
700
736
  "preserve-caught-error": "error",
701
737
  "radix": "error",
702
- "react/jsx-no-bind": "error",
703
- "react/no-multi-comp": "error",
704
738
  "regexp/confusing-quantifier": "warn",
705
739
  "regexp/control-character-escape": "error",
706
740
  "regexp/match-any": "error",
@@ -4,6 +4,7 @@ import * as mdxPlugin from "eslint-plugin-mdx"
4
4
  import compatPlugin from "eslint-plugin-compat"
5
5
  import cspellPlugin from "@cspell/eslint-plugin"
6
6
  import deMorganPlugin from "eslint-plugin-de-morgan"
7
+ import eslintReactPlugin from "@eslint-react/eslint-plugin"
7
8
  import globals from "globals"
8
9
  import importXPlugin from "eslint-plugin-import-x"
9
10
  import jsdocPlugin from "eslint-plugin-jsdoc"
@@ -16,12 +17,12 @@ import perfectionistPlugin from "eslint-plugin-perfectionist"
16
17
  import playwrightPlugin from "eslint-plugin-playwright"
17
18
  import reactEffectPlugin from "eslint-plugin-react-you-might-not-need-an-effect"
18
19
  import reactHooksPlugin from "eslint-plugin-react-hooks"
19
- import reactPlugin from "eslint-plugin-react"
20
20
  import reactRefreshPlugin from "eslint-plugin-react-refresh"
21
21
  import regexpPlugin from "eslint-plugin-regexp"
22
22
  import securityPlugin from "eslint-plugin-security"
23
23
  import sonarjsPlugin from "eslint-plugin-sonarjs"
24
24
  import storybookPlugin from "eslint-plugin-storybook"
25
+ import stylisticPlugin from "@stylistic/eslint-plugin"
25
26
  import testingLibraryPlugin from "eslint-plugin-testing-library"
26
27
  import tseslint from "typescript-eslint"
27
28
  import unicornPlugin from "eslint-plugin-unicorn"
@@ -37,6 +38,7 @@ export default [
37
38
  name: "eslint-config-setup/base",
38
39
  plugins: {
39
40
  "@cspell": cspellPlugin,
41
+ "@stylistic": stylisticPlugin,
40
42
  "@typescript-eslint": tseslint.plugin,
41
43
  "compat": compatPlugin,
42
44
  "de-morgan": deMorganPlugin,
@@ -45,9 +47,11 @@ export default [
45
47
  "jsx-a11y": jsxA11yPlugin,
46
48
  "node": nodePlugin,
47
49
  "perfectionist": perfectionistPlugin,
48
- "react": reactPlugin,
50
+ "react": eslintReactPlugin,
51
+ "react-dom": eslintReactPlugin.configs.dom.plugins["@eslint-react/dom"],
49
52
  "react-hooks": reactHooksPlugin,
50
53
  "react-refresh": reactRefreshPlugin,
54
+ "react-web-api": eslintReactPlugin.configs["web-api"].plugins["@eslint-react/web-api"],
51
55
  "react-you-might-not-need-an-effect": reactEffectPlugin,
52
56
  "regexp": regexpPlugin,
53
57
  "security": securityPlugin,
@@ -65,9 +69,6 @@ export default [
65
69
  ...globals.browser,
66
70
  },
67
71
  },
68
- settings: {
69
- react: { version: "detect" },
70
- },
71
72
  rules: {
72
73
  "@cspell/spellchecker": [
73
74
  "warn",
@@ -78,6 +79,14 @@ export default [
78
79
  "autoFix": false
79
80
  }
80
81
  ],
82
+ "@stylistic/jsx-curly-brace-presence": [
83
+ "error",
84
+ {
85
+ "props": "never",
86
+ "children": "never"
87
+ }
88
+ ],
89
+ "@stylistic/jsx-self-closing-comp": "error",
81
90
  "@typescript-eslint/adjacent-overload-signatures": "error",
82
91
  "@typescript-eslint/array-type": [
83
92
  "error",
@@ -189,12 +198,45 @@ export default [
189
198
  ],
190
199
  "@typescript-eslint/naming-convention": [
191
200
  "error",
201
+ {
202
+ "selector": "variable",
203
+ "format": [
204
+ "strictCamelCase",
205
+ "UPPER_CASE",
206
+ "StrictPascalCase"
207
+ ],
208
+ "leadingUnderscore": "allowSingleOrDouble",
209
+ "trailingUnderscore": "allow",
210
+ "filter": {
211
+ "regex": "[- ]",
212
+ "match": false
213
+ }
214
+ },
215
+ {
216
+ "selector": "function",
217
+ "format": [
218
+ "strictCamelCase",
219
+ "StrictPascalCase"
220
+ ]
221
+ },
222
+ {
223
+ "selector": "parameter",
224
+ "format": [
225
+ "strictCamelCase"
226
+ ],
227
+ "leadingUnderscore": "allow"
228
+ },
229
+ {
230
+ "selector": "import",
231
+ "format": [
232
+ "strictCamelCase",
233
+ "StrictPascalCase",
234
+ "UPPER_CASE"
235
+ ]
236
+ },
192
237
  {
193
238
  "selector": [
194
- "variable",
195
- "function",
196
239
  "classProperty",
197
- "objectLiteralProperty",
198
240
  "parameterProperty",
199
241
  "classMethod",
200
242
  "objectLiteralMethod",
@@ -211,6 +253,13 @@ export default [
211
253
  "match": false
212
254
  }
213
255
  },
256
+ {
257
+ "selector": [
258
+ "objectLiteralProperty",
259
+ "typeProperty"
260
+ ],
261
+ "format": null
262
+ },
214
263
  {
215
264
  "selector": "typeLike",
216
265
  "format": [
@@ -742,6 +791,14 @@ export default [
742
791
  "prefer-template": "error",
743
792
  "preserve-caught-error": "error",
744
793
  "radix": "error",
794
+ "react-dom/no-dangerously-set-innerhtml": "warn",
795
+ "react-dom/no-dangerously-set-innerhtml-with-children": "error",
796
+ "react-dom/no-missing-button-type": "error",
797
+ "react-dom/no-missing-iframe-sandbox": "error",
798
+ "react-dom/no-string-style-prop": "error",
799
+ "react-dom/no-unknown-property": "error",
800
+ "react-dom/no-unsafe-target-blank": "error",
801
+ "react-dom/no-void-elements-with-children": "error",
745
802
  "react-hooks/exhaustive-deps": "error",
746
803
  "react-hooks/rules-of-hooks": "error",
747
804
  "react-refresh/only-export-components": [
@@ -750,6 +807,10 @@ export default [
750
807
  "allowConstantExport": true
751
808
  }
752
809
  ],
810
+ "react-web-api/no-leaked-event-listener": "error",
811
+ "react-web-api/no-leaked-interval": "error",
812
+ "react-web-api/no-leaked-resize-observer": "error",
813
+ "react-web-api/no-leaked-timeout": "error",
753
814
  "react-you-might-not-need-an-effect/no-adjust-state-on-prop-change": "warn",
754
815
  "react-you-might-not-need-an-effect/no-chain-state-updates": "error",
755
816
  "react-you-might-not-need-an-effect/no-derived-state": "error",
@@ -759,63 +820,23 @@ export default [
759
820
  "react-you-might-not-need-an-effect/no-pass-data-to-parent": "error",
760
821
  "react-you-might-not-need-an-effect/no-pass-live-state-to-parent": "error",
761
822
  "react-you-might-not-need-an-effect/no-reset-all-state-on-prop-change": "error",
762
- "react/button-has-type": "error",
763
- "react/function-component-definition": [
764
- "error",
765
- {
766
- "namedComponents": "function-declaration",
767
- "unnamedComponents": "arrow-function"
768
- }
769
- ],
770
- "react/hook-use-state": "error",
771
- "react/iframe-missing-sandbox": "error",
772
- "react/jsx-boolean-value": [
773
- "error",
774
- "never"
775
- ],
776
- "react/jsx-curly-brace-presence": [
777
- "error",
778
- {
779
- "props": "never",
780
- "children": "never"
781
- }
782
- ],
783
- "react/jsx-key": [
784
- "error",
785
- {
786
- "checkFragmentShorthand": true
787
- }
788
- ],
789
- "react/jsx-no-bind": "error",
790
823
  "react/jsx-no-comment-textnodes": "error",
791
- "react/jsx-no-constructed-context-values": "error",
792
- "react/jsx-no-duplicate-props": "error",
793
- "react/jsx-no-leaked-render": "error",
794
- "react/jsx-no-target-blank": "error",
795
- "react/jsx-no-undef": "error",
796
- "react/jsx-no-useless-fragment": [
797
- "error",
798
- {
799
- "allowExpressions": true
800
- }
801
- ],
802
- "react/jsx-pascal-case": "error",
824
+ "react/jsx-shorthand-boolean": "error",
803
825
  "react/no-access-state-in-setstate": "error",
804
826
  "react/no-array-index-key": "error",
805
827
  "react/no-children-prop": "error",
806
- "react/no-danger": "warn",
807
- "react/no-danger-with-children": "error",
808
- "react/no-deprecated": "error",
828
+ "react/no-context-provider": "error",
809
829
  "react/no-direct-mutation-state": "error",
810
- "react/no-multi-comp": "error",
811
- "react/no-object-type-as-default-prop": "error",
812
- "react/no-string-refs": "error",
813
- "react/no-unknown-property": "error",
814
- "react/no-unstable-nested-components": "error",
830
+ "react/no-duplicate-key": "error",
831
+ "react/no-forward-ref": "error",
832
+ "react/no-leaked-conditional-rendering": "error",
833
+ "react/no-missing-key": "error",
834
+ "react/no-nested-component-definitions": "error",
835
+ "react/no-unstable-context-value": "error",
836
+ "react/no-unstable-default-props": "error",
815
837
  "react/no-unused-state": "error",
816
- "react/self-closing-comp": "error",
817
- "react/style-prop-object": "error",
818
- "react/void-dom-elements-no-children": "error",
838
+ "react/no-use-context": "error",
839
+ "react/no-useless-fragment": "error",
819
840
  "regexp/confusing-quantifier": "warn",
820
841
  "regexp/control-character-escape": "error",
821
842
  "regexp/match-any": "error",
@@ -3,6 +3,7 @@
3
3
  import * as mdxPlugin from "eslint-plugin-mdx"
4
4
  import cspellPlugin from "@cspell/eslint-plugin"
5
5
  import deMorganPlugin from "eslint-plugin-de-morgan"
6
+ import eslintReactPlugin from "@eslint-react/eslint-plugin"
6
7
  import globals from "globals"
7
8
  import importXPlugin from "eslint-plugin-import-x"
8
9
  import jsdocPlugin from "eslint-plugin-jsdoc"
@@ -15,12 +16,12 @@ import perfectionistPlugin from "eslint-plugin-perfectionist"
15
16
  import playwrightPlugin from "eslint-plugin-playwright"
16
17
  import reactEffectPlugin from "eslint-plugin-react-you-might-not-need-an-effect"
17
18
  import reactHooksPlugin from "eslint-plugin-react-hooks"
18
- import reactPlugin from "eslint-plugin-react"
19
19
  import reactRefreshPlugin from "eslint-plugin-react-refresh"
20
20
  import regexpPlugin from "eslint-plugin-regexp"
21
21
  import securityPlugin from "eslint-plugin-security"
22
22
  import sonarjsPlugin from "eslint-plugin-sonarjs"
23
23
  import storybookPlugin from "eslint-plugin-storybook"
24
+ import stylisticPlugin from "@stylistic/eslint-plugin"
24
25
  import testingLibraryPlugin from "eslint-plugin-testing-library"
25
26
  import tseslint from "typescript-eslint"
26
27
  import unicornPlugin from "eslint-plugin-unicorn"
@@ -36,6 +37,7 @@ export default [
36
37
  name: "eslint-config-setup/base",
37
38
  plugins: {
38
39
  "@cspell": cspellPlugin,
40
+ "@stylistic": stylisticPlugin,
39
41
  "@typescript-eslint": tseslint.plugin,
40
42
  "de-morgan": deMorganPlugin,
41
43
  "import": importXPlugin,
@@ -43,9 +45,11 @@ export default [
43
45
  "jsx-a11y": jsxA11yPlugin,
44
46
  "node": nodePlugin,
45
47
  "perfectionist": perfectionistPlugin,
46
- "react": reactPlugin,
48
+ "react": eslintReactPlugin,
49
+ "react-dom": eslintReactPlugin.configs.dom.plugins["@eslint-react/dom"],
47
50
  "react-hooks": reactHooksPlugin,
48
51
  "react-refresh": reactRefreshPlugin,
52
+ "react-web-api": eslintReactPlugin.configs["web-api"].plugins["@eslint-react/web-api"],
49
53
  "react-you-might-not-need-an-effect": reactEffectPlugin,
50
54
  "regexp": regexpPlugin,
51
55
  "security": securityPlugin,
@@ -64,9 +68,6 @@ export default [
64
68
  ...globals.node,
65
69
  },
66
70
  },
67
- settings: {
68
- react: { version: "detect" },
69
- },
70
71
  rules: {
71
72
  "@cspell/spellchecker": [
72
73
  "warn",
@@ -77,6 +78,14 @@ export default [
77
78
  "autoFix": false
78
79
  }
79
80
  ],
81
+ "@stylistic/jsx-curly-brace-presence": [
82
+ "error",
83
+ {
84
+ "props": "never",
85
+ "children": "never"
86
+ }
87
+ ],
88
+ "@stylistic/jsx-self-closing-comp": "error",
80
89
  "@typescript-eslint/adjacent-overload-signatures": "error",
81
90
  "@typescript-eslint/array-type": [
82
91
  "error",
@@ -496,6 +505,14 @@ export default [
496
505
  "prefer-template": "error",
497
506
  "preserve-caught-error": "error",
498
507
  "radix": "error",
508
+ "react-dom/no-dangerously-set-innerhtml": "warn",
509
+ "react-dom/no-dangerously-set-innerhtml-with-children": "error",
510
+ "react-dom/no-missing-button-type": "error",
511
+ "react-dom/no-missing-iframe-sandbox": "error",
512
+ "react-dom/no-string-style-prop": "error",
513
+ "react-dom/no-unknown-property": "error",
514
+ "react-dom/no-unsafe-target-blank": "error",
515
+ "react-dom/no-void-elements-with-children": "error",
499
516
  "react-hooks/exhaustive-deps": "error",
500
517
  "react-hooks/rules-of-hooks": "error",
501
518
  "react-refresh/only-export-components": [
@@ -504,6 +521,10 @@ export default [
504
521
  "allowConstantExport": true
505
522
  }
506
523
  ],
524
+ "react-web-api/no-leaked-event-listener": "error",
525
+ "react-web-api/no-leaked-interval": "error",
526
+ "react-web-api/no-leaked-resize-observer": "error",
527
+ "react-web-api/no-leaked-timeout": "error",
507
528
  "react-you-might-not-need-an-effect/no-adjust-state-on-prop-change": "warn",
508
529
  "react-you-might-not-need-an-effect/no-chain-state-updates": "error",
509
530
  "react-you-might-not-need-an-effect/no-derived-state": "error",
@@ -513,61 +534,23 @@ export default [
513
534
  "react-you-might-not-need-an-effect/no-pass-data-to-parent": "error",
514
535
  "react-you-might-not-need-an-effect/no-pass-live-state-to-parent": "error",
515
536
  "react-you-might-not-need-an-effect/no-reset-all-state-on-prop-change": "error",
516
- "react/button-has-type": "error",
517
- "react/function-component-definition": [
518
- "error",
519
- {
520
- "namedComponents": "function-declaration",
521
- "unnamedComponents": "arrow-function"
522
- }
523
- ],
524
- "react/hook-use-state": "error",
525
- "react/iframe-missing-sandbox": "error",
526
- "react/jsx-boolean-value": [
527
- "error",
528
- "never"
529
- ],
530
- "react/jsx-curly-brace-presence": [
531
- "error",
532
- {
533
- "props": "never",
534
- "children": "never"
535
- }
536
- ],
537
- "react/jsx-key": [
538
- "error",
539
- {
540
- "checkFragmentShorthand": true
541
- }
542
- ],
543
537
  "react/jsx-no-comment-textnodes": "error",
544
- "react/jsx-no-constructed-context-values": "error",
545
- "react/jsx-no-duplicate-props": "error",
546
- "react/jsx-no-leaked-render": "error",
547
- "react/jsx-no-target-blank": "error",
548
- "react/jsx-no-undef": "error",
549
- "react/jsx-no-useless-fragment": [
550
- "error",
551
- {
552
- "allowExpressions": true
553
- }
554
- ],
555
- "react/jsx-pascal-case": "error",
538
+ "react/jsx-shorthand-boolean": "error",
556
539
  "react/no-access-state-in-setstate": "error",
557
540
  "react/no-array-index-key": "error",
558
541
  "react/no-children-prop": "error",
559
- "react/no-danger": "warn",
560
- "react/no-danger-with-children": "error",
561
- "react/no-deprecated": "error",
542
+ "react/no-context-provider": "error",
562
543
  "react/no-direct-mutation-state": "error",
563
- "react/no-object-type-as-default-prop": "error",
564
- "react/no-string-refs": "error",
565
- "react/no-unknown-property": "error",
566
- "react/no-unstable-nested-components": "error",
544
+ "react/no-duplicate-key": "error",
545
+ "react/no-forward-ref": "error",
546
+ "react/no-leaked-conditional-rendering": "error",
547
+ "react/no-missing-key": "error",
548
+ "react/no-nested-component-definitions": "error",
549
+ "react/no-unstable-context-value": "error",
550
+ "react/no-unstable-default-props": "error",
567
551
  "react/no-unused-state": "error",
568
- "react/self-closing-comp": "error",
569
- "react/style-prop-object": "error",
570
- "react/void-dom-elements-no-children": "error",
552
+ "react/no-use-context": "error",
553
+ "react/no-useless-fragment": "error",
571
554
  "regexp/confusing-quantifier": "warn",
572
555
  "regexp/control-character-escape": "error",
573
556
  "regexp/match-any": "error",
@@ -13,7 +13,6 @@ import oxlintPlugin from "eslint-plugin-oxlint"
13
13
  import packageJsonPlugin from "eslint-plugin-package-json"
14
14
  import perfectionistPlugin from "eslint-plugin-perfectionist"
15
15
  import playwrightPlugin from "eslint-plugin-playwright"
16
- import reactPlugin from "eslint-plugin-react"
17
16
  import regexpPlugin from "eslint-plugin-regexp"
18
17
  import securityPlugin from "eslint-plugin-security"
19
18
  import sonarjsPlugin from "eslint-plugin-sonarjs"
@@ -40,7 +39,6 @@ export default [
40
39
  "jsx-a11y": jsxA11yPlugin,
41
40
  "node": nodePlugin,
42
41
  "perfectionist": perfectionistPlugin,
43
- "react": reactPlugin,
44
42
  "regexp": regexpPlugin,
45
43
  "security": securityPlugin,
46
44
  "sonarjs": sonarjsPlugin,
@@ -177,12 +175,43 @@ export default [
177
175
  ],
178
176
  "@typescript-eslint/naming-convention": [
179
177
  "error",
178
+ {
179
+ "selector": "variable",
180
+ "format": [
181
+ "strictCamelCase",
182
+ "UPPER_CASE"
183
+ ],
184
+ "leadingUnderscore": "allowSingleOrDouble",
185
+ "trailingUnderscore": "allow",
186
+ "filter": {
187
+ "regex": "[- ]",
188
+ "match": false
189
+ }
190
+ },
191
+ {
192
+ "selector": "function",
193
+ "format": [
194
+ "strictCamelCase"
195
+ ]
196
+ },
197
+ {
198
+ "selector": "parameter",
199
+ "format": [
200
+ "strictCamelCase"
201
+ ],
202
+ "leadingUnderscore": "allow"
203
+ },
204
+ {
205
+ "selector": "import",
206
+ "format": [
207
+ "strictCamelCase",
208
+ "StrictPascalCase",
209
+ "UPPER_CASE"
210
+ ]
211
+ },
180
212
  {
181
213
  "selector": [
182
- "variable",
183
- "function",
184
214
  "classProperty",
185
- "objectLiteralProperty",
186
215
  "parameterProperty",
187
216
  "classMethod",
188
217
  "objectLiteralMethod",
@@ -199,6 +228,13 @@ export default [
199
228
  "match": false
200
229
  }
201
230
  },
231
+ {
232
+ "selector": [
233
+ "objectLiteralProperty",
234
+ "typeProperty"
235
+ ],
236
+ "format": null
237
+ },
202
238
  {
203
239
  "selector": "typeLike",
204
240
  "format": [
@@ -727,8 +763,6 @@ export default [
727
763
  "prefer-template": "error",
728
764
  "preserve-caught-error": "error",
729
765
  "radix": "error",
730
- "react/jsx-no-bind": "error",
731
- "react/no-multi-comp": "error",
732
766
  "regexp/confusing-quantifier": "warn",
733
767
  "regexp/control-character-escape": "error",
734
768
  "regexp/match-any": "error",
@@ -12,7 +12,6 @@ import nodePlugin from "eslint-plugin-n"
12
12
  import packageJsonPlugin from "eslint-plugin-package-json"
13
13
  import perfectionistPlugin from "eslint-plugin-perfectionist"
14
14
  import playwrightPlugin from "eslint-plugin-playwright"
15
- import reactPlugin from "eslint-plugin-react"
16
15
  import regexpPlugin from "eslint-plugin-regexp"
17
16
  import securityPlugin from "eslint-plugin-security"
18
17
  import sonarjsPlugin from "eslint-plugin-sonarjs"
@@ -40,7 +39,6 @@ export default [
40
39
  "jsx-a11y": jsxA11yPlugin,
41
40
  "node": nodePlugin,
42
41
  "perfectionist": perfectionistPlugin,
43
- "react": reactPlugin,
44
42
  "regexp": regexpPlugin,
45
43
  "security": securityPlugin,
46
44
  "sonarjs": sonarjsPlugin,
@@ -174,12 +172,43 @@ export default [
174
172
  ],
175
173
  "@typescript-eslint/naming-convention": [
176
174
  "error",
175
+ {
176
+ "selector": "variable",
177
+ "format": [
178
+ "strictCamelCase",
179
+ "UPPER_CASE"
180
+ ],
181
+ "leadingUnderscore": "allowSingleOrDouble",
182
+ "trailingUnderscore": "allow",
183
+ "filter": {
184
+ "regex": "[- ]",
185
+ "match": false
186
+ }
187
+ },
188
+ {
189
+ "selector": "function",
190
+ "format": [
191
+ "strictCamelCase"
192
+ ]
193
+ },
194
+ {
195
+ "selector": "parameter",
196
+ "format": [
197
+ "strictCamelCase"
198
+ ],
199
+ "leadingUnderscore": "allow"
200
+ },
201
+ {
202
+ "selector": "import",
203
+ "format": [
204
+ "strictCamelCase",
205
+ "StrictPascalCase",
206
+ "UPPER_CASE"
207
+ ]
208
+ },
177
209
  {
178
210
  "selector": [
179
- "variable",
180
- "function",
181
211
  "classProperty",
182
- "objectLiteralProperty",
183
212
  "parameterProperty",
184
213
  "classMethod",
185
214
  "objectLiteralMethod",
@@ -196,6 +225,13 @@ export default [
196
225
  "match": false
197
226
  }
198
227
  },
228
+ {
229
+ "selector": [
230
+ "objectLiteralProperty",
231
+ "typeProperty"
232
+ ],
233
+ "format": null
234
+ },
199
235
  {
200
236
  "selector": "typeLike",
201
237
  "format": [
@@ -698,8 +734,6 @@ export default [
698
734
  "prefer-template": "error",
699
735
  "preserve-caught-error": "error",
700
736
  "radix": "error",
701
- "react/jsx-no-bind": "error",
702
- "react/no-multi-comp": "error",
703
737
  "regexp/confusing-quantifier": "warn",
704
738
  "regexp/control-character-escape": "error",
705
739
  "regexp/match-any": "error",