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