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