sfdx-hardis 5.21.3 → 5.21.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -129,12 +129,13 @@
129
129
  "clear:cache:hardis"
130
130
  ]
131
131
  },
132
- "hardis:config:get": {
132
+ "hardis:auth:login": {
133
133
  "aliases": [],
134
134
  "args": {},
135
- "description": "Returns sfdx-hardis project config for a given level",
135
+ "description": "Login to salesforce org",
136
136
  "examples": [
137
- "$ sf hardis:project:deploy:sources:metadata"
137
+ "$ sf hardis:auth:login",
138
+ "CI=true sf hardis:auth:login"
138
139
  ],
139
140
  "flags": {
140
141
  "json": {
@@ -152,20 +153,28 @@
152
153
  "multiple": false,
153
154
  "type": "option"
154
155
  },
155
- "level": {
156
- "char": "l",
157
- "description": "project,branch or user",
158
- "name": "level",
159
- "default": "project",
156
+ "instanceurl": {
157
+ "char": "r",
158
+ "description": "URL of org instance",
159
+ "name": "instanceurl",
160
160
  "hasDynamicHelp": false,
161
161
  "multiple": false,
162
- "options": [
163
- "project",
164
- "branch",
165
- "user"
166
- ],
167
162
  "type": "option"
168
163
  },
164
+ "devhub": {
165
+ "char": "h",
166
+ "description": "Also connect associated DevHub",
167
+ "name": "devhub",
168
+ "allowNo": false,
169
+ "type": "boolean"
170
+ },
171
+ "scratchorg": {
172
+ "char": "s",
173
+ "description": "Scratch org",
174
+ "name": "scratchorg",
175
+ "allowNo": false,
176
+ "type": "boolean"
177
+ },
169
178
  "debug": {
170
179
  "char": "d",
171
180
  "description": "Activate debug mode (more logs)",
@@ -189,39 +198,38 @@
189
198
  },
190
199
  "hasDynamicHelp": false,
191
200
  "hiddenAliases": [],
192
- "id": "hardis:config:get",
201
+ "id": "hardis:auth:login",
193
202
  "pluginAlias": "sfdx-hardis",
194
203
  "pluginName": "sfdx-hardis",
195
204
  "pluginType": "core",
196
205
  "strict": true,
197
206
  "enableJsonFlag": true,
198
- "title": "Deploy metadata sources to org",
207
+ "title": "Login",
199
208
  "requiresProject": false,
200
209
  "isESM": true,
201
210
  "relativePath": [
202
211
  "lib",
203
212
  "commands",
204
213
  "hardis",
205
- "config",
206
- "get.js"
214
+ "auth",
215
+ "login.js"
207
216
  ],
208
217
  "aliasPermutations": [],
209
218
  "permutations": [
210
- "hardis:config:get",
211
- "config:hardis:get",
212
- "config:get:hardis",
213
- "hardis:get:config",
214
- "get:hardis:config",
215
- "get:config:hardis"
219
+ "hardis:auth:login",
220
+ "auth:hardis:login",
221
+ "auth:login:hardis",
222
+ "hardis:login:auth",
223
+ "login:hardis:auth",
224
+ "login:auth:hardis"
216
225
  ]
217
226
  },
218
- "hardis:auth:login": {
227
+ "hardis:config:get": {
219
228
  "aliases": [],
220
229
  "args": {},
221
- "description": "Login to salesforce org",
230
+ "description": "Returns sfdx-hardis project config for a given level",
222
231
  "examples": [
223
- "$ sf hardis:auth:login",
224
- "CI=true sf hardis:auth:login"
232
+ "$ sf hardis:project:deploy:sources:metadata"
225
233
  ],
226
234
  "flags": {
227
235
  "json": {
@@ -239,28 +247,20 @@
239
247
  "multiple": false,
240
248
  "type": "option"
241
249
  },
242
- "instanceurl": {
243
- "char": "r",
244
- "description": "URL of org instance",
245
- "name": "instanceurl",
250
+ "level": {
251
+ "char": "l",
252
+ "description": "project,branch or user",
253
+ "name": "level",
254
+ "default": "project",
246
255
  "hasDynamicHelp": false,
247
256
  "multiple": false,
257
+ "options": [
258
+ "project",
259
+ "branch",
260
+ "user"
261
+ ],
248
262
  "type": "option"
249
263
  },
250
- "devhub": {
251
- "char": "h",
252
- "description": "Also connect associated DevHub",
253
- "name": "devhub",
254
- "allowNo": false,
255
- "type": "boolean"
256
- },
257
- "scratchorg": {
258
- "char": "s",
259
- "description": "Scratch org",
260
- "name": "scratchorg",
261
- "allowNo": false,
262
- "type": "boolean"
263
- },
264
264
  "debug": {
265
265
  "char": "d",
266
266
  "description": "Activate debug mode (more logs)",
@@ -284,30 +284,30 @@
284
284
  },
285
285
  "hasDynamicHelp": false,
286
286
  "hiddenAliases": [],
287
- "id": "hardis:auth:login",
287
+ "id": "hardis:config:get",
288
288
  "pluginAlias": "sfdx-hardis",
289
289
  "pluginName": "sfdx-hardis",
290
290
  "pluginType": "core",
291
291
  "strict": true,
292
292
  "enableJsonFlag": true,
293
- "title": "Login",
293
+ "title": "Deploy metadata sources to org",
294
294
  "requiresProject": false,
295
295
  "isESM": true,
296
296
  "relativePath": [
297
297
  "lib",
298
298
  "commands",
299
299
  "hardis",
300
- "auth",
301
- "login.js"
300
+ "config",
301
+ "get.js"
302
302
  ],
303
303
  "aliasPermutations": [],
304
304
  "permutations": [
305
- "hardis:auth:login",
306
- "auth:hardis:login",
307
- "auth:login:hardis",
308
- "hardis:login:auth",
309
- "login:hardis:auth",
310
- "login:auth:hardis"
305
+ "hardis:config:get",
306
+ "config:hardis:get",
307
+ "config:get:hardis",
308
+ "hardis:get:config",
309
+ "get:hardis:config",
310
+ "get:config:hardis"
311
311
  ]
312
312
  },
313
313
  "hardis:doc:fieldusage": {
@@ -871,11 +871,15 @@
871
871
  "project2markdown:doc:hardis"
872
872
  ]
873
873
  },
874
- "hardis:mdapi:deploy": {
874
+ "hardis:lint:access": {
875
875
  "aliases": [],
876
876
  "args": {},
877
- "description": "sfdx-hardis wrapper for sfdx force:mdapi:deploy that displays tips to solve deployment errors.\n\n[![Assisted solving of Salesforce deployments errors](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deployment-errors.jpg)](https://nicolas.vuillamy.fr/assisted-solving-of-salesforce-deployments-errors-47f3666a9ed0)\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_mdapi.htm#cli_reference_force_mdapi_deploy)\n",
878
- "examples": [],
877
+ "description": "Check if elements(apex class and field) are at least in one permission set\n \nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-missing-access/) and can output Grafana, Slack and MsTeams Notifications.\n",
878
+ "examples": [
879
+ "$ sf hardis:lint:access",
880
+ "$ sf hardis:lint:access -e \"ApexClass:ClassA, CustomField:Account.CustomField\"",
881
+ "$ sf hardis:lint:access -i \"PermissionSet:permissionSetA, Profile\""
882
+ ],
879
883
  "flags": {
880
884
  "json": {
881
885
  "description": "Format output as json.",
@@ -892,134 +896,61 @@
892
896
  "multiple": false,
893
897
  "type": "option"
894
898
  },
895
- "checkonly": {
896
- "char": "c",
897
- "description": "checkOnly",
898
- "name": "checkonly",
899
- "allowNo": false,
900
- "type": "boolean"
901
- },
902
- "deploydir": {
903
- "char": "d",
904
- "description": "deployDir",
905
- "name": "deploydir",
906
- "hasDynamicHelp": false,
907
- "multiple": false,
908
- "type": "option"
909
- },
910
- "wait": {
911
- "char": "w",
912
- "description": "wait",
913
- "name": "wait",
914
- "default": 120,
899
+ "elementsignored": {
900
+ "char": "e",
901
+ "description": "Ignore specific elements separated by commas",
902
+ "name": "elementsignored",
903
+ "default": "",
915
904
  "hasDynamicHelp": false,
916
905
  "multiple": false,
917
906
  "type": "option"
918
907
  },
919
- "testlevel": {
920
- "char": "l",
921
- "description": "testLevel",
922
- "name": "testlevel",
923
- "default": "NoTestRun",
908
+ "ignorerights": {
909
+ "char": "i",
910
+ "description": "Ignore permission sets or profiles",
911
+ "name": "ignorerights",
912
+ "default": "",
924
913
  "hasDynamicHelp": false,
925
914
  "multiple": false,
926
- "options": [
927
- "NoTestRun",
928
- "RunSpecifiedTests",
929
- "RunLocalTests",
930
- "RunAllTestsInOrg"
931
- ],
932
- "type": "option"
933
- },
934
- "runtests": {
935
- "char": "r",
936
- "description": "runTests",
937
- "name": "runtests",
938
- "default": [],
939
- "hasDynamicHelp": false,
940
- "multiple": true,
941
915
  "type": "option"
942
916
  },
943
- "ignoreerrors": {
944
- "description": "ignoreErrors",
945
- "name": "ignoreerrors",
946
- "allowNo": false,
947
- "type": "boolean"
948
- },
949
- "ignorewarnings": {
950
- "char": "g",
951
- "description": "ignoreWarnings",
952
- "name": "ignorewarnings",
953
- "allowNo": false,
954
- "type": "boolean"
955
- },
956
- "validateddeployrequestid": {
957
- "char": "q",
958
- "description": "validatedDeployRequestId",
959
- "exclusive": [
960
- "testlevel",
961
- "runtests",
962
- "ignoreerrors",
963
- "ignorewarnings",
964
- "checkonly"
965
- ],
966
- "name": "validateddeployrequestid",
917
+ "folder": {
918
+ "char": "f",
919
+ "description": "Root folder",
920
+ "name": "folder",
921
+ "default": "force-app",
967
922
  "hasDynamicHelp": false,
968
923
  "multiple": false,
969
924
  "type": "option"
970
925
  },
971
- "verbose": {
972
- "description": "verbose",
973
- "name": "verbose",
974
- "allowNo": false,
975
- "type": "boolean"
976
- },
977
- "zipfile": {
978
- "char": "f",
979
- "description": "zipFile",
980
- "name": "zipfile",
926
+ "outputfile": {
927
+ "char": "x",
928
+ "description": "Force the path and name of output report file. Must end with .csv",
929
+ "name": "outputfile",
981
930
  "hasDynamicHelp": false,
982
931
  "multiple": false,
983
932
  "type": "option"
984
933
  },
985
- "singlepackage": {
986
- "char": "s",
987
- "description": "singlePackage",
988
- "name": "singlepackage",
989
- "allowNo": false,
990
- "type": "boolean"
991
- },
992
- "soapdeploy": {
993
- "description": "soapDeploy",
994
- "name": "soapdeploy",
995
- "allowNo": false,
996
- "type": "boolean"
997
- },
998
- "purgeondelete": {
999
- "description": "purgeOnDelete",
1000
- "name": "purgeondelete",
1001
- "allowNo": false,
1002
- "type": "boolean"
1003
- },
1004
- "concise": {
1005
- "description": "concise",
1006
- "name": "concise",
1007
- "allowNo": false,
1008
- "type": "boolean"
1009
- },
1010
934
  "debug": {
1011
- "description": "debug",
935
+ "char": "d",
936
+ "description": "Activate debug mode (more logs)",
1012
937
  "name": "debug",
1013
938
  "allowNo": false,
1014
939
  "type": "boolean"
1015
940
  },
1016
941
  "websocket": {
1017
- "description": "websocket",
942
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1018
943
  "name": "websocket",
1019
944
  "hasDynamicHelp": false,
1020
945
  "multiple": false,
1021
946
  "type": "option"
1022
947
  },
948
+ "skipauth": {
949
+ "description": "Skip authentication check when a default username is required",
950
+ "name": "skipauth",
951
+ "allowNo": false,
952
+ "type": "boolean"
953
+ },
1023
954
  "target-org": {
1024
955
  "aliases": [
1025
956
  "targetusername",
@@ -1029,8 +960,7 @@
1029
960
  "deprecateAliases": true,
1030
961
  "name": "target-org",
1031
962
  "noCacheDefault": true,
1032
- "required": true,
1033
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
963
+ "summary": "Username or alias of the target org.",
1034
964
  "hasDynamicHelp": true,
1035
965
  "multiple": false,
1036
966
  "type": "option"
@@ -1038,36 +968,68 @@
1038
968
  },
1039
969
  "hasDynamicHelp": true,
1040
970
  "hiddenAliases": [],
1041
- "id": "hardis:mdapi:deploy",
971
+ "id": "hardis:lint:access",
1042
972
  "pluginAlias": "sfdx-hardis",
1043
973
  "pluginName": "sfdx-hardis",
1044
974
  "pluginType": "core",
1045
975
  "strict": true,
1046
976
  "enableJsonFlag": true,
1047
- "isESM": true,
1048
- "relativePath": [
977
+ "title": "check permission access",
978
+ "supportsDevhubUsername": false,
979
+ "requiresProject": true,
980
+ "sourceElements": [
981
+ {
982
+ "regex": "/**/*.cls",
983
+ "type": "ApexClass",
984
+ "xmlField": "apexClass",
985
+ "xmlChildren": "classAccesses",
986
+ "xmlAccessField": "enabled",
987
+ "ignore": {
988
+ "all": false,
989
+ "elements": []
990
+ }
991
+ },
992
+ {
993
+ "regex": "/**/objects/**/fields/*__c.field-meta.xml",
994
+ "type": "CustomField",
995
+ "xmlField": "field",
996
+ "xmlChildren": "fieldPermissions",
997
+ "xmlAccessField": "readable",
998
+ "ignore": {
999
+ "all": false,
1000
+ "elements": []
1001
+ }
1002
+ }
1003
+ ],
1004
+ "messages": {
1005
+ "header": "Check if elements(apex class and field) are at least in one permission set",
1006
+ "allElementsHaveRights": "All elements are included in at least one Permission set or Profile",
1007
+ "someElementsDontHaveRights": "Some elements are not included in at least one Permission set or Profile"
1008
+ },
1009
+ "isESM": true,
1010
+ "relativePath": [
1049
1011
  "lib",
1050
1012
  "commands",
1051
1013
  "hardis",
1052
- "mdapi",
1053
- "deploy.js"
1014
+ "lint",
1015
+ "access.js"
1054
1016
  ],
1055
1017
  "aliasPermutations": [],
1056
1018
  "permutations": [
1057
- "hardis:mdapi:deploy",
1058
- "mdapi:hardis:deploy",
1059
- "mdapi:deploy:hardis",
1060
- "hardis:deploy:mdapi",
1061
- "deploy:hardis:mdapi",
1062
- "deploy:mdapi:hardis"
1019
+ "hardis:lint:access",
1020
+ "lint:hardis:access",
1021
+ "lint:access:hardis",
1022
+ "hardis:access:lint",
1023
+ "access:hardis:lint",
1024
+ "access:lint:hardis"
1063
1025
  ]
1064
1026
  },
1065
- "hardis:misc:purge-references": {
1027
+ "hardis:lint:metadatastatus": {
1066
1028
  "aliases": [],
1067
1029
  "args": {},
1068
- "description": "Purge references to any string in org metadatas before a deployment.\n\nFor example, this can be handy if you need to change the type of a custom field from Master Detail to Lookup.\n\nUSE WITH EXTREME CAUTION AND CAREFULLY READ THE MESSAGES !",
1030
+ "description": "Check if elements (flows and validation rules) are inactive in the project\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n",
1069
1031
  "examples": [
1070
- "$ sf hardis:misc:purge-references"
1032
+ "$ sf hardis:lint:metadatastatus"
1071
1033
  ],
1072
1034
  "flags": {
1073
1035
  "json": {
@@ -1085,14 +1047,6 @@
1085
1047
  "multiple": false,
1086
1048
  "type": "option"
1087
1049
  },
1088
- "references": {
1089
- "char": "r",
1090
- "description": "Comma-separated list of references to find in metadatas",
1091
- "name": "references",
1092
- "hasDynamicHelp": false,
1093
- "multiple": false,
1094
- "type": "option"
1095
- },
1096
1050
  "debug": {
1097
1051
  "char": "d",
1098
1052
  "description": "Activate debug mode (more logs)",
@@ -1100,6 +1054,14 @@
1100
1054
  "allowNo": false,
1101
1055
  "type": "boolean"
1102
1056
  },
1057
+ "outputfile": {
1058
+ "char": "f",
1059
+ "description": "Force the path and name of output report file. Must end with .csv",
1060
+ "name": "outputfile",
1061
+ "hasDynamicHelp": false,
1062
+ "multiple": false,
1063
+ "type": "option"
1064
+ },
1103
1065
  "websocket": {
1104
1066
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1105
1067
  "name": "websocket",
@@ -1122,8 +1084,7 @@
1122
1084
  "deprecateAliases": true,
1123
1085
  "name": "target-org",
1124
1086
  "noCacheDefault": true,
1125
- "required": true,
1126
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1087
+ "summary": "Username or alias of the target org.",
1127
1088
  "hasDynamicHelp": true,
1128
1089
  "multiple": false,
1129
1090
  "type": "option"
@@ -1131,41 +1092,39 @@
1131
1092
  },
1132
1093
  "hasDynamicHelp": true,
1133
1094
  "hiddenAliases": [],
1134
- "id": "hardis:misc:purge-references",
1095
+ "id": "hardis:lint:metadatastatus",
1135
1096
  "pluginAlias": "sfdx-hardis",
1136
1097
  "pluginName": "sfdx-hardis",
1137
1098
  "pluginType": "core",
1138
1099
  "strict": true,
1139
1100
  "enableJsonFlag": true,
1140
- "title": "Purge References",
1101
+ "title": "check inactive metadatas",
1102
+ "supportsDevhubUsername": false,
1141
1103
  "requiresProject": true,
1142
1104
  "isESM": true,
1143
1105
  "relativePath": [
1144
1106
  "lib",
1145
1107
  "commands",
1146
1108
  "hardis",
1147
- "misc",
1148
- "purge-references.js"
1109
+ "lint",
1110
+ "metadatastatus.js"
1149
1111
  ],
1150
1112
  "aliasPermutations": [],
1151
1113
  "permutations": [
1152
- "hardis:misc:purge-references",
1153
- "misc:hardis:purge-references",
1154
- "misc:purge-references:hardis",
1155
- "hardis:purge-references:misc",
1156
- "purge-references:hardis:misc",
1157
- "purge-references:misc:hardis"
1114
+ "hardis:lint:metadatastatus",
1115
+ "lint:hardis:metadatastatus",
1116
+ "lint:metadatastatus:hardis",
1117
+ "hardis:metadatastatus:lint",
1118
+ "metadatastatus:hardis:lint",
1119
+ "metadatastatus:lint:hardis"
1158
1120
  ]
1159
1121
  },
1160
- "hardis:misc:toml2csv": {
1122
+ "hardis:lint:missingattributes": {
1161
1123
  "aliases": [],
1162
1124
  "args": {},
1163
- "description": "Split TOML file into distinct CSV files",
1125
+ "description": "Check if elements(custom fields) aren't description",
1164
1126
  "examples": [
1165
- "$ sf hardis:misc:toml2csv --tomlfile 'D:/clients/toto/V1_full.txt' ",
1166
- "$ sf hardis:misc:toml2csv --skiptransfo --tomlfile 'D:/clients/toto/V1_full.txt' ",
1167
- "$ sf hardis:misc:toml2csv --skiptransfo --tomlfile 'D:/clients/toto/V1_full.txt' --outputdir 'C:/tmp/rrrr'",
1168
- "$ NODE_OPTIONS=--max_old_space_size=9096 sf hardis:misc:toml2csv --skiptransfo --tomlfile './input/V1.txt' --outputdir './output' --filtersections 'COMPTES,SOUS'"
1127
+ "$ sf hardis:lint:missingattributes"
1169
1128
  ],
1170
1129
  "flags": {
1171
1130
  "json": {
@@ -1183,47 +1142,6 @@
1183
1142
  "multiple": false,
1184
1143
  "type": "option"
1185
1144
  },
1186
- "tomlfile": {
1187
- "char": "f",
1188
- "description": "Input TOML file path",
1189
- "name": "tomlfile",
1190
- "required": true,
1191
- "hasDynamicHelp": false,
1192
- "multiple": false,
1193
- "type": "option"
1194
- },
1195
- "transfoconfig": {
1196
- "char": "t",
1197
- "description": "Path to JSON config file for mapping and transformation",
1198
- "name": "transfoconfig",
1199
- "hasDynamicHelp": false,
1200
- "multiple": false,
1201
- "type": "option"
1202
- },
1203
- "filtersections": {
1204
- "char": "l",
1205
- "description": "List of sections to process (if not set, all sections will be processed)",
1206
- "name": "filtersections",
1207
- "default": [],
1208
- "hasDynamicHelp": false,
1209
- "multiple": true,
1210
- "type": "option"
1211
- },
1212
- "skiptransfo": {
1213
- "char": "s",
1214
- "description": "Do not apply transformation to input data",
1215
- "name": "skiptransfo",
1216
- "allowNo": false,
1217
- "type": "boolean"
1218
- },
1219
- "outputdir": {
1220
- "char": "z",
1221
- "description": "Output directory",
1222
- "name": "outputdir",
1223
- "hasDynamicHelp": false,
1224
- "multiple": false,
1225
- "type": "option"
1226
- },
1227
1145
  "debug": {
1228
1146
  "char": "d",
1229
1147
  "description": "Activate debug mode (more logs)",
@@ -1231,6 +1149,14 @@
1231
1149
  "allowNo": false,
1232
1150
  "type": "boolean"
1233
1151
  },
1152
+ "outputfile": {
1153
+ "char": "f",
1154
+ "description": "Force the path and name of output report file. Must end with .csv",
1155
+ "name": "outputfile",
1156
+ "hasDynamicHelp": false,
1157
+ "multiple": false,
1158
+ "type": "option"
1159
+ },
1234
1160
  "websocket": {
1235
1161
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1236
1162
  "name": "websocket",
@@ -1253,8 +1179,7 @@
1253
1179
  "deprecateAliases": true,
1254
1180
  "name": "target-org",
1255
1181
  "noCacheDefault": true,
1256
- "required": true,
1257
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1182
+ "summary": "Username or alias of the target org.",
1258
1183
  "hasDynamicHelp": true,
1259
1184
  "multiple": false,
1260
1185
  "type": "option"
@@ -1262,40 +1187,39 @@
1262
1187
  },
1263
1188
  "hasDynamicHelp": true,
1264
1189
  "hiddenAliases": [],
1265
- "id": "hardis:misc:toml2csv",
1190
+ "id": "hardis:lint:missingattributes",
1266
1191
  "pluginAlias": "sfdx-hardis",
1267
1192
  "pluginName": "sfdx-hardis",
1268
1193
  "pluginType": "core",
1269
1194
  "strict": true,
1270
1195
  "enableJsonFlag": true,
1271
- "title": "TOML to CSV",
1196
+ "title": "check missing description on custom fields",
1197
+ "supportsDevhubUsername": false,
1272
1198
  "requiresProject": true,
1273
1199
  "isESM": true,
1274
1200
  "relativePath": [
1275
1201
  "lib",
1276
1202
  "commands",
1277
1203
  "hardis",
1278
- "misc",
1279
- "toml2csv.js"
1204
+ "lint",
1205
+ "missingattributes.js"
1280
1206
  ],
1281
1207
  "aliasPermutations": [],
1282
1208
  "permutations": [
1283
- "hardis:misc:toml2csv",
1284
- "misc:hardis:toml2csv",
1285
- "misc:toml2csv:hardis",
1286
- "hardis:toml2csv:misc",
1287
- "toml2csv:hardis:misc",
1288
- "toml2csv:misc:hardis"
1209
+ "hardis:lint:missingattributes",
1210
+ "lint:hardis:missingattributes",
1211
+ "lint:missingattributes:hardis",
1212
+ "hardis:missingattributes:lint",
1213
+ "missingattributes:hardis:lint",
1214
+ "missingattributes:lint:hardis"
1289
1215
  ]
1290
1216
  },
1291
- "hardis:lint:access": {
1217
+ "hardis:lint:unusedmetadatas": {
1292
1218
  "aliases": [],
1293
1219
  "args": {},
1294
- "description": "Check if elements(apex class and field) are at least in one permission set\n \nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-missing-access/) and can output Grafana, Slack and MsTeams Notifications.\n",
1220
+ "description": "Check if elements (custom labels and custom permissions) are used in the project\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n ",
1295
1221
  "examples": [
1296
- "$ sf hardis:lint:access",
1297
- "$ sf hardis:lint:access -e \"ApexClass:ClassA, CustomField:Account.CustomField\"",
1298
- "$ sf hardis:lint:access -i \"PermissionSet:permissionSetA, Profile\""
1222
+ "$ sf hardis:lint:unusedmetadatas"
1299
1223
  ],
1300
1224
  "flags": {
1301
1225
  "json": {
@@ -1313,48 +1237,21 @@
1313
1237
  "multiple": false,
1314
1238
  "type": "option"
1315
1239
  },
1316
- "elementsignored": {
1317
- "char": "e",
1318
- "description": "Ignore specific elements separated by commas",
1319
- "name": "elementsignored",
1320
- "default": "",
1321
- "hasDynamicHelp": false,
1322
- "multiple": false,
1323
- "type": "option"
1324
- },
1325
- "ignorerights": {
1326
- "char": "i",
1327
- "description": "Ignore permission sets or profiles",
1328
- "name": "ignorerights",
1329
- "default": "",
1330
- "hasDynamicHelp": false,
1331
- "multiple": false,
1332
- "type": "option"
1333
- },
1334
- "folder": {
1335
- "char": "f",
1336
- "description": "Root folder",
1337
- "name": "folder",
1338
- "default": "force-app",
1339
- "hasDynamicHelp": false,
1340
- "multiple": false,
1341
- "type": "option"
1240
+ "debug": {
1241
+ "char": "d",
1242
+ "description": "Activate debug mode (more logs)",
1243
+ "name": "debug",
1244
+ "allowNo": false,
1245
+ "type": "boolean"
1342
1246
  },
1343
1247
  "outputfile": {
1344
- "char": "x",
1248
+ "char": "f",
1345
1249
  "description": "Force the path and name of output report file. Must end with .csv",
1346
1250
  "name": "outputfile",
1347
1251
  "hasDynamicHelp": false,
1348
1252
  "multiple": false,
1349
1253
  "type": "option"
1350
1254
  },
1351
- "debug": {
1352
- "char": "d",
1353
- "description": "Activate debug mode (more logs)",
1354
- "name": "debug",
1355
- "allowNo": false,
1356
- "type": "boolean"
1357
- },
1358
1255
  "websocket": {
1359
1256
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1360
1257
  "name": "websocket",
@@ -1385,69 +1282,38 @@
1385
1282
  },
1386
1283
  "hasDynamicHelp": true,
1387
1284
  "hiddenAliases": [],
1388
- "id": "hardis:lint:access",
1285
+ "id": "hardis:lint:unusedmetadatas",
1389
1286
  "pluginAlias": "sfdx-hardis",
1390
1287
  "pluginName": "sfdx-hardis",
1391
1288
  "pluginType": "core",
1392
1289
  "strict": true,
1393
1290
  "enableJsonFlag": true,
1394
- "title": "check permission access",
1291
+ "title": "check unused labels and custom permissions",
1395
1292
  "supportsDevhubUsername": false,
1396
1293
  "requiresProject": true,
1397
- "sourceElements": [
1398
- {
1399
- "regex": "/**/*.cls",
1400
- "type": "ApexClass",
1401
- "xmlField": "apexClass",
1402
- "xmlChildren": "classAccesses",
1403
- "xmlAccessField": "enabled",
1404
- "ignore": {
1405
- "all": false,
1406
- "elements": []
1407
- }
1408
- },
1409
- {
1410
- "regex": "/**/objects/**/fields/*__c.field-meta.xml",
1411
- "type": "CustomField",
1412
- "xmlField": "field",
1413
- "xmlChildren": "fieldPermissions",
1414
- "xmlAccessField": "readable",
1415
- "ignore": {
1416
- "all": false,
1417
- "elements": []
1418
- }
1419
- }
1420
- ],
1421
- "messages": {
1422
- "header": "Check if elements(apex class and field) are at least in one permission set",
1423
- "allElementsHaveRights": "All elements are included in at least one Permission set or Profile",
1424
- "someElementsDontHaveRights": "Some elements are not included in at least one Permission set or Profile"
1425
- },
1426
1294
  "isESM": true,
1427
1295
  "relativePath": [
1428
1296
  "lib",
1429
1297
  "commands",
1430
1298
  "hardis",
1431
1299
  "lint",
1432
- "access.js"
1300
+ "unusedmetadatas.js"
1433
1301
  ],
1434
1302
  "aliasPermutations": [],
1435
1303
  "permutations": [
1436
- "hardis:lint:access",
1437
- "lint:hardis:access",
1438
- "lint:access:hardis",
1439
- "hardis:access:lint",
1440
- "access:hardis:lint",
1441
- "access:lint:hardis"
1304
+ "hardis:lint:unusedmetadatas",
1305
+ "lint:hardis:unusedmetadatas",
1306
+ "lint:unusedmetadatas:hardis",
1307
+ "hardis:unusedmetadatas:lint",
1308
+ "unusedmetadatas:hardis:lint",
1309
+ "unusedmetadatas:lint:hardis"
1442
1310
  ]
1443
1311
  },
1444
- "hardis:lint:metadatastatus": {
1312
+ "hardis:mdapi:deploy": {
1445
1313
  "aliases": [],
1446
1314
  "args": {},
1447
- "description": "Check if elements (flows and validation rules) are inactive in the project\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n",
1448
- "examples": [
1449
- "$ sf hardis:lint:metadatastatus"
1450
- ],
1315
+ "description": "sfdx-hardis wrapper for sfdx force:mdapi:deploy that displays tips to solve deployment errors.\n\n[![Assisted solving of Salesforce deployments errors](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deployment-errors.jpg)](https://nicolas.vuillamy.fr/assisted-solving-of-salesforce-deployments-errors-47f3666a9ed0)\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_mdapi.htm#cli_reference_force_mdapi_deploy)\n",
1316
+ "examples": [],
1451
1317
  "flags": {
1452
1318
  "json": {
1453
1319
  "description": "Format output as json.",
@@ -1464,34 +1330,134 @@
1464
1330
  "multiple": false,
1465
1331
  "type": "option"
1466
1332
  },
1467
- "debug": {
1333
+ "checkonly": {
1334
+ "char": "c",
1335
+ "description": "checkOnly",
1336
+ "name": "checkonly",
1337
+ "allowNo": false,
1338
+ "type": "boolean"
1339
+ },
1340
+ "deploydir": {
1468
1341
  "char": "d",
1469
- "description": "Activate debug mode (more logs)",
1470
- "name": "debug",
1342
+ "description": "deployDir",
1343
+ "name": "deploydir",
1344
+ "hasDynamicHelp": false,
1345
+ "multiple": false,
1346
+ "type": "option"
1347
+ },
1348
+ "wait": {
1349
+ "char": "w",
1350
+ "description": "wait",
1351
+ "name": "wait",
1352
+ "default": 120,
1353
+ "hasDynamicHelp": false,
1354
+ "multiple": false,
1355
+ "type": "option"
1356
+ },
1357
+ "testlevel": {
1358
+ "char": "l",
1359
+ "description": "testLevel",
1360
+ "name": "testlevel",
1361
+ "default": "NoTestRun",
1362
+ "hasDynamicHelp": false,
1363
+ "multiple": false,
1364
+ "options": [
1365
+ "NoTestRun",
1366
+ "RunSpecifiedTests",
1367
+ "RunLocalTests",
1368
+ "RunAllTestsInOrg"
1369
+ ],
1370
+ "type": "option"
1371
+ },
1372
+ "runtests": {
1373
+ "char": "r",
1374
+ "description": "runTests",
1375
+ "name": "runtests",
1376
+ "default": [],
1377
+ "hasDynamicHelp": false,
1378
+ "multiple": true,
1379
+ "type": "option"
1380
+ },
1381
+ "ignoreerrors": {
1382
+ "description": "ignoreErrors",
1383
+ "name": "ignoreerrors",
1471
1384
  "allowNo": false,
1472
1385
  "type": "boolean"
1473
1386
  },
1474
- "outputfile": {
1475
- "char": "f",
1476
- "description": "Force the path and name of output report file. Must end with .csv",
1477
- "name": "outputfile",
1387
+ "ignorewarnings": {
1388
+ "char": "g",
1389
+ "description": "ignoreWarnings",
1390
+ "name": "ignorewarnings",
1391
+ "allowNo": false,
1392
+ "type": "boolean"
1393
+ },
1394
+ "validateddeployrequestid": {
1395
+ "char": "q",
1396
+ "description": "validatedDeployRequestId",
1397
+ "exclusive": [
1398
+ "testlevel",
1399
+ "runtests",
1400
+ "ignoreerrors",
1401
+ "ignorewarnings",
1402
+ "checkonly"
1403
+ ],
1404
+ "name": "validateddeployrequestid",
1478
1405
  "hasDynamicHelp": false,
1479
1406
  "multiple": false,
1480
1407
  "type": "option"
1481
1408
  },
1482
- "websocket": {
1483
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1484
- "name": "websocket",
1409
+ "verbose": {
1410
+ "description": "verbose",
1411
+ "name": "verbose",
1412
+ "allowNo": false,
1413
+ "type": "boolean"
1414
+ },
1415
+ "zipfile": {
1416
+ "char": "f",
1417
+ "description": "zipFile",
1418
+ "name": "zipfile",
1485
1419
  "hasDynamicHelp": false,
1486
1420
  "multiple": false,
1487
1421
  "type": "option"
1488
1422
  },
1489
- "skipauth": {
1490
- "description": "Skip authentication check when a default username is required",
1491
- "name": "skipauth",
1423
+ "singlepackage": {
1424
+ "char": "s",
1425
+ "description": "singlePackage",
1426
+ "name": "singlepackage",
1427
+ "allowNo": false,
1428
+ "type": "boolean"
1429
+ },
1430
+ "soapdeploy": {
1431
+ "description": "soapDeploy",
1432
+ "name": "soapdeploy",
1433
+ "allowNo": false,
1434
+ "type": "boolean"
1435
+ },
1436
+ "purgeondelete": {
1437
+ "description": "purgeOnDelete",
1438
+ "name": "purgeondelete",
1439
+ "allowNo": false,
1440
+ "type": "boolean"
1441
+ },
1442
+ "concise": {
1443
+ "description": "concise",
1444
+ "name": "concise",
1445
+ "allowNo": false,
1446
+ "type": "boolean"
1447
+ },
1448
+ "debug": {
1449
+ "description": "debug",
1450
+ "name": "debug",
1492
1451
  "allowNo": false,
1493
1452
  "type": "boolean"
1494
1453
  },
1454
+ "websocket": {
1455
+ "description": "websocket",
1456
+ "name": "websocket",
1457
+ "hasDynamicHelp": false,
1458
+ "multiple": false,
1459
+ "type": "option"
1460
+ },
1495
1461
  "target-org": {
1496
1462
  "aliases": [
1497
1463
  "targetusername",
@@ -1501,7 +1467,8 @@
1501
1467
  "deprecateAliases": true,
1502
1468
  "name": "target-org",
1503
1469
  "noCacheDefault": true,
1504
- "summary": "Username or alias of the target org.",
1470
+ "required": true,
1471
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1505
1472
  "hasDynamicHelp": true,
1506
1473
  "multiple": false,
1507
1474
  "type": "option"
@@ -1509,39 +1476,36 @@
1509
1476
  },
1510
1477
  "hasDynamicHelp": true,
1511
1478
  "hiddenAliases": [],
1512
- "id": "hardis:lint:metadatastatus",
1479
+ "id": "hardis:mdapi:deploy",
1513
1480
  "pluginAlias": "sfdx-hardis",
1514
1481
  "pluginName": "sfdx-hardis",
1515
1482
  "pluginType": "core",
1516
1483
  "strict": true,
1517
1484
  "enableJsonFlag": true,
1518
- "title": "check inactive metadatas",
1519
- "supportsDevhubUsername": false,
1520
- "requiresProject": true,
1521
1485
  "isESM": true,
1522
1486
  "relativePath": [
1523
1487
  "lib",
1524
1488
  "commands",
1525
1489
  "hardis",
1526
- "lint",
1527
- "metadatastatus.js"
1490
+ "mdapi",
1491
+ "deploy.js"
1528
1492
  ],
1529
1493
  "aliasPermutations": [],
1530
1494
  "permutations": [
1531
- "hardis:lint:metadatastatus",
1532
- "lint:hardis:metadatastatus",
1533
- "lint:metadatastatus:hardis",
1534
- "hardis:metadatastatus:lint",
1535
- "metadatastatus:hardis:lint",
1536
- "metadatastatus:lint:hardis"
1495
+ "hardis:mdapi:deploy",
1496
+ "mdapi:hardis:deploy",
1497
+ "mdapi:deploy:hardis",
1498
+ "hardis:deploy:mdapi",
1499
+ "deploy:hardis:mdapi",
1500
+ "deploy:mdapi:hardis"
1537
1501
  ]
1538
1502
  },
1539
- "hardis:lint:missingattributes": {
1503
+ "hardis:misc:purge-references": {
1540
1504
  "aliases": [],
1541
1505
  "args": {},
1542
- "description": "Check if elements(custom fields) aren't description",
1506
+ "description": "Purge references to any string in org metadatas before a deployment.\n\nFor example, this can be handy if you need to change the type of a custom field from Master Detail to Lookup.\n\nUSE WITH EXTREME CAUTION AND CAREFULLY READ THE MESSAGES !",
1543
1507
  "examples": [
1544
- "$ sf hardis:lint:missingattributes"
1508
+ "$ sf hardis:misc:purge-references"
1545
1509
  ],
1546
1510
  "flags": {
1547
1511
  "json": {
@@ -1559,6 +1523,14 @@
1559
1523
  "multiple": false,
1560
1524
  "type": "option"
1561
1525
  },
1526
+ "references": {
1527
+ "char": "r",
1528
+ "description": "Comma-separated list of references to find in metadatas",
1529
+ "name": "references",
1530
+ "hasDynamicHelp": false,
1531
+ "multiple": false,
1532
+ "type": "option"
1533
+ },
1562
1534
  "debug": {
1563
1535
  "char": "d",
1564
1536
  "description": "Activate debug mode (more logs)",
@@ -1566,14 +1538,6 @@
1566
1538
  "allowNo": false,
1567
1539
  "type": "boolean"
1568
1540
  },
1569
- "outputfile": {
1570
- "char": "f",
1571
- "description": "Force the path and name of output report file. Must end with .csv",
1572
- "name": "outputfile",
1573
- "hasDynamicHelp": false,
1574
- "multiple": false,
1575
- "type": "option"
1576
- },
1577
1541
  "websocket": {
1578
1542
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1579
1543
  "name": "websocket",
@@ -1596,7 +1560,8 @@
1596
1560
  "deprecateAliases": true,
1597
1561
  "name": "target-org",
1598
1562
  "noCacheDefault": true,
1599
- "summary": "Username or alias of the target org.",
1563
+ "required": true,
1564
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1600
1565
  "hasDynamicHelp": true,
1601
1566
  "multiple": false,
1602
1567
  "type": "option"
@@ -1604,39 +1569,41 @@
1604
1569
  },
1605
1570
  "hasDynamicHelp": true,
1606
1571
  "hiddenAliases": [],
1607
- "id": "hardis:lint:missingattributes",
1572
+ "id": "hardis:misc:purge-references",
1608
1573
  "pluginAlias": "sfdx-hardis",
1609
1574
  "pluginName": "sfdx-hardis",
1610
1575
  "pluginType": "core",
1611
1576
  "strict": true,
1612
1577
  "enableJsonFlag": true,
1613
- "title": "check missing description on custom fields",
1614
- "supportsDevhubUsername": false,
1578
+ "title": "Purge References",
1615
1579
  "requiresProject": true,
1616
1580
  "isESM": true,
1617
1581
  "relativePath": [
1618
1582
  "lib",
1619
1583
  "commands",
1620
1584
  "hardis",
1621
- "lint",
1622
- "missingattributes.js"
1585
+ "misc",
1586
+ "purge-references.js"
1623
1587
  ],
1624
1588
  "aliasPermutations": [],
1625
1589
  "permutations": [
1626
- "hardis:lint:missingattributes",
1627
- "lint:hardis:missingattributes",
1628
- "lint:missingattributes:hardis",
1629
- "hardis:missingattributes:lint",
1630
- "missingattributes:hardis:lint",
1631
- "missingattributes:lint:hardis"
1590
+ "hardis:misc:purge-references",
1591
+ "misc:hardis:purge-references",
1592
+ "misc:purge-references:hardis",
1593
+ "hardis:purge-references:misc",
1594
+ "purge-references:hardis:misc",
1595
+ "purge-references:misc:hardis"
1632
1596
  ]
1633
1597
  },
1634
- "hardis:lint:unusedmetadatas": {
1598
+ "hardis:misc:toml2csv": {
1635
1599
  "aliases": [],
1636
1600
  "args": {},
1637
- "description": "Check if elements (custom labels and custom permissions) are used in the project\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n ",
1601
+ "description": "Split TOML file into distinct CSV files",
1638
1602
  "examples": [
1639
- "$ sf hardis:lint:unusedmetadatas"
1603
+ "$ sf hardis:misc:toml2csv --tomlfile 'D:/clients/toto/V1_full.txt' ",
1604
+ "$ sf hardis:misc:toml2csv --skiptransfo --tomlfile 'D:/clients/toto/V1_full.txt' ",
1605
+ "$ sf hardis:misc:toml2csv --skiptransfo --tomlfile 'D:/clients/toto/V1_full.txt' --outputdir 'C:/tmp/rrrr'",
1606
+ "$ NODE_OPTIONS=--max_old_space_size=9096 sf hardis:misc:toml2csv --skiptransfo --tomlfile './input/V1.txt' --outputdir './output' --filtersections 'COMPTES,SOUS'"
1640
1607
  ],
1641
1608
  "flags": {
1642
1609
  "json": {
@@ -1654,21 +1621,54 @@
1654
1621
  "multiple": false,
1655
1622
  "type": "option"
1656
1623
  },
1657
- "debug": {
1658
- "char": "d",
1659
- "description": "Activate debug mode (more logs)",
1660
- "name": "debug",
1624
+ "tomlfile": {
1625
+ "char": "f",
1626
+ "description": "Input TOML file path",
1627
+ "name": "tomlfile",
1628
+ "required": true,
1629
+ "hasDynamicHelp": false,
1630
+ "multiple": false,
1631
+ "type": "option"
1632
+ },
1633
+ "transfoconfig": {
1634
+ "char": "t",
1635
+ "description": "Path to JSON config file for mapping and transformation",
1636
+ "name": "transfoconfig",
1637
+ "hasDynamicHelp": false,
1638
+ "multiple": false,
1639
+ "type": "option"
1640
+ },
1641
+ "filtersections": {
1642
+ "char": "l",
1643
+ "description": "List of sections to process (if not set, all sections will be processed)",
1644
+ "name": "filtersections",
1645
+ "default": [],
1646
+ "hasDynamicHelp": false,
1647
+ "multiple": true,
1648
+ "type": "option"
1649
+ },
1650
+ "skiptransfo": {
1651
+ "char": "s",
1652
+ "description": "Do not apply transformation to input data",
1653
+ "name": "skiptransfo",
1661
1654
  "allowNo": false,
1662
1655
  "type": "boolean"
1663
1656
  },
1664
- "outputfile": {
1665
- "char": "f",
1666
- "description": "Force the path and name of output report file. Must end with .csv",
1667
- "name": "outputfile",
1657
+ "outputdir": {
1658
+ "char": "z",
1659
+ "description": "Output directory",
1660
+ "name": "outputdir",
1668
1661
  "hasDynamicHelp": false,
1669
1662
  "multiple": false,
1670
1663
  "type": "option"
1671
1664
  },
1665
+ "debug": {
1666
+ "char": "d",
1667
+ "description": "Activate debug mode (more logs)",
1668
+ "name": "debug",
1669
+ "allowNo": false,
1670
+ "type": "boolean"
1671
+ },
1672
1672
  "websocket": {
1673
1673
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1674
1674
  "name": "websocket",
@@ -1691,7 +1691,8 @@
1691
1691
  "deprecateAliases": true,
1692
1692
  "name": "target-org",
1693
1693
  "noCacheDefault": true,
1694
- "summary": "Username or alias of the target org.",
1694
+ "required": true,
1695
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1695
1696
  "hasDynamicHelp": true,
1696
1697
  "multiple": false,
1697
1698
  "type": "option"
@@ -1699,31 +1700,30 @@
1699
1700
  },
1700
1701
  "hasDynamicHelp": true,
1701
1702
  "hiddenAliases": [],
1702
- "id": "hardis:lint:unusedmetadatas",
1703
+ "id": "hardis:misc:toml2csv",
1703
1704
  "pluginAlias": "sfdx-hardis",
1704
1705
  "pluginName": "sfdx-hardis",
1705
1706
  "pluginType": "core",
1706
1707
  "strict": true,
1707
1708
  "enableJsonFlag": true,
1708
- "title": "check unused labels and custom permissions",
1709
- "supportsDevhubUsername": false,
1709
+ "title": "TOML to CSV",
1710
1710
  "requiresProject": true,
1711
1711
  "isESM": true,
1712
1712
  "relativePath": [
1713
1713
  "lib",
1714
1714
  "commands",
1715
1715
  "hardis",
1716
- "lint",
1717
- "unusedmetadatas.js"
1716
+ "misc",
1717
+ "toml2csv.js"
1718
1718
  ],
1719
1719
  "aliasPermutations": [],
1720
1720
  "permutations": [
1721
- "hardis:lint:unusedmetadatas",
1722
- "lint:hardis:unusedmetadatas",
1723
- "lint:unusedmetadatas:hardis",
1724
- "hardis:unusedmetadatas:lint",
1725
- "unusedmetadatas:hardis:lint",
1726
- "unusedmetadatas:lint:hardis"
1721
+ "hardis:misc:toml2csv",
1722
+ "misc:hardis:toml2csv",
1723
+ "misc:toml2csv:hardis",
1724
+ "hardis:toml2csv:misc",
1725
+ "toml2csv:hardis:misc",
1726
+ "toml2csv:misc:hardis"
1727
1727
  ]
1728
1728
  },
1729
1729
  "hardis:org:connect": {
@@ -4100,135 +4100,6 @@
4100
4100
  "ws:work:hardis"
4101
4101
  ]
4102
4102
  },
4103
- "hardis:git:pull-requests:extract": {
4104
- "aliases": [],
4105
- "args": {},
4106
- "description": "Extract pull requests with filtering criteria",
4107
- "examples": [
4108
- "$ sf hardis:git:pull-requests:extract",
4109
- "$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
4110
- ],
4111
- "flags": {
4112
- "json": {
4113
- "description": "Format output as json.",
4114
- "helpGroup": "GLOBAL",
4115
- "name": "json",
4116
- "allowNo": false,
4117
- "type": "boolean"
4118
- },
4119
- "flags-dir": {
4120
- "helpGroup": "GLOBAL",
4121
- "name": "flags-dir",
4122
- "summary": "Import flag values from a directory.",
4123
- "hasDynamicHelp": false,
4124
- "multiple": false,
4125
- "type": "option"
4126
- },
4127
- "target-branch": {
4128
- "char": "t",
4129
- "description": "Target branch of PRs",
4130
- "name": "target-branch",
4131
- "hasDynamicHelp": false,
4132
- "multiple": false,
4133
- "type": "option"
4134
- },
4135
- "status": {
4136
- "char": "x",
4137
- "description": "Status of the PR",
4138
- "name": "status",
4139
- "hasDynamicHelp": false,
4140
- "multiple": false,
4141
- "options": [
4142
- "open",
4143
- "merged",
4144
- "abandoned"
4145
- ],
4146
- "type": "option"
4147
- },
4148
- "min-date": {
4149
- "char": "m",
4150
- "description": "Minimum date for PR",
4151
- "name": "min-date",
4152
- "hasDynamicHelp": false,
4153
- "multiple": false,
4154
- "type": "option"
4155
- },
4156
- "outputfile": {
4157
- "char": "f",
4158
- "description": "Force the path and name of output report file. Must end with .csv",
4159
- "name": "outputfile",
4160
- "hasDynamicHelp": false,
4161
- "multiple": false,
4162
- "type": "option"
4163
- },
4164
- "debug": {
4165
- "char": "d",
4166
- "description": "Activate debug mode (more logs)",
4167
- "name": "debug",
4168
- "allowNo": false,
4169
- "type": "boolean"
4170
- },
4171
- "websocket": {
4172
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
4173
- "name": "websocket",
4174
- "hasDynamicHelp": false,
4175
- "multiple": false,
4176
- "type": "option"
4177
- },
4178
- "skipauth": {
4179
- "description": "Skip authentication check when a default username is required",
4180
- "name": "skipauth",
4181
- "allowNo": false,
4182
- "type": "boolean"
4183
- }
4184
- },
4185
- "hasDynamicHelp": false,
4186
- "hiddenAliases": [],
4187
- "id": "hardis:git:pull-requests:extract",
4188
- "pluginAlias": "sfdx-hardis",
4189
- "pluginName": "sfdx-hardis",
4190
- "pluginType": "core",
4191
- "strict": true,
4192
- "enableJsonFlag": true,
4193
- "title": "Extract pull requests",
4194
- "requiresProject": true,
4195
- "isESM": true,
4196
- "relativePath": [
4197
- "lib",
4198
- "commands",
4199
- "hardis",
4200
- "git",
4201
- "pull-requests",
4202
- "extract.js"
4203
- ],
4204
- "aliasPermutations": [],
4205
- "permutations": [
4206
- "hardis:git:pull-requests:extract",
4207
- "git:hardis:pull-requests:extract",
4208
- "git:pull-requests:hardis:extract",
4209
- "git:pull-requests:extract:hardis",
4210
- "hardis:pull-requests:git:extract",
4211
- "pull-requests:hardis:git:extract",
4212
- "pull-requests:git:hardis:extract",
4213
- "pull-requests:git:extract:hardis",
4214
- "hardis:pull-requests:extract:git",
4215
- "pull-requests:hardis:extract:git",
4216
- "pull-requests:extract:hardis:git",
4217
- "pull-requests:extract:git:hardis",
4218
- "hardis:git:extract:pull-requests",
4219
- "git:hardis:extract:pull-requests",
4220
- "git:extract:hardis:pull-requests",
4221
- "git:extract:pull-requests:hardis",
4222
- "hardis:extract:git:pull-requests",
4223
- "extract:hardis:git:pull-requests",
4224
- "extract:git:hardis:pull-requests",
4225
- "extract:git:pull-requests:hardis",
4226
- "hardis:extract:pull-requests:git",
4227
- "extract:hardis:pull-requests:git",
4228
- "extract:pull-requests:hardis:git",
4229
- "extract:pull-requests:git:hardis"
4230
- ]
4231
- },
4232
4103
  "hardis:doc:extract:permsetgroups": {
4233
4104
  "aliases": [],
4234
4105
  "args": {},
@@ -4419,6 +4290,135 @@
4419
4290
  "generate:plugin:doc:hardis"
4420
4291
  ]
4421
4292
  },
4293
+ "hardis:git:pull-requests:extract": {
4294
+ "aliases": [],
4295
+ "args": {},
4296
+ "description": "Extract pull requests with filtering criteria",
4297
+ "examples": [
4298
+ "$ sf hardis:git:pull-requests:extract",
4299
+ "$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
4300
+ ],
4301
+ "flags": {
4302
+ "json": {
4303
+ "description": "Format output as json.",
4304
+ "helpGroup": "GLOBAL",
4305
+ "name": "json",
4306
+ "allowNo": false,
4307
+ "type": "boolean"
4308
+ },
4309
+ "flags-dir": {
4310
+ "helpGroup": "GLOBAL",
4311
+ "name": "flags-dir",
4312
+ "summary": "Import flag values from a directory.",
4313
+ "hasDynamicHelp": false,
4314
+ "multiple": false,
4315
+ "type": "option"
4316
+ },
4317
+ "target-branch": {
4318
+ "char": "t",
4319
+ "description": "Target branch of PRs",
4320
+ "name": "target-branch",
4321
+ "hasDynamicHelp": false,
4322
+ "multiple": false,
4323
+ "type": "option"
4324
+ },
4325
+ "status": {
4326
+ "char": "x",
4327
+ "description": "Status of the PR",
4328
+ "name": "status",
4329
+ "hasDynamicHelp": false,
4330
+ "multiple": false,
4331
+ "options": [
4332
+ "open",
4333
+ "merged",
4334
+ "abandoned"
4335
+ ],
4336
+ "type": "option"
4337
+ },
4338
+ "min-date": {
4339
+ "char": "m",
4340
+ "description": "Minimum date for PR",
4341
+ "name": "min-date",
4342
+ "hasDynamicHelp": false,
4343
+ "multiple": false,
4344
+ "type": "option"
4345
+ },
4346
+ "outputfile": {
4347
+ "char": "f",
4348
+ "description": "Force the path and name of output report file. Must end with .csv",
4349
+ "name": "outputfile",
4350
+ "hasDynamicHelp": false,
4351
+ "multiple": false,
4352
+ "type": "option"
4353
+ },
4354
+ "debug": {
4355
+ "char": "d",
4356
+ "description": "Activate debug mode (more logs)",
4357
+ "name": "debug",
4358
+ "allowNo": false,
4359
+ "type": "boolean"
4360
+ },
4361
+ "websocket": {
4362
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
4363
+ "name": "websocket",
4364
+ "hasDynamicHelp": false,
4365
+ "multiple": false,
4366
+ "type": "option"
4367
+ },
4368
+ "skipauth": {
4369
+ "description": "Skip authentication check when a default username is required",
4370
+ "name": "skipauth",
4371
+ "allowNo": false,
4372
+ "type": "boolean"
4373
+ }
4374
+ },
4375
+ "hasDynamicHelp": false,
4376
+ "hiddenAliases": [],
4377
+ "id": "hardis:git:pull-requests:extract",
4378
+ "pluginAlias": "sfdx-hardis",
4379
+ "pluginName": "sfdx-hardis",
4380
+ "pluginType": "core",
4381
+ "strict": true,
4382
+ "enableJsonFlag": true,
4383
+ "title": "Extract pull requests",
4384
+ "requiresProject": true,
4385
+ "isESM": true,
4386
+ "relativePath": [
4387
+ "lib",
4388
+ "commands",
4389
+ "hardis",
4390
+ "git",
4391
+ "pull-requests",
4392
+ "extract.js"
4393
+ ],
4394
+ "aliasPermutations": [],
4395
+ "permutations": [
4396
+ "hardis:git:pull-requests:extract",
4397
+ "git:hardis:pull-requests:extract",
4398
+ "git:pull-requests:hardis:extract",
4399
+ "git:pull-requests:extract:hardis",
4400
+ "hardis:pull-requests:git:extract",
4401
+ "pull-requests:hardis:git:extract",
4402
+ "pull-requests:git:hardis:extract",
4403
+ "pull-requests:git:extract:hardis",
4404
+ "hardis:pull-requests:extract:git",
4405
+ "pull-requests:hardis:extract:git",
4406
+ "pull-requests:extract:hardis:git",
4407
+ "pull-requests:extract:git:hardis",
4408
+ "hardis:git:extract:pull-requests",
4409
+ "git:hardis:extract:pull-requests",
4410
+ "git:extract:hardis:pull-requests",
4411
+ "git:extract:pull-requests:hardis",
4412
+ "hardis:extract:git:pull-requests",
4413
+ "extract:hardis:git:pull-requests",
4414
+ "extract:git:hardis:pull-requests",
4415
+ "extract:git:pull-requests:hardis",
4416
+ "hardis:extract:pull-requests:git",
4417
+ "extract:hardis:pull-requests:git",
4418
+ "extract:pull-requests:hardis:git",
4419
+ "extract:pull-requests:git:hardis"
4420
+ ]
4421
+ },
4422
4422
  "hardis:org:community:update": {
4423
4423
  "aliases": [],
4424
4424
  "args": {},
@@ -6331,121 +6331,6 @@
6331
6331
  "unusedusers:diagnose:org:hardis"
6332
6332
  ]
6333
6333
  },
6334
- "hardis:org:fix:listviewmine": {
6335
- "aliases": [],
6336
- "args": {},
6337
- "description": "Fix listviews whose scope Mine has been replaced by Everything\n\n[![Invalid scope:Mine, not allowed ? Deploy your ListViews anyway !](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-invalid-scope-mine.jpg)](https://nicolas.vuillamy.fr/invalid-scope-mine-not-allowed-deploy-your-listviews-anyway-443aceca8ac7)\n\nList of ListViews can be:\n\n- read from .sfdx-hardis.yml file in property **listViewsToSetToMine**\n- sent in argument listviews\n\nNote: property **listViewsToSetToMine** can be auto-generated by command hardis:work:save if .sfdx-hardis.yml contains the following configuration\n\n```yaml\nautoCleanTypes:\n - listViewsMine\n```\n\n- Example of sfdx-hardis.yml property `listViewsToSetToMine`:\n\n```yaml\nlistViewsToSetToMine:\n - \"force-app/main/default/objects/Operation__c/listViews/MyCurrentOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Operation__c/listViews/MyFinalizedOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/Default_Opportunity_Pipeline.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MyCurrentSubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MySubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Account/listViews/MyActivePartners.listView-meta.xml\"\n```\n\n- If manually written, this could also be:\n\n```yaml\nlistViewsToSetToMine:\n - \"Operation__c:MyCurrentOperations\"\n - \"Operation__c:MyFinalizedOperations\"\n - \"Opportunity:Default_Opportunity_Pipeline\"\n - \"Opportunity:MyCurrentSubscriptions\"\n - \"Opportunity:MySubscriptions\"\n - \"Account:MyActivePartners\"\n```\n\nTroubleshooting: if you need to run this command from an alpine-linux based docker image, use this workaround in your dockerfile:\n\n```dockerfile\n# Do not use puppeteer embedded chromium\nRUN apk add --update --no-cache chromium\nENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=\"true\"\nENV CHROMIUM_PATH=\"/usr/bin/chromium-browser\"\nENV PUPPETEER_EXECUTABLE_PATH=\"$\\{CHROMIUM_PATH}\" // remove \\ before {\n```\n",
6338
- "examples": [
6339
- "$ sf hardis:org:fix:listviewmine",
6340
- "$ sf hardis:org:fix:listviewmine --listviews Opportunity:MySubscriptions,Account:MyActivePartners"
6341
- ],
6342
- "flags": {
6343
- "json": {
6344
- "description": "Format output as json.",
6345
- "helpGroup": "GLOBAL",
6346
- "name": "json",
6347
- "allowNo": false,
6348
- "type": "boolean"
6349
- },
6350
- "flags-dir": {
6351
- "helpGroup": "GLOBAL",
6352
- "name": "flags-dir",
6353
- "summary": "Import flag values from a directory.",
6354
- "hasDynamicHelp": false,
6355
- "multiple": false,
6356
- "type": "option"
6357
- },
6358
- "listviews": {
6359
- "char": "l",
6360
- "description": "Comma-separated list of listviews following format Object:ListViewName\nExample: Contact:MyContacts,Contact:MyActiveContacts,Opportunity:MYClosedOpportunities",
6361
- "name": "listviews",
6362
- "hasDynamicHelp": false,
6363
- "multiple": false,
6364
- "type": "option"
6365
- },
6366
- "debug": {
6367
- "char": "d",
6368
- "description": "Activate debug mode (more logs)",
6369
- "name": "debug",
6370
- "allowNo": false,
6371
- "type": "boolean"
6372
- },
6373
- "websocket": {
6374
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
6375
- "name": "websocket",
6376
- "hasDynamicHelp": false,
6377
- "multiple": false,
6378
- "type": "option"
6379
- },
6380
- "skipauth": {
6381
- "description": "Skip authentication check when a default username is required",
6382
- "name": "skipauth",
6383
- "allowNo": false,
6384
- "type": "boolean"
6385
- },
6386
- "target-org": {
6387
- "aliases": [
6388
- "targetusername",
6389
- "u"
6390
- ],
6391
- "char": "o",
6392
- "deprecateAliases": true,
6393
- "name": "target-org",
6394
- "noCacheDefault": true,
6395
- "required": true,
6396
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
6397
- "hasDynamicHelp": true,
6398
- "multiple": false,
6399
- "type": "option"
6400
- }
6401
- },
6402
- "hasDynamicHelp": true,
6403
- "hiddenAliases": [],
6404
- "id": "hardis:org:fix:listviewmine",
6405
- "pluginAlias": "sfdx-hardis",
6406
- "pluginName": "sfdx-hardis",
6407
- "pluginType": "core",
6408
- "strict": true,
6409
- "enableJsonFlag": true,
6410
- "title": "Fix listviews with ",
6411
- "requiresProject": true,
6412
- "isESM": true,
6413
- "relativePath": [
6414
- "lib",
6415
- "commands",
6416
- "hardis",
6417
- "org",
6418
- "fix",
6419
- "listviewmine.js"
6420
- ],
6421
- "aliasPermutations": [],
6422
- "permutations": [
6423
- "hardis:org:fix:listviewmine",
6424
- "org:hardis:fix:listviewmine",
6425
- "org:fix:hardis:listviewmine",
6426
- "org:fix:listviewmine:hardis",
6427
- "hardis:fix:org:listviewmine",
6428
- "fix:hardis:org:listviewmine",
6429
- "fix:org:hardis:listviewmine",
6430
- "fix:org:listviewmine:hardis",
6431
- "hardis:fix:listviewmine:org",
6432
- "fix:hardis:listviewmine:org",
6433
- "fix:listviewmine:hardis:org",
6434
- "fix:listviewmine:org:hardis",
6435
- "hardis:org:listviewmine:fix",
6436
- "org:hardis:listviewmine:fix",
6437
- "org:listviewmine:hardis:fix",
6438
- "org:listviewmine:fix:hardis",
6439
- "hardis:listviewmine:org:fix",
6440
- "listviewmine:hardis:org:fix",
6441
- "listviewmine:org:hardis:fix",
6442
- "listviewmine:org:fix:hardis",
6443
- "hardis:listviewmine:fix:org",
6444
- "listviewmine:hardis:fix:org",
6445
- "listviewmine:fix:hardis:org",
6446
- "listviewmine:fix:org:hardis"
6447
- ]
6448
- },
6449
6334
  "hardis:org:files:export": {
6450
6335
  "aliases": [],
6451
6336
  "args": {},
@@ -6708,6 +6593,121 @@
6708
6593
  "import:files:org:hardis"
6709
6594
  ]
6710
6595
  },
6596
+ "hardis:org:fix:listviewmine": {
6597
+ "aliases": [],
6598
+ "args": {},
6599
+ "description": "Fix listviews whose scope Mine has been replaced by Everything\n\n[![Invalid scope:Mine, not allowed ? Deploy your ListViews anyway !](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-invalid-scope-mine.jpg)](https://nicolas.vuillamy.fr/invalid-scope-mine-not-allowed-deploy-your-listviews-anyway-443aceca8ac7)\n\nList of ListViews can be:\n\n- read from .sfdx-hardis.yml file in property **listViewsToSetToMine**\n- sent in argument listviews\n\nNote: property **listViewsToSetToMine** can be auto-generated by command hardis:work:save if .sfdx-hardis.yml contains the following configuration\n\n```yaml\nautoCleanTypes:\n - listViewsMine\n```\n\n- Example of sfdx-hardis.yml property `listViewsToSetToMine`:\n\n```yaml\nlistViewsToSetToMine:\n - \"force-app/main/default/objects/Operation__c/listViews/MyCurrentOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Operation__c/listViews/MyFinalizedOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/Default_Opportunity_Pipeline.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MyCurrentSubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MySubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Account/listViews/MyActivePartners.listView-meta.xml\"\n```\n\n- If manually written, this could also be:\n\n```yaml\nlistViewsToSetToMine:\n - \"Operation__c:MyCurrentOperations\"\n - \"Operation__c:MyFinalizedOperations\"\n - \"Opportunity:Default_Opportunity_Pipeline\"\n - \"Opportunity:MyCurrentSubscriptions\"\n - \"Opportunity:MySubscriptions\"\n - \"Account:MyActivePartners\"\n```\n\nTroubleshooting: if you need to run this command from an alpine-linux based docker image, use this workaround in your dockerfile:\n\n```dockerfile\n# Do not use puppeteer embedded chromium\nRUN apk add --update --no-cache chromium\nENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=\"true\"\nENV CHROMIUM_PATH=\"/usr/bin/chromium-browser\"\nENV PUPPETEER_EXECUTABLE_PATH=\"$\\{CHROMIUM_PATH}\" // remove \\ before {\n```\n",
6600
+ "examples": [
6601
+ "$ sf hardis:org:fix:listviewmine",
6602
+ "$ sf hardis:org:fix:listviewmine --listviews Opportunity:MySubscriptions,Account:MyActivePartners"
6603
+ ],
6604
+ "flags": {
6605
+ "json": {
6606
+ "description": "Format output as json.",
6607
+ "helpGroup": "GLOBAL",
6608
+ "name": "json",
6609
+ "allowNo": false,
6610
+ "type": "boolean"
6611
+ },
6612
+ "flags-dir": {
6613
+ "helpGroup": "GLOBAL",
6614
+ "name": "flags-dir",
6615
+ "summary": "Import flag values from a directory.",
6616
+ "hasDynamicHelp": false,
6617
+ "multiple": false,
6618
+ "type": "option"
6619
+ },
6620
+ "listviews": {
6621
+ "char": "l",
6622
+ "description": "Comma-separated list of listviews following format Object:ListViewName\nExample: Contact:MyContacts,Contact:MyActiveContacts,Opportunity:MYClosedOpportunities",
6623
+ "name": "listviews",
6624
+ "hasDynamicHelp": false,
6625
+ "multiple": false,
6626
+ "type": "option"
6627
+ },
6628
+ "debug": {
6629
+ "char": "d",
6630
+ "description": "Activate debug mode (more logs)",
6631
+ "name": "debug",
6632
+ "allowNo": false,
6633
+ "type": "boolean"
6634
+ },
6635
+ "websocket": {
6636
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
6637
+ "name": "websocket",
6638
+ "hasDynamicHelp": false,
6639
+ "multiple": false,
6640
+ "type": "option"
6641
+ },
6642
+ "skipauth": {
6643
+ "description": "Skip authentication check when a default username is required",
6644
+ "name": "skipauth",
6645
+ "allowNo": false,
6646
+ "type": "boolean"
6647
+ },
6648
+ "target-org": {
6649
+ "aliases": [
6650
+ "targetusername",
6651
+ "u"
6652
+ ],
6653
+ "char": "o",
6654
+ "deprecateAliases": true,
6655
+ "name": "target-org",
6656
+ "noCacheDefault": true,
6657
+ "required": true,
6658
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
6659
+ "hasDynamicHelp": true,
6660
+ "multiple": false,
6661
+ "type": "option"
6662
+ }
6663
+ },
6664
+ "hasDynamicHelp": true,
6665
+ "hiddenAliases": [],
6666
+ "id": "hardis:org:fix:listviewmine",
6667
+ "pluginAlias": "sfdx-hardis",
6668
+ "pluginName": "sfdx-hardis",
6669
+ "pluginType": "core",
6670
+ "strict": true,
6671
+ "enableJsonFlag": true,
6672
+ "title": "Fix listviews with ",
6673
+ "requiresProject": true,
6674
+ "isESM": true,
6675
+ "relativePath": [
6676
+ "lib",
6677
+ "commands",
6678
+ "hardis",
6679
+ "org",
6680
+ "fix",
6681
+ "listviewmine.js"
6682
+ ],
6683
+ "aliasPermutations": [],
6684
+ "permutations": [
6685
+ "hardis:org:fix:listviewmine",
6686
+ "org:hardis:fix:listviewmine",
6687
+ "org:fix:hardis:listviewmine",
6688
+ "org:fix:listviewmine:hardis",
6689
+ "hardis:fix:org:listviewmine",
6690
+ "fix:hardis:org:listviewmine",
6691
+ "fix:org:hardis:listviewmine",
6692
+ "fix:org:listviewmine:hardis",
6693
+ "hardis:fix:listviewmine:org",
6694
+ "fix:hardis:listviewmine:org",
6695
+ "fix:listviewmine:hardis:org",
6696
+ "fix:listviewmine:org:hardis",
6697
+ "hardis:org:listviewmine:fix",
6698
+ "org:hardis:listviewmine:fix",
6699
+ "org:listviewmine:hardis:fix",
6700
+ "org:listviewmine:fix:hardis",
6701
+ "hardis:listviewmine:org:fix",
6702
+ "listviewmine:hardis:org:fix",
6703
+ "listviewmine:org:hardis:fix",
6704
+ "listviewmine:org:fix:hardis",
6705
+ "hardis:listviewmine:fix:org",
6706
+ "listviewmine:hardis:fix:org",
6707
+ "listviewmine:fix:hardis:org",
6708
+ "listviewmine:fix:org:hardis"
6709
+ ]
6710
+ },
6711
6711
  "hardis:org:generate:packagexmlfull": {
6712
6712
  "aliases": [],
6713
6713
  "args": {},
@@ -14503,5 +14503,5 @@
14503
14503
  ]
14504
14504
  }
14505
14505
  },
14506
- "version": "5.21.3"
14506
+ "version": "5.21.4"
14507
14507
  }