@gooddata/eslint-config 11.19.0-alpha.9 → 11.20.0-alpha.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.
Files changed (57) hide show
  1. package/PACKAGES_V8.md +1 -2
  2. package/PACKAGES_V9.md +1 -1
  3. package/PACKAGES_V9_OXLINT.md +21 -0
  4. package/README.md +22 -0
  5. package/dist/base.js +792 -283
  6. package/dist/base.json +1049 -213
  7. package/dist/browser-esm.js +794 -285
  8. package/dist/browser-esm.json +1051 -215
  9. package/dist/browser.js +792 -283
  10. package/dist/browser.json +1049 -213
  11. package/dist/esm-react-cypress.js +715 -187
  12. package/dist/esm-react-cypress.json +1051 -204
  13. package/dist/esm-react-vitest-storybook.js +825 -297
  14. package/dist/esm-react-vitest-storybook.json +1076 -204
  15. package/dist/esm-react-vitest.js +825 -297
  16. package/dist/esm-react-vitest.json +1060 -204
  17. package/dist/esm-react.js +798 -289
  18. package/dist/esm-react.json +1051 -216
  19. package/dist/esm-vitest.js +821 -293
  20. package/dist/esm-vitest.json +1060 -203
  21. package/dist/esm.js +794 -285
  22. package/dist/esm.json +1051 -215
  23. package/dist/oxlint-base.d.ts +12 -0
  24. package/dist/oxlint-base.js +1368 -0
  25. package/dist/oxlint-browser-esm.d.ts +12 -0
  26. package/dist/oxlint-browser-esm.js +1379 -0
  27. package/dist/oxlint-browser.d.ts +12 -0
  28. package/dist/oxlint-browser.js +1373 -0
  29. package/dist/oxlint-esm-react-cypress.d.ts +12 -0
  30. package/dist/oxlint-esm-react-cypress.js +1425 -0
  31. package/dist/oxlint-esm-react-vitest-storybook.d.ts +12 -0
  32. package/dist/oxlint-esm-react-vitest-storybook.js +1484 -0
  33. package/dist/oxlint-esm-react-vitest.d.ts +12 -0
  34. package/dist/oxlint-esm-react-vitest.js +1450 -0
  35. package/dist/oxlint-esm-react.d.ts +12 -0
  36. package/dist/oxlint-esm-react.js +1425 -0
  37. package/dist/oxlint-esm-vitest.d.ts +12 -0
  38. package/dist/oxlint-esm-vitest.js +1399 -0
  39. package/dist/oxlint-esm.d.ts +12 -0
  40. package/dist/oxlint-esm.js +1374 -0
  41. package/dist/oxlint-react-cypress.d.ts +12 -0
  42. package/dist/oxlint-react-cypress.js +1425 -0
  43. package/dist/oxlint-react-vitest.d.ts +12 -0
  44. package/dist/oxlint-react-vitest.js +1450 -0
  45. package/dist/oxlint-react.d.ts +12 -0
  46. package/dist/oxlint-react.js +1425 -0
  47. package/dist/oxlint-vitest.d.ts +12 -0
  48. package/dist/oxlint-vitest.js +1393 -0
  49. package/dist/react-cypress.js +713 -185
  50. package/dist/react-cypress.json +1050 -203
  51. package/dist/react-vitest.js +823 -295
  52. package/dist/react-vitest.json +1059 -203
  53. package/dist/react.js +796 -287
  54. package/dist/react.json +1049 -214
  55. package/dist/vitest.js +819 -291
  56. package/dist/vitest.json +1059 -202
  57. package/package.json +40 -6
@@ -0,0 +1,1425 @@
1
+ // This file is auto-generated. Do not edit manually.
2
+
3
+ import globals from "globals";
4
+ import plugin0001 from "@typescript-eslint/eslint-plugin";
5
+ import plugin0002 from "@typescript-eslint/parser";
6
+ import plugin0003 from "eslint-plugin-import-x";
7
+ import plugin0004 from "eslint-plugin-jsdoc";
8
+ import plugin0005 from "eslint-plugin-react";
9
+ import plugin0006 from "eslint-plugin-react-hooks";
10
+
11
+ export default [
12
+ {
13
+ languageOptions: {
14
+ globals: { ...globals.node, ...globals.es2022 },
15
+ },
16
+ },
17
+ {
18
+ rules: {
19
+ "no-duplicate-imports": [
20
+ "error",
21
+ {
22
+ includeExports: true,
23
+ },
24
+ ],
25
+ "no-console": [
26
+ 2,
27
+ {
28
+ allow: [
29
+ "warn",
30
+ "error",
31
+ ],
32
+ },
33
+ ],
34
+ "no-restricted-exports": [
35
+ 2,
36
+ {
37
+ restrictDefaultExports: {
38
+ direct: true,
39
+ named: true,
40
+ defaultFrom: true,
41
+ namedFrom: true,
42
+ namespaceFrom: true,
43
+ },
44
+ },
45
+ ],
46
+ "no-restricted-syntax": [
47
+ "error",
48
+ {
49
+ selector: "MemberExpression[object.name='React']",
50
+ message: "Do not use `React.*`. Use named imports instead.",
51
+ },
52
+ {
53
+ selector: "MemberExpression[object.name='ReactDOM']",
54
+ message: "Do not use `ReactDOM.*`. Use named imports instead.",
55
+ },
56
+ ],
57
+ "no-negated-condition": "error",
58
+ "prefer-const": "off",
59
+ },
60
+ },
61
+ {
62
+ files: [
63
+ "**/*.ts",
64
+ "**/*.tsx",
65
+ ],
66
+ rules: {
67
+ "no-restricted-imports": [
68
+ "error",
69
+ {
70
+ paths: [
71
+ {
72
+ name: "react",
73
+ importNames: [
74
+ "default",
75
+ ],
76
+ message: "Default import from React is not allowed. Use named imports instead.",
77
+ },
78
+ {
79
+ name: "react-dom",
80
+ importNames: [
81
+ "default",
82
+ ],
83
+ message: "Default import from React DOM is not allowed. Use named imports instead.",
84
+ },
85
+ {
86
+ name: "@gooddata/sdk-ui-kit",
87
+ importNames: [
88
+ "Icon",
89
+ ],
90
+ message: "The Icon export cannot be tree-shaken, use {IconName}Icon imports instead.",
91
+ },
92
+ {
93
+ name: "vitest",
94
+ importNames: [
95
+ "test",
96
+ ],
97
+ message: "Use 'it' instead of 'test' for consistency.",
98
+ },
99
+ ],
100
+ patterns: [
101
+ {
102
+ group: [
103
+ "lodash-es",
104
+ ],
105
+ importNames: [
106
+ "get",
107
+ "getOr",
108
+ ],
109
+ message: "Please use the ?. and ?? operators instead.",
110
+ },
111
+ {
112
+ group: [
113
+ "lodash-es",
114
+ ],
115
+ importNames: [
116
+ "keys",
117
+ ],
118
+ message: "Please use Object.keys() instead.",
119
+ },
120
+ {
121
+ group: [
122
+ "lodash-es",
123
+ ],
124
+ importNames: [
125
+ "values",
126
+ ],
127
+ message: "Please use Object.values() instead.",
128
+ },
129
+ {
130
+ group: [
131
+ "lodash-es",
132
+ ],
133
+ importNames: [
134
+ "entries",
135
+ "toPairs",
136
+ ],
137
+ message: "Please use Object.entries() instead.",
138
+ },
139
+ {
140
+ group: [
141
+ "lodash-es",
142
+ ],
143
+ importNames: [
144
+ "map",
145
+ ],
146
+ message: "Please use Array.prototype.map() instead.",
147
+ },
148
+ {
149
+ group: [
150
+ "lodash-es",
151
+ ],
152
+ importNames: [
153
+ "flatMap",
154
+ ],
155
+ message: "Please use Array.prototype.flatMap() instead.",
156
+ },
157
+ {
158
+ group: [
159
+ "lodash-es",
160
+ ],
161
+ importNames: [
162
+ "filter",
163
+ ],
164
+ message: "Please use Array.prototype.filter() instead.",
165
+ },
166
+ {
167
+ group: [
168
+ "lodash-es",
169
+ ],
170
+ importNames: [
171
+ "find",
172
+ ],
173
+ message: "Please use Array.prototype.find() instead.",
174
+ },
175
+ {
176
+ group: [
177
+ "lodash-es",
178
+ ],
179
+ importNames: [
180
+ "findIndex",
181
+ ],
182
+ message: "Please use Array.prototype.findIndex() instead.",
183
+ },
184
+ {
185
+ group: [
186
+ "lodash-es",
187
+ ],
188
+ importNames: [
189
+ "includes",
190
+ ],
191
+ message: "Please use Array.prototype.includes() instead.",
192
+ },
193
+ {
194
+ group: [
195
+ "lodash-es",
196
+ ],
197
+ importNames: [
198
+ "some",
199
+ ],
200
+ message: "Please use Array.prototype.some() instead.",
201
+ },
202
+ {
203
+ group: [
204
+ "lodash-es",
205
+ ],
206
+ importNames: [
207
+ "every",
208
+ ],
209
+ message: "Please use Array.prototype.every() instead.",
210
+ },
211
+ {
212
+ group: [
213
+ "lodash-es",
214
+ ],
215
+ importNames: [
216
+ "concat",
217
+ ],
218
+ message: "Please use Array.prototype.concat() or spread [...arr1, ...arr2] instead.",
219
+ },
220
+ {
221
+ group: [
222
+ "lodash-es",
223
+ ],
224
+ importNames: [
225
+ "reverse",
226
+ ],
227
+ message: "Please use Array.prototype.reverse() instead.",
228
+ },
229
+ {
230
+ group: [
231
+ "lodash-es",
232
+ ],
233
+ importNames: [
234
+ "slice",
235
+ ],
236
+ message: "Please use Array.prototype.slice() instead.",
237
+ },
238
+ {
239
+ group: [
240
+ "lodash-es",
241
+ ],
242
+ importNames: [
243
+ "indexOf",
244
+ ],
245
+ message: "Please use Array.prototype.indexOf() instead.",
246
+ },
247
+ {
248
+ group: [
249
+ "lodash-es",
250
+ ],
251
+ importNames: [
252
+ "lastIndexOf",
253
+ ],
254
+ message: "Please use Array.prototype.lastIndexOf() instead.",
255
+ },
256
+ {
257
+ group: [
258
+ "lodash-es",
259
+ ],
260
+ importNames: [
261
+ "fill",
262
+ ],
263
+ message: "Please use Array.prototype.fill() instead.",
264
+ },
265
+ {
266
+ group: [
267
+ "lodash-es",
268
+ ],
269
+ importNames: [
270
+ "startsWith",
271
+ ],
272
+ message: "Please use String.prototype.startsWith() instead.",
273
+ },
274
+ {
275
+ group: [
276
+ "lodash-es",
277
+ ],
278
+ importNames: [
279
+ "endsWith",
280
+ ],
281
+ message: "Please use String.prototype.endsWith() instead.",
282
+ },
283
+ {
284
+ group: [
285
+ "lodash-es",
286
+ ],
287
+ importNames: [
288
+ "repeat",
289
+ ],
290
+ message: "Please use String.prototype.repeat() instead.",
291
+ },
292
+ {
293
+ group: [
294
+ "lodash-es",
295
+ ],
296
+ importNames: [
297
+ "padStart",
298
+ ],
299
+ message: "Please use String.prototype.padStart() instead.",
300
+ },
301
+ {
302
+ group: [
303
+ "lodash-es",
304
+ ],
305
+ importNames: [
306
+ "padEnd",
307
+ ],
308
+ message: "Please use String.prototype.padEnd() instead.",
309
+ },
310
+ {
311
+ group: [
312
+ "lodash-es",
313
+ ],
314
+ importNames: [
315
+ "trim",
316
+ ],
317
+ message: "Please use String.prototype.trim() instead.",
318
+ },
319
+ {
320
+ group: [
321
+ "lodash-es",
322
+ ],
323
+ importNames: [
324
+ "trimStart",
325
+ "trimLeft",
326
+ ],
327
+ message: "Please use String.prototype.trimStart() instead.",
328
+ },
329
+ {
330
+ group: [
331
+ "lodash-es",
332
+ ],
333
+ importNames: [
334
+ "trimEnd",
335
+ "trimRight",
336
+ ],
337
+ message: "Please use String.prototype.trimEnd() instead.",
338
+ },
339
+ {
340
+ group: [
341
+ "lodash-es",
342
+ ],
343
+ importNames: [
344
+ "toUpper",
345
+ ],
346
+ message: "Please use String.prototype.toUpperCase() instead.",
347
+ },
348
+ {
349
+ group: [
350
+ "lodash-es",
351
+ ],
352
+ importNames: [
353
+ "toLower",
354
+ ],
355
+ message: "Please use String.prototype.toLowerCase() instead.",
356
+ },
357
+ {
358
+ group: [
359
+ "lodash-es",
360
+ ],
361
+ importNames: [
362
+ "isArray",
363
+ ],
364
+ message: "Please use Array.isArray() instead.",
365
+ },
366
+ {
367
+ group: [
368
+ "lodash-es",
369
+ ],
370
+ importNames: [
371
+ "isNaN",
372
+ ],
373
+ message: "Please use Number.isNaN() instead.",
374
+ },
375
+ {
376
+ group: [
377
+ "lodash-es",
378
+ ],
379
+ importNames: [
380
+ "isFinite",
381
+ ],
382
+ message: "Please use Number.isFinite() instead.",
383
+ },
384
+ {
385
+ group: [
386
+ "lodash-es",
387
+ ],
388
+ importNames: [
389
+ "isInteger",
390
+ ],
391
+ message: "Please use Number.isInteger() instead.",
392
+ },
393
+ {
394
+ group: [
395
+ "lodash-es",
396
+ ],
397
+ importNames: [
398
+ "isNull",
399
+ ],
400
+ message: "Please use value === null instead.",
401
+ },
402
+ {
403
+ group: [
404
+ "lodash-es",
405
+ ],
406
+ importNames: [
407
+ "isUndefined",
408
+ ],
409
+ message: "Please use value === undefined instead.",
410
+ },
411
+ {
412
+ group: [
413
+ "lodash-es",
414
+ ],
415
+ importNames: [
416
+ "defaultTo",
417
+ ],
418
+ message: "Please use value ?? defaultValue instead.",
419
+ },
420
+ {
421
+ group: [
422
+ "lodash-es",
423
+ ],
424
+ importNames: [
425
+ "assign",
426
+ ],
427
+ message: "Please use Object.assign() or spread syntax {...obj} instead.",
428
+ },
429
+ {
430
+ group: [
431
+ "lodash-es",
432
+ ],
433
+ importNames: [
434
+ "flatten",
435
+ ],
436
+ message: "Please use Array.prototype.flat() instead.",
437
+ },
438
+ {
439
+ group: [
440
+ "lodash-es",
441
+ ],
442
+ importNames: [
443
+ "flattenDeep",
444
+ ],
445
+ message: "Please use Array.prototype.flat(Infinity) instead.",
446
+ },
447
+ {
448
+ group: [
449
+ "lodash-es",
450
+ ],
451
+ importNames: [
452
+ "isNil",
453
+ ],
454
+ message: "Please use value === null || value === undefined instead.",
455
+ },
456
+ {
457
+ group: [
458
+ "lodash-es",
459
+ ],
460
+ importNames: [
461
+ "noop",
462
+ ],
463
+ message: "Please use () => {} instead.",
464
+ },
465
+ {
466
+ group: [
467
+ "lodash-es",
468
+ ],
469
+ importNames: [
470
+ "identity",
471
+ ],
472
+ message: "Please use x => x instead.",
473
+ },
474
+ {
475
+ group: [
476
+ "lodash-es",
477
+ ],
478
+ importNames: [
479
+ "first",
480
+ "head",
481
+ ],
482
+ message: "Please use Array.prototype.at(0) instead.",
483
+ },
484
+ {
485
+ group: [
486
+ "lodash-es",
487
+ ],
488
+ importNames: [
489
+ "last",
490
+ ],
491
+ message: "Please use Array.prototype.at(-1) instead.",
492
+ },
493
+ {
494
+ group: [
495
+ "lodash-es",
496
+ ],
497
+ importNames: [
498
+ "forEach",
499
+ ],
500
+ message: "Please use Array.prototype.forEach() instead.",
501
+ },
502
+ {
503
+ group: [
504
+ "lodash-es",
505
+ ],
506
+ importNames: [
507
+ "fromPairs",
508
+ ],
509
+ message: "Please use Object.fromEntries() instead.",
510
+ },
511
+ {
512
+ group: [
513
+ "lodash-es",
514
+ ],
515
+ importNames: [
516
+ "join",
517
+ ],
518
+ message: "Please use Array.prototype.join() instead.",
519
+ },
520
+ {
521
+ group: [
522
+ "lodash-es",
523
+ ],
524
+ importNames: [
525
+ "isDate",
526
+ ],
527
+ message: "Please use val instanceof Date instead.",
528
+ },
529
+ {
530
+ group: [
531
+ "lodash-es",
532
+ ],
533
+ importNames: [
534
+ "isFunction",
535
+ ],
536
+ message: "Please use typeof val === 'function' instead.",
537
+ },
538
+ {
539
+ group: [
540
+ "lodash-es",
541
+ ],
542
+ importNames: [
543
+ "isNumber",
544
+ ],
545
+ message: "Please use typeof val === 'number' instead.",
546
+ },
547
+ {
548
+ group: [
549
+ "lodash-es",
550
+ ],
551
+ importNames: [
552
+ "isObject",
553
+ ],
554
+ message: "Please use val !== null && typeof val === 'object' instead.",
555
+ },
556
+ {
557
+ group: [
558
+ "lodash-es",
559
+ ],
560
+ importNames: [
561
+ "isString",
562
+ ],
563
+ message: "Please use typeof val === 'string' instead.",
564
+ },
565
+ {
566
+ group: [
567
+ "lodash-es",
568
+ ],
569
+ importNames: [
570
+ "toString",
571
+ ],
572
+ message: "Please use String(val) instead.",
573
+ },
574
+ {
575
+ group: [
576
+ "lodash-es",
577
+ ],
578
+ importNames: [
579
+ "flow",
580
+ "flowRight",
581
+ ],
582
+ message: "Please use refactoring your code instead.",
583
+ },
584
+ {
585
+ group: [
586
+ "vitest",
587
+ ],
588
+ message: "Importing from vitest is only allowed in test files.",
589
+ },
590
+ ],
591
+ },
592
+ ],
593
+ },
594
+ },
595
+ {
596
+ files: [
597
+ "**/vitest.config.ts",
598
+ "**/vitest.*.config.ts",
599
+ "**/vitest.setup.ts",
600
+ "**/vitest.setup.tsx",
601
+ "**/*.test.ts",
602
+ "**/*.test.tsx",
603
+ "**/*.test.utils.ts",
604
+ "**/*.test.utils.tsx",
605
+ "**/*.test.helpers.ts",
606
+ "**/*.test.helpers.tsx",
607
+ ],
608
+ rules: {
609
+ "no-restricted-imports": [
610
+ "error",
611
+ {
612
+ paths: [
613
+ {
614
+ name: "react",
615
+ importNames: [
616
+ "default",
617
+ ],
618
+ message: "Default import from React is not allowed. Use named imports instead.",
619
+ },
620
+ {
621
+ name: "react-dom",
622
+ importNames: [
623
+ "default",
624
+ ],
625
+ message: "Default import from React DOM is not allowed. Use named imports instead.",
626
+ },
627
+ {
628
+ name: "@gooddata/sdk-ui-kit",
629
+ importNames: [
630
+ "Icon",
631
+ ],
632
+ message: "The Icon export cannot be tree-shaken, use {IconName}Icon imports instead.",
633
+ },
634
+ {
635
+ name: "vitest",
636
+ importNames: [
637
+ "test",
638
+ ],
639
+ message: "Use 'it' instead of 'test' for consistency.",
640
+ },
641
+ ],
642
+ patterns: [
643
+ {
644
+ group: [
645
+ "lodash-es",
646
+ ],
647
+ importNames: [
648
+ "get",
649
+ "getOr",
650
+ ],
651
+ message: "Please use the ?. and ?? operators instead.",
652
+ },
653
+ {
654
+ group: [
655
+ "lodash-es",
656
+ ],
657
+ importNames: [
658
+ "keys",
659
+ ],
660
+ message: "Please use Object.keys() instead.",
661
+ },
662
+ {
663
+ group: [
664
+ "lodash-es",
665
+ ],
666
+ importNames: [
667
+ "values",
668
+ ],
669
+ message: "Please use Object.values() instead.",
670
+ },
671
+ {
672
+ group: [
673
+ "lodash-es",
674
+ ],
675
+ importNames: [
676
+ "entries",
677
+ "toPairs",
678
+ ],
679
+ message: "Please use Object.entries() instead.",
680
+ },
681
+ {
682
+ group: [
683
+ "lodash-es",
684
+ ],
685
+ importNames: [
686
+ "map",
687
+ ],
688
+ message: "Please use Array.prototype.map() instead.",
689
+ },
690
+ {
691
+ group: [
692
+ "lodash-es",
693
+ ],
694
+ importNames: [
695
+ "flatMap",
696
+ ],
697
+ message: "Please use Array.prototype.flatMap() instead.",
698
+ },
699
+ {
700
+ group: [
701
+ "lodash-es",
702
+ ],
703
+ importNames: [
704
+ "filter",
705
+ ],
706
+ message: "Please use Array.prototype.filter() instead.",
707
+ },
708
+ {
709
+ group: [
710
+ "lodash-es",
711
+ ],
712
+ importNames: [
713
+ "find",
714
+ ],
715
+ message: "Please use Array.prototype.find() instead.",
716
+ },
717
+ {
718
+ group: [
719
+ "lodash-es",
720
+ ],
721
+ importNames: [
722
+ "findIndex",
723
+ ],
724
+ message: "Please use Array.prototype.findIndex() instead.",
725
+ },
726
+ {
727
+ group: [
728
+ "lodash-es",
729
+ ],
730
+ importNames: [
731
+ "includes",
732
+ ],
733
+ message: "Please use Array.prototype.includes() instead.",
734
+ },
735
+ {
736
+ group: [
737
+ "lodash-es",
738
+ ],
739
+ importNames: [
740
+ "some",
741
+ ],
742
+ message: "Please use Array.prototype.some() instead.",
743
+ },
744
+ {
745
+ group: [
746
+ "lodash-es",
747
+ ],
748
+ importNames: [
749
+ "every",
750
+ ],
751
+ message: "Please use Array.prototype.every() instead.",
752
+ },
753
+ {
754
+ group: [
755
+ "lodash-es",
756
+ ],
757
+ importNames: [
758
+ "concat",
759
+ ],
760
+ message: "Please use Array.prototype.concat() or spread [...arr1, ...arr2] instead.",
761
+ },
762
+ {
763
+ group: [
764
+ "lodash-es",
765
+ ],
766
+ importNames: [
767
+ "reverse",
768
+ ],
769
+ message: "Please use Array.prototype.reverse() instead.",
770
+ },
771
+ {
772
+ group: [
773
+ "lodash-es",
774
+ ],
775
+ importNames: [
776
+ "slice",
777
+ ],
778
+ message: "Please use Array.prototype.slice() instead.",
779
+ },
780
+ {
781
+ group: [
782
+ "lodash-es",
783
+ ],
784
+ importNames: [
785
+ "indexOf",
786
+ ],
787
+ message: "Please use Array.prototype.indexOf() instead.",
788
+ },
789
+ {
790
+ group: [
791
+ "lodash-es",
792
+ ],
793
+ importNames: [
794
+ "lastIndexOf",
795
+ ],
796
+ message: "Please use Array.prototype.lastIndexOf() instead.",
797
+ },
798
+ {
799
+ group: [
800
+ "lodash-es",
801
+ ],
802
+ importNames: [
803
+ "fill",
804
+ ],
805
+ message: "Please use Array.prototype.fill() instead.",
806
+ },
807
+ {
808
+ group: [
809
+ "lodash-es",
810
+ ],
811
+ importNames: [
812
+ "startsWith",
813
+ ],
814
+ message: "Please use String.prototype.startsWith() instead.",
815
+ },
816
+ {
817
+ group: [
818
+ "lodash-es",
819
+ ],
820
+ importNames: [
821
+ "endsWith",
822
+ ],
823
+ message: "Please use String.prototype.endsWith() instead.",
824
+ },
825
+ {
826
+ group: [
827
+ "lodash-es",
828
+ ],
829
+ importNames: [
830
+ "repeat",
831
+ ],
832
+ message: "Please use String.prototype.repeat() instead.",
833
+ },
834
+ {
835
+ group: [
836
+ "lodash-es",
837
+ ],
838
+ importNames: [
839
+ "padStart",
840
+ ],
841
+ message: "Please use String.prototype.padStart() instead.",
842
+ },
843
+ {
844
+ group: [
845
+ "lodash-es",
846
+ ],
847
+ importNames: [
848
+ "padEnd",
849
+ ],
850
+ message: "Please use String.prototype.padEnd() instead.",
851
+ },
852
+ {
853
+ group: [
854
+ "lodash-es",
855
+ ],
856
+ importNames: [
857
+ "trim",
858
+ ],
859
+ message: "Please use String.prototype.trim() instead.",
860
+ },
861
+ {
862
+ group: [
863
+ "lodash-es",
864
+ ],
865
+ importNames: [
866
+ "trimStart",
867
+ "trimLeft",
868
+ ],
869
+ message: "Please use String.prototype.trimStart() instead.",
870
+ },
871
+ {
872
+ group: [
873
+ "lodash-es",
874
+ ],
875
+ importNames: [
876
+ "trimEnd",
877
+ "trimRight",
878
+ ],
879
+ message: "Please use String.prototype.trimEnd() instead.",
880
+ },
881
+ {
882
+ group: [
883
+ "lodash-es",
884
+ ],
885
+ importNames: [
886
+ "toUpper",
887
+ ],
888
+ message: "Please use String.prototype.toUpperCase() instead.",
889
+ },
890
+ {
891
+ group: [
892
+ "lodash-es",
893
+ ],
894
+ importNames: [
895
+ "toLower",
896
+ ],
897
+ message: "Please use String.prototype.toLowerCase() instead.",
898
+ },
899
+ {
900
+ group: [
901
+ "lodash-es",
902
+ ],
903
+ importNames: [
904
+ "isArray",
905
+ ],
906
+ message: "Please use Array.isArray() instead.",
907
+ },
908
+ {
909
+ group: [
910
+ "lodash-es",
911
+ ],
912
+ importNames: [
913
+ "isNaN",
914
+ ],
915
+ message: "Please use Number.isNaN() instead.",
916
+ },
917
+ {
918
+ group: [
919
+ "lodash-es",
920
+ ],
921
+ importNames: [
922
+ "isFinite",
923
+ ],
924
+ message: "Please use Number.isFinite() instead.",
925
+ },
926
+ {
927
+ group: [
928
+ "lodash-es",
929
+ ],
930
+ importNames: [
931
+ "isInteger",
932
+ ],
933
+ message: "Please use Number.isInteger() instead.",
934
+ },
935
+ {
936
+ group: [
937
+ "lodash-es",
938
+ ],
939
+ importNames: [
940
+ "isNull",
941
+ ],
942
+ message: "Please use value === null instead.",
943
+ },
944
+ {
945
+ group: [
946
+ "lodash-es",
947
+ ],
948
+ importNames: [
949
+ "isUndefined",
950
+ ],
951
+ message: "Please use value === undefined instead.",
952
+ },
953
+ {
954
+ group: [
955
+ "lodash-es",
956
+ ],
957
+ importNames: [
958
+ "defaultTo",
959
+ ],
960
+ message: "Please use value ?? defaultValue instead.",
961
+ },
962
+ {
963
+ group: [
964
+ "lodash-es",
965
+ ],
966
+ importNames: [
967
+ "assign",
968
+ ],
969
+ message: "Please use Object.assign() or spread syntax {...obj} instead.",
970
+ },
971
+ {
972
+ group: [
973
+ "lodash-es",
974
+ ],
975
+ importNames: [
976
+ "flatten",
977
+ ],
978
+ message: "Please use Array.prototype.flat() instead.",
979
+ },
980
+ {
981
+ group: [
982
+ "lodash-es",
983
+ ],
984
+ importNames: [
985
+ "flattenDeep",
986
+ ],
987
+ message: "Please use Array.prototype.flat(Infinity) instead.",
988
+ },
989
+ {
990
+ group: [
991
+ "lodash-es",
992
+ ],
993
+ importNames: [
994
+ "isNil",
995
+ ],
996
+ message: "Please use value === null || value === undefined instead.",
997
+ },
998
+ {
999
+ group: [
1000
+ "lodash-es",
1001
+ ],
1002
+ importNames: [
1003
+ "noop",
1004
+ ],
1005
+ message: "Please use () => {} instead.",
1006
+ },
1007
+ {
1008
+ group: [
1009
+ "lodash-es",
1010
+ ],
1011
+ importNames: [
1012
+ "identity",
1013
+ ],
1014
+ message: "Please use x => x instead.",
1015
+ },
1016
+ {
1017
+ group: [
1018
+ "lodash-es",
1019
+ ],
1020
+ importNames: [
1021
+ "first",
1022
+ "head",
1023
+ ],
1024
+ message: "Please use Array.prototype.at(0) instead.",
1025
+ },
1026
+ {
1027
+ group: [
1028
+ "lodash-es",
1029
+ ],
1030
+ importNames: [
1031
+ "last",
1032
+ ],
1033
+ message: "Please use Array.prototype.at(-1) instead.",
1034
+ },
1035
+ {
1036
+ group: [
1037
+ "lodash-es",
1038
+ ],
1039
+ importNames: [
1040
+ "forEach",
1041
+ ],
1042
+ message: "Please use Array.prototype.forEach() instead.",
1043
+ },
1044
+ {
1045
+ group: [
1046
+ "lodash-es",
1047
+ ],
1048
+ importNames: [
1049
+ "fromPairs",
1050
+ ],
1051
+ message: "Please use Object.fromEntries() instead.",
1052
+ },
1053
+ {
1054
+ group: [
1055
+ "lodash-es",
1056
+ ],
1057
+ importNames: [
1058
+ "join",
1059
+ ],
1060
+ message: "Please use Array.prototype.join() instead.",
1061
+ },
1062
+ {
1063
+ group: [
1064
+ "lodash-es",
1065
+ ],
1066
+ importNames: [
1067
+ "isDate",
1068
+ ],
1069
+ message: "Please use val instanceof Date instead.",
1070
+ },
1071
+ {
1072
+ group: [
1073
+ "lodash-es",
1074
+ ],
1075
+ importNames: [
1076
+ "isFunction",
1077
+ ],
1078
+ message: "Please use typeof val === 'function' instead.",
1079
+ },
1080
+ {
1081
+ group: [
1082
+ "lodash-es",
1083
+ ],
1084
+ importNames: [
1085
+ "isNumber",
1086
+ ],
1087
+ message: "Please use typeof val === 'number' instead.",
1088
+ },
1089
+ {
1090
+ group: [
1091
+ "lodash-es",
1092
+ ],
1093
+ importNames: [
1094
+ "isObject",
1095
+ ],
1096
+ message: "Please use val !== null && typeof val === 'object' instead.",
1097
+ },
1098
+ {
1099
+ group: [
1100
+ "lodash-es",
1101
+ ],
1102
+ importNames: [
1103
+ "isString",
1104
+ ],
1105
+ message: "Please use typeof val === 'string' instead.",
1106
+ },
1107
+ {
1108
+ group: [
1109
+ "lodash-es",
1110
+ ],
1111
+ importNames: [
1112
+ "toString",
1113
+ ],
1114
+ message: "Please use String(val) instead.",
1115
+ },
1116
+ {
1117
+ group: [
1118
+ "lodash-es",
1119
+ ],
1120
+ importNames: [
1121
+ "flow",
1122
+ "flowRight",
1123
+ ],
1124
+ message: "Please use refactoring your code instead.",
1125
+ },
1126
+ ],
1127
+ },
1128
+ ],
1129
+ },
1130
+ },
1131
+ {
1132
+ files: [
1133
+ "**/eslint.config.ts",
1134
+ "**/eslint.config.js",
1135
+ ],
1136
+ rules: {
1137
+ "no-restricted-exports": "off",
1138
+ },
1139
+ },
1140
+ {
1141
+ languageOptions: {
1142
+ parser: plugin0002,
1143
+ sourceType: "module",
1144
+ },
1145
+ plugins: {
1146
+ "@typescript-eslint": plugin0001,
1147
+ },
1148
+ },
1149
+ {
1150
+ files: [
1151
+ "**/*.ts",
1152
+ "**/*.tsx",
1153
+ "**/*.mts",
1154
+ "**/*.cts",
1155
+ ],
1156
+ languageOptions: {
1157
+ parserOptions: {
1158
+ projectService: true,
1159
+ },
1160
+ },
1161
+ rules: {
1162
+ "constructor-super": "off",
1163
+ "getter-return": "off",
1164
+ "no-class-assign": "off",
1165
+ "no-const-assign": "off",
1166
+ "no-dupe-args": "off",
1167
+ "no-dupe-class-members": "off",
1168
+ "no-dupe-keys": "off",
1169
+ "no-func-assign": "off",
1170
+ "no-import-assign": "off",
1171
+ "no-new-native-nonconstructor": "off",
1172
+ "no-new-symbol": "off",
1173
+ "no-obj-calls": "off",
1174
+ "no-redeclare": "off",
1175
+ "no-setter-return": "off",
1176
+ "no-this-before-super": "off",
1177
+ "no-undef": "off",
1178
+ "no-unreachable": "off",
1179
+ "no-unsafe-negation": "off",
1180
+ "no-var": "error",
1181
+ "no-with": "off",
1182
+ "prefer-const": "error",
1183
+ "prefer-rest-params": "error",
1184
+ "prefer-spread": "error",
1185
+ "no-array-constructor": "off",
1186
+ "no-unused-expressions": "off",
1187
+ "no-unused-vars": "off",
1188
+ "@typescript-eslint/prefer-optional-chain": "error",
1189
+ "@typescript-eslint/consistent-type-exports": [
1190
+ "error",
1191
+ {
1192
+ fixMixedExportsWithInlineTypeSpecifier: false,
1193
+ },
1194
+ ],
1195
+ "@typescript-eslint/naming-convention": [
1196
+ "error",
1197
+ {
1198
+ selector: "interface",
1199
+ format: [
1200
+ "PascalCase",
1201
+ ],
1202
+ custom: {
1203
+ regex: "^I[A-Z]",
1204
+ match: true,
1205
+ },
1206
+ },
1207
+ ],
1208
+ },
1209
+ },
1210
+ {
1211
+ plugins: {
1212
+ "import-x": plugin0003,
1213
+ },
1214
+ settings: {
1215
+ "import-x/extensions": [
1216
+ ".js",
1217
+ ".jsx",
1218
+ ".mjs",
1219
+ ".cjs",
1220
+ ],
1221
+ },
1222
+ rules: {
1223
+ "import-x/order": [
1224
+ "error",
1225
+ {
1226
+ pathGroups: [
1227
+ {
1228
+ pattern: "react",
1229
+ group: "external",
1230
+ position: "before",
1231
+ },
1232
+ {
1233
+ pattern: "@gooddata/**",
1234
+ group: "external",
1235
+ position: "after",
1236
+ },
1237
+ ],
1238
+ groups: [
1239
+ "builtin",
1240
+ "external",
1241
+ "internal",
1242
+ [
1243
+ "parent",
1244
+ "sibling",
1245
+ "index",
1246
+ ],
1247
+ ],
1248
+ pathGroupsExcludedImportTypes: [
1249
+ "react",
1250
+ ],
1251
+ alphabetize: {
1252
+ order: "asc",
1253
+ caseInsensitive: true,
1254
+ },
1255
+ "newlines-between": "always",
1256
+ },
1257
+ ],
1258
+ },
1259
+ },
1260
+ {
1261
+ files: [
1262
+ "**/*.ts",
1263
+ "**/*.cts",
1264
+ "**/*.mts",
1265
+ "**/*.tsx",
1266
+ ],
1267
+ settings: {
1268
+ "import-x/extensions": [
1269
+ ".ts",
1270
+ ".cts",
1271
+ ".mts",
1272
+ ".tsx",
1273
+ ".js",
1274
+ ".jsx",
1275
+ ".mjs",
1276
+ ".cjs",
1277
+ ],
1278
+ "import-x/external-module-folders": [
1279
+ "node_modules",
1280
+ "node_modules/@types",
1281
+ ],
1282
+ "import-x/parsers": {
1283
+ "@typescript-eslint/parser": [
1284
+ ".ts",
1285
+ ".cts",
1286
+ ".mts",
1287
+ ".tsx",
1288
+ ],
1289
+ },
1290
+ "import-x/resolver": {
1291
+ typescript: {
1292
+ alwaysTryTypes: true,
1293
+ },
1294
+ },
1295
+ },
1296
+ },
1297
+ {
1298
+ files: [
1299
+ "**/*.{js,cjs,mjs,jsx}",
1300
+ ],
1301
+ plugins: {
1302
+ jsdoc: plugin0004,
1303
+ },
1304
+ settings: {
1305
+ jsdoc: {
1306
+ mode: "jsdoc",
1307
+ },
1308
+ },
1309
+ rules: {
1310
+ "jsdoc/require-param": "error",
1311
+ },
1312
+ },
1313
+ {
1314
+ ignores: [
1315
+ "**/dist/**/*.*",
1316
+ "**/esm/**/*.*",
1317
+ "**/node_modules/**/*.*",
1318
+ "**/ci/results/**",
1319
+ "**/__version.ts",
1320
+ "**/cypress/results/**",
1321
+ "**/cypress/screenshots/**",
1322
+ "**/cypress/videos/**",
1323
+ "**/temp/**",
1324
+ ],
1325
+ },
1326
+ {
1327
+ rules: {
1328
+ curly: 0,
1329
+ "no-unexpected-multiline": 0,
1330
+ "@typescript-eslint/lines-around-comment": 0,
1331
+ "@typescript-eslint/quotes": 0,
1332
+ "unicorn/template-indent": 0,
1333
+ "@typescript-eslint/block-spacing": "off",
1334
+ "@typescript-eslint/brace-style": "off",
1335
+ "@typescript-eslint/comma-dangle": "off",
1336
+ "@typescript-eslint/comma-spacing": "off",
1337
+ "@typescript-eslint/func-call-spacing": "off",
1338
+ "@typescript-eslint/indent": "off",
1339
+ "@typescript-eslint/key-spacing": "off",
1340
+ "@typescript-eslint/keyword-spacing": "off",
1341
+ "@typescript-eslint/member-delimiter-style": "off",
1342
+ "@typescript-eslint/no-extra-parens": "off",
1343
+ "@typescript-eslint/no-extra-semi": "off",
1344
+ "@typescript-eslint/object-curly-spacing": "off",
1345
+ "@typescript-eslint/semi": "off",
1346
+ "@typescript-eslint/space-before-blocks": "off",
1347
+ "@typescript-eslint/space-before-function-paren": "off",
1348
+ "@typescript-eslint/space-infix-ops": "off",
1349
+ "@typescript-eslint/type-annotation-spacing": "off",
1350
+ "react/jsx-child-element-spacing": "off",
1351
+ "react/jsx-closing-bracket-location": "off",
1352
+ "react/jsx-closing-tag-location": "off",
1353
+ "react/jsx-curly-newline": "off",
1354
+ "react/jsx-curly-spacing": "off",
1355
+ "react/jsx-equals-spacing": "off",
1356
+ "react/jsx-first-prop-new-line": "off",
1357
+ "react/jsx-indent": "off",
1358
+ "react/jsx-indent-props": "off",
1359
+ "react/jsx-max-props-per-line": "off",
1360
+ "react/jsx-newline": "off",
1361
+ "react/jsx-one-expression-per-line": "off",
1362
+ "react/jsx-props-no-multi-spaces": "off",
1363
+ "react/jsx-tag-spacing": "off",
1364
+ "react/jsx-wrap-multilines": "off",
1365
+ "unicorn/empty-brace-spaces": "off",
1366
+ "unicorn/no-nested-ternary": "off",
1367
+ "unicorn/number-literal-case": "off",
1368
+ },
1369
+ },
1370
+ {
1371
+ languageOptions: {
1372
+ globals: { ...globals.browser },
1373
+ },
1374
+ },
1375
+ {
1376
+ languageOptions: {
1377
+ ecmaVersion: 2022,
1378
+ sourceType: "module",
1379
+ },
1380
+ },
1381
+ {
1382
+ plugins: {
1383
+ react: plugin0005,
1384
+ },
1385
+ settings: {
1386
+ react: {
1387
+ version: "detect",
1388
+ },
1389
+ },
1390
+ rules: {
1391
+ "react/no-danger": "error",
1392
+ "react/prop-types": "off",
1393
+ "react/function-component-definition": [
1394
+ "error",
1395
+ {
1396
+ namedComponents: "function-declaration",
1397
+ unnamedComponents: "arrow-function",
1398
+ },
1399
+ ],
1400
+ "react/jsx-no-leaked-render": [
1401
+ "warn",
1402
+ {
1403
+ validStrategies: [
1404
+ "ternary",
1405
+ "coerce",
1406
+ ],
1407
+ },
1408
+ ],
1409
+ "react/jsx-boolean-value": [
1410
+ "error",
1411
+ "never",
1412
+ ],
1413
+ "react/react-in-jsx-scope": "off",
1414
+ },
1415
+ },
1416
+ {
1417
+ plugins: {
1418
+ "react-hooks": plugin0006,
1419
+ },
1420
+ rules: {
1421
+ "react-hooks/rules-of-hooks": "error",
1422
+ "react-hooks/exhaustive-deps": "error",
1423
+ },
1424
+ },
1425
+ ];