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