@gooddata/eslint-config 11.27.0-alpha.4 → 11.27.0

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