@mkaradeniz/eslint-config 5.13.1 → 5.13.2
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/base.mjs +12 -0
- package/next.mjs +3 -0
- package/package.json +1 -1
- package/rules/basePluginRules.mjs +72 -0
- package/rules/baseRestrictedSyntax.mjs +69 -0
- package/rules/baseRules.mjs +6 -147
package/base.mjs
CHANGED
|
@@ -16,6 +16,8 @@ import eslintPluginStylistic from '@stylistic/eslint-plugin';
|
|
|
16
16
|
import { baseRules } from './rules/baseRules.mjs';
|
|
17
17
|
import { typescriptRules } from './rules/typescriptRules.mjs';
|
|
18
18
|
|
|
19
|
+
const relaxedMaxLinesRule = ['warn', { max: 400, skipBlankLines: true, skipComments: true }];
|
|
20
|
+
|
|
19
21
|
// Try to include .gitignore if it exists, otherwise continue without it
|
|
20
22
|
let gitignoreConfig = [];
|
|
21
23
|
|
|
@@ -120,8 +122,17 @@ export const baseConfig = [
|
|
|
120
122
|
'*.setup.mjs',
|
|
121
123
|
'*.setup.mts',
|
|
122
124
|
'*.setup.ts',
|
|
125
|
+
'**/*.spec.js',
|
|
126
|
+
'**/*.spec.mjs',
|
|
127
|
+
'**/*.spec.ts',
|
|
128
|
+
'**/*.spec.tsx',
|
|
123
129
|
'**/*.stories.ts',
|
|
124
130
|
'**/*.stories.tsx',
|
|
131
|
+
'**/*.test.js',
|
|
132
|
+
'**/*.test.mjs',
|
|
133
|
+
'**/*.test.ts',
|
|
134
|
+
'**/*.test.tsx',
|
|
135
|
+
'**/*.d.ts',
|
|
125
136
|
'*Config.mjs',
|
|
126
137
|
'*Config.ts',
|
|
127
138
|
'*config.js',
|
|
@@ -131,6 +142,7 @@ export const baseConfig = [
|
|
|
131
142
|
],
|
|
132
143
|
rules: {
|
|
133
144
|
'import-x/no-default-export': 'off',
|
|
145
|
+
'max-lines': relaxedMaxLinesRule,
|
|
134
146
|
},
|
|
135
147
|
},
|
|
136
148
|
{
|
package/next.mjs
CHANGED
|
@@ -4,6 +4,8 @@ import { reactConfig } from './react.mjs';
|
|
|
4
4
|
import { nextRules } from './rules/nextRules.mjs';
|
|
5
5
|
import { reactRules } from './rules/reactRules.mjs';
|
|
6
6
|
|
|
7
|
+
const relaxedNextEntrypointMaxLinesRule = ['warn', { max: 400, skipBlankLines: true, skipComments: true }];
|
|
8
|
+
|
|
7
9
|
export const nextConfig = [
|
|
8
10
|
...reactConfig,
|
|
9
11
|
{
|
|
@@ -40,6 +42,7 @@ export const nextConfig = [
|
|
|
40
42
|
],
|
|
41
43
|
rules: {
|
|
42
44
|
'import-x/no-default-export': ['off'],
|
|
45
|
+
'max-lines': relaxedNextEntrypointMaxLinesRule,
|
|
43
46
|
},
|
|
44
47
|
},
|
|
45
48
|
{
|
package/package.json
CHANGED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const basePluginRules = {
|
|
2
|
+
'@eslint-community/eslint-comments/require-description': ['warn'],
|
|
3
|
+
'import-x/export': ['warn'],
|
|
4
|
+
'import-x/first': ['warn'],
|
|
5
|
+
'import-x/newline-after-import': ['warn'],
|
|
6
|
+
'import-x/no-absolute-path': ['warn'],
|
|
7
|
+
'import-x/no-anonymous-default-export': ['warn'],
|
|
8
|
+
'import-x/no-cycle': ['warn'],
|
|
9
|
+
'import-x/no-default-export': ['warn'],
|
|
10
|
+
'import-x/no-duplicates': ['warn'],
|
|
11
|
+
'import-x/no-extraneous-dependencies': ['warn', { includeTypes: true }],
|
|
12
|
+
'import-x/no-mutable-exports': ['warn'],
|
|
13
|
+
'import-x/no-named-as-default': ['warn'],
|
|
14
|
+
'import-x/no-named-as-default-member': ['warn'],
|
|
15
|
+
'import-x/no-relative-packages': ['warn'],
|
|
16
|
+
'import-x/no-self-import': ['warn'],
|
|
17
|
+
'import-x/no-useless-path-segments': ['warn'],
|
|
18
|
+
'jsdoc/require-description': ['warn'],
|
|
19
|
+
'jsdoc/require-jsdoc': [
|
|
20
|
+
'warn',
|
|
21
|
+
{
|
|
22
|
+
contexts: [
|
|
23
|
+
'ExportNamedDeclaration > VariableDeclaration > VariableDeclarator > ArrowFunctionExpression',
|
|
24
|
+
'ExportNamedDeclaration > TSTypeAliasDeclaration > TSTypeLiteral > TSPropertySignature',
|
|
25
|
+
'ExportNamedDeclaration > TSInterfaceDeclaration > TSInterfaceBody > TSPropertySignature',
|
|
26
|
+
],
|
|
27
|
+
enableFixer: false,
|
|
28
|
+
require: {
|
|
29
|
+
ArrowFunctionExpression: false,
|
|
30
|
+
ClassDeclaration: false,
|
|
31
|
+
ClassExpression: false,
|
|
32
|
+
FunctionDeclaration: false,
|
|
33
|
+
FunctionExpression: false,
|
|
34
|
+
MethodDefinition: false,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
'perfectionist/sort-enums': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
39
|
+
'perfectionist/sort-interfaces': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
40
|
+
'perfectionist/sort-intersection-types': ['warn', { groups: ['unknown', 'nullish'], order: 'asc', type: 'alphabetical' }],
|
|
41
|
+
'perfectionist/sort-object-types': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
42
|
+
'perfectionist/sort-objects': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
43
|
+
'perfectionist/sort-switch-case': ['warn', { order: 'asc', type: 'alphabetical' }],
|
|
44
|
+
'perfectionist/sort-union-types': ['warn', { groups: ['unknown', 'nullish'], order: 'asc', type: 'alphabetical' }],
|
|
45
|
+
'prefer-arrow-functions/prefer-arrow-functions': [
|
|
46
|
+
'warn',
|
|
47
|
+
{
|
|
48
|
+
allowNamedFunctions: false,
|
|
49
|
+
classPropertiesAllowed: false,
|
|
50
|
+
disallowPrototype: false,
|
|
51
|
+
returnStyle: 'unchanged',
|
|
52
|
+
singleReturnOnly: false,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
'unicorn/better-regex': ['warn'],
|
|
56
|
+
'unicorn/catch-error-name': ['warn', { name: 'err' }],
|
|
57
|
+
'unicorn/error-message': ['warn'],
|
|
58
|
+
'unicorn/explicit-length-check': ['warn'],
|
|
59
|
+
'unicorn/filename-case': [
|
|
60
|
+
'warn',
|
|
61
|
+
{ cases: { camelCase: true, pascalCase: true }, ignore: ['next-env.d.ts'], multipleFileExtensions: false },
|
|
62
|
+
],
|
|
63
|
+
'unicorn/number-literal-case': ['warn'],
|
|
64
|
+
'unicorn/prefer-array-flat-map': ['warn'],
|
|
65
|
+
'unicorn/prefer-array-some': ['warn'],
|
|
66
|
+
'unicorn/prefer-at': ['warn'],
|
|
67
|
+
'unicorn/prefer-includes': ['warn'],
|
|
68
|
+
'unicorn/prefer-node-protocol': ['warn'],
|
|
69
|
+
'unicorn/prefer-string-replace-all': ['warn'],
|
|
70
|
+
'unused-imports/no-unused-imports': ['warn'],
|
|
71
|
+
'unused-imports/no-unused-vars': ['warn', { argsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_' }],
|
|
72
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export const baseRestrictedSyntax = [
|
|
2
|
+
'warn',
|
|
3
|
+
{
|
|
4
|
+
message: 'Switch cases without blocks are disallowed.',
|
|
5
|
+
selector: 'SwitchCase > *.consequent[type!="BlockStatement"]',
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
message: 'Use .toSorted() instead of .sort() to avoid mutating the original array.',
|
|
9
|
+
selector: 'CallExpression[callee.property.name="sort"]',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
message: 'Use .toReversed() instead of .reverse() to avoid mutating the original array.',
|
|
13
|
+
selector: 'CallExpression[callee.property.name="reverse"]',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
message:
|
|
17
|
+
'Use isNotNullOrUndefined() instead of !== null. If this is a typeof narrowing (typeof x === "object" && x !== null), disable this rule with a comment.',
|
|
18
|
+
selector: 'BinaryExpression[operator="!=="][right.type="Literal"][right.raw="null"]',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
message:
|
|
22
|
+
'Use isNotNullOrUndefined() instead of !== undefined. If there is a semantic difference (null clears a field), disable this rule with a comment.',
|
|
23
|
+
selector: 'BinaryExpression[operator="!=="][right.type="Identifier"][right.name="undefined"]',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
message: 'Use !isNotNullOrUndefined() instead of === null.',
|
|
27
|
+
selector: 'BinaryExpression[operator="==="][right.type="Literal"][right.raw="null"]',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
message: 'Use !isNotNullOrUndefined() instead of === undefined.',
|
|
31
|
+
selector: 'BinaryExpression[operator="==="][right.type="Identifier"][right.name="undefined"]',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
message:
|
|
35
|
+
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
36
|
+
selector: 'BinaryExpression[operator="==="][right.type="Literal"][right.raw="true"]',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
message:
|
|
40
|
+
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
41
|
+
selector: 'BinaryExpression[operator="==="][right.type="Literal"][right.raw="false"]',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
message:
|
|
45
|
+
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
46
|
+
selector: 'BinaryExpression[operator="!=="][right.type="Literal"][right.raw="true"]',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
message:
|
|
50
|
+
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
51
|
+
selector: 'BinaryExpression[operator="!=="][right.type="Literal"][right.raw="false"]',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
message: 'Exported functions with >1 parameter must use a single object parameter.',
|
|
55
|
+
selector: 'ExportNamedDeclaration > VariableDeclaration > VariableDeclarator > ArrowFunctionExpression[params.length>1]',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
message: 'No IIFEs - create a utils file instead.',
|
|
59
|
+
selector: 'CallExpression[callee.type="ArrowFunctionExpression"]',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
message: 'No IIFEs - create a utils file instead.',
|
|
63
|
+
selector: 'CallExpression[callee.type="FunctionExpression"]',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
message: 'Use envConfigClient or envConfigServer instead of process.env.',
|
|
67
|
+
selector: 'MemberExpression[object.name="process"][property.name="env"]',
|
|
68
|
+
},
|
|
69
|
+
];
|
package/rules/baseRules.mjs
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { basePluginRules } from './basePluginRules.mjs';
|
|
2
|
+
import { baseRestrictedSyntax } from './baseRestrictedSyntax.mjs';
|
|
3
|
+
|
|
1
4
|
export const baseRules = {
|
|
2
5
|
rules: {
|
|
3
6
|
'array-callback-return': ['warn', { allowImplicit: true, allowVoid: false, checkForEach: false }],
|
|
@@ -66,75 +69,7 @@ export const baseRules = {
|
|
|
66
69
|
'no-proto': ['warn'],
|
|
67
70
|
'no-prototype-builtins': ['warn'],
|
|
68
71
|
'no-regex-spaces': ['warn'],
|
|
69
|
-
'no-restricted-syntax':
|
|
70
|
-
'warn',
|
|
71
|
-
{
|
|
72
|
-
message: 'Switch cases without blocks are disallowed.',
|
|
73
|
-
selector: 'SwitchCase > *.consequent[type!="BlockStatement"]',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
message: 'Use .toSorted() instead of .sort() to avoid mutating the original array.',
|
|
77
|
-
selector: 'CallExpression[callee.property.name="sort"]',
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
message: 'Use .toReversed() instead of .reverse() to avoid mutating the original array.',
|
|
81
|
-
selector: 'CallExpression[callee.property.name="reverse"]',
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
message:
|
|
85
|
-
'Use isNotNullOrUndefined() instead of !== null. If this is a typeof narrowing (typeof x === "object" && x !== null), disable this rule with a comment.',
|
|
86
|
-
selector: 'BinaryExpression[operator="!=="][right.type="Literal"][right.raw="null"]',
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
message:
|
|
90
|
-
'Use isNotNullOrUndefined() instead of !== undefined. If there is a semantic difference (null clears a field), disable this rule with a comment.',
|
|
91
|
-
selector: 'BinaryExpression[operator="!=="][right.type="Identifier"][right.name="undefined"]',
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
message: 'Use !isNotNullOrUndefined() instead of === null.',
|
|
95
|
-
selector: 'BinaryExpression[operator="==="][right.type="Literal"][right.raw="null"]',
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
message: 'Use !isNotNullOrUndefined() instead of === undefined.',
|
|
99
|
-
selector: 'BinaryExpression[operator="==="][right.type="Identifier"][right.name="undefined"]',
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
message:
|
|
103
|
-
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
104
|
-
selector: 'BinaryExpression[operator="==="][right.type="Literal"][right.raw="true"]',
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
message:
|
|
108
|
-
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
109
|
-
selector: 'BinaryExpression[operator="==="][right.type="Literal"][right.raw="false"]',
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
message:
|
|
113
|
-
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
114
|
-
selector: 'BinaryExpression[operator="!=="][right.type="Literal"][right.raw="true"]',
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
message:
|
|
118
|
-
"Don't compare to true/false directly. For optional booleans use isNotNullOrUndefined(x) && x or isNotNullOrUndefined(x) && !x.",
|
|
119
|
-
selector: 'BinaryExpression[operator="!=="][right.type="Literal"][right.raw="false"]',
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
message: 'Exported functions with >1 parameter must use a single object parameter.',
|
|
123
|
-
selector: 'ExportNamedDeclaration > VariableDeclaration > VariableDeclarator > ArrowFunctionExpression[params.length>1]',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
message: 'No IIFEs — create a utils file instead.',
|
|
127
|
-
selector: 'CallExpression[callee.type="ArrowFunctionExpression"]',
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
message: 'No IIFEs — create a utils file instead.',
|
|
131
|
-
selector: 'CallExpression[callee.type="FunctionExpression"]',
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
message: 'Use envConfigClient or envConfigServer instead of process.env.',
|
|
135
|
-
selector: 'MemberExpression[object.name="process"][property.name="env"]',
|
|
136
|
-
},
|
|
137
|
-
],
|
|
72
|
+
'no-restricted-syntax': baseRestrictedSyntax,
|
|
138
73
|
'no-return-assign': ['warn'],
|
|
139
74
|
'no-script-url': ['warn'],
|
|
140
75
|
'no-self-assign': ['warn'],
|
|
@@ -178,83 +113,7 @@ export const baseRules = {
|
|
|
178
113
|
'use-isnan': ['warn'],
|
|
179
114
|
'valid-typeof': ['warn'],
|
|
180
115
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
'@eslint-community/eslint-comments/require-description': ['warn'],
|
|
184
|
-
// import
|
|
185
|
-
'import-x/export': ['warn'],
|
|
186
|
-
'import-x/first': ['warn'],
|
|
187
|
-
'import-x/newline-after-import': ['warn'],
|
|
188
|
-
'import-x/no-absolute-path': ['warn'],
|
|
189
|
-
'import-x/no-anonymous-default-export': ['warn'],
|
|
190
|
-
'import-x/no-cycle': ['warn'],
|
|
191
|
-
'import-x/no-default-export': ['warn'],
|
|
192
|
-
'import-x/no-duplicates': ['warn'],
|
|
193
|
-
'import-x/no-extraneous-dependencies': ['warn', { includeTypes: true }],
|
|
194
|
-
'import-x/no-mutable-exports': ['warn'],
|
|
195
|
-
'import-x/no-named-as-default': ['warn'],
|
|
196
|
-
'import-x/no-named-as-default-member': ['warn'],
|
|
197
|
-
'import-x/no-relative-packages': ['warn'],
|
|
198
|
-
'import-x/no-self-import': ['warn'],
|
|
199
|
-
'import-x/no-useless-path-segments': ['warn'],
|
|
200
|
-
// jsdoc
|
|
201
|
-
'jsdoc/require-description': ['warn'],
|
|
202
|
-
'jsdoc/require-jsdoc': [
|
|
203
|
-
'warn',
|
|
204
|
-
{
|
|
205
|
-
contexts: [
|
|
206
|
-
'ExportNamedDeclaration > VariableDeclaration > VariableDeclarator > ArrowFunctionExpression',
|
|
207
|
-
'ExportNamedDeclaration > TSTypeAliasDeclaration > TSTypeLiteral > TSPropertySignature',
|
|
208
|
-
'ExportNamedDeclaration > TSInterfaceDeclaration > TSInterfaceBody > TSPropertySignature',
|
|
209
|
-
],
|
|
210
|
-
enableFixer: false,
|
|
211
|
-
require: {
|
|
212
|
-
ArrowFunctionExpression: false,
|
|
213
|
-
ClassDeclaration: false,
|
|
214
|
-
ClassExpression: false,
|
|
215
|
-
FunctionDeclaration: false,
|
|
216
|
-
FunctionExpression: false,
|
|
217
|
-
MethodDefinition: false,
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
],
|
|
221
|
-
// perfectionist
|
|
222
|
-
'perfectionist/sort-enums': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
223
|
-
'perfectionist/sort-interfaces': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
224
|
-
'perfectionist/sort-intersection-types': ['warn', { groups: ['unknown', 'nullish'], order: 'asc', type: 'alphabetical' }],
|
|
225
|
-
'perfectionist/sort-object-types': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
226
|
-
'perfectionist/sort-objects': ['warn', { ignoreCase: false, order: 'asc', partitionByNewLine: true, type: 'alphabetical' }],
|
|
227
|
-
'perfectionist/sort-switch-case': ['warn', { order: 'asc', type: 'alphabetical' }],
|
|
228
|
-
'perfectionist/sort-union-types': ['warn', { groups: ['unknown', 'nullish'], order: 'asc', type: 'alphabetical' }],
|
|
229
|
-
// prefer-arrow-functions
|
|
230
|
-
'prefer-arrow-functions/prefer-arrow-functions': [
|
|
231
|
-
'warn',
|
|
232
|
-
{
|
|
233
|
-
allowNamedFunctions: false,
|
|
234
|
-
classPropertiesAllowed: false,
|
|
235
|
-
disallowPrototype: false,
|
|
236
|
-
returnStyle: 'unchanged',
|
|
237
|
-
singleReturnOnly: false,
|
|
238
|
-
},
|
|
239
|
-
],
|
|
240
|
-
// unicorn
|
|
241
|
-
'unicorn/better-regex': ['warn'],
|
|
242
|
-
'unicorn/catch-error-name': ['warn', { name: 'err' }],
|
|
243
|
-
'unicorn/error-message': ['warn'],
|
|
244
|
-
'unicorn/explicit-length-check': ['warn'],
|
|
245
|
-
'unicorn/filename-case': [
|
|
246
|
-
'warn',
|
|
247
|
-
{ cases: { camelCase: true, pascalCase: true }, ignore: ['next-env.d.ts'], multipleFileExtensions: false },
|
|
248
|
-
],
|
|
249
|
-
'unicorn/number-literal-case': ['warn'],
|
|
250
|
-
'unicorn/prefer-array-flat-map': ['warn'],
|
|
251
|
-
'unicorn/prefer-array-some': ['warn'],
|
|
252
|
-
'unicorn/prefer-at': ['warn'],
|
|
253
|
-
'unicorn/prefer-includes': ['warn'],
|
|
254
|
-
'unicorn/prefer-node-protocol': ['warn'],
|
|
255
|
-
'unicorn/prefer-string-replace-all': ['warn'],
|
|
256
|
-
// unused-imports
|
|
257
|
-
'unused-imports/no-unused-imports': ['warn'],
|
|
258
|
-
'unused-imports/no-unused-vars': ['warn', { argsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_' }],
|
|
116
|
+
'max-lines': ['warn', { max: 200, skipBlankLines: true, skipComments: true }],
|
|
117
|
+
...basePluginRules,
|
|
259
118
|
},
|
|
260
119
|
};
|