@gooddata/eslint-config 11.62.0-alpha.2 → 11.62.0-alpha.4

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