aboutsummaryrefslogtreecommitdiffstats
path: root/.eslintrc.cjs
blob: af744db3e167c86bb20777bc3fd07debb05d8d19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
const restrictedSyntax = ['WithStatement', 'ForInStatement', 'LabeledStatement', 'SequenceExpression'];

module.exports = {
  root: true,
  reportUnusedDisableDirectives: true,
  ignorePatterns: [
    '/web_src/js/vendor',
    '/web_src/fomantic',
    '/public/assets/js',
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    sourceType: 'module',
    ecmaVersion: 'latest',
    project: true,
    extraFileExtensions: ['.vue'],
    parser: '@typescript-eslint/parser', // for vue plugin - https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser
  },
  settings: {
    'import-x/extensions': ['.js', '.ts'],
    'import-x/parsers': {
      '@typescript-eslint/parser': ['.js', '.ts'],
    },
    'import-x/resolver': {
      typescript: true,
    },
  },
  plugins: [
    '@eslint-community/eslint-plugin-eslint-comments',
    '@stylistic/eslint-plugin-js',
    '@typescript-eslint/eslint-plugin',
    'eslint-plugin-array-func',
    'eslint-plugin-github',
    'eslint-plugin-import-x',
    'eslint-plugin-no-jquery',
    'eslint-plugin-no-use-extend-native',
    'eslint-plugin-regexp',
    'eslint-plugin-sonarjs',
    'eslint-plugin-unicorn',
    'eslint-plugin-vitest',
    'eslint-plugin-vitest-globals',
    'eslint-plugin-wc',
  ],
  env: {
    es2024: true,
    node: true,
  },
  overrides: [
    {
      files: ['web_src/**/*'],
      globals: {
        __webpack_public_path__: true,
        process: false, // https://github.com/webpack/webpack/issues/15833
      },
    },
    {
      files: ['web_src/**/*', 'docs/**/*'],
      env: {
        browser: true,
        node: false,
      },
    },
    {
      files: ['*.config.*'],
      rules: {
        'import-x/no-unused-modules': [0],
      },
    },
    {
      files: ['**/*.d.ts'],
      rules: {
        'import-x/no-unused-modules': [0],
        '@typescript-eslint/consistent-type-definitions': [0],
        '@typescript-eslint/consistent-type-imports': [0],
      },
    },
    {
      files: ['web_src/js/types.ts'],
      rules: {
        'import-x/no-unused-modules': [0],
      },
    },
    {
      files: ['**/*.test.*', 'web_src/js/test/setup.ts'],
      env: {
        'vitest-globals/env': true,
      },
      rules: {
        'vitest/consistent-test-filename': [0],
        'vitest/consistent-test-it': [0],
        'vitest/expect-expect': [0],
        'vitest/max-expects': [0],
        'vitest/max-nested-describe': [0],
        'vitest/no-alias-methods': [0],
        'vitest/no-commented-out-tests': [0],
        'vitest/no-conditional-expect': [0],
        'vitest/no-conditional-in-test': [0],
        'vitest/no-conditional-tests': [0],
        'vitest/no-disabled-tests': [0],
        'vitest/no-done-callback': [0],
        'vitest/no-duplicate-hooks': [0],
        'vitest/no-focused-tests': [0],
        'vitest/no-hooks': [0],
        'vitest/no-identical-title': [2],
        'vitest/no-interpolation-in-snapshots': [0],
        'vitest/no-large-snapshots': [0],
        'vitest/no-mocks-import': [0],
        'vitest/no-restricted-matchers': [0],
        'vitest/no-restricted-vi-methods': [0],
        'vitest/no-standalone-expect': [0],
        'vitest/no-test-prefixes': [0],
        'vitest/no-test-return-statement': [0],
        'vitest/prefer-called-with': [0],
        'vitest/prefer-comparison-matcher': [0],
        'vitest/prefer-each': [0],
        'vitest/prefer-equality-matcher': [0],
        'vitest/prefer-expect-resolves': [0],
        'vitest/prefer-hooks-in-order': [0],
        'vitest/prefer-hooks-on-top': [2],
        'vitest/prefer-lowercase-title': [0],
        'vitest/prefer-mock-promise-shorthand': [0],
        'vitest/prefer-snapshot-hint': [0],
        'vitest/prefer-spy-on': [0],
        'vitest/prefer-strict-equal': [0],
        'vitest/prefer-to-be': [0],
        'vitest/prefer-to-be-falsy': [0],
        'vitest/prefer-to-be-object': [0],
        'vitest/prefer-to-be-truthy': [0],
        'vitest/prefer-to-contain': [0],
        'vitest/prefer-to-have-length': [0],
        'vitest/prefer-todo': [0],
        'vitest/require-hook': [0],
        'vitest/require-to-throw-message': [0],
        'vitest/require-top-level-describe': [0],
        'vitest/valid-describe-callback': [2],
        'vitest/valid-expect': [2],
        'vitest/valid-title': [2],
      },
    },
    {
      files: ['web_src/js/modules/fetch.ts', 'web_src/js/standalone/**/*'],
      rules: {
        'no-restricted-syntax': [2, ...restrictedSyntax],
      },
    },
    {
      files: ['**/*.vue'],
      plugins: [
        'eslint-plugin-vue',
        'eslint-plugin-vue-scoped-css',
      ],
      extends: [
        'plugin:vue/vue3-recommended',
        'plugin:vue-scoped-css/vue3-recommended',
      ],
      rules: {
        'vue/attributes-order': [0],
        'vue/html-closing-bracket-spacing': [2, {startTag: 'never', endTag: 'never', selfClosingTag: 'never'}],
        'vue/max-attributes-per-line': [0],
        'vue/singleline-html-element-content-newline': [0],
      },
    },
    {
      files: ['tests/e2e/**'],
      plugins: [
        'eslint-plugin-playwright'
      ],
      extends: [
        'plugin:playwright/recommended',
      ],
    },
  ],
  rules: {
    '@eslint-community/eslint-comments/disable-enable-pair': [2],
    '@eslint-community/eslint-comments/no-aggregating-enable': [2],
    '@eslint-community/eslint-comments/no-duplicate-disable': [2],
    '@eslint-community/eslint-comments/no-restricted-disable': [0],
    '@eslint-community/eslint-comments/no-unlimited-disable': [2],
    '@eslint-community/eslint-comments/no-unused-disable': [2],
    '@eslint-community/eslint-comments/no-unused-enable': [2],
    '@eslint-community/eslint-comments/no-use': [0],
    '@eslint-community/eslint-comments/require-description': [0],
    '@stylistic/js/array-bracket-newline': [0],
    '@stylistic/js/array-bracket-spacing': [2, 'never'],
    '@stylistic/js/array-element-newline': [0],
    '@stylistic/js/arrow-parens': [2, 'always'],
    '@stylistic/js/arrow-spacing': [2, {before: true, after: true}],
    '@stylistic/js/block-spacing': [0],
    '@stylistic/js/brace-style': [2, '1tbs', {allowSingleLine: true}],
    '@stylistic/js/comma-dangle': [2, 'always-multiline'],
    '@stylistic/js/comma-spacing': [2, {before: false, after: true}],
    '@stylistic/js/comma-style': [2, 'last'],
    '@stylistic/js/computed-property-spacing': [2, 'never'],
    '@stylistic/js/dot-location': [2, 'property'],
    '@stylistic/js/eol-last': [2],
    '@stylistic/js/function-call-argument-newline': [0],
    '@stylistic/js/function-call-spacing': [2, 'never'],
    '@stylistic/js/function-paren-newline': [0],
    '@stylistic/js/generator-star-spacing': [0],
    '@stylistic/js/implicit-arrow-linebreak': [0],
    '@stylistic/js/indent': [2, 2, {ignoreComments: true, SwitchCase: 1}],
    '@stylistic/js/key-spacing': [2],
    '@stylistic/js/keyword-spacing': [2],
    '@stylistic/js/line-comment-position': [0],
    '@stylistic/js/linebreak-style': [2, 'unix'],
    '@stylistic/js/lines-around-comment': [0],
    '@stylistic/js/lines-between-class-members': [0],
    '@stylistic/js/max-len': [0],
    '@stylistic/js/max-statements-per-line': [0],
    '@stylistic/js/multiline-comment-style': [0],
    '@stylistic/js/multiline-ternary': [0],
    '@stylistic/js/new-parens': [2],
    '@stylistic/js/newline-per-chained-call': [0],
    '@stylistic/js/no-confusing-arrow': [0],
    '@stylistic/js/no-extra-parens': [0],
    '@stylistic/js/no-extra-semi': [2],
    '@stylistic/js/no-floating-decimal': [0],
    '@stylistic/js/no-mixed-operators': [0],
    '@stylistic/js/no-mixed-spaces-and-tabs': [2],
    '@stylistic/js/no-multi-spaces': [2, {ignoreEOLComments: true, exceptions: {Property: true}}],
    '@stylistic/js/no-multiple-empty-lines': [2, {max: 1, maxEOF: 0, maxBOF: 0}],
    '@stylistic/js/no-tabs': [2],
    '@stylistic/js/no-trailing-spaces': [2],
    '@stylistic/js/no-whitespace-before-property': [2],
    '@stylistic/js/nonblock-statement-body-position': [2],
    '@stylistic/js/object-curly-newline': [0],
    '@stylistic/js/object-curly-spacing': [2, 'never'],
    '@stylistic/js/object-property-newline': [0],
    '@stylistic/js/one-var-declaration-per-line': [0],
    '@stylistic/js/operator-linebreak': [2, 'after'],
    '@stylistic/js/padded-blocks': [2, 'never'],
    '@stylistic/js/padding-line-between-statements': [0],
    '@stylistic/js/quote-props': [0],
    '@stylistic/js/quotes': [2, 'single', {avoidEscape: true, allowTemplateLiterals: true}],
    '@stylistic/js/rest-spread-spacing': [2, 'never'],
    '@stylistic/js/semi': [2, 'always', {omitLastInOneLineBlock: true}],
    '@stylistic/js/semi-spacing': [2, {before: false, after: true}],
    '@stylistic/js/semi-style': [2, 'last'],
    '@stylistic/js/space-before-blocks': [2, 'always'],
    '@stylistic/js/space-before-function-paren': [2, {anonymous: 'ignore', named: 'never', asyncArrow: 'always'}],
    '@stylistic/js/space-in-parens': [2, 'never'],
    '@stylistic/js/space-infix-ops': [2],
    '@stylistic/js/space-unary-ops': [2],
    '@stylistic/js/spaced-comment': [2, 'always'],
    '@stylistic/js/switch-colon-spacing': [2],
    '@stylistic/js/template-curly-spacing': [2, 'never'],
    '@stylistic/js/template-tag-spacing': [2, 'never'],
    '@stylistic/js/wrap-iife': [2, 'inside'],
    '@stylistic/js/wrap-regex': [0],
    '@stylistic/js/yield-star-spacing': [2, 'after'],
    '@typescript-eslint/adjacent-overload-signatures': [0],
    '@typescript-eslint/array-type': [0],
    '@typescript-eslint/await-thenable': [2],
    '@typescript-eslint/ban-ts-comment': [2, {'ts-expect-error': false, 'ts-ignore': true, 'ts-nocheck': false, 'ts-check': false}],
    '@typescript-eslint/ban-tslint-comment': [0],
    '@typescript-eslint/class-literal-property-style': [0],
    '@typescript-eslint/class-methods-use-this': [0],
    '@typescript-eslint/consistent-generic-constructors': [0],
    '@typescript-eslint/consistent-indexed-object-style': [0],
    '@typescript-eslint/consistent-return': [0],
    '@typescript-eslint/consistent-type-assertions': [2, {assertionStyle: 'as', objectLiteralTypeAssertions: 'allow'}],
    '@typescript-eslint/consistent-type-definitions': [2, 'type'],
    '@typescript-eslint/consistent-type-exports': [2, {fixMixedExportsWithInlineTypeSpecifier: false}],
    '@typescript-eslint/consistent-type-imports': [2, {prefer: 'type-imports', fixStyle: 'separate-type-imports', disallowTypeAnnotations: true}],
    '@typescript-eslint/default-param-last': [0],
    '@typescript-eslint/dot-notation': [0],
    '@typescript-eslint/explicit-function-return-type': [0],
    '@typescript-eslint/explicit-member-accessibility': [0],
    '@typescript-eslint/explicit-module-boundary-types': [0],
    '@typescript-eslint/init-declarations': [0],
    '@typescript-eslint/max-params': [0],
    '@typescript-eslint/member-ordering': [0],
    '@typescript-eslint/method-signature-style': [0],
    '@typescript-eslint/naming-convention': [0],
    '@typescript-eslint/no-array-constructor': [2],
    '@typescript-eslint/no-array-delete': [2],
    '@typescript-eslint/no-base-to-string': [0],
    '@typescript-eslint/no-confusing-non-null-assertion': [2],
    '@typescript-eslint/no-confusing-void-expression': [0],
    '@typescript-eslint/no-deprecated': [2],
    '@typescript-eslint/no-dupe-class-members': [0],
    '@typescript-eslint/no-duplicate-enum-values': [2],
    '@typescript-eslint/no-duplicate-type-constituents': [2, {ignoreUnions: true}],
    '@typescript-eslint/no-dynamic-delete': [0],
    '@typescript-eslint/no-empty-function': [0],
    '@typescript-eslint/no-empty-interface': [0],
    '@typescript-eslint/no-empty-object-type': [2],
    '@typescript-eslint/no-explicit-any': [0],
    '@typescript-eslint/no-extra-non-null-assertion': [2],
    '@typescript-eslint/no-extraneous-class': [0],
    '@typescript-eslint/no-floating-promises': [0],
    '@typescript-eslint/no-for-in-array': [2],
    '@typescript-eslint/no-implied-eval': [2],
    '@typescript-eslint/no-import-type-side-effects': [0], // dupe with consistent-type-imports
    '@typescript-eslint/no-inferrable-types': [0],
    '@typescript-eslint/no-invalid-this': [0],
    '@typescript-eslint/no-invalid-void-type': [0],
    '@typescript-eslint/no-loop-func': [0],
    '@typescript-eslint/no-loss-of-precision': [0],
    '@typescript-eslint/no-magic-numbers': [0],
    '@typescript-eslint/no-meaningless-void-operator': [0],
    '@typescript-eslint/no-misused-new': [2],
    '@typescript-eslint/no-misused-promises': [2, {checksVoidReturn: {attributes: false, arguments: false}}],
    '@typescript-eslint/no-mixed-enums': [0],
    '@typescript-eslint/no-namespace': [2],
    '@typescript-eslint/no-non-null-asserted-nullish-coalescing': [0],
    '@typescript-eslint/no-non-null-asserted-optional-chain': [2],
    '@typescript-eslint/no-non-null-assertion': [0],
    '@typescript-eslint/no-redeclare': [0],
    '@typescript-eslint/no-redundant-type-constituents': [2],
    '@typescript-eslint/no-require-imports': [2],
    '@typescript-eslint/no-restricted-imports': [0],
    '@typescript-eslint/no-restricted-types': [0],
    '@typescript-eslint/no-shadow': [0],
    '@typescript-eslint/no-this-alias': [0], // handled by unicorn/no-this-assignment
    '@typescript-eslint/no-unnecessary-boolean-literal-compare': [0],
    '@typescript-eslint/no-unnecessary-condition': [0],
    '@typescript-eslint/no-unnecessary-qualifier': [0],
    '@typescript-eslint/no-unnecessary-template-expression': [0],
    '@typescript-eslint/no-unnecessary-type-arguments': [0],
    '@typescript-eslint/no-unnecessary-type-assertion': [2],
    '@typescript-eslint/no-unnecessary-type-constraint': [2],
    '@typescript-eslint/no-unsafe-argument': [0],
    '@typescript-eslint/no-unsafe-assignment': [0],
    '@typescript-eslint/no-unsafe-call': [0],
    '@typescript-eslint/no-unsafe-declaration-merging': [2],
    '@typescript-eslint/no-unsafe-enum-comparison': [2],
    '@typescript-eslint/no-unsafe-function-type': [2],
    '@typescript-eslint/no-unsafe-member-access': [0],
    '@typescript-eslint/no-unsafe-return': [0],
    '@typescript-eslint/no-unsafe-unary-minus': [2],
    '@typescript-eslint/no-unused-expressions': [0],
    '@typescript-eslint/no-unused-vars': [2, {vars: 'all', args: 'all', caughtErrors: 'all', ignoreRestSiblings: false, argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_'}],
    '@typescript-eslint/no-use-before-define': [0],
    '@typescript-eslint/no-useless-constructor': [0],
    '@typescript-eslint/no-useless-empty-export': [0],
    '@typescript-eslint/no-wrapper-object-types': [2],
    '@typescript-eslint/non-nullable-type-assertion-style': [0],
    '@typescript-eslint/only-throw-error': [2],
    '@typescript-eslint/parameter-properties': [0],
    '@typescript-eslint/prefer-as-const': [2],
    '@typescript-eslint/prefer-destructuring': [0],
    '@typescript-eslint/prefer-enum-initializers': [0],
    '@typescript-eslint/prefer-find': [2],
    '@typescript-eslint/prefer-for-of': [2],
    '@typescript-eslint/prefer-function-type': [2],
    '@typescript-eslint/prefer-includes': [2],
    '@typescript-eslint/prefer-literal-enum-member': [0],
    '@typescript-eslint/prefer-namespace-keyword': [0],
    '@typescript-eslint/prefer-nullish-coalescing': [0],
    '@typescript-eslint/prefer-optional-chain': [2, {requireNullish: true}],
    '@typescript-eslint/prefer-promise-reject-errors': [0],
    '@typescript-eslint/prefer-readonly': [0],
    '@typescript-eslint/prefer-readonly-parameter-types': [0],
    '@typescript-eslint/prefer-reduce-type-parameter': [0],
    '@typescript-eslint/prefer-regexp-exec': [0],
    '@typescript-eslint/prefer-return-this-type': [0],
    '@typescript-eslint/prefer-string-starts-ends-with': [2, {allowSingleElementEquality: 'always'}],
    '@typescript-eslint/promise-function-async': [0],
    '@typescript-eslint/require-array-sort-compare': [0],
    '@typescript-eslint/require-await': [0],
    '@typescript-eslint/restrict-plus-operands': [2],
    '@typescript-eslint/restrict-template-expressions': [0],
    '@typescript-eslint/return-await': [0],
    '@typescript-eslint/strict-boolean-expressions': [0],
    '@typescript-eslint/switch-exhaustiveness-check': [0],
    '@typescript-eslint/triple-slash-reference': [2],
    '@typescript-eslint/typedef': [0],
    '@typescript-eslint/unbound-method': [0], // too many false-positives
    '@typescript-eslint/unified-signatures': [2],
    'accessor-pairs': [2],
    'array-callback-return': [2, {checkForEach: true}],
    'array-func/avoid-reverse': [2],
    'array-func/from-map': [2],
    'array-func/no-unnecessary-this-arg': [2],
    'array-func/prefer-array-from': [2],
    'array-func/prefer-flat-map': [0], // handled by unicorn/prefer-array-flat-map
    'array-func/prefer-flat': [0], // handled by unicorn/prefer-array-flat
    'arrow-body-style': [0],
    'block-scoped-var': [2],
    'camelcase': [0],
    'capitalized-comments': [0],
    'class-methods-use-this': [0],
    'complexity': [0],
    'consistent-return': [0],
    'consistent-this': [0],
    'constructor-super': [2],
    'curly': [0],
    'default-case-last': [2],
    'default-case': [0],
    'default-param-last': [0],
    'dot-notation': [0],
    'eqeqeq': [2],
    'for-direction': [2],
    'func-name-matching': [2],
    'func-names': [0],
    'func-style': [0],
    'getter-return': [2],
    'github/a11y-aria-label-is-well-formatted': [0],
    'github/a11y-no-title-attribute': [0],
    'github/a11y-no-visually-hidden-interactive-element': [0],
    'github/a11y-role-supports-aria-props': [0],
    'github/a11y-svg-has-accessible-name': [0],
    'github/array-foreach': [0],
    'github/async-currenttarget': [2],
    'github/async-preventdefault': [2],
    'github/authenticity-token': [0],
    'github/get-attribute': [0],
    'github/js-class-name': [0],
    'github/no-blur': [0],
    'github/no-d-none': [0],
    'github/no-dataset': [2],
    'github/no-dynamic-script-tag': [2],
    'github/no-implicit-buggy-globals': [2],
    'github/no-inner-html': [0],
    'github/no-innerText': [2],
    'github/no-then': [2],
    'github/no-useless-passive': [2],
    'github/prefer-observers': [2],
    'github/require-passive-events': [2],
    'github/unescaped-html-literal': [0],
    'grouped-accessor-pairs': [2],
    'guard-for-in': [0],
    'id-blacklist': [0],
    'id-length': [0],
    'id-match': [0],
    'import-x/consistent-type-specifier-style': [0],
    'import-x/default': [0],
    'import-x/dynamic-import-chunkname': [0],
    'import-x/export': [2],
    'import-x/exports-last': [0],
    'import-x/extensions': [2, 'always', {ignorePackages: true}],
    'import-x/first': [2],
    'import-x/group-exports': [0],
    'import-x/max-dependencies': [0],
    'import-x/named': [2],
    'import-x/namespace': [0],
    'import-x/newline-after-import': [0],
    'import-x/no-absolute-path': [0],
    'import-x/no-amd': [2],
    'import-x/no-anonymous-default-export': [0],
    'import-x/no-commonjs': [2],
    'import-x/no-cycle': [2, {ignoreExternal: true, maxDepth: 1}],
    'import-x/no-default-export': [0],
    'import-x/no-deprecated': [0],
    'import-x/no-dynamic-require': [0],
    'import-x/no-empty-named-blocks': [2],
    'import-x/no-extraneous-dependencies': [2],
    'import-x/no-import-module-exports': [0],
    'import-x/no-internal-modules': [0],
    'import-x/no-mutable-exports': [0],
    'import-x/no-named-as-default-member': [0],
    'import-x/no-named-as-default': [0],
    'import-x/no-named-default': [0],
    'import-x/no-named-export': [0],
    'import-x/no-namespace': [0],
    'import-x/no-nodejs-modules': [0],
    'import-x/no-relative-packages': [0],
    'import-x/no-relative-parent-imports': [0],
    'import-x/no-restricted-paths': [0],
    'import-x/no-self-import': [2],
    'import-x/no-unassigned-import': [0],
    'import-x/no-unresolved': [2, {commonjs: true, ignore: ['\\?.+$']}],
    'import-x/no-unused-modules': [2, {unusedExports: true}],
    'import-x/no-useless-path-segments': [2, {commonjs: true}],
    'import-x/no-webpack-loader-syntax': [2],
    'import-x/order': [0],
    'import-x/prefer-default-export': [0],
    'import-x/unambiguous': [0],
    'init-declarations': [0],
    'line-comment-position': [0],
    'logical-assignment-operators': [0],
    'max-classes-per-file': [0],
    'max-depth': [0],
    'max-lines-per-function': [0],
    'max-lines': [0],
    'max-nested-callbacks': [0],
    'max-params': [0],
    'max-statements': [0],
    'multiline-comment-style': [2, 'separate-lines'],
    'new-cap': [0],
    'no-alert': [0],
    'no-array-constructor': [0], // handled by @typescript-eslint/no-array-constructor
    'no-async-promise-executor': [0],
    'no-await-in-loop': [0],
    'no-bitwise': [0],
    'no-buffer-constructor': [0],
    'no-caller': [2],
    'no-case-declarations': [2],
    'no-class-assign': [2],
    'no-compare-neg-zero': [2],
    'no-cond-assign': [2, 'except-parens'],
    'no-console': [1, {allow: ['debug', 'info', 'warn', 'error']}],
    'no-const-assign': [2],
    'no-constant-binary-expression': [2],
    'no-constant-condition': [0],
    'no-constructor-return': [2],
    'no-continue': [0],
    'no-control-regex': [0],
    'no-debugger': [1],
    'no-delete-var': [2],
    'no-div-regex': [0],
    'no-dupe-args': [2],
    'no-dupe-class-members': [2],
    'no-dupe-else-if': [2],
    'no-dupe-keys': [2],
    'no-duplicate-case': [2],
    'no-duplicate-imports': [0],
    'no-else-return': [2],
    'no-empty-character-class': [2],
    'no-empty-function': [0],
    'no-empty-pattern': [2],
    'no-empty-static-block': [2],
    'no-empty': [2, {allowEmptyCatch: true}],
    'no-eq-null': [2],
    'no-eval': [2],
    'no-ex-assign': [2],
    'no-extend-native': [2],
    'no-extra-bind': [2],
    'no-extra-boolean-cast': [2],
    'no-extra-label': [0],
    'no-fallthrough': [2],
    'no-func-assign': [2],
    'no-global-assign': [2],
    'no-implicit-coercion': [2],
    'no-implicit-globals': [0],
    'no-implied-eval': [0], // handled by @typescript-eslint/no-implied-eval
    'no-import-assign': [2],
    'no-inline-comments': [0],
    'no-inner-declarations': [2],
    'no-invalid-regexp': [2],
    'no-invalid-this': [0],
    'no-irregular-whitespace': [2],
    'no-iterator': [2],
    'no-jquery/no-ajax-events': [2],
    'no-jquery/no-ajax': [2],
    'no-jquery/no-and-self': [2],
    'no-jquery/no-animate-toggle': [2],
    'no-jquery/no-animate': [2],
    'no-jquery/no-append-html': [2],
    'no-jquery/no-attr': [2],
    'no-jquery/no-bind': [2],
    'no-jquery/no-box-model': [2],
    'no-jquery/no-browser': [2],
    'no-jquery/no-camel-case': [2],
    'no-jquery/no-class-state': [2],
    'no-jquery/no-class': [0],
    'no-jquery/no-clone': [2],
    'no-jquery/no-closest': [0],
    'no-jquery/no-constructor-attributes': [2],
    'no-jquery/no-contains': [2],
    'no-jquery/no-context-prop': [2],
    'no-jquery/no-css': [2],
    'no-jquery/no-data': [0],
    'no-jquery/no-deferred': [2],
    'no-jquery/no-delegate': [2],
    'no-jquery/no-done-fail': [2],
    'no-jquery/no-each-collection': [0],
    'no-jquery/no-each-util': [0],
    'no-jquery/no-each': [0],
    'no-jquery/no-error-shorthand': [2],
    'no-jquery/no-error': [2],
    'no-jquery/no-escape-selector': [2],
    'no-jquery/no-event-shorthand': [2],
    'no-jquery/no-extend': [2],
    'no-jquery/no-fade': [2],
    'no-jquery/no-filter': [0],
    'no-jquery/no-find-collection': [0],
    'no-jquery/no-find-util': [2],
    'no-jquery/no-find': [0],
    'no-jquery/no-fx-interval': [2],
    'no-jquery/no-fx': [2],
    'no-jquery/no-global-eval': [2],
    'no-jquery/no-global-selector': [0],
    'no-jquery/no-grep': [2],
    'no-jquery/no-has': [2],
    'no-jquery/no-hold-ready': [2],
    'no-jquery/no-html': [0],
    'no-jquery/no-in-array': [2],
    'no-jquery/no-is-array': [2],
    'no-jquery/no-is-empty-object': [2],
    'no-jquery/no-is-function': [2],
    'no-jquery/no-is-numeric': [2],
    'no-jquery/no-is-plain-object': [2],
    'no-jquery/no-is-window': [2],
    'no-jquery/no-is': [2],
    'no-jquery/no-jquery-constructor': [0],
    'no-jquery/no-live': [2],
    'no-jquery/no-load-shorthand': [2],
    'no-jquery/no-load': [2],
    'no-jquery/no-map-collection': [0],
    'no-jquery/no-map-util': [2],
    'no-jquery/no-map': [2],
    'no-jquery/no-merge': [2],
    'no-jquery/no-node-name': [2],
    'no-jquery/no-noop': [2],
    'no-jquery/no-now': [2],
    'no-jquery/no-on-ready': [2],
    'no-jquery/no-other-methods': [0],
    'no-jquery/no-other-utils': [2],
    'no-jquery/no-param': [2],
    'no-jquery/no-parent': [0],
    'no-jquery/no-parents': [2],
    'no-jquery/no-parse-html-literal': [2],
    'no-jquery/no-parse-html': [2],
    'no-jquery/no-parse-json': [2],
    'no-jquery/no-parse-xml': [2],
    'no-jquery/no-prop': [2],
    'no-jquery/no-proxy': [2],
    'no-jquery/no-ready-shorthand': [2],
    'no-jquery/no-ready': [2],
    'no-jquery/no-selector-prop': [2],
    'no-jquery/no-serialize': [2],
    'no-jquery/no-size': [2],
    'no-jquery/no-sizzle': [2],
    'no-jquery/no-slide': [2],
    'no-jquery/no-sub': [2],
    'no-jquery/no-support': [2],
    'no-jquery/no-text': [2],
    'no-jquery/no-trigger': [0],
    'no-jquery/no-trim': [2],
    'no-jquery/no-type': [2],
    'no-jquery/no-unique': [2],
    'no-jquery/no-unload-shorthand': [2],
    'no-jquery/no-val': [0],
    'no-jquery/no-visibility': [2],
    'no-jquery/no-when': [2],
    'no-jquery/no-wrap': [2],
    'no-jquery/variable-pattern': [2],
    'no-label-var': [2],
    'no-labels': [0], // handled by no-restricted-syntax
    'no-lone-blocks': [2],
    'no-lonely-if': [0],
    'no-loop-func': [0],
    'no-loss-of-precision': [2],
    'no-magic-numbers': [0],
    'no-misleading-character-class': [2],
    'no-multi-assign': [0],
    'no-multi-str': [2],
    'no-negated-condition': [0],
    'no-nested-ternary': [0],
    'no-new-func': [2],
    'no-new-native-nonconstructor': [2],
    'no-new-object': [2],
    'no-new-symbol': [2],
    'no-new-wrappers': [2],
    'no-new': [0],
    'no-nonoctal-decimal-escape': [2],
    'no-obj-calls': [2],
    'no-octal-escape': [2],
    'no-octal': [2],
    'no-param-reassign': [0],
    'no-plusplus': [0],
    'no-promise-executor-return': [0],
    'no-proto': [2],
    'no-prototype-builtins': [2],
    'no-redeclare': [0], // must be disabled for typescript overloads
    'no-regex-spaces': [2],
    'no-restricted-exports': [0],
    'no-restricted-globals': [2, 'addEventListener', 'blur', 'close', 'closed', 'confirm', 'defaultStatus', 'defaultstatus', 'error', 'event', 'external', 'find', 'focus', 'frameElement', 'frames', 'history', 'innerHeight', 'innerWidth', 'isFinite', 'isNaN', 'length', 'locationbar', 'menubar', 'moveBy', 'moveTo', 'name', 'onblur', 'onerror', 'onfocus', 'onload', 'onresize', 'onunload', 'open', 'opener', 'opera', 'outerHeight', 'outerWidth', 'pageXOffset', 'pageYOffset', 'parent', 'print', 'removeEventListener', 'resizeBy', 'resizeTo', 'screen', 'screenLeft', 'screenTop', 'screenX', 'screenY', 'scroll', 'scrollbars', 'scrollBy', 'scrollTo', 'scrollX', 'scrollY', 'status', 'statusbar', 'stop', 'toolbar', 'top'],
    'no-restricted-imports': [0],
    'no-restricted-syntax': [2, ...restrictedSyntax, {selector: 'CallExpression[callee.name="fetch"]', message: 'use modules/fetch.ts instead'}],
    'no-return-assign': [0],
    'no-script-url': [2],
    'no-self-assign': [2, {props: true}],
    'no-self-compare': [2],
    'no-sequences': [2],
    'no-setter-return': [2],
    'no-shadow-restricted-names': [2],
    'no-shadow': [0],
    'no-sparse-arrays': [2],
    'no-template-curly-in-string': [2],
    'no-ternary': [0],
    'no-this-before-super': [2],
    'no-throw-literal': [2],
    'no-undef-init': [2],
    'no-undef': [0],
    'no-undefined': [0],
    'no-underscore-dangle': [0],
    'no-unexpected-multiline': [2],
    'no-unmodified-loop-condition': [2],
    'no-unneeded-ternary': [2],
    'no-unreachable-loop': [2],
    'no-unreachable': [2],
    'no-unsafe-finally': [2],
    'no-unsafe-negation': [2],
    'no-unused-expressions': [2],
    'no-unused-labels': [2],
    'no-unused-private-class-members': [2],
    'no-unused-vars': [0], // handled by @typescript-eslint/no-unused-vars
    'no-use-before-define': [2, {functions: false, classes: true, variables: true, allowNamedExports: true}],
    'no-use-extend-native/no-use-extend-native': [2],
    'no-useless-backreference': [2],
    'no-useless-call': [2],
    'no-useless-catch': [2],
    'no-useless-computed-key': [2],
    'no-useless-concat': [2],
    'no-useless-constructor': [2],
    'no-useless-escape': [2],
    'no-useless-rename': [2],
    'no-useless-return': [2],
    'no-var': [2],
    'no-void': [2],
    'no-warning-comments': [0],
    'no-with': [0], // handled by no-restricted-syntax
    'object-shorthand': [2, 'always'],
    'one-var-declaration-per-line': [0],
    'one-var': [0],
    'operator-assignment': [2, 'always'],
    'operator-linebreak': [2, 'after'],
    'prefer-arrow-callback': [2, {allowNamedFunctions: true, allowUnboundThis: true}],
    'prefer-const': [2, {destructuring: 'all', ignoreReadBeforeAssign: true}],
    'prefer-destructuring': [0],
    'prefer-exponentiation-operator': [2],
    'prefer-named-capture-group': [0],
    'prefer-numeric-literals': [2],
    'prefer-object-has-own': [2],
    'prefer-object-spread': [2],
    'prefer-promise-reject-errors': [2, {allowEmptyReject: false}],
    'prefer-regex-literals': [2],
    'prefer-rest-params': [2],
    'prefer-spread': [2],
    'prefer-template': [2],
    'radix': [2, 'as-needed'],
    'regexp/confusing-quantifier': [2],
    'regexp/control-character-escape': [2],
    'regexp/hexadecimal-escape': [0],
    'regexp/letter-case': [0],
    'regexp/match-any': [2],
    'regexp/negation': [2],
    'regexp/no-contradiction-with-assertion': [0],
    'regexp/no-control-character': [0],
    'regexp/no-dupe-characters-character-class': [2],
    'regexp/no-dupe-disjunctions': [2],
    'regexp/no-empty-alternative': [2],
    'regexp/no-empty-capturing-group': [2],
    'regexp/no-empty-character-class': [0],
    'regexp/no-empty-group': [2],
    'regexp/no-empty-lookarounds-assertion': [2],
    'regexp/no-empty-string-literal': [2],
    'regexp/no-escape-backspace': [2],
    'regexp/no-extra-lookaround-assertions': [0],
    'regexp/no-invalid-regexp': [2],
    'regexp/no-invisible-character': [2],
    'regexp/no-lazy-ends': [2],
    'regexp/no-legacy-features': [2],
    'regexp/no-misleading-capturing-group': [0],
    'regexp/no-misleading-unicode-character': [0],
    'regexp/no-missing-g-flag': [2],
    'regexp/no-non-standard-flag': [2],
    'regexp/no-obscure-range': [2],
    'regexp/no-octal': [2],
    'regexp/no-optional-assertion': [2],
    'regexp/no-potentially-useless-backreference': [2],
    'regexp/no-standalone-backslash': [2],
    'regexp/no-super-linear-backtracking': [0],
    'regexp/no-super-linear-move': [0],
    'regexp/no-trivially-nested-assertion': [2],
    'regexp/no-trivially-nested-quantifier': [2],
    'regexp/no-unused-capturing-group': [0],
    'regexp/no-useless-assertions': [2],
    'regexp/no-useless-backreference': [2],
    'regexp/no-useless-character-class': [2],
    'regexp/no-useless-dollar-replacements': [2],
    'regexp/no-useless-escape': [2],
    'regexp/no-useless-flag': [2],
    'regexp/no-useless-lazy': [2],
    'regexp/no-useless-non-capturing-group': [2],
    'regexp/no-useless-quantifier': [2],
    'regexp/no-useless-range': [2],
    'regexp/no-useless-set-operand': [2],
    'regexp/no-useless-string-literal': [2],
    'regexp/no-useless-two-nums-quantifier': [2],
    'regexp/no-zero-quantifier': [2],
    'regexp/optimal-lookaround-quantifier': [2],
    'regexp/optimal-quantifier-concatenation': [0],
    'regexp/prefer-character-class': [0],
    'regexp/prefer-d': [0],
    'regexp/prefer-escape-replacement-dollar-char': [0],
    'regexp/prefer-lookaround': [0],
    'regexp/prefer-named-backreference': [0],
    'regexp/prefer-named-capture-group': [0],
    'regexp/prefer-named-replacement': [0],
    'regexp/prefer-plus-quantifier': [2],
    'regexp/prefer-predefined-assertion': [2],
    'regexp/prefer-quantifier': [0],
    'regexp/prefer-question-quantifier': [2],
    'regexp/prefer-range': [2],
    'regexp/prefer-regexp-exec': [2],
    'regexp/prefer-regexp-test': [2],
    'regexp/prefer-result-array-groups': [0],
    'regexp/prefer-set-operation': [2],
    'regexp/prefer-star-quantifier': [2],
    'regexp/prefer-unicode-codepoint-escapes': [2],
    'regexp/prefer-w': [0],
    'regexp/require-unicode-regexp': [0],
    'regexp/simplify-set-operations': [2],
    'regexp/sort-alternatives': [0],
    'regexp/sort-character-class-elements': [0],
    'regexp/sort-flags': [0],
    'regexp/strict': [2],
    'regexp/unicode-escape': [0],
    'regexp/use-ignore-case': [0],
    'require-atomic-updates': [0],
    'require-await': [0], // handled by @typescript-eslint/require-await
    'require-unicode-regexp': [0],
    'require-yield': [2],
    'sonarjs/cognitive-complexity': [0],
    'sonarjs/elseif-without-else': [0],
    'sonarjs/max-switch-cases': [0],
    'sonarjs/no-all-duplicated-branches': [2],
    'sonarjs/no-collapsible-if': [0],
    'sonarjs/no-collection-size-mischeck': [2],
    'sonarjs/no-duplicate-string': [0],
    'sonarjs/no-duplicated-branches': [0],
    'sonarjs/no-element-overwrite': [2],
    'sonarjs/no-empty-collection': [2],
    'sonarjs/no-extra-arguments': [2],
    'sonarjs/no-gratuitous-expressions': [2],
    'sonarjs/no-identical-conditions': [2],
    'sonarjs/no-identical-expressions': [2],
    'sonarjs/no-identical-functions': [2, 5],
    'sonarjs/no-ignored-return': [2],
    'sonarjs/no-inverted-boolean-check': [2],
    'sonarjs/no-nested-switch': [0],
    'sonarjs/no-nested-template-literals': [0],
    'sonarjs/no-one-iteration-loop': [2],
    'sonarjs/no-redundant-boolean': [2],
    'sonarjs/no-redundant-jump': [2],
    'sonarjs/no-same-line-conditional': [2],
    'sonarjs/no-small-switch': [0],
    'sonarjs/no-unused-collection': [2],
    'sonarjs/no-use-of-empty-return-value': [2],
    'sonarjs/no-useless-catch': [2],
    'sonarjs/non-existent-operator': [2],
    'sonarjs/prefer-immediate-return': [0],
    'sonarjs/prefer-object-literal': [0],
    'sonarjs/prefer-single-boolean-return': [0],
    'sonarjs/prefer-while': [2],
    'sort-imports': [0],
    'sort-keys': [0],
    'sort-vars': [0],
    'strict': [0],
    'symbol-description': [2],
    'unicode-bom': [2, 'never'],
    'unicorn/better-regex': [0],
    'unicorn/catch-error-name': [0],
    'unicorn/consistent-destructuring': [2],
    'unicorn/consistent-empty-array-spread': [2],
    'unicorn/consistent-existence-index-check': [0],
    'unicorn/consistent-function-scoping': [0],
    'unicorn/custom-error-definition': [0],
    'unicorn/empty-brace-spaces': [2],
    'unicorn/error-message': [0],
    'unicorn/escape-case': [0],
    'unicorn/expiring-todo-comments': [0],
    'unicorn/explicit-length-check': [0],
    'unicorn/filename-case': [0],
    'unicorn/import-index': [0],
    'unicorn/import-style': [0],
    'unicorn/new-for-builtins': [2],
    'unicorn/no-abusive-eslint-disable': [0],
    'unicorn/no-anonymous-default-export': [0],
    'unicorn/no-array-callback-reference': [0],
    'unicorn/no-array-for-each': [2],
    'unicorn/no-array-method-this-argument': [2],
    'unicorn/no-array-push-push': [2],
    'unicorn/no-array-reduce': [2],
    'unicorn/no-await-expression-member': [0],
    'unicorn/no-await-in-promise-methods': [2],
    'unicorn/no-console-spaces': [0],
    'unicorn/no-document-cookie': [2],
    'unicorn/no-empty-file': [2],
    'unicorn/no-for-loop': [0],
    'unicorn/no-hex-escape': [0],
    'unicorn/no-instanceof-array': [0],
    'unicorn/no-invalid-fetch-options': [2],
    'unicorn/no-invalid-remove-event-listener': [2],
    'unicorn/no-keyword-prefix': [0],
    'unicorn/no-length-as-slice-end': [2],
    'unicorn/no-lonely-if': [2],
    'unicorn/no-magic-array-flat-depth': [0],
    'unicorn/no-negated-condition': [0],
    'unicorn/no-negation-in-equality-check': [2],
    'unicorn/no-nested-ternary': [0],
    'unicorn/no-new-array': [0],
    'unicorn/no-new-buffer': [0],
    'unicorn/no-null': [0],
    'unicorn/no-object-as-default-parameter': [0],
    'unicorn/no-process-exit': [0],
    'unicorn/no-single-promise-in-promise-methods': [2],
    'unicorn/no-static-only-class': [2],
    'unicorn/no-thenable': [2],
    'unicorn/no-this-assignment': [2],
    'unicorn/no-typeof-undefined': [2],
    'unicorn/no-unnecessary-await': [2],
    'unicorn/no-unnecessary-polyfills': [2],
    'unicorn/no-unreadable-array-destructuring': [0],
    'unicorn/no-unreadable-iife': [2],
    'unicorn/no-unused-properties': [2],
    'unicorn/no-useless-fallback-in-spread': [2],
    'unicorn/no-useless-length-check': [2],
    'unicorn/no-useless-promise-resolve-reject': [2],
    'unicorn/no-useless-spread': [2],
    'unicorn/no-useless-switch-case': [2],
    'unicorn/no-useless-undefined': [0],
    'unicorn/no-zero-fractions': [2],
    'unicorn/number-literal-case': [0],
    'unicorn/numeric-separators-style': [0],
    'unicorn/prefer-add-event-listener': [2],
    'unicorn/prefer-array-find': [2],
    'unicorn/prefer-array-flat-map': [2],
    'unicorn/prefer-array-flat': [2],
    'unicorn/prefer-array-index-of': [2],
    'unicorn/prefer-array-some': [2],
    'unicorn/prefer-at': [0],
    'unicorn/prefer-blob-reading-methods': [2],
    'unicorn/prefer-code-point': [0],
    'unicorn/prefer-date-now': [2],
    'unicorn/prefer-default-parameters': [0],
    'unicorn/prefer-dom-node-append': [2],
    'unicorn/prefer-dom-node-dataset': [0],
    'unicorn/prefer-dom-node-remove': [2],
    'unicorn/prefer-dom-node-text-content': [2],
    'unicorn/prefer-event-target': [2],
    'unicorn/prefer-export-from': [0],
    'unicorn/prefer-global-this': [0],
    'unicorn/prefer-includes': [2],
    'unicorn/prefer-json-parse-buffer': [0],
    'unicorn/prefer-keyboard-event-key': [2],
    'unicorn/prefer-logical-operator-over-ternary': [2],
    'unicorn/prefer-math-min-max': [2],
    'unicorn/prefer-math-trunc': [2],
    'unicorn/prefer-modern-dom-apis': [0],
    'unicorn/prefer-modern-math-apis': [2],
    'unicorn/prefer-module': [2],
    'unicorn/prefer-native-coercion-functions': [2],
    'unicorn/prefer-negative-index': [2],
    'unicorn/prefer-node-protocol': [2],
    'unicorn/prefer-number-properties': [0],
    'unicorn/prefer-object-from-entries': [2],
    'unicorn/prefer-object-has-own': [0],
    'unicorn/prefer-optional-catch-binding': [2],
    'unicorn/prefer-prototype-methods': [0],
    'unicorn/prefer-query-selector': [2],
    'unicorn/prefer-reflect-apply': [0],
    'unicorn/prefer-regexp-test': [2],
    'unicorn/prefer-set-has': [0],
    'unicorn/prefer-set-size': [2],
    'unicorn/prefer-spread': [0],
    'unicorn/prefer-string-raw': [0],
    'unicorn/prefer-string-replace-all': [0],
    'unicorn/prefer-string-slice': [0],
    'unicorn/prefer-string-starts-ends-with': [2],
    'unicorn/prefer-string-trim-start-end': [2],
    'unicorn/prefer-structured-clone': [2],
    'unicorn/prefer-switch': [0],
    'unicorn/prefer-ternary': [0],
    'unicorn/prefer-text-content': [2],
    'unicorn/prefer-top-level-await': [0],
    'unicorn/prefer-type-error': [0],
    'unicorn/prevent-abbreviations': [0],
    'unicorn/relative-url-style': [2],
    'unicorn/require-array-join-separator': [2],
    'unicorn/require-number-to-fixed-digits-argument': [2],
    'unicorn/require-post-message-target-origin': [0],
    'unicorn/string-content': [0],
    'unicorn/switch-case-braces': [0],
    'unicorn/template-indent': [2],
    'unicorn/text-encoding-identifier-case': [0],
    'unicorn/throw-new-error': [2],
    'use-isnan': [2],
    'valid-typeof': [2, {requireStringLiterals: true}],
    'vars-on-top': [0],
    'wc/attach-shadow-constructor': [2],
    'wc/define-tag-after-class-definition': [0],
    'wc/expose-class-on-global': [0],
    'wc/file-name-matches-element': [2],
    'wc/guard-define-call': [0],
    'wc/guard-super-call': [2],
    'wc/max-elements-per-file': [0],
    'wc/no-child-traversal-in-attributechangedcallback': [2],
    'wc/no-child-traversal-in-connectedcallback': [2],
    'wc/no-closed-shadow-root': [2],
    'wc/no-constructor-attributes': [2],
    'wc/no-constructor-params': [2],
    'wc/no-constructor': [2],
    'wc/no-customized-built-in-elements': [2],
    'wc/no-exports-with-element': [0],
    'wc/no-invalid-element-name': [2],
    'wc/no-invalid-extends': [2],
    'wc/no-method-prefixed-with-on': [2],
    'wc/no-self-class': [2],
    'wc/no-typos': [2],
    'wc/require-listener-teardown': [2],
    'wc/tag-name-matches-class': [2],
    'yoda': [2, 'never'],
  },
};