@krivega/eslint-config 1.0.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/index.js ADDED
@@ -0,0 +1,1052 @@
1
+ import stylisticPlugin from '@stylistic/eslint-plugin';
2
+ import tsPlugin from '@typescript-eslint/eslint-plugin';
3
+ import tsParser from '@typescript-eslint/parser';
4
+ import pluginImport from 'eslint-plugin-import';
5
+ import prettierPlugin from 'eslint-plugin-prettier';
6
+ import unicornPlugin from 'eslint-plugin-unicorn';
7
+ import globals from 'globals';
8
+ const config = [
9
+ {
10
+ files: ['**/*.{js,jsx,ts,tsx}'],
11
+ languageOptions: {
12
+ parser: tsParser,
13
+ parserOptions: {
14
+ ecmaVersion: 'latest',
15
+ sourceType: 'module',
16
+ ecmaFeatures: {
17
+ jsx: true,
18
+ },
19
+ },
20
+ globals: {
21
+ ...globals.browser,
22
+ ...globals.node,
23
+ ...globals.es2021,
24
+ ...globals.es2025,
25
+ },
26
+ },
27
+ plugins: {
28
+ unicorn: unicornPlugin,
29
+ prettier: prettierPlugin,
30
+ import: pluginImport,
31
+ '@typescript-eslint': tsPlugin,
32
+ '@stylistic': stylisticPlugin,
33
+ },
34
+ settings: {
35
+ 'import/resolver': {
36
+ typescript: {},
37
+ },
38
+ },
39
+ rules: {
40
+ 'no-dupe-else-if': ['error'],
41
+ 'no-promise-executor-return': ['error'],
42
+ 'no-unreachable-loop': [
43
+ 'error',
44
+ {
45
+ ignore: [],
46
+ },
47
+ ],
48
+ 'no-useless-backreference': ['error'],
49
+ 'require-atomic-updates': ['error'],
50
+ 'default-case-last': ['error'],
51
+ 'grouped-accessor-pairs': ['error'],
52
+ 'no-constructor-return': ['error'],
53
+ 'no-implicit-coercion': [
54
+ 'error',
55
+ {
56
+ boolean: false,
57
+ number: true,
58
+ string: true,
59
+ allow: [],
60
+ },
61
+ ],
62
+ 'prefer-regex-literals': [
63
+ 'error',
64
+ {
65
+ disallowRedundantWrapping: true,
66
+ },
67
+ ],
68
+ 'arrow-body-style': ['error', 'always'],
69
+ 'no-dupe-keys': ['error'],
70
+ 'padding-line-between-statements': [
71
+ 'error',
72
+ {
73
+ blankLine: 'always',
74
+ prev: 'directive',
75
+ next: '*',
76
+ },
77
+ {
78
+ blankLine: 'any',
79
+ prev: 'directive',
80
+ next: 'directive',
81
+ },
82
+ {
83
+ blankLine: 'always',
84
+ prev: 'import',
85
+ next: '*',
86
+ },
87
+ {
88
+ blankLine: 'any',
89
+ prev: 'import',
90
+ next: 'import',
91
+ },
92
+ {
93
+ blankLine: 'always',
94
+ prev: '*',
95
+ next: ['const', 'let', 'var', 'export'],
96
+ },
97
+ {
98
+ blankLine: 'always',
99
+ prev: ['const', 'let', 'var', 'export'],
100
+ next: '*',
101
+ },
102
+ {
103
+ blankLine: 'any',
104
+ prev: ['const', 'let', 'var', 'export'],
105
+ next: ['const', 'let', 'var', 'export'],
106
+ },
107
+ {
108
+ blankLine: 'always',
109
+ prev: '*',
110
+ next: ['if', 'class', 'for', 'do', 'while', 'switch', 'try'],
111
+ },
112
+ {
113
+ blankLine: 'always',
114
+ prev: ['if', 'class', 'for', 'do', 'while', 'switch', 'try'],
115
+ next: '*',
116
+ },
117
+ {
118
+ blankLine: 'always',
119
+ prev: '*',
120
+ next: 'return',
121
+ },
122
+ ],
123
+ 'prettier/prettier': ['error'],
124
+ 'no-plusplus': [
125
+ 'error',
126
+ {
127
+ allowForLoopAfterthoughts: true,
128
+ },
129
+ ],
130
+ 'no-restricted-exports': [
131
+ 'error',
132
+ {
133
+ restrictDefaultExports: {
134
+ defaultFrom: true,
135
+ namedFrom: true,
136
+ },
137
+ },
138
+ ],
139
+ 'import/no-deprecated': ['error'],
140
+ 'import/no-extraneous-dependencies': [
141
+ 'error',
142
+ {
143
+ devDependencies: [
144
+ // test setup and utils
145
+ 'src/setupTests.{ts,tsx,js,jsx}',
146
+ 'src/testUtils.{ts,tsx,js,jsx}',
147
+ 'src/testUtils/**',
148
+ 'src/mocks/**',
149
+ '**/__tests__/**/*.{ts,tsx,js,jsx}',
150
+ '**/*.test.{ts,tsx,js,jsx}',
151
+ '**/*.spec.{ts,tsx,js,jsx}',
152
+ // stories and cypress
153
+ '**/*.stories.{ts,tsx,js,jsx,mdx}',
154
+ '**/*.cy.{ts,tsx,js,jsx}',
155
+ // configs and linters
156
+ '**/*.config.{ts,js}',
157
+ 'eslint.config.{ts,js}',
158
+ // tooling and scripts
159
+ 'vite.*.{ts,js}',
160
+ 'scripts/**',
161
+ ],
162
+ },
163
+ ],
164
+ 'unicorn/prevent-abbreviations': [
165
+ 'error',
166
+ {
167
+ allowList: {
168
+ i: true,
169
+ j: true,
170
+ args: true,
171
+ Args: true,
172
+ e2e: true,
173
+ db: true,
174
+ DB: true,
175
+ props: true,
176
+ Props: true,
177
+ Prop: true,
178
+ prop: true,
179
+ Params: true,
180
+ params: true,
181
+ env: true,
182
+ Env: true,
183
+ prev: true,
184
+ Prev: true,
185
+ dir: true,
186
+ Dir: true,
187
+ utils: true,
188
+ Utils: true,
189
+ dev: true,
190
+ Dev: true,
191
+ },
192
+ },
193
+ ],
194
+ 'unicorn/filename-case': [
195
+ 'error',
196
+ {
197
+ cases: {
198
+ camelCase: true,
199
+ pascalCase: true,
200
+ },
201
+ },
202
+ ],
203
+ 'unicorn/no-nested-ternary': ['error'],
204
+ '@typescript-eslint/no-confusing-void-expression': [
205
+ 'error',
206
+ {
207
+ ignoreArrowShorthand: true,
208
+ },
209
+ ],
210
+ '@typescript-eslint/no-use-before-define': [
211
+ 'error',
212
+ {
213
+ functions: true,
214
+ classes: true,
215
+ variables: true,
216
+ },
217
+ ],
218
+ curly: ['error'],
219
+ '@typescript-eslint/naming-convention': [
220
+ 'error',
221
+ {
222
+ selector: 'variable',
223
+ format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
224
+ },
225
+ {
226
+ selector: 'function',
227
+ format: ['camelCase', 'PascalCase'],
228
+ },
229
+ {
230
+ selector: 'typeLike',
231
+ format: ['PascalCase'],
232
+ },
233
+ ],
234
+ '@typescript-eslint/default-param-last': ['error'],
235
+ '@typescript-eslint/dot-notation': [
236
+ 'error',
237
+ {
238
+ allowKeywords: true,
239
+ allowPattern: '',
240
+ allowPrivateClassPropertyAccess: false,
241
+ allowProtectedClassPropertyAccess: false,
242
+ allowIndexSignaturePropertyAccess: false,
243
+ },
244
+ ],
245
+ '@typescript-eslint/no-array-constructor': ['error'],
246
+ '@typescript-eslint/no-dupe-class-members': ['error'],
247
+ '@typescript-eslint/no-empty-function': [
248
+ 'error',
249
+ {
250
+ allow: ['arrowFunctions', 'functions', 'methods'],
251
+ },
252
+ ],
253
+ '@typescript-eslint/no-implied-eval': ['error'],
254
+ '@typescript-eslint/no-loss-of-precision': ['error'],
255
+ '@typescript-eslint/no-loop-func': ['error'],
256
+ '@typescript-eslint/no-redeclare': ['error'],
257
+ '@typescript-eslint/no-shadow': ['error'],
258
+ '@typescript-eslint/only-throw-error': 'error',
259
+ '@typescript-eslint/no-unused-expressions': [
260
+ 'error',
261
+ {
262
+ allowShortCircuit: false,
263
+ allowTernary: false,
264
+ allowTaggedTemplates: false,
265
+ enforceForJSX: false,
266
+ },
267
+ ],
268
+ '@typescript-eslint/no-unused-vars': [
269
+ 'error',
270
+ {
271
+ vars: 'all',
272
+ argsIgnorePattern: '^_',
273
+ args: 'after-used',
274
+ ignoreRestSiblings: true,
275
+ },
276
+ ],
277
+ '@typescript-eslint/no-useless-constructor': ['error'],
278
+ '@typescript-eslint/return-await': ['error', 'in-try-catch'],
279
+ 'import/extensions': [
280
+ 'error',
281
+ 'ignorePackages',
282
+ {
283
+ js: 'never',
284
+ mjs: 'never',
285
+ jsx: 'never',
286
+ ts: 'never',
287
+ tsx: 'never',
288
+ },
289
+ ],
290
+ strict: ['error', 'never'],
291
+ 'import/export': ['error'],
292
+ 'import/no-unresolved': ['error'],
293
+ 'import/no-named-as-default': ['error'],
294
+ 'import/no-mutable-exports': ['error'],
295
+ 'import/no-amd': ['error'],
296
+ 'import/first': ['error'],
297
+ 'import/no-duplicates': ['error'],
298
+ 'import/order': [
299
+ 'error',
300
+ {
301
+ groups: ['builtin', 'external', ['internal', 'parent', 'sibling', 'index'], 'type'],
302
+ 'newlines-between': 'always',
303
+ 'newlines-between-types': 'always',
304
+ sortTypesGroup: true,
305
+ pathGroups: [
306
+ // value imports aliases
307
+ { pattern: '@/**', group: 'internal', position: 'before' },
308
+ { pattern: '~/**', group: 'internal', position: 'before' },
309
+ { pattern: '#**', group: 'internal', position: 'before' }
310
+ ],
311
+ pathGroupsExcludedImportTypes: ['builtin', 'external'],
312
+ alphabetize: { order: 'asc', caseInsensitive: true },
313
+ distinctGroup: false,
314
+ warnOnUnassignedImports: true,
315
+ },
316
+ ],
317
+ 'import/newline-after-import': ['error'],
318
+ 'import/no-dynamic-require': ['error'],
319
+ 'import/no-webpack-loader-syntax': ['error'],
320
+ 'import/no-named-default': ['error'],
321
+ 'import/no-self-import': ['error'],
322
+ 'import/no-cycle': [
323
+ 'error',
324
+ {
325
+ maxDepth: Infinity,
326
+ ignoreExternal: false,
327
+ allowUnsafeDynamicCyclicDependency: false,
328
+ disableScc: false,
329
+ },
330
+ ],
331
+ 'import/no-useless-path-segments': [
332
+ 'error',
333
+ {
334
+ commonjs: true,
335
+ },
336
+ ],
337
+ 'import/no-import-module-exports': [
338
+ 'error',
339
+ {
340
+ exceptions: [],
341
+ },
342
+ ],
343
+ 'import/no-relative-packages': ['error'],
344
+ 'no-class-assign': ['error'],
345
+ 'no-useless-computed-key': ['error'],
346
+ 'no-useless-rename': [
347
+ 'error',
348
+ {
349
+ ignoreDestructuring: false,
350
+ ignoreImport: false,
351
+ ignoreExport: false,
352
+ },
353
+ ],
354
+ 'no-var': ['error'],
355
+ 'object-shorthand': [
356
+ 'error',
357
+ 'always',
358
+ {
359
+ ignoreConstructors: false,
360
+ avoidQuotes: true,
361
+ },
362
+ ],
363
+ 'prefer-arrow-callback': [
364
+ 'error',
365
+ {
366
+ allowNamedFunctions: false,
367
+ allowUnboundThis: true,
368
+ },
369
+ ],
370
+ 'prefer-const': [
371
+ 'error',
372
+ {
373
+ destructuring: 'any',
374
+ ignoreReadBeforeAssign: true,
375
+ },
376
+ ],
377
+ 'prefer-destructuring': [
378
+ 'error',
379
+ {
380
+ VariableDeclarator: {
381
+ array: false,
382
+ object: true,
383
+ },
384
+ AssignmentExpression: {
385
+ array: true,
386
+ object: false,
387
+ },
388
+ },
389
+ {
390
+ enforceForRenamedProperties: false,
391
+ },
392
+ ],
393
+ 'prefer-numeric-literals': ['error'],
394
+ 'prefer-rest-params': ['error'],
395
+ 'prefer-spread': ['error'],
396
+ 'prefer-template': ['error'],
397
+ 'require-yield': ['error'],
398
+ 'symbol-description': ['error'],
399
+ 'no-delete-var': ['error'],
400
+ 'no-label-var': ['error'],
401
+ 'no-restricted-globals': [
402
+ 'error',
403
+ {
404
+ name: 'isFinite',
405
+ message: 'Use Number.isFinite instead https://github.com/airbnb/javascript#standard-library--isfinite',
406
+ },
407
+ {
408
+ name: 'isNaN',
409
+ message: 'Use Number.isNaN instead https://github.com/airbnb/javascript#standard-library--isnan',
410
+ },
411
+ 'addEventListener',
412
+ 'blur',
413
+ 'close',
414
+ 'closed',
415
+ 'confirm',
416
+ 'defaultStatus',
417
+ 'defaultstatus',
418
+ 'event',
419
+ 'external',
420
+ 'find',
421
+ 'focus',
422
+ 'frameElement',
423
+ 'frames',
424
+ 'history',
425
+ 'innerHeight',
426
+ 'innerWidth',
427
+ 'length',
428
+ 'location',
429
+ 'locationbar',
430
+ 'menubar',
431
+ 'moveBy',
432
+ 'moveTo',
433
+ 'name',
434
+ 'onblur',
435
+ 'onerror',
436
+ 'onfocus',
437
+ 'onload',
438
+ 'onresize',
439
+ 'onunload',
440
+ 'open',
441
+ 'opener',
442
+ 'opera',
443
+ 'outerHeight',
444
+ 'outerWidth',
445
+ 'pageXOffset',
446
+ 'pageYOffset',
447
+ 'parent',
448
+ 'print',
449
+ 'removeEventListener',
450
+ 'resizeBy',
451
+ 'resizeTo',
452
+ 'screen',
453
+ 'screenLeft',
454
+ 'screenTop',
455
+ 'screenX',
456
+ 'screenY',
457
+ 'scroll',
458
+ 'scrollbars',
459
+ 'scrollBy',
460
+ 'scrollTo',
461
+ 'scrollX',
462
+ 'scrollY',
463
+ 'self',
464
+ 'status',
465
+ 'statusbar',
466
+ 'stop',
467
+ 'toolbar',
468
+ 'top',
469
+ ],
470
+ 'no-shadow-restricted-names': ['error'],
471
+ 'func-names': ['warn'],
472
+ 'lines-around-directive': [
473
+ 'error',
474
+ {
475
+ before: 'always',
476
+ after: 'always',
477
+ },
478
+ ],
479
+ 'new-cap': [
480
+ 'error',
481
+ {
482
+ newIsCap: true,
483
+ newIsCapExceptions: [],
484
+ capIsNew: false,
485
+ capIsNewExceptions: ['Immutable.Map', 'Immutable.Set', 'Immutable.List'],
486
+ properties: true,
487
+ },
488
+ ],
489
+ 'no-bitwise': ['error'],
490
+ 'no-continue': ['error'],
491
+ 'no-multi-assign': ['error'],
492
+ 'no-new-object': ['error'],
493
+ 'no-underscore-dangle': [
494
+ 'error',
495
+ {
496
+ allow: [],
497
+ allowAfterThis: false,
498
+ allowAfterSuper: false,
499
+ enforceInMethodNames: true,
500
+ allowAfterThisConstructor: false,
501
+ allowFunctionParams: true,
502
+ enforceInClassFields: false,
503
+ allowInArrayDestructuring: true,
504
+ allowInObjectDestructuring: true,
505
+ },
506
+ ],
507
+ 'no-unneeded-ternary': [
508
+ 'error',
509
+ {
510
+ defaultAssignment: false,
511
+ },
512
+ ],
513
+ 'one-var': ['error', 'never'],
514
+ 'operator-assignment': ['error', 'always'],
515
+ 'prefer-exponentiation-operator': ['error'],
516
+ 'prefer-object-spread': ['error'],
517
+ 'unicode-bom': ['error', 'never'],
518
+ 'global-require': ['error'],
519
+ 'no-buffer-constructor': ['error'],
520
+ 'no-new-require': ['error'],
521
+ 'no-path-concat': ['error'],
522
+ 'for-direction': ['error'],
523
+ 'no-async-promise-executor': ['error'],
524
+ 'no-await-in-loop': ['error'],
525
+ 'no-compare-neg-zero': ['error'],
526
+ 'no-cond-assign': ['error', 'always'],
527
+ 'no-console': ['warn'],
528
+ 'no-constant-condition': ['warn'],
529
+ 'no-control-regex': ['error'],
530
+ 'no-debugger': ['error'],
531
+ 'no-duplicate-case': ['error'],
532
+ 'no-empty': ['error'],
533
+ 'no-empty-character-class': ['error'],
534
+ 'no-ex-assign': ['error'],
535
+ 'no-extra-boolean-cast': ['error'],
536
+ 'no-inner-declarations': ['error'],
537
+ 'no-invalid-regexp': ['error'],
538
+ 'no-irregular-whitespace': ['error'],
539
+ 'no-misleading-character-class': ['error'],
540
+ 'no-prototype-builtins': ['error'],
541
+ 'no-regex-spaces': ['error'],
542
+ 'no-sparse-arrays': ['error'],
543
+ 'no-template-curly-in-string': ['error'],
544
+ 'no-unsafe-finally': ['error'],
545
+ 'no-unsafe-optional-chaining': [
546
+ 'error',
547
+ {
548
+ disallowArithmeticOperators: true,
549
+ },
550
+ ],
551
+ 'use-isnan': ['error'],
552
+ 'array-callback-return': [
553
+ 'error',
554
+ {
555
+ allowImplicit: true,
556
+ checkForEach: false,
557
+ allowVoid: false,
558
+ },
559
+ ],
560
+ 'block-scoped-var': ['error'],
561
+ 'default-case': [
562
+ 'error',
563
+ {
564
+ commentPattern: '^no default$',
565
+ },
566
+ ],
567
+ eqeqeq: [
568
+ 'error',
569
+ 'always',
570
+ {
571
+ null: 'ignore',
572
+ },
573
+ ],
574
+ 'guard-for-in': ['error'],
575
+ 'max-classes-per-file': ['error', 1],
576
+ 'no-alert': ['warn'],
577
+ 'no-caller': ['error'],
578
+ 'no-case-declarations': ['error'],
579
+ 'no-else-return': [
580
+ 'error',
581
+ {
582
+ allowElseIf: false,
583
+ },
584
+ ],
585
+ 'no-empty-pattern': ['error'],
586
+ 'no-eval': ['error'],
587
+ 'no-extend-native': ['error'],
588
+ 'no-extra-bind': ['error'],
589
+ 'no-extra-label': ['error'],
590
+ 'no-fallthrough': ['error'],
591
+ 'no-global-assign': [
592
+ 'error',
593
+ {
594
+ exceptions: [],
595
+ },
596
+ ],
597
+ 'no-iterator': ['error'],
598
+ 'no-labels': [
599
+ 'error',
600
+ {
601
+ allowLoop: false,
602
+ allowSwitch: false,
603
+ },
604
+ ],
605
+ 'no-lone-blocks': ['error'],
606
+ 'no-multi-str': ['error'],
607
+ 'no-new': ['error'],
608
+ 'no-new-wrappers': ['error'],
609
+ 'no-nonoctal-decimal-escape': ['error'],
610
+ 'no-octal': ['error'],
611
+ 'no-octal-escape': ['error'],
612
+ 'no-param-reassign': [
613
+ 'error',
614
+ {
615
+ props: true,
616
+ ignorePropertyModificationsFor: [
617
+ 'acc',
618
+ 'accumulator',
619
+ 'e',
620
+ 'ctx',
621
+ 'context',
622
+ 'req',
623
+ 'request',
624
+ 'res',
625
+ 'response',
626
+ '$scope',
627
+ 'staticContext',
628
+ ],
629
+ },
630
+ ],
631
+ 'no-proto': ['error'],
632
+ 'no-restricted-properties': [
633
+ 'error',
634
+ {
635
+ object: 'arguments',
636
+ property: 'callee',
637
+ message: 'arguments.callee is deprecated',
638
+ },
639
+ {
640
+ object: 'global',
641
+ property: 'isFinite',
642
+ message: 'Please use Number.isFinite instead',
643
+ },
644
+ {
645
+ object: 'self',
646
+ property: 'isFinite',
647
+ message: 'Please use Number.isFinite instead',
648
+ },
649
+ {
650
+ object: 'window',
651
+ property: 'isFinite',
652
+ message: 'Please use Number.isFinite instead',
653
+ },
654
+ {
655
+ object: 'global',
656
+ property: 'isNaN',
657
+ message: 'Please use Number.isNaN instead',
658
+ },
659
+ {
660
+ object: 'self',
661
+ property: 'isNaN',
662
+ message: 'Please use Number.isNaN instead',
663
+ },
664
+ {
665
+ object: 'window',
666
+ property: 'isNaN',
667
+ message: 'Please use Number.isNaN instead',
668
+ },
669
+ {
670
+ property: '__defineGetter__',
671
+ message: 'Please use Object.defineProperty instead.',
672
+ },
673
+ {
674
+ property: '__defineSetter__',
675
+ message: 'Please use Object.defineProperty instead.',
676
+ },
677
+ {
678
+ object: 'Math',
679
+ property: 'pow',
680
+ message: 'Use the exponentiation operator (**) instead.',
681
+ },
682
+ ],
683
+ 'no-return-assign': ['error', 'always'],
684
+ 'no-script-url': ['error'],
685
+ 'no-self-assign': [
686
+ 'error',
687
+ {
688
+ props: true,
689
+ },
690
+ ],
691
+ 'no-self-compare': ['error'],
692
+ 'no-sequences': ['error'],
693
+ 'no-unused-labels': ['error'],
694
+ 'no-useless-catch': ['error'],
695
+ 'no-useless-concat': ['error'],
696
+ 'no-useless-escape': ['error'],
697
+ 'no-useless-return': ['error'],
698
+ 'no-void': ['error'],
699
+ 'no-with': ['error'],
700
+ radix: ['error'],
701
+ 'vars-on-top': ['error'],
702
+ yoda: ['error'],
703
+ 'unicorn/better-regex': ['error'],
704
+ 'unicorn/catch-error-name': ['error'],
705
+ 'unicorn/consistent-empty-array-spread': ['error'],
706
+ 'unicorn/consistent-function-scoping': [
707
+ 'error',
708
+ {
709
+ checkArrowFunctions: false,
710
+ },
711
+ ],
712
+ 'unicorn/error-message': ['error'],
713
+ 'unicorn/escape-case': ['error'],
714
+ 'unicorn/expiring-todo-comments': ['error'],
715
+ 'unicorn/explicit-length-check': ['error'],
716
+ 'unicorn/import-style': ['error'],
717
+ 'unicorn/new-for-builtins': ['error'],
718
+ 'unicorn/no-abusive-eslint-disable': ['error'],
719
+ 'unicorn/no-anonymous-default-export': ['error'],
720
+ 'unicorn/no-array-method-this-argument': ['error'],
721
+ 'unicorn/no-await-expression-member': ['error'],
722
+ 'unicorn/no-await-in-promise-methods': ['error'],
723
+ 'unicorn/no-console-spaces': ['error'],
724
+ 'unicorn/no-document-cookie': ['error'],
725
+ 'unicorn/no-empty-file': ['error'],
726
+ 'unicorn/no-for-loop': ['error'],
727
+ 'unicorn/no-hex-escape': ['error'],
728
+ 'unicorn/no-unnecessary-array-splice-count': ['error'],
729
+ 'unicorn/consistent-date-clone': ['error'],
730
+ 'unicorn/no-instanceof-builtins': ['error'],
731
+ 'unicorn/no-unnecessary-array-flat-depth': ['error'],
732
+ 'unicorn/no-instanceof-array': ['error'],
733
+ 'unicorn/no-invalid-fetch-options': ['error'],
734
+ 'unicorn/no-invalid-remove-event-listener': ['error'],
735
+ 'unicorn/no-unnecessary-slice-end': ['error'],
736
+ 'unicorn/no-lonely-if': ['error'],
737
+ 'unicorn/no-magic-array-flat-depth': ['error'],
738
+ 'unicorn/no-negated-condition': ['error'],
739
+ 'unicorn/no-negation-in-equality-check': ['error'],
740
+ 'unicorn/no-new-array': ['error'],
741
+ 'unicorn/no-new-buffer': ['error'],
742
+ 'unicorn/no-null': ['error'],
743
+ 'unicorn/no-object-as-default-parameter': ['error'],
744
+ 'unicorn/no-process-exit': ['error'],
745
+ 'unicorn/no-single-promise-in-promise-methods': ['error'],
746
+ 'unicorn/no-static-only-class': ['error'],
747
+ 'unicorn/no-thenable': ['error'],
748
+ 'unicorn/no-this-assignment': ['error'],
749
+ 'unicorn/no-typeof-undefined': ['error'],
750
+ 'unicorn/no-unnecessary-await': ['error'],
751
+ 'unicorn/no-unnecessary-polyfills': ['error'],
752
+ 'unicorn/no-unreadable-array-destructuring': ['error'],
753
+ 'unicorn/no-unreadable-iife': ['error'],
754
+ 'unicorn/no-useless-fallback-in-spread': ['error'],
755
+ 'unicorn/no-useless-length-check': ['error'],
756
+ 'unicorn/no-useless-promise-resolve-reject': ['error'],
757
+ 'unicorn/no-useless-spread': ['error'],
758
+ 'unicorn/no-useless-switch-case': ['error'],
759
+ 'unicorn/no-zero-fractions': ['error'],
760
+ 'unicorn/numeric-separators-style': ['error'],
761
+ 'unicorn/prefer-add-event-listener': ['error'],
762
+ 'unicorn/prefer-array-find': ['error'],
763
+ 'unicorn/prefer-array-flat-map': ['error'],
764
+ 'unicorn/prefer-array-flat': ['error'],
765
+ 'unicorn/prefer-array-index-of': ['error'],
766
+ 'unicorn/prefer-array-some': ['error'],
767
+ 'unicorn/prefer-at': ['error'],
768
+ 'unicorn/prefer-blob-reading-methods': ['error'],
769
+ 'unicorn/prefer-code-point': ['error'],
770
+ 'unicorn/prefer-date-now': ['error'],
771
+ 'unicorn/prefer-default-parameters': ['error'],
772
+ 'unicorn/prefer-dom-node-append': ['error'],
773
+ 'unicorn/prefer-dom-node-dataset': ['error'],
774
+ 'unicorn/prefer-dom-node-remove': ['error'],
775
+ 'unicorn/prefer-dom-node-text-content': ['error'],
776
+ 'unicorn/prefer-event-target': ['error'],
777
+ 'unicorn/prefer-export-from': ['error'],
778
+ 'unicorn/prefer-keyboard-event-key': ['error'],
779
+ 'unicorn/prefer-logical-operator-over-ternary': ['error'],
780
+ 'unicorn/prefer-math-trunc': ['error'],
781
+ 'unicorn/prefer-modern-dom-apis': ['error'],
782
+ 'unicorn/prefer-modern-math-apis': ['error'],
783
+ 'unicorn/prefer-module': ['error'],
784
+ 'unicorn/prefer-native-coercion-functions': ['error'],
785
+ 'unicorn/prefer-negative-index': ['error'],
786
+ 'unicorn/prefer-node-protocol': ['error'],
787
+ 'unicorn/prefer-number-properties': ['error'],
788
+ 'unicorn/prefer-object-from-entries': ['error'],
789
+ 'unicorn/prefer-optional-catch-binding': ['error'],
790
+ 'unicorn/prefer-prototype-methods': ['error'],
791
+ 'unicorn/prefer-query-selector': ['error'],
792
+ 'unicorn/prefer-reflect-apply': ['error'],
793
+ 'unicorn/prefer-regexp-test': ['error'],
794
+ 'unicorn/prefer-set-has': ['error'],
795
+ 'unicorn/prefer-set-size': ['error'],
796
+ 'unicorn/prefer-spread': ['error'],
797
+ 'unicorn/prefer-string-raw': ['error'],
798
+ 'unicorn/prefer-string-replace-all': ['error'],
799
+ 'unicorn/prefer-string-slice': ['error'],
800
+ 'unicorn/prefer-string-trim-start-end': ['error'],
801
+ 'unicorn/prefer-structured-clone': ['error'],
802
+ 'unicorn/prefer-switch': ['error'],
803
+ 'unicorn/prefer-ternary': ['error'],
804
+ 'unicorn/prefer-top-level-await': ['error'],
805
+ 'unicorn/prefer-type-error': ['error'],
806
+ 'unicorn/relative-url-style': ['error'],
807
+ 'unicorn/require-array-join-separator': ['error'],
808
+ 'unicorn/require-number-to-fixed-digits-argument': ['error'],
809
+ 'unicorn/switch-case-braces': ['error'],
810
+ 'unicorn/text-encoding-identifier-case': ['error'],
811
+ 'unicorn/throw-new-error': ['error'],
812
+ 'unicorn/prefer-class-fields': ['error'],
813
+ 'unicorn/no-array-reverse': ['error'],
814
+ 'unicorn/require-module-specifiers': ['error'],
815
+ '@typescript-eslint/adjacent-overload-signatures': ['error'],
816
+ '@typescript-eslint/array-type': ['error'],
817
+ '@typescript-eslint/await-thenable': ['error'],
818
+ '@typescript-eslint/ban-tslint-comment': ['error'],
819
+ '@typescript-eslint/no-wrapper-object-types': 'error',
820
+ '@typescript-eslint/no-empty-object-type': 'error',
821
+ '@typescript-eslint/no-unsafe-function-type': 'error',
822
+ '@typescript-eslint/no-restricted-types': 'error',
823
+ '@typescript-eslint/class-literal-property-style': ['error'],
824
+ '@typescript-eslint/consistent-generic-constructors': ['error'],
825
+ '@typescript-eslint/consistent-indexed-object-style': ['error'],
826
+ '@typescript-eslint/consistent-return': ['error'],
827
+ '@typescript-eslint/consistent-type-assertions': ['error'],
828
+ '@typescript-eslint/consistent-type-exports': ['error'],
829
+ '@typescript-eslint/consistent-type-imports': ['error'],
830
+ '@typescript-eslint/explicit-member-accessibility': ['error'],
831
+ '@typescript-eslint/max-params': ['error'],
832
+ '@typescript-eslint/member-ordering': ['error'],
833
+ '@typescript-eslint/method-signature-style': ['error'],
834
+ '@typescript-eslint/no-array-delete': ['error'],
835
+ '@typescript-eslint/no-base-to-string': ['error'],
836
+ '@typescript-eslint/no-confusing-non-null-assertion': ['error'],
837
+ '@typescript-eslint/no-duplicate-enum-values': ['error'],
838
+ '@typescript-eslint/no-duplicate-type-constituents': ['error'],
839
+ '@typescript-eslint/no-dynamic-delete': ['error'],
840
+ '@typescript-eslint/no-empty-interface': ['error'],
841
+ '@typescript-eslint/no-explicit-any': ['error'],
842
+ '@typescript-eslint/no-extra-non-null-assertion': ['error'],
843
+ '@typescript-eslint/no-extraneous-class': ['error'],
844
+ '@typescript-eslint/no-floating-promises': ['error'],
845
+ '@typescript-eslint/no-for-in-array': ['error'],
846
+ '@typescript-eslint/no-import-type-side-effects': ['error'],
847
+ '@typescript-eslint/no-inferrable-types': ['error'],
848
+ '@typescript-eslint/no-invalid-this': ['error'],
849
+ '@typescript-eslint/no-invalid-void-type': ['error'],
850
+ '@typescript-eslint/no-meaningless-void-operator': ['error'],
851
+ '@typescript-eslint/no-misused-new': ['error'],
852
+ '@typescript-eslint/no-misused-promises': ['error'],
853
+ '@typescript-eslint/no-mixed-enums': ['error'],
854
+ '@typescript-eslint/no-namespace': ['error'],
855
+ '@typescript-eslint/no-non-null-asserted-nullish-coalescing': ['error'],
856
+ '@typescript-eslint/no-non-null-asserted-optional-chain': ['error'],
857
+ '@typescript-eslint/no-non-null-assertion': ['error'],
858
+ '@typescript-eslint/no-redundant-type-constituents': ['error'],
859
+ '@typescript-eslint/no-require-imports': ['error'],
860
+ '@typescript-eslint/no-restricted-imports': ['error'],
861
+ '@typescript-eslint/no-this-alias': ['error'],
862
+ '@typescript-eslint/no-unnecessary-boolean-literal-compare': ['error'],
863
+ '@typescript-eslint/no-unnecessary-condition': ['error'],
864
+ '@typescript-eslint/no-unnecessary-parameter-property-assignment': ['error'],
865
+ '@typescript-eslint/no-unnecessary-qualifier': ['error'],
866
+ '@typescript-eslint/no-unnecessary-template-expression': ['error'],
867
+ '@typescript-eslint/no-unnecessary-type-arguments': ['error'],
868
+ '@typescript-eslint/no-unnecessary-type-constraint': ['error'],
869
+ '@typescript-eslint/no-unnecessary-type-parameters': ['error'],
870
+ '@typescript-eslint/no-unsafe-argument': ['error'],
871
+ '@typescript-eslint/no-unsafe-assignment': ['error'],
872
+ '@typescript-eslint/no-unsafe-call': ['error'],
873
+ '@typescript-eslint/no-unsafe-declaration-merging': ['error'],
874
+ '@typescript-eslint/no-unsafe-enum-comparison': ['error'],
875
+ '@typescript-eslint/no-unsafe-member-access': ['error'],
876
+ '@typescript-eslint/no-unsafe-return': ['error'],
877
+ '@typescript-eslint/no-unsafe-unary-minus': ['error'],
878
+ '@typescript-eslint/no-useless-empty-export': ['error'],
879
+ '@typescript-eslint/no-var-requires': ['error'],
880
+ '@typescript-eslint/non-nullable-type-assertion-style': ['error'],
881
+ '@typescript-eslint/parameter-properties': ['error'],
882
+ '@typescript-eslint/prefer-as-const': ['error'],
883
+ '@typescript-eslint/prefer-enum-initializers': ['error'],
884
+ '@typescript-eslint/prefer-find': ['error'],
885
+ '@typescript-eslint/prefer-for-of': ['error'],
886
+ '@typescript-eslint/prefer-function-type': ['error'],
887
+ '@typescript-eslint/prefer-includes': ['error'],
888
+ '@typescript-eslint/prefer-literal-enum-member': ['error'],
889
+ '@typescript-eslint/prefer-namespace-keyword': ['error'],
890
+ '@typescript-eslint/prefer-nullish-coalescing': ['error'],
891
+ '@typescript-eslint/prefer-optional-chain': ['error'],
892
+ '@typescript-eslint/prefer-promise-reject-errors': ['error', {
893
+ allowEmptyReject: true,
894
+ }],
895
+ '@typescript-eslint/prefer-readonly': ['error'],
896
+ '@typescript-eslint/prefer-reduce-type-parameter': ['error'],
897
+ '@typescript-eslint/prefer-regexp-exec': ['error'],
898
+ '@typescript-eslint/prefer-return-this-type': ['error'],
899
+ '@typescript-eslint/prefer-string-starts-ends-with': ['error'],
900
+ '@typescript-eslint/promise-function-async': ['error'],
901
+ '@typescript-eslint/require-array-sort-compare': ['error'],
902
+ '@typescript-eslint/restrict-plus-operands': ['error'],
903
+ '@typescript-eslint/restrict-template-expressions': ['error'],
904
+ '@typescript-eslint/strict-boolean-expressions': ['error'],
905
+ '@typescript-eslint/switch-exhaustiveness-check': ['error'],
906
+ '@typescript-eslint/triple-slash-reference': ['error'],
907
+ '@typescript-eslint/typedef': ['error'],
908
+ '@typescript-eslint/unbound-method': [
909
+ 'error',
910
+ {
911
+ ignoreStatic: true,
912
+ },
913
+ ],
914
+ '@typescript-eslint/unified-signatures': ['error'],
915
+ '@typescript-eslint/use-unknown-in-catch-callback-variable': ['error'],
916
+ '@typescript-eslint/class-methods-use-this': [
917
+ 'error',
918
+ {
919
+ exceptMethods: [],
920
+ enforceForClassFields: true,
921
+ },
922
+ ],
923
+ 'logical-assignment-operators': ['error'],
924
+ 'no-constant-binary-expression': ['error'],
925
+ 'no-empty-static-block': ['error'],
926
+ 'no-object-constructor': ['error'],
927
+ 'prefer-object-has-own': ['error'],
928
+ '@stylistic/array-bracket-spacing': ['error', 'never'],
929
+ '@stylistic/arrow-parens': [
930
+ 'error',
931
+ 'as-needed',
932
+ {
933
+ requireForBlockBody: true,
934
+ },
935
+ ],
936
+ '@stylistic/arrow-spacing': ['error', { before: true, after: true }],
937
+ '@stylistic/block-spacing': ['error', 'always'],
938
+ '@stylistic/brace-style': ['error', '1tbs', { allowSingleLine: false }],
939
+ '@stylistic/comma-dangle': ['error', 'always-multiline'],
940
+ '@stylistic/comma-spacing': ['error', { before: false, after: true }],
941
+ '@stylistic/comma-style': ['error', 'last'],
942
+ '@stylistic/computed-property-spacing': [
943
+ 'error',
944
+ 'never',
945
+ {
946
+ enforceForClassMembers: true,
947
+ },
948
+ ],
949
+ '@stylistic/no-extra-parens': ['error', 'functions'],
950
+ '@stylistic/no-floating-decimal': ['error'],
951
+ '@stylistic/no-mixed-operators': [
952
+ 'error',
953
+ {
954
+ allowSamePrecedence: true,
955
+ groups: [
956
+ ['==', '!=', '===', '!==', '>', '>=', '<', '<='],
957
+ ['&&', '||'],
958
+ ['in', 'instanceof'],
959
+ ],
960
+ },
961
+ ],
962
+ '@stylistic/no-multi-spaces': ['error'],
963
+ '@stylistic/dot-location': ['error', 'property'],
964
+ '@stylistic/eol-last': ['error'],
965
+ '@stylistic/function-call-spacing': ['error', 'never'],
966
+ '@stylistic/key-spacing': ['error', { beforeColon: false, afterColon: true }],
967
+ '@stylistic/keyword-spacing': ['error', { before: true, after: true }],
968
+ '@stylistic/linebreak-style': ['error', 'unix'],
969
+ '@stylistic/max-len': [
970
+ 'error',
971
+ {
972
+ code: 100,
973
+ tabWidth: 2,
974
+ ignoreUrls: true,
975
+ ignoreComments: false,
976
+ ignoreRegExpLiterals: true,
977
+ ignoreStrings: true,
978
+ ignoreTemplateLiterals: true,
979
+ },
980
+ ],
981
+ '@stylistic/max-statements-per-line': ['error', { max: 1 }],
982
+ '@stylistic/new-parens': ['error'],
983
+ '@stylistic/no-mixed-spaces-and-tabs': ['error'],
984
+ '@stylistic/no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }],
985
+ '@stylistic/no-tabs': ['error'],
986
+ '@stylistic/no-trailing-spaces': ['error'],
987
+ '@stylistic/no-whitespace-before-property': ['error'],
988
+ '@stylistic/object-curly-spacing': ['error', 'always'],
989
+ '@stylistic/object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],
990
+ '@stylistic/operator-linebreak': [
991
+ 'error',
992
+ 'after',
993
+ { overrides: { '?': 'before', ':': 'before', '|': 'before' } },
994
+ ],
995
+ '@stylistic/padded-blocks': ['error', 'never'],
996
+ '@stylistic/quote-props': ['error', 'as-needed'],
997
+ '@stylistic/quotes': ['error', 'single', { avoidEscape: true }],
998
+ '@stylistic/rest-spread-spacing': ['error', 'never'],
999
+ '@stylistic/semi-spacing': ['error', { before: false, after: true }],
1000
+ '@stylistic/space-before-blocks': ['error', 'always'],
1001
+ '@stylistic/space-before-function-paren': [
1002
+ 'error',
1003
+ {
1004
+ anonymous: 'always',
1005
+ named: 'never',
1006
+ asyncArrow: 'always',
1007
+ },
1008
+ ],
1009
+ '@stylistic/space-in-parens': ['error', 'never'],
1010
+ '@stylistic/space-infix-ops': ['error'],
1011
+ '@stylistic/space-unary-ops': [
1012
+ 'error',
1013
+ {
1014
+ words: true,
1015
+ nonwords: false,
1016
+ },
1017
+ ],
1018
+ '@stylistic/spaced-comment': [
1019
+ 'error',
1020
+ 'always',
1021
+ {
1022
+ line: {
1023
+ exceptions: ['-', '+'],
1024
+ markers: ['=', '!', '/'],
1025
+ },
1026
+ block: {
1027
+ exceptions: ['-', '+'],
1028
+ markers: ['=', '!', ':', '::'],
1029
+ balanced: true,
1030
+ },
1031
+ },
1032
+ ],
1033
+ '@stylistic/template-curly-spacing': ['error'],
1034
+ '@stylistic/template-tag-spacing': ['error', 'never'],
1035
+ '@stylistic/type-annotation-spacing': ['error'],
1036
+ '@stylistic/type-generic-spacing': ['error'],
1037
+ '@stylistic/type-named-tuple-spacing': ['error'],
1038
+ '@stylistic/wrap-iife': ['error', 'any', { functionPrototypeMethods: true }],
1039
+ '@stylistic/yield-star-spacing': ['error', 'both'],
1040
+ '@stylistic/semi': ['error', 'always'],
1041
+ '@stylistic/lines-between-class-members': [
1042
+ 'error',
1043
+ 'always',
1044
+ {
1045
+ exceptAfterSingleLine: false,
1046
+ exceptAfterOverload: true,
1047
+ },
1048
+ ],
1049
+ },
1050
+ },
1051
+ ];
1052
+ export default config;