@gooddata/eslint-config 11.19.0-alpha.0 → 11.19.0-alpha.1

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.
Files changed (45) hide show
  1. package/PACKAGES_V8.md +30 -0
  2. package/PACKAGES_V9.md +31 -0
  3. package/README.md +88 -19
  4. package/dist/base.d.ts +12 -0
  5. package/dist/base.js +2206 -0
  6. package/dist/base.json +9 -47
  7. package/dist/browser-esm.d.ts +12 -0
  8. package/dist/browser-esm.js +2226 -0
  9. package/dist/browser-esm.json +9 -47
  10. package/dist/browser.d.ts +12 -0
  11. package/dist/browser.js +2211 -0
  12. package/dist/browser.json +9 -47
  13. package/dist/esm-react-cypress.d.ts +12 -0
  14. package/dist/esm-react-cypress.js +2309 -0
  15. package/dist/esm-react-cypress.json +10 -48
  16. package/dist/esm-react-vitest-storybook.d.ts +12 -0
  17. package/dist/esm-react-vitest-storybook.js +2331 -0
  18. package/dist/esm-react-vitest-storybook.json +14 -50
  19. package/dist/esm-react-vitest.d.ts +12 -0
  20. package/dist/esm-react-vitest.js +2297 -0
  21. package/dist/esm-react-vitest.json +10 -48
  22. package/dist/esm-react.d.ts +12 -0
  23. package/dist/esm-react.js +2272 -0
  24. package/dist/esm-react.json +10 -48
  25. package/dist/esm-vitest.d.ts +12 -0
  26. package/dist/esm-vitest.js +2246 -0
  27. package/dist/esm-vitest.json +9 -47
  28. package/dist/esm.d.ts +12 -0
  29. package/dist/esm.js +2221 -0
  30. package/dist/esm.json +9 -47
  31. package/dist/react-cypress.d.ts +12 -0
  32. package/dist/react-cypress.js +2300 -0
  33. package/dist/react-cypress.json +10 -48
  34. package/dist/react-vitest.d.ts +12 -0
  35. package/dist/react-vitest.js +2288 -0
  36. package/dist/react-vitest.json +10 -48
  37. package/dist/react.d.ts +12 -0
  38. package/dist/react.js +2263 -0
  39. package/dist/react.json +10 -48
  40. package/dist/tsOverride.d.ts +35 -0
  41. package/dist/tsOverride.js +49 -0
  42. package/dist/vitest.d.ts +12 -0
  43. package/dist/vitest.js +2231 -0
  44. package/dist/vitest.json +9 -47
  45. package/package.json +73 -30
@@ -0,0 +1,2309 @@
1
+ // This file is auto-generated. Do not edit manually.
2
+
3
+ import globals from "globals";
4
+ import plugin0001 from "eslint-plugin-headers";
5
+ import plugin0002 from "@typescript-eslint/eslint-plugin";
6
+ import plugin0003 from "@typescript-eslint/parser";
7
+ import plugin0004 from "eslint-plugin-no-barrel-files";
8
+ import plugin0005 from "eslint-plugin-import";
9
+ import plugin0006 from "eslint-plugin-jsdoc";
10
+ import plugin0007 from "eslint-plugin-no-only-tests";
11
+ import plugin0008 from "eslint-plugin-prettier";
12
+ import plugin0009 from "eslint-plugin-sonarjs";
13
+ import plugin0010 from "eslint-plugin-react";
14
+ import plugin0011 from "eslint-plugin-react-hooks";
15
+ import plugin0012 from "eslint-plugin-import-esm";
16
+ import plugin0013 from "eslint-plugin-cypress";
17
+ import plugin0014 from "eslint-plugin-chai-friendly";
18
+
19
+ export default [
20
+ {
21
+ languageOptions: {
22
+ globals: { ...globals.node, ...globals.es2022 },
23
+ },
24
+ },
25
+ {
26
+ rules: {
27
+ "constructor-super": "error",
28
+ "for-direction": "error",
29
+ "getter-return": "error",
30
+ "no-async-promise-executor": "error",
31
+ "no-case-declarations": "error",
32
+ "no-class-assign": "error",
33
+ "no-compare-neg-zero": "error",
34
+ "no-cond-assign": "error",
35
+ "no-const-assign": "error",
36
+ "no-constant-binary-expression": "error",
37
+ "no-constant-condition": "error",
38
+ "no-control-regex": "error",
39
+ "no-debugger": "error",
40
+ "no-delete-var": "error",
41
+ "no-dupe-args": "error",
42
+ "no-dupe-class-members": "error",
43
+ "no-dupe-else-if": "error",
44
+ "no-dupe-keys": "error",
45
+ "no-duplicate-case": "error",
46
+ "no-empty": "error",
47
+ "no-empty-character-class": "error",
48
+ "no-empty-pattern": "error",
49
+ "no-empty-static-block": "error",
50
+ "no-ex-assign": "error",
51
+ "no-extra-boolean-cast": "error",
52
+ "no-fallthrough": "error",
53
+ "no-func-assign": "error",
54
+ "no-global-assign": "error",
55
+ "no-import-assign": "error",
56
+ "no-invalid-regexp": "error",
57
+ "no-irregular-whitespace": "error",
58
+ "no-loss-of-precision": "error",
59
+ "no-misleading-character-class": "error",
60
+ "no-new-native-nonconstructor": "error",
61
+ "no-nonoctal-decimal-escape": "error",
62
+ "no-obj-calls": "error",
63
+ "no-octal": "error",
64
+ "no-prototype-builtins": "error",
65
+ "no-redeclare": "error",
66
+ "no-regex-spaces": "error",
67
+ "no-self-assign": "error",
68
+ "no-setter-return": "error",
69
+ "no-shadow-restricted-names": "error",
70
+ "no-sparse-arrays": "error",
71
+ "no-this-before-super": "error",
72
+ "no-undef": "error",
73
+ "no-unexpected-multiline": "off",
74
+ "no-unreachable": "error",
75
+ "no-unsafe-finally": "error",
76
+ "no-unsafe-negation": "error",
77
+ "no-unsafe-optional-chaining": "error",
78
+ "no-unused-labels": "error",
79
+ "no-unused-private-class-members": "error",
80
+ "no-unused-vars": "error",
81
+ "no-useless-backreference": "error",
82
+ "no-useless-catch": "error",
83
+ "no-useless-escape": "off",
84
+ "no-with": "error",
85
+ "require-yield": "error",
86
+ "use-isnan": "error",
87
+ "valid-typeof": "error",
88
+ "no-console": [
89
+ 2,
90
+ {
91
+ allow: [
92
+ "warn",
93
+ "error",
94
+ ],
95
+ },
96
+ ],
97
+ "no-restricted-exports": [
98
+ 2,
99
+ {
100
+ restrictDefaultExports: {
101
+ direct: true,
102
+ named: true,
103
+ defaultFrom: true,
104
+ namedFrom: true,
105
+ namespaceFrom: true,
106
+ },
107
+ },
108
+ ],
109
+ "no-duplicate-imports": [
110
+ "error",
111
+ {
112
+ includeExports: true,
113
+ },
114
+ ],
115
+ "no-restricted-imports": [
116
+ "error",
117
+ {
118
+ paths: [
119
+ {
120
+ name: "react",
121
+ importNames: [
122
+ "default",
123
+ ],
124
+ message: "Default import from React is not allowed. Use named imports instead.",
125
+ },
126
+ {
127
+ name: "@gooddata/sdk-ui-kit",
128
+ importNames: [
129
+ "Icon",
130
+ ],
131
+ message: "The Icon export cannot be tree-shaken, use {IconName}Icon imports instead.",
132
+ },
133
+ {
134
+ name: "vitest",
135
+ importNames: [
136
+ "test",
137
+ ],
138
+ message: "Use 'it' instead of 'test' for consistency.",
139
+ },
140
+ ],
141
+ patterns: [
142
+ {
143
+ group: [
144
+ "lodash-es",
145
+ ],
146
+ importNames: [
147
+ "get",
148
+ "getOr",
149
+ ],
150
+ message: "Please use the ?. and ?? operators instead.",
151
+ },
152
+ {
153
+ group: [
154
+ "lodash-es",
155
+ ],
156
+ importNames: [
157
+ "keys",
158
+ ],
159
+ message: "Please use Object.keys() instead.",
160
+ },
161
+ {
162
+ group: [
163
+ "lodash-es",
164
+ ],
165
+ importNames: [
166
+ "values",
167
+ ],
168
+ message: "Please use Object.values() instead.",
169
+ },
170
+ {
171
+ group: [
172
+ "lodash-es",
173
+ ],
174
+ importNames: [
175
+ "entries",
176
+ "toPairs",
177
+ ],
178
+ message: "Please use Object.entries() instead.",
179
+ },
180
+ {
181
+ group: [
182
+ "lodash-es",
183
+ ],
184
+ importNames: [
185
+ "map",
186
+ ],
187
+ message: "Please use Array.prototype.map() instead.",
188
+ },
189
+ {
190
+ group: [
191
+ "lodash-es",
192
+ ],
193
+ importNames: [
194
+ "flatMap",
195
+ ],
196
+ message: "Please use Array.prototype.flatMap() instead.",
197
+ },
198
+ {
199
+ group: [
200
+ "lodash-es",
201
+ ],
202
+ importNames: [
203
+ "filter",
204
+ ],
205
+ message: "Please use Array.prototype.filter() instead.",
206
+ },
207
+ {
208
+ group: [
209
+ "lodash-es",
210
+ ],
211
+ importNames: [
212
+ "find",
213
+ ],
214
+ message: "Please use Array.prototype.find() instead.",
215
+ },
216
+ {
217
+ group: [
218
+ "lodash-es",
219
+ ],
220
+ importNames: [
221
+ "findIndex",
222
+ ],
223
+ message: "Please use Array.prototype.findIndex() instead.",
224
+ },
225
+ {
226
+ group: [
227
+ "lodash-es",
228
+ ],
229
+ importNames: [
230
+ "includes",
231
+ ],
232
+ message: "Please use Array.prototype.includes() instead.",
233
+ },
234
+ {
235
+ group: [
236
+ "lodash-es",
237
+ ],
238
+ importNames: [
239
+ "some",
240
+ ],
241
+ message: "Please use Array.prototype.some() instead.",
242
+ },
243
+ {
244
+ group: [
245
+ "lodash-es",
246
+ ],
247
+ importNames: [
248
+ "every",
249
+ ],
250
+ message: "Please use Array.prototype.every() instead.",
251
+ },
252
+ {
253
+ group: [
254
+ "lodash-es",
255
+ ],
256
+ importNames: [
257
+ "concat",
258
+ ],
259
+ message: "Please use Array.prototype.concat() or spread [...arr1, ...arr2] instead.",
260
+ },
261
+ {
262
+ group: [
263
+ "lodash-es",
264
+ ],
265
+ importNames: [
266
+ "reverse",
267
+ ],
268
+ message: "Please use Array.prototype.reverse() instead.",
269
+ },
270
+ {
271
+ group: [
272
+ "lodash-es",
273
+ ],
274
+ importNames: [
275
+ "slice",
276
+ ],
277
+ message: "Please use Array.prototype.slice() instead.",
278
+ },
279
+ {
280
+ group: [
281
+ "lodash-es",
282
+ ],
283
+ importNames: [
284
+ "indexOf",
285
+ ],
286
+ message: "Please use Array.prototype.indexOf() instead.",
287
+ },
288
+ {
289
+ group: [
290
+ "lodash-es",
291
+ ],
292
+ importNames: [
293
+ "lastIndexOf",
294
+ ],
295
+ message: "Please use Array.prototype.lastIndexOf() instead.",
296
+ },
297
+ {
298
+ group: [
299
+ "lodash-es",
300
+ ],
301
+ importNames: [
302
+ "fill",
303
+ ],
304
+ message: "Please use Array.prototype.fill() instead.",
305
+ },
306
+ {
307
+ group: [
308
+ "lodash-es",
309
+ ],
310
+ importNames: [
311
+ "startsWith",
312
+ ],
313
+ message: "Please use String.prototype.startsWith() instead.",
314
+ },
315
+ {
316
+ group: [
317
+ "lodash-es",
318
+ ],
319
+ importNames: [
320
+ "endsWith",
321
+ ],
322
+ message: "Please use String.prototype.endsWith() instead.",
323
+ },
324
+ {
325
+ group: [
326
+ "lodash-es",
327
+ ],
328
+ importNames: [
329
+ "repeat",
330
+ ],
331
+ message: "Please use String.prototype.repeat() instead.",
332
+ },
333
+ {
334
+ group: [
335
+ "lodash-es",
336
+ ],
337
+ importNames: [
338
+ "padStart",
339
+ ],
340
+ message: "Please use String.prototype.padStart() instead.",
341
+ },
342
+ {
343
+ group: [
344
+ "lodash-es",
345
+ ],
346
+ importNames: [
347
+ "padEnd",
348
+ ],
349
+ message: "Please use String.prototype.padEnd() instead.",
350
+ },
351
+ {
352
+ group: [
353
+ "lodash-es",
354
+ ],
355
+ importNames: [
356
+ "trim",
357
+ ],
358
+ message: "Please use String.prototype.trim() instead.",
359
+ },
360
+ {
361
+ group: [
362
+ "lodash-es",
363
+ ],
364
+ importNames: [
365
+ "trimStart",
366
+ "trimLeft",
367
+ ],
368
+ message: "Please use String.prototype.trimStart() instead.",
369
+ },
370
+ {
371
+ group: [
372
+ "lodash-es",
373
+ ],
374
+ importNames: [
375
+ "trimEnd",
376
+ "trimRight",
377
+ ],
378
+ message: "Please use String.prototype.trimEnd() instead.",
379
+ },
380
+ {
381
+ group: [
382
+ "lodash-es",
383
+ ],
384
+ importNames: [
385
+ "toUpper",
386
+ ],
387
+ message: "Please use String.prototype.toUpperCase() instead.",
388
+ },
389
+ {
390
+ group: [
391
+ "lodash-es",
392
+ ],
393
+ importNames: [
394
+ "toLower",
395
+ ],
396
+ message: "Please use String.prototype.toLowerCase() instead.",
397
+ },
398
+ {
399
+ group: [
400
+ "lodash-es",
401
+ ],
402
+ importNames: [
403
+ "isArray",
404
+ ],
405
+ message: "Please use Array.isArray() instead.",
406
+ },
407
+ {
408
+ group: [
409
+ "lodash-es",
410
+ ],
411
+ importNames: [
412
+ "isNaN",
413
+ ],
414
+ message: "Please use Number.isNaN() instead.",
415
+ },
416
+ {
417
+ group: [
418
+ "lodash-es",
419
+ ],
420
+ importNames: [
421
+ "isFinite",
422
+ ],
423
+ message: "Please use Number.isFinite() instead.",
424
+ },
425
+ {
426
+ group: [
427
+ "lodash-es",
428
+ ],
429
+ importNames: [
430
+ "isInteger",
431
+ ],
432
+ message: "Please use Number.isInteger() instead.",
433
+ },
434
+ {
435
+ group: [
436
+ "lodash-es",
437
+ ],
438
+ importNames: [
439
+ "isNull",
440
+ ],
441
+ message: "Please use value === null instead.",
442
+ },
443
+ {
444
+ group: [
445
+ "lodash-es",
446
+ ],
447
+ importNames: [
448
+ "isUndefined",
449
+ ],
450
+ message: "Please use value === undefined instead.",
451
+ },
452
+ {
453
+ group: [
454
+ "lodash-es",
455
+ ],
456
+ importNames: [
457
+ "defaultTo",
458
+ ],
459
+ message: "Please use value ?? defaultValue instead.",
460
+ },
461
+ {
462
+ group: [
463
+ "lodash-es",
464
+ ],
465
+ importNames: [
466
+ "assign",
467
+ ],
468
+ message: "Please use Object.assign() or spread syntax {...obj} instead.",
469
+ },
470
+ {
471
+ group: [
472
+ "lodash-es",
473
+ ],
474
+ importNames: [
475
+ "flatten",
476
+ ],
477
+ message: "Please use Array.prototype.flat() instead.",
478
+ },
479
+ {
480
+ group: [
481
+ "lodash-es",
482
+ ],
483
+ importNames: [
484
+ "flattenDeep",
485
+ ],
486
+ message: "Please use Array.prototype.flat(Infinity) instead.",
487
+ },
488
+ {
489
+ group: [
490
+ "lodash-es",
491
+ ],
492
+ importNames: [
493
+ "isNil",
494
+ ],
495
+ message: "Please use value === null || value === undefined instead.",
496
+ },
497
+ {
498
+ group: [
499
+ "lodash-es",
500
+ ],
501
+ importNames: [
502
+ "noop",
503
+ ],
504
+ message: "Please use () => {} instead.",
505
+ },
506
+ {
507
+ group: [
508
+ "lodash-es",
509
+ ],
510
+ importNames: [
511
+ "identity",
512
+ ],
513
+ message: "Please use x => x instead.",
514
+ },
515
+ {
516
+ group: [
517
+ "lodash-es",
518
+ ],
519
+ importNames: [
520
+ "first",
521
+ "head",
522
+ ],
523
+ message: "Please use Array.prototype.at(0) instead.",
524
+ },
525
+ {
526
+ group: [
527
+ "lodash-es",
528
+ ],
529
+ importNames: [
530
+ "last",
531
+ ],
532
+ message: "Please use Array.prototype.at(-1) instead.",
533
+ },
534
+ {
535
+ group: [
536
+ "lodash-es",
537
+ ],
538
+ importNames: [
539
+ "forEach",
540
+ ],
541
+ message: "Please use Array.prototype.forEach() instead.",
542
+ },
543
+ {
544
+ group: [
545
+ "lodash-es",
546
+ ],
547
+ importNames: [
548
+ "fromPairs",
549
+ ],
550
+ message: "Please use Object.fromEntries() instead.",
551
+ },
552
+ {
553
+ group: [
554
+ "lodash-es",
555
+ ],
556
+ importNames: [
557
+ "join",
558
+ ],
559
+ message: "Please use Array.prototype.join() instead.",
560
+ },
561
+ {
562
+ group: [
563
+ "lodash-es",
564
+ ],
565
+ importNames: [
566
+ "isDate",
567
+ ],
568
+ message: "Please use val instanceof Date instead.",
569
+ },
570
+ {
571
+ group: [
572
+ "lodash-es",
573
+ ],
574
+ importNames: [
575
+ "isFunction",
576
+ ],
577
+ message: "Please use typeof val === 'function' instead.",
578
+ },
579
+ {
580
+ group: [
581
+ "lodash-es",
582
+ ],
583
+ importNames: [
584
+ "isNumber",
585
+ ],
586
+ message: "Please use typeof val === 'number' instead.",
587
+ },
588
+ {
589
+ group: [
590
+ "lodash-es",
591
+ ],
592
+ importNames: [
593
+ "isObject",
594
+ ],
595
+ message: "Please use val !== null && typeof val === 'object' instead.",
596
+ },
597
+ {
598
+ group: [
599
+ "lodash-es",
600
+ ],
601
+ importNames: [
602
+ "isString",
603
+ ],
604
+ message: "Please use typeof val === 'string' instead.",
605
+ },
606
+ {
607
+ group: [
608
+ "lodash-es",
609
+ ],
610
+ importNames: [
611
+ "toString",
612
+ ],
613
+ message: "Please use String(val) instead.",
614
+ },
615
+ {
616
+ group: [
617
+ "lodash-es",
618
+ ],
619
+ importNames: [
620
+ "flow",
621
+ "flowRight",
622
+ ],
623
+ message: "Please use refactoring your code instead.",
624
+ },
625
+ ],
626
+ },
627
+ ],
628
+ "no-restricted-syntax": [
629
+ "error",
630
+ {
631
+ selector: "MemberExpression[object.name='React']",
632
+ message: "Do not use `React.*`. Use named imports instead.",
633
+ },
634
+ ],
635
+ "sort-imports": [
636
+ "error",
637
+ {
638
+ ignoreCase: false,
639
+ ignoreDeclarationSort: true,
640
+ ignoreMemberSort: false,
641
+ },
642
+ ],
643
+ "no-negated-condition": "error",
644
+ "no-unneeded-ternary": [
645
+ "error",
646
+ {
647
+ defaultAssignment: false,
648
+ },
649
+ ],
650
+ "no-warning-comments": [
651
+ "warn",
652
+ {
653
+ terms: [
654
+ "todo",
655
+ ],
656
+ location: "start",
657
+ },
658
+ ],
659
+ },
660
+ },
661
+ {
662
+ files: [
663
+ "**/*.ts",
664
+ "**/*.tsx",
665
+ ],
666
+ ignores: [
667
+ "**/vitest.config.ts",
668
+ "**/vitest.*.config.ts",
669
+ "**/vitest.setup.ts",
670
+ "**/vitest.setup.tsx",
671
+ "**/*.test.ts",
672
+ "**/*.test.tsx",
673
+ "**/*.test.utils.ts",
674
+ "**/*.test.utils.tsx",
675
+ "**/*.test.helpers.ts",
676
+ "**/*.test.helpers.tsx",
677
+ ],
678
+ rules: {
679
+ "no-restricted-imports": [
680
+ "error",
681
+ {
682
+ paths: [
683
+ {
684
+ name: "react",
685
+ importNames: [
686
+ "default",
687
+ ],
688
+ message: "Default import from React is not allowed. Use named imports instead.",
689
+ },
690
+ {
691
+ name: "@gooddata/sdk-ui-kit",
692
+ importNames: [
693
+ "Icon",
694
+ ],
695
+ message: "The Icon export cannot be tree-shaken, use {IconName}Icon imports instead.",
696
+ },
697
+ {
698
+ name: "vitest",
699
+ importNames: [
700
+ "test",
701
+ ],
702
+ message: "Use 'it' instead of 'test' for consistency.",
703
+ },
704
+ ],
705
+ patterns: [
706
+ {
707
+ group: [
708
+ "lodash-es",
709
+ ],
710
+ importNames: [
711
+ "get",
712
+ "getOr",
713
+ ],
714
+ message: "Please use the ?. and ?? operators instead.",
715
+ },
716
+ {
717
+ group: [
718
+ "lodash-es",
719
+ ],
720
+ importNames: [
721
+ "keys",
722
+ ],
723
+ message: "Please use Object.keys() instead.",
724
+ },
725
+ {
726
+ group: [
727
+ "lodash-es",
728
+ ],
729
+ importNames: [
730
+ "values",
731
+ ],
732
+ message: "Please use Object.values() instead.",
733
+ },
734
+ {
735
+ group: [
736
+ "lodash-es",
737
+ ],
738
+ importNames: [
739
+ "entries",
740
+ "toPairs",
741
+ ],
742
+ message: "Please use Object.entries() instead.",
743
+ },
744
+ {
745
+ group: [
746
+ "lodash-es",
747
+ ],
748
+ importNames: [
749
+ "map",
750
+ ],
751
+ message: "Please use Array.prototype.map() instead.",
752
+ },
753
+ {
754
+ group: [
755
+ "lodash-es",
756
+ ],
757
+ importNames: [
758
+ "flatMap",
759
+ ],
760
+ message: "Please use Array.prototype.flatMap() instead.",
761
+ },
762
+ {
763
+ group: [
764
+ "lodash-es",
765
+ ],
766
+ importNames: [
767
+ "filter",
768
+ ],
769
+ message: "Please use Array.prototype.filter() instead.",
770
+ },
771
+ {
772
+ group: [
773
+ "lodash-es",
774
+ ],
775
+ importNames: [
776
+ "find",
777
+ ],
778
+ message: "Please use Array.prototype.find() instead.",
779
+ },
780
+ {
781
+ group: [
782
+ "lodash-es",
783
+ ],
784
+ importNames: [
785
+ "findIndex",
786
+ ],
787
+ message: "Please use Array.prototype.findIndex() instead.",
788
+ },
789
+ {
790
+ group: [
791
+ "lodash-es",
792
+ ],
793
+ importNames: [
794
+ "includes",
795
+ ],
796
+ message: "Please use Array.prototype.includes() instead.",
797
+ },
798
+ {
799
+ group: [
800
+ "lodash-es",
801
+ ],
802
+ importNames: [
803
+ "some",
804
+ ],
805
+ message: "Please use Array.prototype.some() instead.",
806
+ },
807
+ {
808
+ group: [
809
+ "lodash-es",
810
+ ],
811
+ importNames: [
812
+ "every",
813
+ ],
814
+ message: "Please use Array.prototype.every() instead.",
815
+ },
816
+ {
817
+ group: [
818
+ "lodash-es",
819
+ ],
820
+ importNames: [
821
+ "concat",
822
+ ],
823
+ message: "Please use Array.prototype.concat() or spread [...arr1, ...arr2] instead.",
824
+ },
825
+ {
826
+ group: [
827
+ "lodash-es",
828
+ ],
829
+ importNames: [
830
+ "reverse",
831
+ ],
832
+ message: "Please use Array.prototype.reverse() instead.",
833
+ },
834
+ {
835
+ group: [
836
+ "lodash-es",
837
+ ],
838
+ importNames: [
839
+ "slice",
840
+ ],
841
+ message: "Please use Array.prototype.slice() instead.",
842
+ },
843
+ {
844
+ group: [
845
+ "lodash-es",
846
+ ],
847
+ importNames: [
848
+ "indexOf",
849
+ ],
850
+ message: "Please use Array.prototype.indexOf() instead.",
851
+ },
852
+ {
853
+ group: [
854
+ "lodash-es",
855
+ ],
856
+ importNames: [
857
+ "lastIndexOf",
858
+ ],
859
+ message: "Please use Array.prototype.lastIndexOf() instead.",
860
+ },
861
+ {
862
+ group: [
863
+ "lodash-es",
864
+ ],
865
+ importNames: [
866
+ "fill",
867
+ ],
868
+ message: "Please use Array.prototype.fill() instead.",
869
+ },
870
+ {
871
+ group: [
872
+ "lodash-es",
873
+ ],
874
+ importNames: [
875
+ "startsWith",
876
+ ],
877
+ message: "Please use String.prototype.startsWith() instead.",
878
+ },
879
+ {
880
+ group: [
881
+ "lodash-es",
882
+ ],
883
+ importNames: [
884
+ "endsWith",
885
+ ],
886
+ message: "Please use String.prototype.endsWith() instead.",
887
+ },
888
+ {
889
+ group: [
890
+ "lodash-es",
891
+ ],
892
+ importNames: [
893
+ "repeat",
894
+ ],
895
+ message: "Please use String.prototype.repeat() instead.",
896
+ },
897
+ {
898
+ group: [
899
+ "lodash-es",
900
+ ],
901
+ importNames: [
902
+ "padStart",
903
+ ],
904
+ message: "Please use String.prototype.padStart() instead.",
905
+ },
906
+ {
907
+ group: [
908
+ "lodash-es",
909
+ ],
910
+ importNames: [
911
+ "padEnd",
912
+ ],
913
+ message: "Please use String.prototype.padEnd() instead.",
914
+ },
915
+ {
916
+ group: [
917
+ "lodash-es",
918
+ ],
919
+ importNames: [
920
+ "trim",
921
+ ],
922
+ message: "Please use String.prototype.trim() instead.",
923
+ },
924
+ {
925
+ group: [
926
+ "lodash-es",
927
+ ],
928
+ importNames: [
929
+ "trimStart",
930
+ "trimLeft",
931
+ ],
932
+ message: "Please use String.prototype.trimStart() instead.",
933
+ },
934
+ {
935
+ group: [
936
+ "lodash-es",
937
+ ],
938
+ importNames: [
939
+ "trimEnd",
940
+ "trimRight",
941
+ ],
942
+ message: "Please use String.prototype.trimEnd() instead.",
943
+ },
944
+ {
945
+ group: [
946
+ "lodash-es",
947
+ ],
948
+ importNames: [
949
+ "toUpper",
950
+ ],
951
+ message: "Please use String.prototype.toUpperCase() instead.",
952
+ },
953
+ {
954
+ group: [
955
+ "lodash-es",
956
+ ],
957
+ importNames: [
958
+ "toLower",
959
+ ],
960
+ message: "Please use String.prototype.toLowerCase() instead.",
961
+ },
962
+ {
963
+ group: [
964
+ "lodash-es",
965
+ ],
966
+ importNames: [
967
+ "isArray",
968
+ ],
969
+ message: "Please use Array.isArray() instead.",
970
+ },
971
+ {
972
+ group: [
973
+ "lodash-es",
974
+ ],
975
+ importNames: [
976
+ "isNaN",
977
+ ],
978
+ message: "Please use Number.isNaN() instead.",
979
+ },
980
+ {
981
+ group: [
982
+ "lodash-es",
983
+ ],
984
+ importNames: [
985
+ "isFinite",
986
+ ],
987
+ message: "Please use Number.isFinite() instead.",
988
+ },
989
+ {
990
+ group: [
991
+ "lodash-es",
992
+ ],
993
+ importNames: [
994
+ "isInteger",
995
+ ],
996
+ message: "Please use Number.isInteger() instead.",
997
+ },
998
+ {
999
+ group: [
1000
+ "lodash-es",
1001
+ ],
1002
+ importNames: [
1003
+ "isNull",
1004
+ ],
1005
+ message: "Please use value === null instead.",
1006
+ },
1007
+ {
1008
+ group: [
1009
+ "lodash-es",
1010
+ ],
1011
+ importNames: [
1012
+ "isUndefined",
1013
+ ],
1014
+ message: "Please use value === undefined instead.",
1015
+ },
1016
+ {
1017
+ group: [
1018
+ "lodash-es",
1019
+ ],
1020
+ importNames: [
1021
+ "defaultTo",
1022
+ ],
1023
+ message: "Please use value ?? defaultValue instead.",
1024
+ },
1025
+ {
1026
+ group: [
1027
+ "lodash-es",
1028
+ ],
1029
+ importNames: [
1030
+ "assign",
1031
+ ],
1032
+ message: "Please use Object.assign() or spread syntax {...obj} instead.",
1033
+ },
1034
+ {
1035
+ group: [
1036
+ "lodash-es",
1037
+ ],
1038
+ importNames: [
1039
+ "flatten",
1040
+ ],
1041
+ message: "Please use Array.prototype.flat() instead.",
1042
+ },
1043
+ {
1044
+ group: [
1045
+ "lodash-es",
1046
+ ],
1047
+ importNames: [
1048
+ "flattenDeep",
1049
+ ],
1050
+ message: "Please use Array.prototype.flat(Infinity) instead.",
1051
+ },
1052
+ {
1053
+ group: [
1054
+ "lodash-es",
1055
+ ],
1056
+ importNames: [
1057
+ "isNil",
1058
+ ],
1059
+ message: "Please use value === null || value === undefined instead.",
1060
+ },
1061
+ {
1062
+ group: [
1063
+ "lodash-es",
1064
+ ],
1065
+ importNames: [
1066
+ "noop",
1067
+ ],
1068
+ message: "Please use () => {} instead.",
1069
+ },
1070
+ {
1071
+ group: [
1072
+ "lodash-es",
1073
+ ],
1074
+ importNames: [
1075
+ "identity",
1076
+ ],
1077
+ message: "Please use x => x instead.",
1078
+ },
1079
+ {
1080
+ group: [
1081
+ "lodash-es",
1082
+ ],
1083
+ importNames: [
1084
+ "first",
1085
+ "head",
1086
+ ],
1087
+ message: "Please use Array.prototype.at(0) instead.",
1088
+ },
1089
+ {
1090
+ group: [
1091
+ "lodash-es",
1092
+ ],
1093
+ importNames: [
1094
+ "last",
1095
+ ],
1096
+ message: "Please use Array.prototype.at(-1) instead.",
1097
+ },
1098
+ {
1099
+ group: [
1100
+ "lodash-es",
1101
+ ],
1102
+ importNames: [
1103
+ "forEach",
1104
+ ],
1105
+ message: "Please use Array.prototype.forEach() instead.",
1106
+ },
1107
+ {
1108
+ group: [
1109
+ "lodash-es",
1110
+ ],
1111
+ importNames: [
1112
+ "fromPairs",
1113
+ ],
1114
+ message: "Please use Object.fromEntries() instead.",
1115
+ },
1116
+ {
1117
+ group: [
1118
+ "lodash-es",
1119
+ ],
1120
+ importNames: [
1121
+ "join",
1122
+ ],
1123
+ message: "Please use Array.prototype.join() instead.",
1124
+ },
1125
+ {
1126
+ group: [
1127
+ "lodash-es",
1128
+ ],
1129
+ importNames: [
1130
+ "isDate",
1131
+ ],
1132
+ message: "Please use val instanceof Date instead.",
1133
+ },
1134
+ {
1135
+ group: [
1136
+ "lodash-es",
1137
+ ],
1138
+ importNames: [
1139
+ "isFunction",
1140
+ ],
1141
+ message: "Please use typeof val === 'function' instead.",
1142
+ },
1143
+ {
1144
+ group: [
1145
+ "lodash-es",
1146
+ ],
1147
+ importNames: [
1148
+ "isNumber",
1149
+ ],
1150
+ message: "Please use typeof val === 'number' instead.",
1151
+ },
1152
+ {
1153
+ group: [
1154
+ "lodash-es",
1155
+ ],
1156
+ importNames: [
1157
+ "isObject",
1158
+ ],
1159
+ message: "Please use val !== null && typeof val === 'object' instead.",
1160
+ },
1161
+ {
1162
+ group: [
1163
+ "lodash-es",
1164
+ ],
1165
+ importNames: [
1166
+ "isString",
1167
+ ],
1168
+ message: "Please use typeof val === 'string' instead.",
1169
+ },
1170
+ {
1171
+ group: [
1172
+ "lodash-es",
1173
+ ],
1174
+ importNames: [
1175
+ "toString",
1176
+ ],
1177
+ message: "Please use String(val) instead.",
1178
+ },
1179
+ {
1180
+ group: [
1181
+ "lodash-es",
1182
+ ],
1183
+ importNames: [
1184
+ "flow",
1185
+ "flowRight",
1186
+ ],
1187
+ message: "Please use refactoring your code instead.",
1188
+ },
1189
+ {
1190
+ group: [
1191
+ "vitest",
1192
+ ],
1193
+ message: "Importing from vitest is only allowed in test files.",
1194
+ },
1195
+ ],
1196
+ },
1197
+ ],
1198
+ },
1199
+ },
1200
+ {
1201
+ files: [
1202
+ "**/eslint.config.ts",
1203
+ "**/eslint.config.js",
1204
+ ],
1205
+ rules: {
1206
+ "no-restricted-exports": "off",
1207
+ },
1208
+ },
1209
+ {
1210
+ plugins: {
1211
+ headers: plugin0001,
1212
+ },
1213
+ rules: {
1214
+ "headers/header-format": [
1215
+ "error",
1216
+ {
1217
+ source: "string",
1218
+ style: "line",
1219
+ content: "(C) (years) GoodData Corporation",
1220
+ patterns: {
1221
+ years: {
1222
+ pattern: "\\d{4}(-\\d{4})?",
1223
+ defaultValue: "2026",
1224
+ },
1225
+ },
1226
+ },
1227
+ ],
1228
+ },
1229
+ },
1230
+ {
1231
+ languageOptions: {
1232
+ parser: plugin0003,
1233
+ sourceType: "module",
1234
+ },
1235
+ plugins: {
1236
+ "@typescript-eslint": plugin0002,
1237
+ },
1238
+ },
1239
+ {
1240
+ files: [
1241
+ "**/*.ts",
1242
+ "**/*.tsx",
1243
+ "**/*.mts",
1244
+ "**/*.cts",
1245
+ ],
1246
+ rules: {
1247
+ "constructor-super": "off",
1248
+ "getter-return": "off",
1249
+ "no-class-assign": "off",
1250
+ "no-const-assign": "off",
1251
+ "no-dupe-args": "off",
1252
+ "no-dupe-class-members": "off",
1253
+ "no-dupe-keys": "off",
1254
+ "no-func-assign": "off",
1255
+ "no-import-assign": "off",
1256
+ "no-new-native-nonconstructor": "off",
1257
+ "no-new-symbol": "off",
1258
+ "no-obj-calls": "off",
1259
+ "no-redeclare": "off",
1260
+ "no-setter-return": "off",
1261
+ "no-this-before-super": "off",
1262
+ "no-undef": "off",
1263
+ "no-unreachable": "off",
1264
+ "no-unsafe-negation": "off",
1265
+ "no-var": "error",
1266
+ "no-with": "off",
1267
+ "prefer-const": "error",
1268
+ "prefer-rest-params": "error",
1269
+ "prefer-spread": "error",
1270
+ "@typescript-eslint/ban-ts-comment": [
1271
+ "error",
1272
+ {
1273
+ "ts-expect-error": "allow-with-description",
1274
+ },
1275
+ ],
1276
+ "no-array-constructor": "off",
1277
+ "@typescript-eslint/no-array-constructor": "error",
1278
+ "@typescript-eslint/no-duplicate-enum-values": "error",
1279
+ "@typescript-eslint/no-empty-object-type": "error",
1280
+ "@typescript-eslint/no-explicit-any": "error",
1281
+ "@typescript-eslint/no-extra-non-null-assertion": "error",
1282
+ "@typescript-eslint/no-misused-new": "error",
1283
+ "@typescript-eslint/no-namespace": "error",
1284
+ "@typescript-eslint/no-non-null-asserted-optional-chain": "error",
1285
+ "@typescript-eslint/no-require-imports": "error",
1286
+ "@typescript-eslint/no-this-alias": "error",
1287
+ "@typescript-eslint/no-unnecessary-type-constraint": "error",
1288
+ "@typescript-eslint/no-unsafe-declaration-merging": "error",
1289
+ "@typescript-eslint/no-unsafe-function-type": "error",
1290
+ "no-unused-expressions": "off",
1291
+ "@typescript-eslint/no-unused-expressions": "error",
1292
+ "no-unused-vars": "off",
1293
+ "@typescript-eslint/no-unused-vars": [
1294
+ 2,
1295
+ {
1296
+ varsIgnorePattern: "^_.*$",
1297
+ argsIgnorePattern: "^_.*$",
1298
+ },
1299
+ ],
1300
+ "@typescript-eslint/no-wrapper-object-types": "error",
1301
+ "@typescript-eslint/prefer-as-const": "error",
1302
+ "@typescript-eslint/prefer-namespace-keyword": "error",
1303
+ "@typescript-eslint/triple-slash-reference": "error",
1304
+ "@typescript-eslint/explicit-function-return-type": 0,
1305
+ "@typescript-eslint/no-use-before-define": 0,
1306
+ "@typescript-eslint/no-empty-function": 0,
1307
+ "@typescript-eslint/naming-convention": [
1308
+ "error",
1309
+ {
1310
+ selector: "interface",
1311
+ format: [
1312
+ "PascalCase",
1313
+ ],
1314
+ custom: {
1315
+ regex: "^I[A-Z]",
1316
+ match: true,
1317
+ },
1318
+ },
1319
+ ],
1320
+ "@typescript-eslint/array-type": "off",
1321
+ "@typescript-eslint/no-restricted-types": [
1322
+ "error",
1323
+ {
1324
+ types: {
1325
+ String: {
1326
+ message: "Use 'string' instead",
1327
+ fixWith: "string",
1328
+ },
1329
+ Number: {
1330
+ message: "Use 'number' instead",
1331
+ fixWith: "number",
1332
+ },
1333
+ Boolean: {
1334
+ message: "Use 'boolean' instead",
1335
+ fixWith: "boolean",
1336
+ },
1337
+ Symbol: {
1338
+ message: "Use 'symbol' instead",
1339
+ fixWith: "symbol",
1340
+ },
1341
+ },
1342
+ },
1343
+ ],
1344
+ "@typescript-eslint/consistent-type-exports": [
1345
+ "error",
1346
+ {
1347
+ fixMixedExportsWithInlineTypeSpecifier: false,
1348
+ },
1349
+ ],
1350
+ "@typescript-eslint/explicit-member-accessibility": "off",
1351
+ "@typescript-eslint/interface-name-prefix": "off",
1352
+ "@typescript-eslint/member-ordering": "off",
1353
+ "@typescript-eslint/no-inferrable-types": "off",
1354
+ "@typescript-eslint/no-non-null-assertion": "off",
1355
+ "@typescript-eslint/prefer-optional-chain": "error",
1356
+ "no-restricted-syntax": [
1357
+ "error",
1358
+ {
1359
+ selector: "MemberExpression[object.name='React']",
1360
+ message: "Do not use `React.*`. Use named imports instead.",
1361
+ },
1362
+ {
1363
+ selector: "TSTypeReference[typeName.type='TSQualifiedName'][typeName.left.name='React']",
1364
+ message: "Do not use `React.*` types. Use named imports instead.",
1365
+ },
1366
+ {
1367
+ selector: "ExportNamespaceSpecifier",
1368
+ message: "Usage of 'export * as …' is forbidden.",
1369
+ },
1370
+ {
1371
+ selector: "ExportAllDeclaration",
1372
+ message: "Usage of `export * from` is forbidden.",
1373
+ },
1374
+ {
1375
+ selector: "ImportDeclaration[source.value=/^(?!.*reference_workspace)\\./] ImportNamespaceSpecifier",
1376
+ message: "Do not use `import * as ...` from relative paths.",
1377
+ },
1378
+ ],
1379
+ "@typescript-eslint/consistent-type-imports": [
1380
+ "error",
1381
+ {
1382
+ prefer: "type-imports",
1383
+ fixStyle: "inline-type-imports",
1384
+ },
1385
+ ],
1386
+ },
1387
+ },
1388
+ {
1389
+ plugins: {
1390
+ "no-barrel-files": plugin0004,
1391
+ },
1392
+ rules: {
1393
+ "no-barrel-files/no-barrel-files": "error",
1394
+ },
1395
+ },
1396
+ {
1397
+ plugins: {
1398
+ import: plugin0005,
1399
+ },
1400
+ settings: {
1401
+ "import/resolver": {
1402
+ typescript: {
1403
+ alwaysTryTypes: true,
1404
+ },
1405
+ node: {
1406
+ extensions: [
1407
+ ".ts",
1408
+ ".tsx",
1409
+ ".js",
1410
+ ".jsx",
1411
+ ".mjs",
1412
+ ".cjs",
1413
+ ],
1414
+ },
1415
+ },
1416
+ },
1417
+ rules: {
1418
+ "import/no-unresolved": "error",
1419
+ "import/named": "error",
1420
+ "import/namespace": "error",
1421
+ "import/default": "error",
1422
+ "import/export": "error",
1423
+ "import/no-named-as-default": "warn",
1424
+ "import/no-named-as-default-member": "warn",
1425
+ "import/no-duplicates": "warn",
1426
+ "import/order": [
1427
+ "error",
1428
+ {
1429
+ pathGroups: [
1430
+ {
1431
+ pattern: "react",
1432
+ group: "external",
1433
+ position: "before",
1434
+ },
1435
+ {
1436
+ pattern: "@gooddata/**",
1437
+ group: "external",
1438
+ position: "after",
1439
+ },
1440
+ ],
1441
+ groups: [
1442
+ "builtin",
1443
+ "external",
1444
+ "internal",
1445
+ [
1446
+ "parent",
1447
+ "sibling",
1448
+ "index",
1449
+ ],
1450
+ ],
1451
+ pathGroupsExcludedImportTypes: [
1452
+ "react",
1453
+ ],
1454
+ alphabetize: {
1455
+ order: "asc",
1456
+ caseInsensitive: true,
1457
+ },
1458
+ "newlines-between": "always",
1459
+ },
1460
+ ],
1461
+ "import/no-unassigned-import": "error",
1462
+ },
1463
+ },
1464
+ {
1465
+ files: [
1466
+ "**/*.ts",
1467
+ "**/*.tsx",
1468
+ ],
1469
+ settings: {
1470
+ "import/extensions": [
1471
+ ".ts",
1472
+ ".cts",
1473
+ ".mts",
1474
+ ".tsx",
1475
+ ".js",
1476
+ ".jsx",
1477
+ ".mjs",
1478
+ ".cjs",
1479
+ ],
1480
+ "import/external-module-folders": [
1481
+ "node_modules",
1482
+ "node_modules/@types",
1483
+ ],
1484
+ "import/parsers": {
1485
+ "@typescript-eslint/parser": [
1486
+ ".ts",
1487
+ ".cts",
1488
+ ".mts",
1489
+ ".tsx",
1490
+ ],
1491
+ },
1492
+ "import/resolver": {
1493
+ node: {
1494
+ extensions: [
1495
+ ".ts",
1496
+ ".cts",
1497
+ ".mts",
1498
+ ".tsx",
1499
+ ".js",
1500
+ ".jsx",
1501
+ ".mjs",
1502
+ ".cjs",
1503
+ ],
1504
+ },
1505
+ },
1506
+ },
1507
+ rules: {
1508
+ "import/named": "off",
1509
+ },
1510
+ },
1511
+ {
1512
+ files: [
1513
+ "**/*.{js,cjs,mjs,jsx}",
1514
+ ],
1515
+ plugins: {
1516
+ jsdoc: plugin0006,
1517
+ },
1518
+ settings: {
1519
+ jsdoc: {
1520
+ mode: "jsdoc",
1521
+ },
1522
+ },
1523
+ rules: {
1524
+ "jsdoc/require-param": "error",
1525
+ },
1526
+ },
1527
+ {
1528
+ plugins: {
1529
+ "no-only-tests": plugin0007,
1530
+ },
1531
+ rules: {
1532
+ "no-only-tests/no-only-tests": [
1533
+ "error",
1534
+ {
1535
+ block: [
1536
+ "fixture",
1537
+ ],
1538
+ focus: [
1539
+ "only",
1540
+ ],
1541
+ },
1542
+ ],
1543
+ },
1544
+ },
1545
+ {
1546
+ plugins: {
1547
+ prettier: plugin0008,
1548
+ },
1549
+ rules: {
1550
+ curly: 0,
1551
+ "no-unexpected-multiline": 0,
1552
+ "@stylistic/lines-around-comment": 0,
1553
+ "@stylistic/max-len": 0,
1554
+ "@stylistic/no-confusing-arrow": 0,
1555
+ "@stylistic/no-mixed-operators": 0,
1556
+ "@stylistic/no-tabs": 0,
1557
+ "@stylistic/quotes": 0,
1558
+ "@stylistic/js/lines-around-comment": 0,
1559
+ "@stylistic/js/max-len": 0,
1560
+ "@stylistic/js/no-confusing-arrow": 0,
1561
+ "@stylistic/js/no-mixed-operators": 0,
1562
+ "@stylistic/js/no-tabs": 0,
1563
+ "@stylistic/js/quotes": 0,
1564
+ "@stylistic/ts/lines-around-comment": 0,
1565
+ "@stylistic/ts/quotes": 0,
1566
+ "@typescript-eslint/lines-around-comment": 0,
1567
+ "@typescript-eslint/quotes": 0,
1568
+ "babel/quotes": 0,
1569
+ "unicorn/template-indent": 0,
1570
+ "vue/html-self-closing": 0,
1571
+ "vue/max-len": 0,
1572
+ "@babel/object-curly-spacing": "off",
1573
+ "@babel/semi": "off",
1574
+ "@stylistic/array-bracket-newline": "off",
1575
+ "@stylistic/array-bracket-spacing": "off",
1576
+ "@stylistic/array-element-newline": "off",
1577
+ "@stylistic/arrow-parens": "off",
1578
+ "@stylistic/arrow-spacing": "off",
1579
+ "@stylistic/block-spacing": "off",
1580
+ "@stylistic/brace-style": "off",
1581
+ "@stylistic/comma-dangle": "off",
1582
+ "@stylistic/comma-spacing": "off",
1583
+ "@stylistic/comma-style": "off",
1584
+ "@stylistic/computed-property-spacing": "off",
1585
+ "@stylistic/dot-location": "off",
1586
+ "@stylistic/eol-last": "off",
1587
+ "@stylistic/func-call-spacing": "off",
1588
+ "@stylistic/function-call-argument-newline": "off",
1589
+ "@stylistic/function-call-spacing": "off",
1590
+ "@stylistic/function-paren-newline": "off",
1591
+ "@stylistic/generator-star-spacing": "off",
1592
+ "@stylistic/implicit-arrow-linebreak": "off",
1593
+ "@stylistic/indent": "off",
1594
+ "@stylistic/jsx-quotes": "off",
1595
+ "@stylistic/key-spacing": "off",
1596
+ "@stylistic/keyword-spacing": "off",
1597
+ "@stylistic/linebreak-style": "off",
1598
+ "@stylistic/max-statements-per-line": "off",
1599
+ "@stylistic/multiline-ternary": "off",
1600
+ "@stylistic/new-parens": "off",
1601
+ "@stylistic/newline-per-chained-call": "off",
1602
+ "@stylistic/no-extra-parens": "off",
1603
+ "@stylistic/no-extra-semi": "off",
1604
+ "@stylistic/no-floating-decimal": "off",
1605
+ "@stylistic/no-mixed-spaces-and-tabs": "off",
1606
+ "@stylistic/no-multi-spaces": "off",
1607
+ "@stylistic/no-multiple-empty-lines": "off",
1608
+ "@stylistic/no-trailing-spaces": "off",
1609
+ "@stylistic/no-whitespace-before-property": "off",
1610
+ "@stylistic/nonblock-statement-body-position": "off",
1611
+ "@stylistic/object-curly-newline": "off",
1612
+ "@stylistic/object-curly-spacing": "off",
1613
+ "@stylistic/object-property-newline": "off",
1614
+ "@stylistic/one-var-declaration-per-line": "off",
1615
+ "@stylistic/operator-linebreak": "off",
1616
+ "@stylistic/padded-blocks": "off",
1617
+ "@stylistic/quote-props": "off",
1618
+ "@stylistic/rest-spread-spacing": "off",
1619
+ "@stylistic/semi": "off",
1620
+ "@stylistic/semi-spacing": "off",
1621
+ "@stylistic/semi-style": "off",
1622
+ "@stylistic/space-before-blocks": "off",
1623
+ "@stylistic/space-before-function-paren": "off",
1624
+ "@stylistic/space-in-parens": "off",
1625
+ "@stylistic/space-infix-ops": "off",
1626
+ "@stylistic/space-unary-ops": "off",
1627
+ "@stylistic/switch-colon-spacing": "off",
1628
+ "@stylistic/template-curly-spacing": "off",
1629
+ "@stylistic/template-tag-spacing": "off",
1630
+ "@stylistic/wrap-iife": "off",
1631
+ "@stylistic/wrap-regex": "off",
1632
+ "@stylistic/yield-star-spacing": "off",
1633
+ "@stylistic/member-delimiter-style": "off",
1634
+ "@stylistic/type-annotation-spacing": "off",
1635
+ "@stylistic/jsx-child-element-spacing": "off",
1636
+ "@stylistic/jsx-closing-bracket-location": "off",
1637
+ "@stylistic/jsx-closing-tag-location": "off",
1638
+ "@stylistic/jsx-curly-newline": "off",
1639
+ "@stylistic/jsx-curly-spacing": "off",
1640
+ "@stylistic/jsx-equals-spacing": "off",
1641
+ "@stylistic/jsx-first-prop-new-line": "off",
1642
+ "@stylistic/jsx-indent": "off",
1643
+ "@stylistic/jsx-indent-props": "off",
1644
+ "@stylistic/jsx-max-props-per-line": "off",
1645
+ "@stylistic/jsx-newline": "off",
1646
+ "@stylistic/jsx-one-expression-per-line": "off",
1647
+ "@stylistic/jsx-props-no-multi-spaces": "off",
1648
+ "@stylistic/jsx-tag-spacing": "off",
1649
+ "@stylistic/jsx-wrap-multilines": "off",
1650
+ "@stylistic/indent-binary-ops": "off",
1651
+ "@stylistic/type-generic-spacing": "off",
1652
+ "@stylistic/type-named-tuple-spacing": "off",
1653
+ "@stylistic/js/array-bracket-newline": "off",
1654
+ "@stylistic/js/array-bracket-spacing": "off",
1655
+ "@stylistic/js/array-element-newline": "off",
1656
+ "@stylistic/js/arrow-parens": "off",
1657
+ "@stylistic/js/arrow-spacing": "off",
1658
+ "@stylistic/js/block-spacing": "off",
1659
+ "@stylistic/js/brace-style": "off",
1660
+ "@stylistic/js/comma-dangle": "off",
1661
+ "@stylistic/js/comma-spacing": "off",
1662
+ "@stylistic/js/comma-style": "off",
1663
+ "@stylistic/js/computed-property-spacing": "off",
1664
+ "@stylistic/js/dot-location": "off",
1665
+ "@stylistic/js/eol-last": "off",
1666
+ "@stylistic/js/func-call-spacing": "off",
1667
+ "@stylistic/js/function-call-argument-newline": "off",
1668
+ "@stylistic/js/function-call-spacing": "off",
1669
+ "@stylistic/js/function-paren-newline": "off",
1670
+ "@stylistic/js/generator-star-spacing": "off",
1671
+ "@stylistic/js/implicit-arrow-linebreak": "off",
1672
+ "@stylistic/js/indent": "off",
1673
+ "@stylistic/js/jsx-quotes": "off",
1674
+ "@stylistic/js/key-spacing": "off",
1675
+ "@stylistic/js/keyword-spacing": "off",
1676
+ "@stylistic/js/linebreak-style": "off",
1677
+ "@stylistic/js/max-statements-per-line": "off",
1678
+ "@stylistic/js/multiline-ternary": "off",
1679
+ "@stylistic/js/new-parens": "off",
1680
+ "@stylistic/js/newline-per-chained-call": "off",
1681
+ "@stylistic/js/no-extra-parens": "off",
1682
+ "@stylistic/js/no-extra-semi": "off",
1683
+ "@stylistic/js/no-floating-decimal": "off",
1684
+ "@stylistic/js/no-mixed-spaces-and-tabs": "off",
1685
+ "@stylistic/js/no-multi-spaces": "off",
1686
+ "@stylistic/js/no-multiple-empty-lines": "off",
1687
+ "@stylistic/js/no-trailing-spaces": "off",
1688
+ "@stylistic/js/no-whitespace-before-property": "off",
1689
+ "@stylistic/js/nonblock-statement-body-position": "off",
1690
+ "@stylistic/js/object-curly-newline": "off",
1691
+ "@stylistic/js/object-curly-spacing": "off",
1692
+ "@stylistic/js/object-property-newline": "off",
1693
+ "@stylistic/js/one-var-declaration-per-line": "off",
1694
+ "@stylistic/js/operator-linebreak": "off",
1695
+ "@stylistic/js/padded-blocks": "off",
1696
+ "@stylistic/js/quote-props": "off",
1697
+ "@stylistic/js/rest-spread-spacing": "off",
1698
+ "@stylistic/js/semi": "off",
1699
+ "@stylistic/js/semi-spacing": "off",
1700
+ "@stylistic/js/semi-style": "off",
1701
+ "@stylistic/js/space-before-blocks": "off",
1702
+ "@stylistic/js/space-before-function-paren": "off",
1703
+ "@stylistic/js/space-in-parens": "off",
1704
+ "@stylistic/js/space-infix-ops": "off",
1705
+ "@stylistic/js/space-unary-ops": "off",
1706
+ "@stylistic/js/switch-colon-spacing": "off",
1707
+ "@stylistic/js/template-curly-spacing": "off",
1708
+ "@stylistic/js/template-tag-spacing": "off",
1709
+ "@stylistic/js/wrap-iife": "off",
1710
+ "@stylistic/js/wrap-regex": "off",
1711
+ "@stylistic/js/yield-star-spacing": "off",
1712
+ "@stylistic/ts/block-spacing": "off",
1713
+ "@stylistic/ts/brace-style": "off",
1714
+ "@stylistic/ts/comma-dangle": "off",
1715
+ "@stylistic/ts/comma-spacing": "off",
1716
+ "@stylistic/ts/func-call-spacing": "off",
1717
+ "@stylistic/ts/function-call-spacing": "off",
1718
+ "@stylistic/ts/indent": "off",
1719
+ "@stylistic/ts/key-spacing": "off",
1720
+ "@stylistic/ts/keyword-spacing": "off",
1721
+ "@stylistic/ts/member-delimiter-style": "off",
1722
+ "@stylistic/ts/no-extra-parens": "off",
1723
+ "@stylistic/ts/no-extra-semi": "off",
1724
+ "@stylistic/ts/object-curly-spacing": "off",
1725
+ "@stylistic/ts/semi": "off",
1726
+ "@stylistic/ts/space-before-blocks": "off",
1727
+ "@stylistic/ts/space-before-function-paren": "off",
1728
+ "@stylistic/ts/space-infix-ops": "off",
1729
+ "@stylistic/ts/type-annotation-spacing": "off",
1730
+ "@stylistic/jsx/jsx-child-element-spacing": "off",
1731
+ "@stylistic/jsx/jsx-closing-bracket-location": "off",
1732
+ "@stylistic/jsx/jsx-closing-tag-location": "off",
1733
+ "@stylistic/jsx/jsx-curly-newline": "off",
1734
+ "@stylistic/jsx/jsx-curly-spacing": "off",
1735
+ "@stylistic/jsx/jsx-equals-spacing": "off",
1736
+ "@stylistic/jsx/jsx-first-prop-new-line": "off",
1737
+ "@stylistic/jsx/jsx-indent": "off",
1738
+ "@stylistic/jsx/jsx-indent-props": "off",
1739
+ "@stylistic/jsx/jsx-max-props-per-line": "off",
1740
+ "@typescript-eslint/block-spacing": "off",
1741
+ "@typescript-eslint/brace-style": "off",
1742
+ "@typescript-eslint/comma-dangle": "off",
1743
+ "@typescript-eslint/comma-spacing": "off",
1744
+ "@typescript-eslint/func-call-spacing": "off",
1745
+ "@typescript-eslint/indent": "off",
1746
+ "@typescript-eslint/key-spacing": "off",
1747
+ "@typescript-eslint/keyword-spacing": "off",
1748
+ "@typescript-eslint/member-delimiter-style": "off",
1749
+ "@typescript-eslint/no-extra-parens": "off",
1750
+ "@typescript-eslint/no-extra-semi": "off",
1751
+ "@typescript-eslint/object-curly-spacing": "off",
1752
+ "@typescript-eslint/semi": "off",
1753
+ "@typescript-eslint/space-before-blocks": "off",
1754
+ "@typescript-eslint/space-before-function-paren": "off",
1755
+ "@typescript-eslint/space-infix-ops": "off",
1756
+ "@typescript-eslint/type-annotation-spacing": "off",
1757
+ "babel/object-curly-spacing": "off",
1758
+ "babel/semi": "off",
1759
+ "flowtype/boolean-style": "off",
1760
+ "flowtype/delimiter-dangle": "off",
1761
+ "flowtype/generic-spacing": "off",
1762
+ "flowtype/object-type-curly-spacing": "off",
1763
+ "flowtype/object-type-delimiter": "off",
1764
+ "flowtype/quotes": "off",
1765
+ "flowtype/semi": "off",
1766
+ "flowtype/space-after-type-colon": "off",
1767
+ "flowtype/space-before-generic-bracket": "off",
1768
+ "flowtype/space-before-type-colon": "off",
1769
+ "flowtype/union-intersection-spacing": "off",
1770
+ "react/jsx-child-element-spacing": "off",
1771
+ "react/jsx-closing-bracket-location": "off",
1772
+ "react/jsx-closing-tag-location": "off",
1773
+ "react/jsx-curly-newline": "off",
1774
+ "react/jsx-curly-spacing": "off",
1775
+ "react/jsx-equals-spacing": "off",
1776
+ "react/jsx-first-prop-new-line": "off",
1777
+ "react/jsx-indent": "off",
1778
+ "react/jsx-indent-props": "off",
1779
+ "react/jsx-max-props-per-line": "off",
1780
+ "react/jsx-newline": "off",
1781
+ "react/jsx-one-expression-per-line": "off",
1782
+ "react/jsx-props-no-multi-spaces": "off",
1783
+ "react/jsx-tag-spacing": "off",
1784
+ "react/jsx-wrap-multilines": "off",
1785
+ "standard/array-bracket-even-spacing": "off",
1786
+ "standard/computed-property-even-spacing": "off",
1787
+ "standard/object-curly-even-spacing": "off",
1788
+ "unicorn/empty-brace-spaces": "off",
1789
+ "unicorn/no-nested-ternary": "off",
1790
+ "unicorn/number-literal-case": "off",
1791
+ "vue/array-bracket-newline": "off",
1792
+ "vue/array-bracket-spacing": "off",
1793
+ "vue/array-element-newline": "off",
1794
+ "vue/arrow-spacing": "off",
1795
+ "vue/block-spacing": "off",
1796
+ "vue/block-tag-newline": "off",
1797
+ "vue/brace-style": "off",
1798
+ "vue/comma-dangle": "off",
1799
+ "vue/comma-spacing": "off",
1800
+ "vue/comma-style": "off",
1801
+ "vue/dot-location": "off",
1802
+ "vue/func-call-spacing": "off",
1803
+ "vue/html-closing-bracket-newline": "off",
1804
+ "vue/html-closing-bracket-spacing": "off",
1805
+ "vue/html-end-tags": "off",
1806
+ "vue/html-indent": "off",
1807
+ "vue/html-quotes": "off",
1808
+ "vue/key-spacing": "off",
1809
+ "vue/keyword-spacing": "off",
1810
+ "vue/max-attributes-per-line": "off",
1811
+ "vue/multiline-html-element-content-newline": "off",
1812
+ "vue/multiline-ternary": "off",
1813
+ "vue/mustache-interpolation-spacing": "off",
1814
+ "vue/no-extra-parens": "off",
1815
+ "vue/no-multi-spaces": "off",
1816
+ "vue/no-spaces-around-equal-signs-in-attribute": "off",
1817
+ "vue/object-curly-newline": "off",
1818
+ "vue/object-curly-spacing": "off",
1819
+ "vue/object-property-newline": "off",
1820
+ "vue/operator-linebreak": "off",
1821
+ "vue/quote-props": "off",
1822
+ "vue/script-indent": "off",
1823
+ "vue/singleline-html-element-content-newline": "off",
1824
+ "vue/space-in-parens": "off",
1825
+ "vue/space-infix-ops": "off",
1826
+ "vue/space-unary-ops": "off",
1827
+ "vue/template-curly-spacing": "off",
1828
+ "space-unary-word-ops": "off",
1829
+ "generator-star": "off",
1830
+ "no-comma-dangle": "off",
1831
+ "no-reserved-keys": "off",
1832
+ "no-space-before-semi": "off",
1833
+ "no-wrap-func": "off",
1834
+ "space-after-function-name": "off",
1835
+ "space-before-function-parentheses": "off",
1836
+ "space-in-brackets": "off",
1837
+ "no-arrow-condition": "off",
1838
+ "space-after-keywords": "off",
1839
+ "space-before-keywords": "off",
1840
+ "space-return-throw-case": "off",
1841
+ "no-spaced-func": "off",
1842
+ "indent-legacy": "off",
1843
+ "array-bracket-newline": "off",
1844
+ "array-bracket-spacing": "off",
1845
+ "array-element-newline": "off",
1846
+ "arrow-parens": "off",
1847
+ "arrow-spacing": "off",
1848
+ "block-spacing": "off",
1849
+ "brace-style": "off",
1850
+ "comma-dangle": "off",
1851
+ "comma-spacing": "off",
1852
+ "comma-style": "off",
1853
+ "computed-property-spacing": "off",
1854
+ "dot-location": "off",
1855
+ "eol-last": "off",
1856
+ "func-call-spacing": "off",
1857
+ "function-call-argument-newline": "off",
1858
+ "function-paren-newline": "off",
1859
+ "generator-star-spacing": "off",
1860
+ "implicit-arrow-linebreak": "off",
1861
+ indent: "off",
1862
+ "jsx-quotes": "off",
1863
+ "key-spacing": "off",
1864
+ "keyword-spacing": "off",
1865
+ "linebreak-style": "off",
1866
+ "lines-around-comment": 0,
1867
+ "max-len": 0,
1868
+ "max-statements-per-line": "off",
1869
+ "multiline-ternary": "off",
1870
+ "new-parens": "off",
1871
+ "newline-per-chained-call": "off",
1872
+ "no-confusing-arrow": 0,
1873
+ "no-extra-parens": "off",
1874
+ "no-extra-semi": "off",
1875
+ "no-floating-decimal": "off",
1876
+ "no-mixed-operators": 0,
1877
+ "no-mixed-spaces-and-tabs": "off",
1878
+ "no-multi-spaces": "off",
1879
+ "no-multiple-empty-lines": "off",
1880
+ "no-tabs": 0,
1881
+ "no-trailing-spaces": "off",
1882
+ "no-whitespace-before-property": "off",
1883
+ "nonblock-statement-body-position": "off",
1884
+ "object-curly-newline": "off",
1885
+ "object-curly-spacing": "off",
1886
+ "object-property-newline": "off",
1887
+ "one-var-declaration-per-line": "off",
1888
+ "operator-linebreak": "off",
1889
+ "padded-blocks": "off",
1890
+ "quote-props": "off",
1891
+ quotes: 0,
1892
+ "rest-spread-spacing": "off",
1893
+ semi: "off",
1894
+ "semi-spacing": "off",
1895
+ "semi-style": "off",
1896
+ "space-before-blocks": "off",
1897
+ "space-before-function-paren": "off",
1898
+ "space-in-parens": "off",
1899
+ "space-infix-ops": "off",
1900
+ "space-unary-ops": "off",
1901
+ "switch-colon-spacing": "off",
1902
+ "template-curly-spacing": "off",
1903
+ "template-tag-spacing": "off",
1904
+ "wrap-iife": "off",
1905
+ "wrap-regex": "off",
1906
+ "yield-star-spacing": "off",
1907
+ "react/jsx-space-before-closing": "off",
1908
+ "prettier/prettier": "error",
1909
+ },
1910
+ },
1911
+ {
1912
+ plugins: {
1913
+ sonarjs: plugin0009,
1914
+ },
1915
+ rules: {
1916
+ "sonarjs/function-name": "off",
1917
+ "sonarjs/class-name": "off",
1918
+ "sonarjs/max-lines": "off",
1919
+ "sonarjs/no-tab": "off",
1920
+ "sonarjs/variable-name": "off",
1921
+ "sonarjs/comment-regex": "off",
1922
+ "sonarjs/no-commented-code": "off",
1923
+ "sonarjs/elseif-without-else": "off",
1924
+ "sonarjs/no-fallthrough": "error",
1925
+ "sonarjs/nested-control-flow": "off",
1926
+ "sonarjs/too-many-break-or-continue-in-loop": "off",
1927
+ "sonarjs/max-lines-per-function": "off",
1928
+ "sonarjs/no-nested-incdec": "off",
1929
+ "sonarjs/no-equals-in-for-termination": "error",
1930
+ "sonarjs/no-extra-arguments": "error",
1931
+ "sonarjs/no-collapsible-if": "off",
1932
+ "sonarjs/expression-complexity": "off",
1933
+ "sonarjs/no-redundant-parentheses": "off",
1934
+ "sonarjs/no-labels": "error",
1935
+ "sonarjs/no-nested-assignment": "off",
1936
+ "sonarjs/no-redundant-boolean": "error",
1937
+ "sonarjs/prefer-single-boolean-return": "error",
1938
+ "sonarjs/unused-import": "error",
1939
+ "sonarjs/fixme-tag": "off",
1940
+ "sonarjs/todo-tag": "warn",
1941
+ "sonarjs/useless-string-operation": "off",
1942
+ "sonarjs/no-unused-function-argument": "off",
1943
+ "sonarjs/no-duplicate-string": "off",
1944
+ "sonarjs/no-case-label-in-switch": "error",
1945
+ "sonarjs/no-parameter-reassignment": "error",
1946
+ "sonarjs/prefer-while": "error",
1947
+ "sonarjs/no-sonar-comments": "off",
1948
+ "sonarjs/no-small-switch": "error",
1949
+ "sonarjs/no-hardcoded-ip": "error",
1950
+ "sonarjs/label-position": "error",
1951
+ "sonarjs/public-static-readonly": "off",
1952
+ "sonarjs/file-header": "off",
1953
+ "sonarjs/call-argument-line": "error",
1954
+ "sonarjs/max-switch-cases": "error",
1955
+ "sonarjs/no-unused-vars": "off",
1956
+ "sonarjs/prefer-immediate-return": "off",
1957
+ "sonarjs/function-inside-loop": "error",
1958
+ "sonarjs/code-eval": "off",
1959
+ "sonarjs/no-variable-usage-before-declaration": "off",
1960
+ "sonarjs/future-reserved-words": "error",
1961
+ "sonarjs/array-constructor": "off",
1962
+ "sonarjs/bitwise-operators": "error",
1963
+ "sonarjs/no-function-declaration-in-block": "off",
1964
+ "sonarjs/no-primitive-wrappers": "error",
1965
+ "sonarjs/for-in": "off",
1966
+ "sonarjs/cyclomatic-complexity": "off",
1967
+ "sonarjs/no-skipped-tests": "off",
1968
+ "sonarjs/no-identical-expressions": "error",
1969
+ "sonarjs/no-nested-switch": "off",
1970
+ "sonarjs/constructor-for-side-effects": "off",
1971
+ "sonarjs/no-dead-store": "off",
1972
+ "sonarjs/no-identical-conditions": "error",
1973
+ "sonarjs/no-duplicated-branches": "error",
1974
+ "sonarjs/deprecation": "off",
1975
+ "sonarjs/no-inverted-boolean-check": "off",
1976
+ "sonarjs/misplaced-loop-counter": "error",
1977
+ "sonarjs/no-nested-functions": "off",
1978
+ "sonarjs/no-hardcoded-passwords": "off",
1979
+ "sonarjs/sql-queries": "error",
1980
+ "sonarjs/insecure-cookie": "error",
1981
+ "sonarjs/no-useless-increment": "error",
1982
+ "sonarjs/no-globals-shadowing": "off",
1983
+ "sonarjs/no-undefined-assignment": "off",
1984
+ "sonarjs/no-empty-test-file": "off",
1985
+ "sonarjs/no-ignored-return": "off",
1986
+ "sonarjs/no-wildcard-import": "off",
1987
+ "sonarjs/arguments-order": "off",
1988
+ "sonarjs/pseudo-random": "off",
1989
+ "sonarjs/for-loop-increment-sign": "error",
1990
+ "sonarjs/cookies": "off",
1991
+ "sonarjs/null-dereference": "error",
1992
+ "sonarjs/no-selector-parameter": "off",
1993
+ "sonarjs/updated-loop-counter": "error",
1994
+ "sonarjs/block-scoped-var": "error",
1995
+ "sonarjs/no-built-in-override": "off",
1996
+ "sonarjs/prefer-object-literal": "off",
1997
+ "sonarjs/no-ignored-exceptions": "off",
1998
+ "sonarjs/no-gratuitous-expressions": "error",
1999
+ "sonarjs/file-uploads": "error",
2000
+ "sonarjs/file-permissions": "error",
2001
+ "sonarjs/no-empty-character-class": "error",
2002
+ "sonarjs/no-unenclosed-multiline-block": "error",
2003
+ "sonarjs/index-of-compare-to-positive-number": "error",
2004
+ "sonarjs/assertions-in-tests": "off",
2005
+ "sonarjs/no-implicit-global": "off",
2006
+ "sonarjs/no-useless-catch": "error",
2007
+ "sonarjs/xml-parser-xxe": "error",
2008
+ "sonarjs/non-existent-operator": "error",
2009
+ "sonarjs/web-sql-database": "off",
2010
+ "sonarjs/post-message": "off",
2011
+ "sonarjs/no-array-delete": "error",
2012
+ "sonarjs/no-alphabetical-sort": "off",
2013
+ "sonarjs/no-incomplete-assertions": "error",
2014
+ "sonarjs/no-global-this": "error",
2015
+ "sonarjs/new-operator-misuse": "error",
2016
+ "sonarjs/no-delete-var": "error",
2017
+ "sonarjs/strings-comparison": "off",
2018
+ "sonarjs/file-name-differ-from-class": "off",
2019
+ "sonarjs/cookie-no-httponly": "error",
2020
+ "sonarjs/no-nested-conditional": "off",
2021
+ "sonarjs/no-incorrect-string-concat": "off",
2022
+ "sonarjs/different-types-comparison": "off",
2023
+ "sonarjs/inverted-assertion-arguments": "error",
2024
+ "sonarjs/shorthand-property-grouping": "off",
2025
+ "sonarjs/updated-const-var": "error",
2026
+ "sonarjs/arguments-usage": "off",
2027
+ "sonarjs/destructuring-assignment-syntax": "off",
2028
+ "sonarjs/no-invariant-returns": "off",
2029
+ "sonarjs/arrow-function-convention": "off",
2030
+ "sonarjs/class-prototype": "off",
2031
+ "sonarjs/generator-without-yield": "off",
2032
+ "sonarjs/no-require-or-define": "off",
2033
+ "sonarjs/no-associative-arrays": "error",
2034
+ "sonarjs/comma-or-logical-or-case": "error",
2035
+ "sonarjs/no-redundant-jump": "error",
2036
+ "sonarjs/inconsistent-function-call": "error",
2037
+ "sonarjs/no-use-of-empty-return-value": "error",
2038
+ "sonarjs/enforce-trailing-comma": "off",
2039
+ "sonarjs/void-use": "off",
2040
+ "sonarjs/operation-returning-nan": "off",
2041
+ "sonarjs/values-not-convertible-to-numbers": "off",
2042
+ "sonarjs/non-number-in-arithmetic-expression": "off",
2043
+ "sonarjs/cognitive-complexity": "warn",
2044
+ "sonarjs/argument-type": "off",
2045
+ "sonarjs/in-operator-type-error": "error",
2046
+ "sonarjs/array-callback-without-return": "off",
2047
+ "sonarjs/declarations-in-global-scope": "off",
2048
+ "sonarjs/function-return-type": "off",
2049
+ "sonarjs/no-inconsistent-returns": "off",
2050
+ "sonarjs/no-reference-error": "off",
2051
+ "sonarjs/super-invocation": "error",
2052
+ "sonarjs/no-all-duplicated-branches": "error",
2053
+ "sonarjs/no-same-line-conditional": "error",
2054
+ "sonarjs/conditional-indentation": "off",
2055
+ "sonarjs/no-collection-size-mischeck": "error",
2056
+ "sonarjs/no-unthrown-error": "error",
2057
+ "sonarjs/no-unused-collection": "error",
2058
+ "sonarjs/no-os-command-from-path": "off",
2059
+ "sonarjs/no-misleading-array-reverse": "off",
2060
+ "sonarjs/no-for-in-iterable": "off",
2061
+ "sonarjs/no-element-overwrite": "error",
2062
+ "sonarjs/no-identical-functions": "error",
2063
+ "sonarjs/no-empty-collection": "error",
2064
+ "sonarjs/no-redundant-assignments": "error",
2065
+ "sonarjs/prefer-type-guard": "error",
2066
+ "sonarjs/use-type-alias": "off",
2067
+ "sonarjs/no-return-type-any": "off",
2068
+ "sonarjs/no-implicit-dependencies": "off",
2069
+ "sonarjs/no-useless-intersection": "off",
2070
+ "sonarjs/weak-ssl": "error",
2071
+ "sonarjs/no-weak-keys": "error",
2072
+ "sonarjs/csrf": "error",
2073
+ "sonarjs/production-debug": "error",
2074
+ "sonarjs/prefer-default-last": "off",
2075
+ "sonarjs/no-in-misuse": "error",
2076
+ "sonarjs/no-duplicate-in-composite": "error",
2077
+ "sonarjs/max-union-size": "off",
2078
+ "sonarjs/no-undefined-argument": "off",
2079
+ "sonarjs/no-nested-template-literals": "error",
2080
+ "sonarjs/prefer-promise-shorthand": "off",
2081
+ "sonarjs/os-command": "off",
2082
+ "sonarjs/no-redundant-optional": "off",
2083
+ "sonarjs/regular-expr": "off",
2084
+ "sonarjs/encryption": "off",
2085
+ "sonarjs/hashing": "error",
2086
+ "sonarjs/bool-param-default": "off",
2087
+ "sonarjs/xpath": "off",
2088
+ "sonarjs/sockets": "off",
2089
+ "sonarjs/no-try-promise": "off",
2090
+ "sonarjs/process-argv": "off",
2091
+ "sonarjs/standard-input": "off",
2092
+ "sonarjs/unverified-certificate": "error",
2093
+ "sonarjs/no-unsafe-unzip": "off",
2094
+ "sonarjs/cors": "error",
2095
+ "sonarjs/link-with-target-blank": "off",
2096
+ "sonarjs/disabled-auto-escaping": "error",
2097
+ "sonarjs/table-header": "off",
2098
+ "sonarjs/no-table-as-layout": "error",
2099
+ "sonarjs/table-header-reference": "error",
2100
+ "sonarjs/object-alt-content": "error",
2101
+ "sonarjs/no-clear-text-protocols": "off",
2102
+ "sonarjs/publicly-writable-directories": "error",
2103
+ "sonarjs/unverified-hostname": "error",
2104
+ "sonarjs/encryption-secure-mode": "error",
2105
+ "sonarjs/no-weak-cipher": "error",
2106
+ "sonarjs/no-intrusive-permissions": "error",
2107
+ "sonarjs/insecure-jwt-token": "error",
2108
+ "sonarjs/x-powered-by": "error",
2109
+ "sonarjs/hidden-files": "error",
2110
+ "sonarjs/content-length": "error",
2111
+ "sonarjs/disabled-resource-integrity": "error",
2112
+ "sonarjs/content-security-policy": "error",
2113
+ "sonarjs/no-mixed-content": "error",
2114
+ "sonarjs/frame-ancestors": "error",
2115
+ "sonarjs/no-mime-sniff": "error",
2116
+ "sonarjs/no-referrer-policy": "error",
2117
+ "sonarjs/strict-transport-security": "error",
2118
+ "sonarjs/certificate-transparency": "off",
2119
+ "sonarjs/dns-prefetching": "off",
2120
+ "sonarjs/confidential-information-logging": "error",
2121
+ "sonarjs/no-ip-forward": "error",
2122
+ "sonarjs/empty-string-repetition": "off",
2123
+ "sonarjs/regex-complexity": "off",
2124
+ "sonarjs/anchor-precedence": "off",
2125
+ "sonarjs/slow-regex": "off",
2126
+ "sonarjs/no-invalid-regexp": "error",
2127
+ "sonarjs/unused-named-groups": "error",
2128
+ "sonarjs/no-same-argument-assert": "error",
2129
+ "sonarjs/unicode-aware-regex": "off",
2130
+ "sonarjs/no-misleading-character-class": "error",
2131
+ "sonarjs/duplicates-in-character-class": "off",
2132
+ "sonarjs/session-regeneration": "error",
2133
+ "sonarjs/test-check-exception": "error",
2134
+ "sonarjs/stable-tests": "error",
2135
+ "sonarjs/no-empty-after-reluctant": "error",
2136
+ "sonarjs/single-character-alternation": "off",
2137
+ "sonarjs/no-code-after-done": "error",
2138
+ "sonarjs/disabled-timeout": "error",
2139
+ "sonarjs/chai-determinate-assertion": "error",
2140
+ "sonarjs/aws-s3-bucket-server-encryption": "off",
2141
+ "sonarjs/aws-s3-bucket-insecure-http": "error",
2142
+ "sonarjs/aws-s3-bucket-versioning": "error",
2143
+ "sonarjs/aws-s3-bucket-granted-access": "error",
2144
+ "sonarjs/no-angular-bypass-sanitization": "error",
2145
+ "sonarjs/aws-iam-public-access": "error",
2146
+ "sonarjs/aws-ec2-unencrypted-ebs-volume": "error",
2147
+ "sonarjs/aws-s3-bucket-public-access": "error",
2148
+ "sonarjs/no-vue-bypass-sanitization": "off",
2149
+ "sonarjs/aws-iam-all-privileges": "error",
2150
+ "sonarjs/aws-rds-unencrypted-databases": "error",
2151
+ "sonarjs/aws-iam-all-resources-accessible": "off",
2152
+ "sonarjs/aws-opensearchservice-domain": "error",
2153
+ "sonarjs/aws-iam-privilege-escalation": "error",
2154
+ "sonarjs/aws-sagemaker-unencrypted-notebook": "error",
2155
+ "sonarjs/aws-restricted-ip-admin-access": "error",
2156
+ "sonarjs/no-empty-alternatives": "error",
2157
+ "sonarjs/no-control-regex": "off",
2158
+ "sonarjs/no-regex-spaces": "error",
2159
+ "sonarjs/aws-sns-unencrypted-topics": "error",
2160
+ "sonarjs/existing-groups": "error",
2161
+ "sonarjs/aws-ec2-rds-dms-public": "error",
2162
+ "sonarjs/aws-sqs-unencrypted-queue": "error",
2163
+ "sonarjs/no-empty-group": "error",
2164
+ "sonarjs/aws-efs-unencrypted": "error",
2165
+ "sonarjs/aws-apigateway-public-api": "error",
2166
+ "sonarjs/stateful-regex": "error",
2167
+ "sonarjs/concise-regex": "off",
2168
+ "sonarjs/single-char-in-character-classes": "error",
2169
+ "sonarjs/no-hardcoded-secrets": "off",
2170
+ "sonarjs/no-exclusive-tests": "error",
2171
+ "sonarjs/hardcoded-secret-signatures": "error",
2172
+ "sonarjs/jsx-no-leaked-render": "error",
2173
+ "sonarjs/no-hook-setter-in-body": "error",
2174
+ "sonarjs/no-useless-react-setstate": "off",
2175
+ "sonarjs/no-uniq-key": "error",
2176
+ "sonarjs/redundant-type-aliases": "off",
2177
+ "sonarjs/prefer-regexp-exec": "off",
2178
+ "sonarjs/no-internal-api-use": "error",
2179
+ "sonarjs/prefer-read-only-props": "off",
2180
+ "sonarjs/no-literal-call": "error",
2181
+ "sonarjs/reduce-initial-value": "off",
2182
+ "sonarjs/no-async-constructor": "off",
2183
+ "sonarjs/review-blockchain-mnemonic": "error",
2184
+ "sonarjs/dynamically-constructed-templates": "error",
2185
+ },
2186
+ },
2187
+ {
2188
+ files: [
2189
+ "*.test.ts",
2190
+ "*.test.tsx",
2191
+ "*.spec.ts",
2192
+ ],
2193
+ rules: {
2194
+ "sonarjs/no-identical-functions": "off",
2195
+ },
2196
+ },
2197
+ {
2198
+ rules: {
2199
+ "no-caller": 2,
2200
+ "no-eval": 2,
2201
+ "no-delete-var": 2,
2202
+ "no-octal-escape": 2,
2203
+ },
2204
+ },
2205
+ {
2206
+ ignores: [
2207
+ "**/dist/**/*.*",
2208
+ "**/esm/**/*.*",
2209
+ ],
2210
+ },
2211
+ {
2212
+ languageOptions: {
2213
+ globals: { ...globals.browser },
2214
+ },
2215
+ },
2216
+ {
2217
+ languageOptions: {
2218
+ ecmaVersion: 2022,
2219
+ sourceType: "module",
2220
+ },
2221
+ },
2222
+ {
2223
+ plugins: {
2224
+ react: plugin0010,
2225
+ },
2226
+ settings: {
2227
+ react: {
2228
+ version: "detect",
2229
+ },
2230
+ },
2231
+ rules: {
2232
+ "react/no-danger": "error",
2233
+ "react/prop-types": "off",
2234
+ "react/function-component-definition": [
2235
+ "error",
2236
+ {
2237
+ namedComponents: "function-declaration",
2238
+ unnamedComponents: "arrow-function",
2239
+ },
2240
+ ],
2241
+ "react/jsx-no-leaked-render": [
2242
+ "warn",
2243
+ {
2244
+ validStrategies: [
2245
+ "ternary",
2246
+ "coerce",
2247
+ ],
2248
+ },
2249
+ ],
2250
+ "react/jsx-boolean-value": [
2251
+ "error",
2252
+ "never",
2253
+ ],
2254
+ "react/react-in-jsx-scope": "off",
2255
+ },
2256
+ },
2257
+ {
2258
+ plugins: {
2259
+ "react-hooks": plugin0011,
2260
+ },
2261
+ rules: {
2262
+ "react-hooks/rules-of-hooks": "error",
2263
+ "react-hooks/exhaustive-deps": "error",
2264
+ },
2265
+ },
2266
+ {
2267
+ plugins: {
2268
+ "import-esm": plugin0012,
2269
+ },
2270
+ rules: {
2271
+ "import-esm/explicit-extension": "error",
2272
+ },
2273
+ },
2274
+ {
2275
+ languageOptions: {
2276
+ globals: { ...globals.mocha, cy: false, Cypress: false, expect: false, assert: false, chai: false },
2277
+ },
2278
+ plugins: {
2279
+ cypress: plugin0013,
2280
+ },
2281
+ rules: {
2282
+ "cypress/no-assigning-return-values": "warn",
2283
+ "cypress/no-unnecessary-waiting": "warn",
2284
+ "cypress/no-async-tests": "error",
2285
+ "cypress/unsafe-to-chain-command": "warn",
2286
+ },
2287
+ },
2288
+ {
2289
+ plugins: {
2290
+ "chai-friendly": plugin0014,
2291
+ },
2292
+ rules: {
2293
+ "no-unused-expressions": "off",
2294
+ "chai-friendly/no-unused-expressions": "error",
2295
+ },
2296
+ },
2297
+ {
2298
+ files: [
2299
+ "**/*.ts",
2300
+ "**/*.tsx",
2301
+ ],
2302
+ languageOptions: {
2303
+ parser: plugin0003,
2304
+ },
2305
+ rules: {
2306
+ "@typescript-eslint/no-unused-expressions": "off",
2307
+ },
2308
+ },
2309
+ ];