@sequencemedia/eslint-config-typescript 0.0.5 → 0.1.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.
@@ -0,0 +1,14 @@
1
+ import {
2
+ expect
3
+ } from 'chai'
4
+
5
+ import {
6
+ recommended,
7
+ typescript
8
+ } from '@sequencemedia/eslint-config-typescript/configs'
9
+
10
+ describe('@sequencemedia/eslint-config-typescript/configs', () => {
11
+ describe('`recommended`', () => it('is an object', () => expect(recommended).to.be.an('object')))
12
+
13
+ describe('`typescript`', () => it('is an object', () => expect(typescript).to.be.an('object')))
14
+ })
@@ -0,0 +1,9 @@
1
+ import {
2
+ expect
3
+ } from 'chai'
4
+
5
+ import recommended from '@sequencemedia/eslint-config-typescript/configs/recommended'
6
+
7
+ describe('@sequencemedia/eslint-config-typescript/configs/recommended', () => {
8
+ describe('`recommended`', () => it('is an object', () => expect(recommended).to.be.an('object')))
9
+ })
@@ -0,0 +1,9 @@
1
+ import {
2
+ expect
3
+ } from 'chai'
4
+
5
+ import typescript from '@sequencemedia/eslint-config-typescript/configs/typescript'
6
+
7
+ describe('@sequencemedia/eslint-config-typescript/configs/typescript', () => {
8
+ describe('`typescript`', () => it('is an object', () => expect(typescript).to.be.an('object')))
9
+ })
@@ -0,0 +1,75 @@
1
+ import {
2
+ expect
3
+ } from 'chai'
4
+
5
+ import RECOMMENDED from '@sequencemedia/eslint-config-typescript/configs/recommended'
6
+
7
+ import merge from '@sequencemedia/eslint-config-typescript/merge/recommended'
8
+
9
+ describe('@sequencemedia/eslint-config-typescript/merge/recommended', () => {
10
+ describe('`merge`', () => it('is a function', () => expect(merge).to.be.a('function')))
11
+
12
+ describe('`merge()`', () => {
13
+ describe('Always', () => it('returns an object', () => expect(merge()).to.be.an('object')))
14
+
15
+ describe('Merges', () => {
16
+ it('returns an object', () => {
17
+ const MOCK_FILES = [
18
+ 'MOCK FILES'
19
+ ]
20
+ const MOCK_IGNORES = [
21
+ 'MOCK IGNORES'
22
+ ]
23
+ const MOCK_LANGUAGE_OPTIONS = {
24
+ mockOption: 'MOCK LANGUAGE OPTIONS'
25
+ }
26
+ const MOCK_LINTER_OPTIONS = {
27
+ mockOptions: 'MOCK LINTER OPTIONS'
28
+ }
29
+ const MOCK_RULES = {
30
+ mockOption: 'MOCK RULES'
31
+ }
32
+ const MOCK_SETTINGS = {
33
+ mockOption: 'MOCK SETTINGS'
34
+ }
35
+
36
+ const {
37
+ languageOptions: RECOMMENDED_LANGUAGE_OPTIONS,
38
+ linterOptions: RECOMMENDED_LINTER_OPTIONS,
39
+ rules: RECOMMENDED_RULES
40
+ } = RECOMMENDED
41
+
42
+ return (
43
+ expect(
44
+ merge({
45
+ files: MOCK_FILES,
46
+ ignores: MOCK_IGNORES,
47
+ languageOptions: MOCK_LANGUAGE_OPTIONS,
48
+ linterOptions: MOCK_LINTER_OPTIONS,
49
+ rules: MOCK_RULES,
50
+ settings: MOCK_SETTINGS
51
+ })
52
+ )
53
+ .to.eql({
54
+ ...RECOMMENDED,
55
+ files: MOCK_FILES,
56
+ ignores: MOCK_IGNORES,
57
+ languageOptions: {
58
+ ...RECOMMENDED_LANGUAGE_OPTIONS,
59
+ ...MOCK_LANGUAGE_OPTIONS
60
+ },
61
+ linterOptions: {
62
+ ...RECOMMENDED_LINTER_OPTIONS,
63
+ ...MOCK_LINTER_OPTIONS
64
+ },
65
+ rules: {
66
+ ...RECOMMENDED_RULES,
67
+ ...MOCK_RULES
68
+ },
69
+ settings: MOCK_SETTINGS
70
+ })
71
+ )
72
+ })
73
+ })
74
+ })
75
+ })
@@ -2,11 +2,7 @@ import {
2
2
  expect
3
3
  } from 'chai'
4
4
 
5
- import {
6
- parser
7
- } from 'typescript-eslint'
8
-
9
- import TYPESCRIPT from '@sequencemedia/eslint-config-typescript/config/typescript'
5
+ import TYPESCRIPT from '@sequencemedia/eslint-config-typescript/configs/typescript'
10
6
 
11
7
  import merge from '@sequencemedia/eslint-config-typescript/merge/typescript'
12
8
 
@@ -25,16 +21,17 @@ describe('@sequencemedia/eslint-config-typescript/merge/typescript', () => {
25
21
  'MOCK IGNORES'
26
22
  ]
27
23
  const MOCK_LANGUAGE_OPTIONS = {
28
- parser,
29
- parserOptions: {
30
- projectService: true
31
- }
24
+ mockOption: 'MOCK LANGUAGE OPTIONS'
32
25
  }
33
26
  const MOCK_LINTER_OPTIONS = {
34
- reportUnusedDisableDirectives: 'error'
27
+ mockOptions: 'MOCK LINTER OPTIONS'
28
+ }
29
+ const MOCK_RULES = {
30
+ mockOption: 'MOCK RULES'
31
+ }
32
+ const MOCK_SETTINGS = {
33
+ mockOption: 'MOCK SETTINGS'
35
34
  }
36
- const MOCK_RULES = { mockOption: 'MOCK RULES' }
37
- const MOCK_SETTINGS = { mockOption: 'MOCK SETTINGS' }
38
35
 
39
36
  const {
40
37
  rules: TYPESCRIPT_RULES
@@ -6,7 +6,7 @@ import {
6
6
  parser
7
7
  } from 'typescript-eslint'
8
8
 
9
- import TYPESCRIPT from '@sequencemedia/eslint-config-typescript/config/typescript'
9
+ import TYPESCRIPT from '@sequencemedia/eslint-config-typescript/configs/typescript'
10
10
 
11
11
  import merge from '@sequencemedia/eslint-config-typescript/merge'
12
12
 
@@ -25,18 +25,21 @@ describe('@sequencemedia/eslint-config-typescript/merge', () => {
25
25
  'MOCK IGNORES'
26
26
  ]
27
27
  const MOCK_LANGUAGE_OPTIONS = {
28
- parser,
29
- parserOptions: {
30
- projectService: true
31
- }
28
+ mockOption: 'MOCK LANGUAGE OPTIONS'
32
29
  }
33
30
  const MOCK_LINTER_OPTIONS = {
34
- reportUnusedDisableDirectives: 'error'
31
+ mockOption: 'MOCK LINTER OPTIONS'
32
+ }
33
+ const MOCK_RULES = {
34
+ mockOption: 'MOCK RULES'
35
+ }
36
+ const MOCK_SETTINGS = {
37
+ mockOption: 'MOCK SETTINGS'
35
38
  }
36
- const MOCK_RULES = { mockOption: 'MOCK RULES' }
37
- const MOCK_SETTINGS = { mockOption: 'MOCK SETTINGS' }
38
39
 
39
40
  const {
41
+ languageOptions: TYPESCRIPT_LANGUAGE_OPTIONS,
42
+ linterOptions: TYPESCRIPT_LINTER_OPTIONS,
40
43
  rules: TYPESCRIPT_RULES
41
44
  } = TYPESCRIPT
42
45
 
@@ -54,28 +57,38 @@ describe('@sequencemedia/eslint-config-typescript/merge', () => {
54
57
  .to.eql([
55
58
  {
56
59
  name: '@sequencemedia/eslint-config-typescript',
57
- files: MOCK_FILES,
58
- ignores: MOCK_IGNORES,
59
60
  languageOptions: {
60
- ecmaVersion: 'latest',
61
- ...MOCK_LANGUAGE_OPTIONS
61
+ parser,
62
+ parserOptions: {
63
+ projectService: true
64
+ }
62
65
  },
63
- linterOptions: MOCK_LINTER_OPTIONS,
64
- rules: MOCK_RULES,
65
- settings: MOCK_SETTINGS
66
+ linterOptions: {
67
+ reportUnusedDisableDirectives: 'error'
68
+ },
69
+ files: [
70
+ '**/*.{ts,mts,cts}'
71
+ ]
66
72
  },
67
73
  {
68
74
  ...TYPESCRIPT,
69
75
  files: MOCK_FILES,
70
76
  ignores: MOCK_IGNORES,
71
- languageOptions: MOCK_LANGUAGE_OPTIONS,
72
- linterOptions: MOCK_LINTER_OPTIONS,
77
+ languageOptions: {
78
+ ...TYPESCRIPT_LANGUAGE_OPTIONS,
79
+ ...MOCK_LANGUAGE_OPTIONS
80
+ },
81
+ linterOptions: {
82
+ ...TYPESCRIPT_LINTER_OPTIONS,
83
+ ...MOCK_LINTER_OPTIONS
84
+ },
73
85
  rules: {
74
86
  ...TYPESCRIPT_RULES,
75
87
  ...MOCK_RULES
76
88
  },
77
89
  settings: MOCK_SETTINGS
78
- }])
90
+ }
91
+ ])
79
92
  )
80
93
  })
81
94
  })
package/common/merge.mjs DELETED
@@ -1,82 +0,0 @@
1
- function hasLanguageOptionsParser ({ languageOptions: { parser = null } = {} }) {
2
- return Boolean(parser)
3
- }
4
-
5
- function getLanguageOptionsParser ({ languageOptions: { parser = null } = {} }) {
6
- return parser
7
- }
8
-
9
- function removeParserByEntriesKey ([key]) {
10
- return key !== 'parser'
11
- }
12
-
13
- export function getLanguageOptionsWithoutParser ({ languageOptions = {} }) {
14
- const entries = Object.entries(languageOptions)
15
-
16
- return (
17
- Object.fromEntries(
18
- entries.filter(removeParserByEntriesKey)
19
- )
20
- )
21
- }
22
-
23
- export function getLanguageOptions ({ languageOptions = {} }) {
24
- return languageOptions
25
- }
26
-
27
- export function getLinterOptions ({ linterOptions = {} }) {
28
- return linterOptions
29
- }
30
-
31
- export function getProcessor ({ processor = {} }) {
32
- return processor
33
- }
34
-
35
- export function getRules ({ rules = {} }) {
36
- return rules
37
- }
38
-
39
- export function getSettings ({ settings = {} }) {
40
- return settings
41
- }
42
-
43
- export function mergeLanguageOptions (alpha = {}, omega = {}) {
44
- return (
45
- Object
46
- .assign(
47
- hasLanguageOptionsParser(alpha) ? { parser: getLanguageOptionsParser(alpha) } : {},
48
- structuredClone(getLanguageOptionsWithoutParser(alpha)),
49
- getLanguageOptions(omega)
50
- )
51
- )
52
- }
53
-
54
- export function mergeLinterOptions (alpha = {}, omega = {}) {
55
- return (
56
- Object
57
- .assign(
58
- structuredClone(getLinterOptions(alpha)),
59
- getLinterOptions(omega)
60
- )
61
- )
62
- }
63
-
64
- export function mergeRules (alpha = {}, omega = {}) {
65
- return (
66
- Object
67
- .assign(
68
- structuredClone(getRules(alpha)),
69
- getRules(omega)
70
- )
71
- )
72
- }
73
-
74
- export function mergeSettings (alpha = {}, omega = {}) {
75
- return (
76
- Object
77
- .assign(
78
- structuredClone(getSettings(alpha)),
79
- getSettings(omega)
80
- )
81
- )
82
- }
@@ -1,350 +0,0 @@
1
- import {
2
- parser,
3
- plugin as t
4
- } from 'typescript-eslint'
5
- import c from 'eslint-plugin-eslint-comments'
6
- import n from 'eslint-plugin-n'
7
- import p from 'eslint-plugin-promise'
8
- import i from 'eslint-plugin-import'
9
-
10
- export default {
11
- name: '@sequencemedia/eslint-config-typescript/typescript',
12
- linterOptions: {
13
- reportUnusedDisableDirectives: 'error'
14
- },
15
- languageOptions: {
16
- parser,
17
- parserOptions: {
18
- projectService: true
19
- }
20
- },
21
- plugins: {
22
- '@typescript-eslint': t,
23
- 'eslint-comments': c,
24
- n,
25
- promise: p,
26
- import: i
27
- },
28
- rules: {
29
- /**
30
- * `@typescript-eslint`
31
- */
32
- '@typescript-eslint/adjacent-overload-signatures': ['error'],
33
- '@typescript-eslint/array-type': ['error', { default: 'array-simple' }],
34
- '@typescript-eslint/await-thenable': ['error'],
35
- '@typescript-eslint/ban-ts-comment': [
36
- 'error',
37
- {
38
- 'ts-expect-error': 'allow-with-description',
39
- 'ts-ignore': true,
40
- 'ts-nocheck': true,
41
- 'ts-check': false,
42
- minimumDescriptionLength: 3
43
- }
44
- ],
45
- '@typescript-eslint/ban-tslint-comment': ['error'],
46
- '@typescript-eslint/class-literal-property-style': ['error', 'fields'],
47
- '@typescript-eslint/class-methods-use-this': [
48
- 'error',
49
- {
50
- exceptMethods: [],
51
- enforceForClassFields: true,
52
- ignoreOverrideMethods: false,
53
- ignoreClassesThatImplementAnInterface: false
54
- }
55
- ],
56
- '@typescript-eslint/consistent-generic-constructors': ['error', 'constructor'],
57
- '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'],
58
- '@typescript-eslint/consistent-type-assertions': [
59
- 'error',
60
- {
61
- assertionStyle: 'as',
62
- objectLiteralTypeAssertions: 'never'
63
- }
64
- ],
65
- '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
66
- '@typescript-eslint/consistent-type-exports': [
67
- 'error',
68
- {
69
- fixMixedExportsWithInlineTypeSpecifier: true
70
- }
71
- ],
72
- '@typescript-eslint/consistent-type-imports': [
73
- 'error',
74
- {
75
- prefer: 'type-imports',
76
- disallowTypeAnnotations: true,
77
- fixStyle: 'inline-type-imports'
78
- }
79
- ],
80
- '@typescript-eslint/dot-notation': [
81
- 'error',
82
- {
83
- allowIndexSignaturePropertyAccess: false,
84
- allowKeywords: true,
85
- allowPattern: '',
86
- allowPrivateClassPropertyAccess: false,
87
- allowProtectedClassPropertyAccess: false
88
- }
89
- ],
90
- '@typescript-eslint/explicit-function-return-type': [
91
- 'error',
92
- {
93
- allowExpressions: true,
94
- allowHigherOrderFunctions: true,
95
- allowTypedFunctionExpressions: true,
96
- allowDirectConstAssertionInArrowFunctions: true
97
- }
98
- ],
99
- '@typescript-eslint/init-declarations': ['error', 'always'],
100
- '@typescript-eslint/max-params': ['error', { max: 4 }],
101
- '@typescript-eslint/method-signature-style': ['error'],
102
- '@typescript-eslint/naming-convention': [
103
- 'error',
104
- {
105
- selector: 'variableLike',
106
- leadingUnderscore: 'allow',
107
- trailingUnderscore: 'allow',
108
- format: ['camelCase', 'PascalCase', 'UPPER_CASE']
109
- }
110
- ],
111
- '@typescript-eslint/no-array-constructor': ['error'],
112
- '@typescript-eslint/no-array-delete': ['error'],
113
- '@typescript-eslint/no-base-to-string': ['error'],
114
- '@typescript-eslint/no-confusing-non-null-assertion': ['error'],
115
- '@typescript-eslint/no-confusing-void-expression': [
116
- 'error',
117
- { ignoreArrowShorthand: false, ignoreVoidOperator: false }
118
- ],
119
- '@typescript-eslint/no-deprecated': ['warn'],
120
- '@typescript-eslint/no-dupe-class-members': ['error'],
121
- '@typescript-eslint/no-duplicate-enum-values': ['error'],
122
- '@typescript-eslint/no-duplicate-type-constituents': [
123
- 'error',
124
- { ignoreIntersections: false, ignoreUnions: false }
125
- ],
126
- '@typescript-eslint/no-dynamic-delete': ['error'],
127
- '@typescript-eslint/no-empty-function': [
128
- 'error',
129
- {
130
- allow: []
131
- }
132
- ],
133
- '@typescript-eslint/no-empty-object-type': [
134
- 'error',
135
- { allowInterfaces: 'with-single-extends', allowObjectTypes: 'never' }
136
- ],
137
- '@typescript-eslint/no-explicit-any': [
138
- 'error',
139
- { fixToUnknown: false, ignoreRestArgs: false }
140
- ],
141
- '@typescript-eslint/no-extra-non-null-assertion': ['error'],
142
- '@typescript-eslint/no-extraneous-class': ['error', { allowWithDecorator: true }],
143
- '@typescript-eslint/no-floating-promises': ['error'],
144
- '@typescript-eslint/no-for-in-array': ['error'],
145
- '@typescript-eslint/no-implied-eval': ['error'],
146
- '@typescript-eslint/no-import-type-side-effects': ['error'],
147
- '@typescript-eslint/no-inferrable-types': [
148
- 'error',
149
- { ignoreParameters: false, ignoreProperties: false }
150
- ],
151
- '@typescript-eslint/no-invalid-void-type': ['error'],
152
- '@typescript-eslint/no-loop-func': ['error'],
153
- '@typescript-eslint/no-magic-numbers': [
154
- 'error',
155
- {
156
- ignore: [],
157
- ignoreArrayIndexes: false,
158
- ignoreDefaultValues: false,
159
- ignoreClassFieldInitialValues: false,
160
- enforceConst: false,
161
- detectObjects: true,
162
- ignoreEnums: true,
163
- ignoreNumericLiteralTypes: false,
164
- ignoreReadonlyClassProperties: true,
165
- ignoreTypeIndexes: false
166
- }
167
- ],
168
- '@typescript-eslint/no-meaningless-void-operator': ['error', { checkNever: true }],
169
- '@typescript-eslint/no-misused-new': ['error'],
170
- '@typescript-eslint/no-misused-promises': ['error'],
171
- '@typescript-eslint/no-mixed-enums': ['error'],
172
- '@typescript-eslint/no-namespace': ['error'],
173
- '@typescript-eslint/no-non-null-asserted-nullish-coalescing': ['error'],
174
- '@typescript-eslint/no-non-null-asserted-optional-chain': ['error'],
175
- '@typescript-eslint/no-non-null-assertion': ['error'],
176
- '@typescript-eslint/no-redundant-type-constituents': ['error'],
177
- '@typescript-eslint/no-require-imports': ['error', { allow: [], allowAsImport: false }],
178
- '@typescript-eslint/no-this-alias': ['error', { allowDestructuring: true }],
179
- '@typescript-eslint/no-unnecessary-boolean-literal-compare': ['error'],
180
- '@typescript-eslint/no-unnecessary-condition': [
181
- 'error',
182
- {
183
- allowConstantLoopConditions: true
184
- }
185
- ],
186
- '@typescript-eslint/no-unnecessary-parameter-property-assignment': ['error'],
187
- '@typescript-eslint/no-unnecessary-qualifier': ['error'],
188
- '@typescript-eslint/no-unnecessary-template-expression': ['error'],
189
- '@typescript-eslint/no-unnecessary-type-arguments': ['error'],
190
- '@typescript-eslint/no-unnecessary-type-assertion': ['error'],
191
- '@typescript-eslint/no-unnecessary-type-constraint': ['error'],
192
- '@typescript-eslint/no-unnecessary-type-parameters': ['error'],
193
- '@typescript-eslint/no-unsafe-argument': ['error'],
194
- '@typescript-eslint/no-unsafe-assignment': ['error'],
195
- '@typescript-eslint/no-unsafe-call': ['error'],
196
- '@typescript-eslint/no-unsafe-declaration-merging': ['error'],
197
- '@typescript-eslint/no-unsafe-enum-comparison': ['error'],
198
- '@typescript-eslint/no-unsafe-function-type': ['error'],
199
- '@typescript-eslint/no-unsafe-member-access': ['error'],
200
- '@typescript-eslint/no-unsafe-return': ['error'],
201
- '@typescript-eslint/no-unsafe-type-assertion': ['error'],
202
- '@typescript-eslint/no-unsafe-unary-minus': ['error'],
203
- '@typescript-eslint/no-unused-expressions': [
204
- 'error',
205
- {
206
- allowShortCircuit: true,
207
- allowTernary: true,
208
- allowTaggedTemplates: true,
209
- enforceForJSX: false
210
- }
211
- ],
212
- '@typescript-eslint/no-unused-vars': [
213
- 'error',
214
- {
215
- args: 'none',
216
- caughtErrors: 'none',
217
- ignoreRestSiblings: true,
218
- vars: 'all'
219
- }
220
- ],
221
- '@typescript-eslint/no-use-before-define': [
222
- 'error',
223
- {
224
- functions: false,
225
- classes: false,
226
- enums: false,
227
- variables: false,
228
- typedefs: false
229
- }
230
- ],
231
- '@typescript-eslint/no-useless-constructor': ['error'],
232
- '@typescript-eslint/no-useless-empty-export': ['error'],
233
- '@typescript-eslint/no-wrapper-object-types': ['error'],
234
- '@typescript-eslint/non-nullable-type-assertion-style': ['error'],
235
- '@typescript-eslint/only-throw-error': [
236
- 'error',
237
- { allowThrowingAny: false, allowThrowingUnknown: false }
238
- ],
239
- '@typescript-eslint/prefer-as-const': ['error'],
240
- '@typescript-eslint/prefer-destructuring': [
241
- 'error',
242
- { array: true, object: true },
243
- {
244
- enforceForRenamedProperties: true,
245
- enforceForDeclarationWithTypeAnnotation: false
246
- }
247
- ],
248
- '@typescript-eslint/prefer-find': ['error'],
249
- '@typescript-eslint/prefer-for-of': ['error'],
250
- '@typescript-eslint/prefer-function-type': ['error'],
251
- '@typescript-eslint/prefer-includes': ['error'],
252
- '@typescript-eslint/prefer-literal-enum-member': ['error', { allowBitwiseExpressions: true }],
253
- '@typescript-eslint/prefer-namespace-keyword': ['error'],
254
- '@typescript-eslint/prefer-nullish-coalescing': [
255
- 'error',
256
- { ignoreConditionalTests: false, ignoreMixedLogicalExpressions: false }
257
- ],
258
- '@typescript-eslint/prefer-optional-chain': ['error'],
259
- '@typescript-eslint/prefer-promise-reject-errors': ['error'],
260
- '@typescript-eslint/prefer-readonly': ['error'],
261
- '@typescript-eslint/prefer-reduce-type-parameter': ['error'],
262
- '@typescript-eslint/prefer-regexp-exec': ['error'],
263
- '@typescript-eslint/prefer-return-this-type': ['error'],
264
- '@typescript-eslint/prefer-string-starts-ends-with': [
265
- 'error',
266
- { allowSingleElementEquality: 'never' }
267
- ],
268
- '@typescript-eslint/promise-function-async': ['error'],
269
- '@typescript-eslint/related-getter-setter-pairs': ['error'],
270
- '@typescript-eslint/require-array-sort-compare': ['error', { ignoreStringArrays: true }],
271
- '@typescript-eslint/require-await': ['error'],
272
- '@typescript-eslint/restrict-plus-operands': ['error', { skipCompoundAssignments: false }],
273
- '@typescript-eslint/restrict-template-expressions': ['error', { allowNumber: true }],
274
- '@typescript-eslint/return-await': ['error', 'always'],
275
- '@typescript-eslint/strict-boolean-expressions': [
276
- 'error',
277
- {
278
- allowString: false,
279
- allowNumber: false,
280
- allowNullableObject: false,
281
- allowNullableBoolean: false,
282
- allowNullableString: false,
283
- allowNullableNumber: false,
284
- allowAny: false
285
- }
286
- ],
287
- '@typescript-eslint/switch-exhaustiveness-check': [
288
- 'error',
289
- {
290
- allowDefaultCaseForExhaustiveSwitch: false,
291
- requireDefaultForNonUnion: false,
292
- considerDefaultExhaustiveForUnions: true
293
- }
294
- ],
295
- '@typescript-eslint/triple-slash-reference': [
296
- 'error',
297
- { lib: 'never', path: 'never', types: 'never' }
298
- ],
299
- '@typescript-eslint/unbound-method': ['error', { ignoreStatic: false }],
300
- '@typescript-eslint/unified-signatures': [
301
- 'error',
302
- { ignoreDifferentlyNamedParameters: false }
303
- ],
304
- '@typescript-eslint/use-unknown-in-catch-callback-variable': ['error'],
305
-
306
- /**
307
- * `eslint-plugin-eslint-comments`
308
- */
309
- 'eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }],
310
- 'eslint-comments/no-aggregating-enable': ['error'],
311
- 'eslint-comments/no-duplicate-disable': ['error'],
312
- 'eslint-comments/no-unlimited-disable': ['error'],
313
- 'eslint-comments/no-unused-enable': ['error'],
314
- 'eslint-comments/require-description': [
315
- 'error',
316
- {
317
- ignore: ['eslint-enable', 'eslint-env']
318
- }
319
- ],
320
-
321
- /**
322
- * `eslint-plugin-n`
323
- */
324
- 'n/handle-callback-err': ['error', '^(err|error)$'],
325
- 'n/no-callback-literal': ['error'],
326
- 'n/no-deprecated-api': ['error'],
327
- 'n/no-exports-assign': ['error'],
328
- 'n/no-new-require': ['error'],
329
- 'n/no-path-concat': ['error'],
330
- 'n/process-exit-as-throw': ['error'],
331
-
332
- /**
333
- * `eslint-plugin-promise`
334
- */
335
- 'promise/param-names': ['error'],
336
-
337
- /**
338
- * `eslint-plugin-import`
339
- */
340
- 'import/export': ['error'],
341
- 'import/first': ['error'],
342
- 'import/no-absolute-path': [
343
- 'error',
344
- { esmodule: true, commonjs: true, amd: false }
345
- ],
346
- 'import/no-duplicates': ['error'],
347
- 'import/no-named-default': ['error'],
348
- 'import/no-webpack-loader-syntax': ['error']
349
- }
350
- }