@lidofinance/eslint-config 0.0.2 → 0.11.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/package.json CHANGED
@@ -1,44 +1,52 @@
1
1
  {
2
2
  "name": "@lidofinance/eslint-config",
3
- "version": "0.0.2",
4
- "main": "auto.js",
3
+ "description": "Automated, non-opinionated ESLint config foundation",
4
+ "repository": "git@github.com:lidofinance/warehouse.git",
5
5
  "license": "MIT",
6
- "dependencies": {
7
- "typescript": "4.6"
8
- },
6
+ "version": "0.11.0",
7
+ "main": "auto.js",
9
8
  "scripts": {
10
- "lint": "eslint --fix ."
9
+ "lint": "eslint .",
10
+ "lint:fix": "eslint --fix ."
11
11
  },
12
12
  "peerDependencies": {
13
- "@typescript-eslint/eslint-plugin": "^5.19.0",
14
- "@typescript-eslint/parser": "^5.19.0",
15
- "eslint": "^8.13.0",
16
- "eslint-import-resolver-typescript": "^2.7.1",
17
- "eslint-plugin-eslint-comments": "^3.2.0",
18
- "eslint-plugin-import": "^2.26.0",
19
- "eslint-plugin-jest": "^26.1.4",
20
- "eslint-plugin-promise": "^6.0.0",
21
- "eslint-plugin-react": "^7.29.4",
22
- "eslint-plugin-react-hooks": "^4.4.0",
23
- "eslint-plugin-sonarjs": "^0.13.0",
24
- "eslint-plugin-unicorn": "^42.0.0",
25
- "@next/eslint-plugin-next": "^12.1.6",
26
- "typescript": "4.6"
13
+ "@typescript-eslint/parser": "^5.46.0",
14
+ "@typescript-eslint/eslint-plugin": "^5",
15
+ "eslint-import-resolver-node": "^0.3.6",
16
+ "eslint-config-prettier": "^8.5.0",
17
+ "eslint-import-resolver-typescript": "^3",
18
+ "eslint-plugin-eslint-comments": "^3",
19
+ "eslint-plugin-import": "^2",
20
+ "eslint-plugin-jest": "^27",
21
+ "eslint-plugin-promise": "^6",
22
+ "eslint-plugin-react": "^7",
23
+ "eslint-plugin-react-hooks": "^4",
24
+ "eslint-plugin-sonarjs": "^0.14.0",
25
+ "eslint-plugin-unicorn": "^45",
26
+ "@next/eslint-plugin-next": "^13",
27
+ "eslint-plugin-prettier": "^4",
28
+ "eslint": "^8.29"
29
+ },
30
+ "dependencies": {
31
+ "typescript": "^4.7"
27
32
  },
28
33
  "devDependencies": {
29
- "@typescript-eslint/eslint-plugin": "^5.19.0",
30
- "@typescript-eslint/parser": "^5.19.0",
31
- "eslint": "^8.13.0",
32
- "eslint-plugin-prettier": "^4.0.0",
33
- "eslint-import-resolver-typescript": "^2.7.1",
34
- "eslint-plugin-import": "^2.26.0",
35
- "eslint-plugin-jest": "^26.1.4",
36
- "eslint-plugin-promise": "^6.0.0",
37
- "eslint-plugin-react": "^7.29.4",
38
- "eslint-plugin-react-hooks": "^4.4.0",
39
- "eslint-plugin-sonarjs": "^0.13.0",
40
- "eslint-plugin-unicorn": "^42.0.0",
41
- "@next/eslint-plugin-next": "^12.1.6",
42
- "typescript": "4.6"
34
+ "prettier": "^2.8.0",
35
+ "@typescript-eslint/parser": "^5.46.0",
36
+ "@typescript-eslint/eslint-plugin": "^5",
37
+ "eslint-import-resolver-node": "^0.3.6",
38
+ "eslint-config-prettier": "^8.5.0",
39
+ "eslint-import-resolver-typescript": "^3",
40
+ "eslint-plugin-eslint-comments": "^3",
41
+ "eslint-plugin-import": "^2",
42
+ "eslint-plugin-jest": "^27",
43
+ "eslint-plugin-promise": "^6",
44
+ "eslint-plugin-react": "^7",
45
+ "eslint-plugin-react-hooks": "^4",
46
+ "eslint-plugin-sonarjs": "^0.14.0",
47
+ "eslint-plugin-unicorn": "^45",
48
+ "@next/eslint-plugin-next": "^13",
49
+ "eslint-plugin-prettier": "^4",
50
+ "eslint": "^8.29"
43
51
  }
44
52
  }
package/prettier.js ADDED
@@ -0,0 +1,15 @@
1
+ module.exports = {
2
+ extends: ["prettier"],
3
+ plugins: ["prettier"],
4
+ rules: {
5
+ "prettier/prettier": [
6
+ "error",
7
+ {
8
+ singleQuote: true,
9
+ printWidth: 120,
10
+ semi: false,
11
+ trailingComma: "all",
12
+ },
13
+ ],
14
+ },
15
+ };
package/rulesets/easy.js CHANGED
@@ -1,211 +1,213 @@
1
1
  // this extends eslint:recommended
2
2
  const defaultRules = {
3
- 'prefer-const': 'warn',
4
- 'no-useless-escape': 'warn',
5
- 'no-unused-vars': ['error', {
6
- ignoreRestSiblings: true,
7
- args: "all",
8
- argsIgnorePattern: "^_"
9
- }],
10
- 'no-shadow': 'error',
11
- 'no-empty-function': 'off',
12
- 'no-void': 'off',
13
- 'promise/no-return-wrap': 'error',
14
- 'promise/param-names': 'warn',
15
- // analysis/correctness
16
- 'import/no-unresolved': 'error',
17
- 'import/named': 'error',
18
- 'import/namespace': 'error',
19
- 'import/default': 'error',
20
- 'import/export': 'error',
21
- // red flags (thus, warnings)
22
- 'import/no-named-as-default': 'off',
23
- 'import/no-named-as-default-member': 'off',
24
- 'import/no-duplicates': 'off',
25
- 'import/no-extraneous-dependencies': 'error',
26
- "import/extensions": "off",
27
- "import/prefer-default-export": "off",
28
- 'sonarjs/max-switch-cases': 'error',
29
- 'sonarjs/no-all-duplicated-branches': 'error',
30
- 'sonarjs/no-collapsible-if': 'error',
31
- 'sonarjs/no-collection-size-mischeck': 'error',
32
- 'sonarjs/no-duplicated-branches': 'error',
33
- 'sonarjs/no-element-overwrite': 'error',
34
- 'sonarjs/no-empty-collection': 'warn',
35
- 'sonarjs/no-extra-arguments': 'warn',
36
- 'sonarjs/no-gratuitous-expressions': 'warn',
37
- 'sonarjs/no-identical-conditions': 'warn',
38
- 'sonarjs/no-identical-expressions': 'warn',
39
- 'sonarjs/no-identical-functions': 'warn',
40
- 'sonarjs/no-ignored-return': 'warn',
41
- 'sonarjs/no-nested-switch': 'error',
42
- 'sonarjs/no-nested-template-literals': 'error',
43
- 'sonarjs/no-one-iteration-loop': 'error',
44
- 'sonarjs/no-redundant-boolean': 'error',
45
- 'sonarjs/no-redundant-jump': 'error',
46
- 'sonarjs/no-same-line-conditional': 'error',
47
- 'sonarjs/no-small-switch': 'error',
48
- 'sonarjs/no-unused-collection': 'error',
49
- 'sonarjs/no-use-of-empty-return-value': 'error',
50
- 'sonarjs/no-useless-catch': 'warn',
51
- 'sonarjs/non-existent-operator': 'error',
52
- 'sonarjs/prefer-object-literal': 'error',
53
- 'sonarjs/prefer-single-boolean-return': 'error',
54
- 'sonarjs/prefer-while': 'error',
55
- 'unicorn/consistent-function-scoping': 'error',
56
- 'unicorn/empty-brace-spaces': 'error',
57
- 'unicorn/error-message': 'error',
58
- 'unicorn/escape-case': 'error',
59
- 'unicorn/expiring-todo-comments': 'error',
60
- 'unicorn/explicit-length-check': 'error',
61
- 'unicorn/import-style': 'error',
62
- 'unicorn/new-for-builtins': 'error',
63
- 'unicorn/no-array-method-this-argument': 'error',
64
- 'unicorn/no-array-push-push': 'warn',
65
- 'unicorn/no-console-spaces': 'error',
66
- 'unicorn/no-document-cookie': 'error',
67
- 'unicorn/no-empty-file': 'error',
68
- 'unicorn/no-for-loop': 'warn',
69
- 'unicorn/no-hex-escape': 'error',
70
- 'unicorn/no-instanceof-array': 'error',
71
- 'unicorn/no-invalid-remove-event-listener': 'error',
72
- 'unicorn/no-nested-ternary': 'error',
73
- 'unicorn/no-new-array': 'error',
74
- 'unicorn/no-new-buffer': 'error',
75
- 'unicorn/no-object-as-default-parameter': 'error',
76
- 'unicorn/no-process-exit': 'off', // this is app-specific
77
- 'unicorn/no-static-only-class': 'error',
78
- 'unicorn/no-thenable': 'error',
79
- 'unicorn/no-this-assignment': 'error',
80
- 'unicorn/no-unreadable-array-destructuring': 'error',
81
- 'unicorn/no-unreadable-iife': 'error',
82
- 'unicorn/no-useless-length-check': 'warn',
83
- 'unicorn/no-useless-promise-resolve-reject': 'warn',
84
- 'unicorn/no-useless-spread': 'warn',
85
- 'unicorn/no-useless-switch-case': 'warn',
86
- 'unicorn/no-zero-fractions': 'error',
87
- 'unicorn/number-literal-case': 'error',
88
- 'unicorn/prefer-add-event-listener': 'warn',
89
- 'unicorn/prefer-array-find': 'warn',
90
- 'unicorn/prefer-array-flat': 'warn',
91
- 'unicorn/prefer-array-flat-map': 'warn',
92
- 'unicorn/prefer-array-index-of': 'warn',
93
- 'unicorn/prefer-array-some': 'warn',
94
- 'unicorn/relative-url-style': 'error',
95
- 'unicorn/require-array-join-separator': 'error',
96
- 'unicorn/require-number-to-fixed-digits-argument': 'error',
97
- 'unicorn/template-indent': 'error',
98
- 'unicorn/throw-new-error': 'error',
99
- }
3
+ "prefer-const": "warn",
4
+ "no-useless-escape": "warn",
5
+ "no-unused-vars": [
6
+ "error",
7
+ {
8
+ ignoreRestSiblings: true,
9
+ args: "all",
10
+ argsIgnorePattern: "^_",
11
+ },
12
+ ],
13
+ "no-shadow": "error",
14
+ "no-empty-function": "off",
15
+ "no-void": "off",
16
+ "promise/no-return-wrap": "error",
17
+ "promise/param-names": "warn",
18
+ // analysis/correctness
19
+ "import/no-unresolved": "error",
20
+ "import/named": "error",
21
+ "import/namespace": "error",
22
+ "import/default": "error",
23
+ "import/export": "error",
24
+ // red flags (thus, warnings)
25
+ "import/no-named-as-default": "off",
26
+ "import/no-named-as-default-member": "off",
27
+ "import/no-duplicates": "off",
28
+ "import/no-extraneous-dependencies": "error",
29
+ "import/extensions": "off",
30
+ "import/prefer-default-export": "off",
31
+ "sonarjs/max-switch-cases": "error",
32
+ "sonarjs/no-all-duplicated-branches": "error",
33
+ "sonarjs/no-collapsible-if": "error",
34
+ "sonarjs/no-collection-size-mischeck": "error",
35
+ "sonarjs/no-duplicated-branches": "error",
36
+ "sonarjs/no-element-overwrite": "error",
37
+ "sonarjs/no-empty-collection": "warn",
38
+ "sonarjs/no-extra-arguments": "warn",
39
+ "sonarjs/no-gratuitous-expressions": "warn",
40
+ "sonarjs/no-identical-conditions": "warn",
41
+ "sonarjs/no-identical-expressions": "warn",
42
+ "sonarjs/no-identical-functions": "warn",
43
+ "sonarjs/no-ignored-return": "warn",
44
+ "sonarjs/no-nested-switch": "error",
45
+ "sonarjs/no-nested-template-literals": "error",
46
+ "sonarjs/no-one-iteration-loop": "error",
47
+ "sonarjs/no-redundant-boolean": "error",
48
+ "sonarjs/no-redundant-jump": "error",
49
+ "sonarjs/no-same-line-conditional": "error",
50
+ "sonarjs/no-small-switch": "error",
51
+ "sonarjs/no-unused-collection": "error",
52
+ "sonarjs/no-use-of-empty-return-value": "error",
53
+ "sonarjs/no-useless-catch": "warn",
54
+ "sonarjs/non-existent-operator": "error",
55
+ "sonarjs/prefer-object-literal": "error",
56
+ "sonarjs/prefer-single-boolean-return": "error",
57
+ "sonarjs/prefer-while": "error",
58
+ "unicorn/consistent-function-scoping": "error",
59
+ "unicorn/empty-brace-spaces": "error",
60
+ "unicorn/error-message": "error",
61
+ "unicorn/escape-case": "error",
62
+ "unicorn/expiring-todo-comments": "error",
63
+ "unicorn/explicit-length-check": "error",
64
+ "unicorn/import-style": "error",
65
+ "unicorn/new-for-builtins": "error",
66
+ "unicorn/no-array-method-this-argument": "error",
67
+ "unicorn/no-array-push-push": "warn",
68
+ "unicorn/no-console-spaces": "error",
69
+ "unicorn/no-document-cookie": "error",
70
+ "unicorn/no-empty-file": "error",
71
+ "unicorn/no-for-loop": "warn",
72
+ "unicorn/no-hex-escape": "error",
73
+ "unicorn/no-instanceof-array": "error",
74
+ "unicorn/no-invalid-remove-event-listener": "error",
75
+ "unicorn/no-nested-ternary": "error",
76
+ "unicorn/no-new-array": "error",
77
+ "unicorn/no-new-buffer": "error",
78
+ "unicorn/no-object-as-default-parameter": "error",
79
+ "unicorn/no-process-exit": "off", // this is app-specific
80
+ "unicorn/no-static-only-class": "error",
81
+ "unicorn/no-thenable": "error",
82
+ "unicorn/no-this-assignment": "error",
83
+ "unicorn/no-unreadable-array-destructuring": "error",
84
+ "unicorn/no-unreadable-iife": "error",
85
+ "unicorn/no-useless-length-check": "warn",
86
+ "unicorn/no-useless-promise-resolve-reject": "warn",
87
+ "unicorn/no-useless-spread": "warn",
88
+ "unicorn/no-useless-switch-case": "warn",
89
+ "unicorn/no-zero-fractions": "error",
90
+ "unicorn/number-literal-case": "error",
91
+ "unicorn/prefer-add-event-listener": "warn",
92
+ "unicorn/prefer-array-find": "warn",
93
+ "unicorn/prefer-array-flat": "warn",
94
+ "unicorn/prefer-array-flat-map": "warn",
95
+ "unicorn/prefer-array-index-of": "warn",
96
+ "unicorn/prefer-array-some": "warn",
97
+ "unicorn/relative-url-style": "error",
98
+ "unicorn/require-array-join-separator": "error",
99
+ "unicorn/require-number-to-fixed-digits-argument": "error",
100
+ "unicorn/template-indent": "error",
101
+ "unicorn/throw-new-error": "error",
102
+ };
100
103
 
101
104
  const nextRules = {
102
- 'react/react-in-jsx-scope': 'off',
103
- '@next/next/no-css-tags': 'warn',
104
- '@next/next/no-sync-scripts': 'warn',
105
- '@next/next/no-html-link-for-pages': 'warn',
106
- '@next/next/no-img-element': 'warn',
107
- '@next/next/no-head-element': 'warn',
108
- '@next/next/no-unwanted-polyfillio': 'warn',
109
- '@next/next/no-page-custom-font': 'warn',
110
- '@next/next/no-title-in-document-head': 'warn',
111
- '@next/next/google-font-display': 'warn',
112
- '@next/next/google-font-preconnect': 'warn',
113
- '@next/next/next-script-for-ga': 'warn',
114
- '@next/next/no-document-import-in-page': 'error',
115
- '@next/next/no-head-import-in-document': 'error',
116
- '@next/next/no-script-component-in-head': 'error',
117
- '@next/next/no-server-import-in-page': 'error',
118
- '@next/next/no-typos': 'warn',
119
- '@next/next/no-duplicate-head': 'error',
120
- '@next/next/inline-script-id': 'error',
121
- '@next/next/no-before-interactive-script-outside-document': 'warn',
122
- '@next/next/no-assign-module-variable': 'error',
123
- }
105
+ "react/react-in-jsx-scope": "off",
106
+ "@next/next/no-css-tags": "warn",
107
+ "@next/next/no-sync-scripts": "warn",
108
+ "@next/next/no-html-link-for-pages": "warn",
109
+ "@next/next/no-img-element": "warn",
110
+ "@next/next/no-head-element": "warn",
111
+ "@next/next/no-unwanted-polyfillio": "warn",
112
+ "@next/next/no-page-custom-font": "warn",
113
+ "@next/next/no-title-in-document-head": "warn",
114
+ "@next/next/google-font-display": "warn",
115
+ "@next/next/google-font-preconnect": "warn",
116
+ "@next/next/next-script-for-ga": "warn",
117
+ "@next/next/no-document-import-in-page": "error",
118
+ "@next/next/no-head-import-in-document": "error",
119
+ "@next/next/no-script-component-in-head": "error",
120
+ "@next/next/no-typos": "warn",
121
+ "@next/next/no-duplicate-head": "error",
122
+ "@next/next/inline-script-id": "error",
123
+ "@next/next/no-before-interactive-script-outside-document": "warn",
124
+ "@next/next/no-assign-module-variable": "error",
125
+ };
124
126
  const tsRules = {
125
- 'import/named': 'off', // https://github.com/import-js/eslint-plugin-import/blob/main/config/typescript.js#L29
126
- 'constructor-super': 'off', // ts(2335) & ts(2377)
127
- 'getter-return': 'off', // ts(2378)
128
- 'no-const-assign': 'off', // ts(2588)
129
- 'no-dupe-args': 'off', // ts(2300)
130
- 'no-dupe-class-members': 'off', // ts(2393) & ts(2300)
131
- 'no-dupe-keys': 'off', // ts(1117)
132
- 'no-func-assign': 'off', // ts(2539)
133
- 'no-import-assign': 'off', // ts(2539) & ts(2540)
134
- 'no-new-symbol': 'off', // ts(2588)
135
- 'no-obj-calls': 'off', // ts(2349)
136
- 'no-redeclare': 'off', // ts(2451)
137
- 'no-setter-return': 'off', // ts(2408)
138
- 'no-this-before-super': 'off', // ts(2376)
139
- 'no-undef': 'off', // ts(2304)
140
- 'no-unreachable': 'off', // ts(7027)
141
- 'no-unsafe-negation': 'off', // ts(2365) & ts(2360) & ts(2358)
142
- 'no-var': 'error', // ts transpiles let/const to var, so no need for vars any more
143
- 'prefer-const': 'error', // ts provides better types with const
144
- 'prefer-rest-params': 'error', // ts provides better types with rest args over arguments
145
- 'prefer-spread': 'error', // ts transpiles spread to apply, so no need for manual apply
146
- 'valid-typeof': 'off', // ts(2367)
147
- '@typescript-eslint/adjacent-overload-signatures': 'error',
148
- '@typescript-eslint/ban-ts-comment': 'error',
149
- '@typescript-eslint/ban-types': 'error',
150
- 'no-array-constructor': 'off',
151
- '@typescript-eslint/no-array-constructor': 'error',
152
- 'no-empty-function': 'off',
153
- '@typescript-eslint/no-empty-function': defaultRules['no-empty-function'],
154
- '@typescript-eslint/no-empty-interface': 'off',
155
- '@typescript-eslint/no-explicit-any': 'off',
156
- '@typescript-eslint/no-extra-non-null-assertion': 'error',
157
- 'no-extra-semi': 'off',
158
- '@typescript-eslint/no-extra-semi': 'error',
159
- '@typescript-eslint/no-inferrable-types': 'error',
160
- 'no-loss-of-precision': 'off',
161
- '@typescript-eslint/no-loss-of-precision': 'error',
162
- '@typescript-eslint/no-misused-new': 'error',
163
- '@typescript-eslint/no-namespace': 'error',
164
- '@typescript-eslint/no-non-null-asserted-optional-chain': 'error',
165
- '@typescript-eslint/no-non-null-assertion': 'warn',
166
- '@typescript-eslint/no-this-alias': 'error',
167
- '@typescript-eslint/no-unnecessary-type-constraint': 'warn',
168
- 'no-unused-vars': 'off',
169
- '@typescript-eslint/no-unused-vars': defaultRules['no-unused-vars'],
170
- 'no-shadow': 'off',
171
- '@typescript-eslint/no-shadow': defaultRules['no-shadow'],
172
- 'default-case': 'off',
173
- '@typescript-eslint/switch-exhaustiveness-check': 'error',
174
- '@typescript-eslint/prefer-as-const': 'error',
175
- '@typescript-eslint/prefer-namespace-keyword': 'error',
176
- '@typescript-eslint/triple-slash-reference': 'error',
177
- '@typescript-eslint/no-for-in-array': 'error',
178
- }
127
+ "import/named": "off", // https://github.com/import-js/eslint-plugin-import/blob/main/config/typescript.js#L29
128
+ "constructor-super": "off", // ts(2335) & ts(2377)
129
+ "getter-return": "off", // ts(2378)
130
+ "no-const-assign": "off", // ts(2588)
131
+ "no-dupe-args": "off", // ts(2300)
132
+ "no-dupe-class-members": "off", // ts(2393) & ts(2300)
133
+ "no-dupe-keys": "off", // ts(1117)
134
+ "no-func-assign": "off", // ts(2539)
135
+ "no-import-assign": "off", // ts(2539) & ts(2540)
136
+ "no-new-symbol": "off", // ts(2588)
137
+ "no-obj-calls": "off", // ts(2349)
138
+ "no-redeclare": "off", // ts(2451)
139
+ "no-setter-return": "off", // ts(2408)
140
+ "no-this-before-super": "off", // ts(2376)
141
+ "no-undef": "off", // ts(2304)
142
+ "no-unreachable": "off", // ts(7027)
143
+ "no-unsafe-negation": "off", // ts(2365) & ts(2360) & ts(2358)
144
+ "no-var": "error", // ts transpiles let/const to var, so no need for vars any more
145
+ "prefer-const": "error", // ts provides better types with const
146
+ "prefer-rest-params": "error", // ts provides better types with rest args over arguments
147
+ "prefer-spread": "error", // ts transpiles spread to apply, so no need for manual apply
148
+ "valid-typeof": "off", // ts(2367)
149
+ "@typescript-eslint/adjacent-overload-signatures": "error",
150
+ "@typescript-eslint/ban-ts-comment": "error",
151
+ "@typescript-eslint/ban-types": "error",
152
+ "no-array-constructor": "off",
153
+ "@typescript-eslint/no-array-constructor": "error",
154
+ "no-empty-function": "off",
155
+ "@typescript-eslint/no-empty-function": defaultRules["no-empty-function"],
156
+ "@typescript-eslint/no-empty-interface": "off",
157
+ "@typescript-eslint/no-explicit-any": "off",
158
+ "@typescript-eslint/no-extra-non-null-assertion": "error",
159
+ "no-extra-semi": "off",
160
+ "@typescript-eslint/no-extra-semi": "error",
161
+ "@typescript-eslint/no-inferrable-types": "error",
162
+ "no-loss-of-precision": "off",
163
+ "@typescript-eslint/no-loss-of-precision": "error",
164
+ "@typescript-eslint/no-misused-new": "error",
165
+ "@typescript-eslint/no-namespace": "error",
166
+ "@typescript-eslint/no-non-null-asserted-optional-chain": "error",
167
+ "@typescript-eslint/no-non-null-assertion": "warn",
168
+ "@typescript-eslint/no-this-alias": "error",
169
+ "@typescript-eslint/no-unnecessary-type-constraint": "warn",
170
+ "no-unused-vars": "off",
171
+ "@typescript-eslint/no-unused-vars": defaultRules["no-unused-vars"],
172
+ "no-shadow": "off",
173
+ "@typescript-eslint/no-shadow": defaultRules["no-shadow"],
174
+ "default-case": "off",
175
+ "@typescript-eslint/switch-exhaustiveness-check": "error",
176
+ "@typescript-eslint/prefer-as-const": "error",
177
+ "@typescript-eslint/prefer-namespace-keyword": "error",
178
+ "@typescript-eslint/triple-slash-reference": "error",
179
+ "@typescript-eslint/no-for-in-array": "error",
180
+ };
179
181
  const reactRules = {
180
- 'react/display-name': 'error',
181
- 'react/jsx-key': 'error',
182
- 'react/jsx-no-comment-textnodes': 'error',
183
- 'react/jsx-no-duplicate-props': 'error',
184
- 'react/jsx-no-target-blank': 'error',
185
- 'react/jsx-no-undef': 'error',
186
- 'react/jsx-uses-react': 'error',
187
- 'react/jsx-uses-vars': 'error',
188
- 'react/no-children-prop': 'error',
189
- 'react/no-danger-with-children': 'error',
190
- 'react/no-deprecated': 'error',
191
- 'react/no-direct-mutation-state': 'error',
192
- 'react/no-find-dom-node': 'error',
193
- 'react/no-is-mounted': 'error',
194
- 'react/no-render-return-value': 'error',
195
- 'react/no-string-refs': 'error',
196
- 'react/no-unescaped-entities': 'error',
197
- 'react/no-unknown-property': 'error',
198
- 'react/no-unsafe': 'off',
199
- 'react/prop-types': 'off',
200
- 'react/react-in-jsx-scope': 'error',
201
- 'react/require-render-return': 'error',
202
- 'react-hooks/rules-of-hooks': 'error',
203
- 'react-hooks/exhaustive-deps': 'warn',
204
- }
182
+ "react/display-name": "error",
183
+ "react/jsx-key": "error",
184
+ "react/jsx-no-comment-textnodes": "error",
185
+ "react/jsx-no-duplicate-props": "error",
186
+ "react/jsx-no-target-blank": "error",
187
+ "react/jsx-no-undef": "error",
188
+ "react/jsx-uses-react": "error",
189
+ "react/jsx-uses-vars": "error",
190
+ "react/no-children-prop": "error",
191
+ "react/no-danger-with-children": "error",
192
+ "react/no-deprecated": "error",
193
+ "react/no-direct-mutation-state": "error",
194
+ "react/no-find-dom-node": "error",
195
+ "react/no-is-mounted": "error",
196
+ "react/no-render-return-value": "error",
197
+ "react/no-string-refs": "error",
198
+ "react/no-unescaped-entities": "error",
199
+ "react/no-unknown-property": "error",
200
+ "react/no-unsafe": "off",
201
+ "react/prop-types": "off",
202
+ "react/react-in-jsx-scope": "error",
203
+ "react/require-render-return": "error",
204
+ "react-hooks/rules-of-hooks": "error",
205
+ "react-hooks/exhaustive-deps": "warn",
206
+ };
205
207
 
206
208
  module.exports = {
207
- nextRules,
208
- tsRules,
209
- reactRules,
210
- defaultRules,
211
- }
209
+ nextRules,
210
+ tsRules,
211
+ reactRules,
212
+ defaultRules,
213
+ };