@gooddata/eslint-config 11.18.0-alpha.3 → 11.18.0-alpha.5

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,6 +1,7 @@
1
1
  {
2
2
  "plugins": [
3
3
  "header",
4
+ "no-barrel-files",
4
5
  "import",
5
6
  "no-only-tests",
6
7
  "sonarjs",
@@ -60,6 +61,13 @@
60
61
  "Icon"
61
62
  ],
62
63
  "message": "The Icon export cannot be tree-shaken, use {IconName}Icon imports instead."
64
+ },
65
+ {
66
+ "name": "vitest",
67
+ "importNames": [
68
+ "test"
69
+ ],
70
+ "message": "Use 'it' instead of 'test' for consistency."
63
71
  }
64
72
  ],
65
73
  "patterns": [
@@ -544,7 +552,7 @@
544
552
  "flow",
545
553
  "flowRight"
546
554
  ],
547
- "message": "Please refactor your code instead."
555
+ "message": "Please use refactoring your code instead."
548
556
  }
549
557
  ]
550
558
  }
@@ -591,6 +599,7 @@
591
599
  "template": " (C) 2026 GoodData Corporation"
592
600
  }
593
601
  ],
602
+ "no-barrel-files/no-barrel-files": "error",
594
603
  "import/order": [
595
604
  "error",
596
605
  {
@@ -649,6 +658,545 @@
649
658
  "no-octal-escape": 2
650
659
  },
651
660
  "overrides": [
661
+ {
662
+ "files": [
663
+ "**/*.ts",
664
+ "**/*.tsx"
665
+ ],
666
+ "excludedFiles": [
667
+ "**/vitest.config.ts",
668
+ "**/vitest.*.config.ts",
669
+ "**/vitest.setup.ts",
670
+ "**/vitest.setup.tsx",
671
+ "**/*.test.ts",
672
+ "**/*.test.tsx",
673
+ "**/*.test.utils.ts",
674
+ "**/*.test.utils.tsx",
675
+ "**/*.test.helpers.ts",
676
+ "**/*.test.helpers.tsx"
677
+ ],
678
+ "rules": {
679
+ "no-restricted-imports": [
680
+ "error",
681
+ {
682
+ "paths": [
683
+ {
684
+ "name": "react",
685
+ "importNames": [
686
+ "default"
687
+ ],
688
+ "message": "Default import from React is not allowed. Use named imports instead."
689
+ },
690
+ {
691
+ "name": "@gooddata/sdk-ui-kit",
692
+ "importNames": [
693
+ "Icon"
694
+ ],
695
+ "message": "The Icon export cannot be tree-shaken, use {IconName}Icon imports instead."
696
+ },
697
+ {
698
+ "name": "vitest",
699
+ "importNames": [
700
+ "test"
701
+ ],
702
+ "message": "Use 'it' instead of 'test' for consistency."
703
+ }
704
+ ],
705
+ "patterns": [
706
+ {
707
+ "group": [
708
+ "lodash-es"
709
+ ],
710
+ "importNames": [
711
+ "get",
712
+ "getOr"
713
+ ],
714
+ "message": "Please use the ?. and ?? operators instead."
715
+ },
716
+ {
717
+ "group": [
718
+ "lodash-es"
719
+ ],
720
+ "importNames": [
721
+ "keys"
722
+ ],
723
+ "message": "Please use Object.keys() instead."
724
+ },
725
+ {
726
+ "group": [
727
+ "lodash-es"
728
+ ],
729
+ "importNames": [
730
+ "values"
731
+ ],
732
+ "message": "Please use Object.values() instead."
733
+ },
734
+ {
735
+ "group": [
736
+ "lodash-es"
737
+ ],
738
+ "importNames": [
739
+ "entries",
740
+ "toPairs"
741
+ ],
742
+ "message": "Please use Object.entries() instead."
743
+ },
744
+ {
745
+ "group": [
746
+ "lodash-es"
747
+ ],
748
+ "importNames": [
749
+ "map"
750
+ ],
751
+ "message": "Please use Array.prototype.map() instead."
752
+ },
753
+ {
754
+ "group": [
755
+ "lodash-es"
756
+ ],
757
+ "importNames": [
758
+ "flatMap"
759
+ ],
760
+ "message": "Please use Array.prototype.flatMap() instead."
761
+ },
762
+ {
763
+ "group": [
764
+ "lodash-es"
765
+ ],
766
+ "importNames": [
767
+ "filter"
768
+ ],
769
+ "message": "Please use Array.prototype.filter() instead."
770
+ },
771
+ {
772
+ "group": [
773
+ "lodash-es"
774
+ ],
775
+ "importNames": [
776
+ "find"
777
+ ],
778
+ "message": "Please use Array.prototype.find() instead."
779
+ },
780
+ {
781
+ "group": [
782
+ "lodash-es"
783
+ ],
784
+ "importNames": [
785
+ "findIndex"
786
+ ],
787
+ "message": "Please use Array.prototype.findIndex() instead."
788
+ },
789
+ {
790
+ "group": [
791
+ "lodash-es"
792
+ ],
793
+ "importNames": [
794
+ "includes"
795
+ ],
796
+ "message": "Please use Array.prototype.includes() instead."
797
+ },
798
+ {
799
+ "group": [
800
+ "lodash-es"
801
+ ],
802
+ "importNames": [
803
+ "some"
804
+ ],
805
+ "message": "Please use Array.prototype.some() instead."
806
+ },
807
+ {
808
+ "group": [
809
+ "lodash-es"
810
+ ],
811
+ "importNames": [
812
+ "every"
813
+ ],
814
+ "message": "Please use Array.prototype.every() instead."
815
+ },
816
+ {
817
+ "group": [
818
+ "lodash-es"
819
+ ],
820
+ "importNames": [
821
+ "concat"
822
+ ],
823
+ "message": "Please use Array.prototype.concat() or spread [...arr1, ...arr2] instead."
824
+ },
825
+ {
826
+ "group": [
827
+ "lodash-es"
828
+ ],
829
+ "importNames": [
830
+ "reverse"
831
+ ],
832
+ "message": "Please use Array.prototype.reverse() instead."
833
+ },
834
+ {
835
+ "group": [
836
+ "lodash-es"
837
+ ],
838
+ "importNames": [
839
+ "slice"
840
+ ],
841
+ "message": "Please use Array.prototype.slice() instead."
842
+ },
843
+ {
844
+ "group": [
845
+ "lodash-es"
846
+ ],
847
+ "importNames": [
848
+ "indexOf"
849
+ ],
850
+ "message": "Please use Array.prototype.indexOf() instead."
851
+ },
852
+ {
853
+ "group": [
854
+ "lodash-es"
855
+ ],
856
+ "importNames": [
857
+ "lastIndexOf"
858
+ ],
859
+ "message": "Please use Array.prototype.lastIndexOf() instead."
860
+ },
861
+ {
862
+ "group": [
863
+ "lodash-es"
864
+ ],
865
+ "importNames": [
866
+ "fill"
867
+ ],
868
+ "message": "Please use Array.prototype.fill() instead."
869
+ },
870
+ {
871
+ "group": [
872
+ "lodash-es"
873
+ ],
874
+ "importNames": [
875
+ "startsWith"
876
+ ],
877
+ "message": "Please use String.prototype.startsWith() instead."
878
+ },
879
+ {
880
+ "group": [
881
+ "lodash-es"
882
+ ],
883
+ "importNames": [
884
+ "endsWith"
885
+ ],
886
+ "message": "Please use String.prototype.endsWith() instead."
887
+ },
888
+ {
889
+ "group": [
890
+ "lodash-es"
891
+ ],
892
+ "importNames": [
893
+ "repeat"
894
+ ],
895
+ "message": "Please use String.prototype.repeat() instead."
896
+ },
897
+ {
898
+ "group": [
899
+ "lodash-es"
900
+ ],
901
+ "importNames": [
902
+ "padStart"
903
+ ],
904
+ "message": "Please use String.prototype.padStart() instead."
905
+ },
906
+ {
907
+ "group": [
908
+ "lodash-es"
909
+ ],
910
+ "importNames": [
911
+ "padEnd"
912
+ ],
913
+ "message": "Please use String.prototype.padEnd() instead."
914
+ },
915
+ {
916
+ "group": [
917
+ "lodash-es"
918
+ ],
919
+ "importNames": [
920
+ "trim"
921
+ ],
922
+ "message": "Please use String.prototype.trim() instead."
923
+ },
924
+ {
925
+ "group": [
926
+ "lodash-es"
927
+ ],
928
+ "importNames": [
929
+ "trimStart",
930
+ "trimLeft"
931
+ ],
932
+ "message": "Please use String.prototype.trimStart() instead."
933
+ },
934
+ {
935
+ "group": [
936
+ "lodash-es"
937
+ ],
938
+ "importNames": [
939
+ "trimEnd",
940
+ "trimRight"
941
+ ],
942
+ "message": "Please use String.prototype.trimEnd() instead."
943
+ },
944
+ {
945
+ "group": [
946
+ "lodash-es"
947
+ ],
948
+ "importNames": [
949
+ "toUpper"
950
+ ],
951
+ "message": "Please use String.prototype.toUpperCase() instead."
952
+ },
953
+ {
954
+ "group": [
955
+ "lodash-es"
956
+ ],
957
+ "importNames": [
958
+ "toLower"
959
+ ],
960
+ "message": "Please use String.prototype.toLowerCase() instead."
961
+ },
962
+ {
963
+ "group": [
964
+ "lodash-es"
965
+ ],
966
+ "importNames": [
967
+ "isArray"
968
+ ],
969
+ "message": "Please use Array.isArray() instead."
970
+ },
971
+ {
972
+ "group": [
973
+ "lodash-es"
974
+ ],
975
+ "importNames": [
976
+ "isNaN"
977
+ ],
978
+ "message": "Please use Number.isNaN() instead."
979
+ },
980
+ {
981
+ "group": [
982
+ "lodash-es"
983
+ ],
984
+ "importNames": [
985
+ "isFinite"
986
+ ],
987
+ "message": "Please use Number.isFinite() instead."
988
+ },
989
+ {
990
+ "group": [
991
+ "lodash-es"
992
+ ],
993
+ "importNames": [
994
+ "isInteger"
995
+ ],
996
+ "message": "Please use Number.isInteger() instead."
997
+ },
998
+ {
999
+ "group": [
1000
+ "lodash-es"
1001
+ ],
1002
+ "importNames": [
1003
+ "isNull"
1004
+ ],
1005
+ "message": "Please use value === null instead."
1006
+ },
1007
+ {
1008
+ "group": [
1009
+ "lodash-es"
1010
+ ],
1011
+ "importNames": [
1012
+ "isUndefined"
1013
+ ],
1014
+ "message": "Please use value === undefined instead."
1015
+ },
1016
+ {
1017
+ "group": [
1018
+ "lodash-es"
1019
+ ],
1020
+ "importNames": [
1021
+ "defaultTo"
1022
+ ],
1023
+ "message": "Please use value ?? defaultValue instead."
1024
+ },
1025
+ {
1026
+ "group": [
1027
+ "lodash-es"
1028
+ ],
1029
+ "importNames": [
1030
+ "assign"
1031
+ ],
1032
+ "message": "Please use Object.assign() or spread syntax {...obj} instead."
1033
+ },
1034
+ {
1035
+ "group": [
1036
+ "lodash-es"
1037
+ ],
1038
+ "importNames": [
1039
+ "flatten"
1040
+ ],
1041
+ "message": "Please use Array.prototype.flat() instead."
1042
+ },
1043
+ {
1044
+ "group": [
1045
+ "lodash-es"
1046
+ ],
1047
+ "importNames": [
1048
+ "flattenDeep"
1049
+ ],
1050
+ "message": "Please use Array.prototype.flat(Infinity) instead."
1051
+ },
1052
+ {
1053
+ "group": [
1054
+ "lodash-es"
1055
+ ],
1056
+ "importNames": [
1057
+ "isNil"
1058
+ ],
1059
+ "message": "Please use value === null || value === undefined instead."
1060
+ },
1061
+ {
1062
+ "group": [
1063
+ "lodash-es"
1064
+ ],
1065
+ "importNames": [
1066
+ "noop"
1067
+ ],
1068
+ "message": "Please use () => {} instead."
1069
+ },
1070
+ {
1071
+ "group": [
1072
+ "lodash-es"
1073
+ ],
1074
+ "importNames": [
1075
+ "identity"
1076
+ ],
1077
+ "message": "Please use x => x instead."
1078
+ },
1079
+ {
1080
+ "group": [
1081
+ "lodash-es"
1082
+ ],
1083
+ "importNames": [
1084
+ "first",
1085
+ "head"
1086
+ ],
1087
+ "message": "Please use Array.prototype.at(0) instead."
1088
+ },
1089
+ {
1090
+ "group": [
1091
+ "lodash-es"
1092
+ ],
1093
+ "importNames": [
1094
+ "last"
1095
+ ],
1096
+ "message": "Please use Array.prototype.at(-1) instead."
1097
+ },
1098
+ {
1099
+ "group": [
1100
+ "lodash-es"
1101
+ ],
1102
+ "importNames": [
1103
+ "forEach"
1104
+ ],
1105
+ "message": "Please use Array.prototype.forEach() instead."
1106
+ },
1107
+ {
1108
+ "group": [
1109
+ "lodash-es"
1110
+ ],
1111
+ "importNames": [
1112
+ "fromPairs"
1113
+ ],
1114
+ "message": "Please use Object.fromEntries() instead."
1115
+ },
1116
+ {
1117
+ "group": [
1118
+ "lodash-es"
1119
+ ],
1120
+ "importNames": [
1121
+ "join"
1122
+ ],
1123
+ "message": "Please use Array.prototype.join() instead."
1124
+ },
1125
+ {
1126
+ "group": [
1127
+ "lodash-es"
1128
+ ],
1129
+ "importNames": [
1130
+ "isDate"
1131
+ ],
1132
+ "message": "Please use val instanceof Date instead."
1133
+ },
1134
+ {
1135
+ "group": [
1136
+ "lodash-es"
1137
+ ],
1138
+ "importNames": [
1139
+ "isFunction"
1140
+ ],
1141
+ "message": "Please use typeof val === 'function' instead."
1142
+ },
1143
+ {
1144
+ "group": [
1145
+ "lodash-es"
1146
+ ],
1147
+ "importNames": [
1148
+ "isNumber"
1149
+ ],
1150
+ "message": "Please use typeof val === 'number' instead."
1151
+ },
1152
+ {
1153
+ "group": [
1154
+ "lodash-es"
1155
+ ],
1156
+ "importNames": [
1157
+ "isObject"
1158
+ ],
1159
+ "message": "Please use val !== null && typeof val === 'object' instead."
1160
+ },
1161
+ {
1162
+ "group": [
1163
+ "lodash-es"
1164
+ ],
1165
+ "importNames": [
1166
+ "isString"
1167
+ ],
1168
+ "message": "Please use typeof val === 'string' instead."
1169
+ },
1170
+ {
1171
+ "group": [
1172
+ "lodash-es"
1173
+ ],
1174
+ "importNames": [
1175
+ "toString"
1176
+ ],
1177
+ "message": "Please use String(val) instead."
1178
+ },
1179
+ {
1180
+ "group": [
1181
+ "lodash-es"
1182
+ ],
1183
+ "importNames": [
1184
+ "flow",
1185
+ "flowRight"
1186
+ ],
1187
+ "message": "Please use refactoring your code instead."
1188
+ },
1189
+ {
1190
+ "group": [
1191
+ "vitest"
1192
+ ],
1193
+ "message": "Importing from vitest is only allowed in test files."
1194
+ }
1195
+ ]
1196
+ }
1197
+ ]
1198
+ }
1199
+ },
652
1200
  {
653
1201
  "parser": "@typescript-eslint/parser",
654
1202
  "files": [
@@ -748,6 +1296,10 @@
748
1296
  {
749
1297
  "selector": "ExportAllDeclaration",
750
1298
  "message": "Usage of `export * from` is forbidden."
1299
+ },
1300
+ {
1301
+ "selector": "ImportDeclaration[source.value=/^(?!.*reference_workspace)\\./] ImportNamespaceSpecifier",
1302
+ "message": "Do not use `import * as ...` from relative paths."
751
1303
  }
752
1304
  ],
753
1305
  "@typescript-eslint/consistent-type-imports": [
@@ -759,6 +1311,16 @@
759
1311
  ]
760
1312
  }
761
1313
  },
1314
+ {
1315
+ "parser": "@typescript-eslint/parser",
1316
+ "files": [
1317
+ "**/*.ts",
1318
+ "**/*.tsx"
1319
+ ],
1320
+ "extends": [
1321
+ "plugin:import/typescript"
1322
+ ]
1323
+ },
762
1324
  {
763
1325
  "files": [
764
1326
  "**/*.{js,cjs,mjs,jsx}"
@@ -775,16 +1337,6 @@
775
1337
  "jsdoc/require-param": "error"
776
1338
  }
777
1339
  },
778
- {
779
- "parser": "@typescript-eslint/parser",
780
- "files": [
781
- "**/*.ts",
782
- "**/*.tsx"
783
- ],
784
- "extends": [
785
- "plugin:import/typescript"
786
- ]
787
- },
788
1340
  {
789
1341
  "files": [
790
1342
  "*.test.ts",