sfdx-hardis 5.45.0 → 5.45.1-beta202508100129.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 (268) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/commands/hardis/auth/login.js +20 -6
  3. package/lib/commands/hardis/auth/login.js.map +1 -1
  4. package/lib/commands/hardis/cache/clear.d.ts +4 -1
  5. package/lib/commands/hardis/cache/clear.js +20 -2
  6. package/lib/commands/hardis/cache/clear.js.map +1 -1
  7. package/lib/commands/hardis/config/get.js +20 -1
  8. package/lib/commands/hardis/config/get.js.map +1 -1
  9. package/lib/commands/hardis/doc/extract/permsetgroups.js +25 -1
  10. package/lib/commands/hardis/doc/extract/permsetgroups.js.map +1 -1
  11. package/lib/commands/hardis/doc/fieldusage.js +21 -3
  12. package/lib/commands/hardis/doc/fieldusage.js.map +1 -1
  13. package/lib/commands/hardis/doc/flow2markdown.js +31 -4
  14. package/lib/commands/hardis/doc/flow2markdown.js.map +1 -1
  15. package/lib/commands/hardis/doc/mkdocs-to-cf.js +48 -28
  16. package/lib/commands/hardis/doc/mkdocs-to-cf.js.map +1 -1
  17. package/lib/commands/hardis/doc/mkdocs-to-salesforce.js +40 -17
  18. package/lib/commands/hardis/doc/mkdocs-to-salesforce.js.map +1 -1
  19. package/lib/commands/hardis/doc/override-prompts.js +43 -38
  20. package/lib/commands/hardis/doc/override-prompts.js.map +1 -1
  21. package/lib/commands/hardis/doc/packagexml2markdown.js +27 -1
  22. package/lib/commands/hardis/doc/packagexml2markdown.js.map +1 -1
  23. package/lib/commands/hardis/doc/plugin/generate.js +35 -7
  24. package/lib/commands/hardis/doc/plugin/generate.js.map +1 -1
  25. package/lib/commands/hardis/doc/project2markdown.js +11 -2
  26. package/lib/commands/hardis/doc/project2markdown.js.map +1 -1
  27. package/lib/commands/hardis/git/pull-requests/extract.js +27 -1
  28. package/lib/commands/hardis/git/pull-requests/extract.js.map +1 -1
  29. package/lib/commands/hardis/lint/access.js +37 -6
  30. package/lib/commands/hardis/lint/access.js.map +1 -1
  31. package/lib/commands/hardis/lint/metadatastatus.js +29 -10
  32. package/lib/commands/hardis/lint/metadatastatus.js.map +1 -1
  33. package/lib/commands/hardis/lint/missingattributes.js +25 -1
  34. package/lib/commands/hardis/lint/missingattributes.js.map +1 -1
  35. package/lib/commands/hardis/lint/unusedmetadatas.js +104 -49
  36. package/lib/commands/hardis/lint/unusedmetadatas.js.map +1 -1
  37. package/lib/commands/hardis/mdapi/deploy.d.ts +1 -1
  38. package/lib/commands/hardis/mdapi/deploy.js +24 -2
  39. package/lib/commands/hardis/mdapi/deploy.js.map +1 -1
  40. package/lib/commands/hardis/misc/custom-label-translations.js +38 -1
  41. package/lib/commands/hardis/misc/custom-label-translations.js.map +1 -1
  42. package/lib/commands/hardis/misc/purge-references.js +33 -3
  43. package/lib/commands/hardis/misc/purge-references.js.map +1 -1
  44. package/lib/commands/hardis/misc/servicenow-report.js +4 -0
  45. package/lib/commands/hardis/misc/servicenow-report.js.map +1 -1
  46. package/lib/commands/hardis/misc/toml2csv.js +39 -1
  47. package/lib/commands/hardis/misc/toml2csv.js.map +1 -1
  48. package/lib/commands/hardis/org/community/update.d.ts +1 -1
  49. package/lib/commands/hardis/org/community/update.js +28 -1
  50. package/lib/commands/hardis/org/community/update.js.map +1 -1
  51. package/lib/commands/hardis/org/configure/data.js +45 -10
  52. package/lib/commands/hardis/org/configure/data.js.map +1 -1
  53. package/lib/commands/hardis/org/configure/files.js +30 -2
  54. package/lib/commands/hardis/org/configure/files.js.map +1 -1
  55. package/lib/commands/hardis/org/configure/monitoring.js +41 -7
  56. package/lib/commands/hardis/org/configure/monitoring.js.map +1 -1
  57. package/lib/commands/hardis/org/connect.js +23 -2
  58. package/lib/commands/hardis/org/connect.js.map +1 -1
  59. package/lib/commands/hardis/org/create.js +31 -2
  60. package/lib/commands/hardis/org/create.js.map +1 -1
  61. package/lib/commands/hardis/org/data/delete.js +28 -6
  62. package/lib/commands/hardis/org/data/delete.js.map +1 -1
  63. package/lib/commands/hardis/org/data/export.js +28 -2
  64. package/lib/commands/hardis/org/data/export.js.map +1 -1
  65. package/lib/commands/hardis/org/diagnose/audittrail.js +18 -16
  66. package/lib/commands/hardis/org/diagnose/audittrail.js.map +1 -1
  67. package/lib/commands/hardis/org/diagnose/instanceupgrade.js +26 -2
  68. package/lib/commands/hardis/org/diagnose/instanceupgrade.js.map +1 -1
  69. package/lib/commands/hardis/org/diagnose/legacyapi.js +1 -2
  70. package/lib/commands/hardis/org/diagnose/legacyapi.js.map +1 -1
  71. package/lib/commands/hardis/org/diagnose/licenses.js +29 -1
  72. package/lib/commands/hardis/org/diagnose/licenses.js.map +1 -1
  73. package/lib/commands/hardis/org/diagnose/unused-apex-classes.js +5 -0
  74. package/lib/commands/hardis/org/diagnose/unused-apex-classes.js.map +1 -1
  75. package/lib/commands/hardis/org/diagnose/unused-connected-apps.js +35 -7
  76. package/lib/commands/hardis/org/diagnose/unused-connected-apps.js.map +1 -1
  77. package/lib/commands/hardis/org/diagnose/unusedlicenses.js +33 -10
  78. package/lib/commands/hardis/org/diagnose/unusedlicenses.js.map +1 -1
  79. package/lib/commands/hardis/org/diagnose/unusedusers.js +28 -7
  80. package/lib/commands/hardis/org/diagnose/unusedusers.js.map +1 -1
  81. package/lib/commands/hardis/org/files/export.js +25 -5
  82. package/lib/commands/hardis/org/files/export.js.map +1 -1
  83. package/lib/commands/hardis/org/files/import.js +23 -3
  84. package/lib/commands/hardis/org/files/import.js.map +1 -1
  85. package/lib/commands/hardis/org/generate/packagexmlfull.js +33 -2
  86. package/lib/commands/hardis/org/generate/packagexmlfull.js.map +1 -1
  87. package/lib/commands/hardis/org/monitor/backup.js +4 -3
  88. package/lib/commands/hardis/org/monitor/backup.js.map +1 -1
  89. package/lib/commands/hardis/org/monitor/limits.js +27 -1
  90. package/lib/commands/hardis/org/monitor/limits.js.map +1 -1
  91. package/lib/commands/hardis/org/multi-org-query.js +28 -4
  92. package/lib/commands/hardis/org/multi-org-query.js.map +1 -1
  93. package/lib/commands/hardis/org/purge/apexlog.js +27 -1
  94. package/lib/commands/hardis/org/purge/apexlog.js.map +1 -1
  95. package/lib/commands/hardis/org/purge/flow.js +56 -13
  96. package/lib/commands/hardis/org/purge/flow.js.map +1 -1
  97. package/lib/commands/hardis/org/retrieve/packageconfig.js +29 -3
  98. package/lib/commands/hardis/org/retrieve/packageconfig.js.map +1 -1
  99. package/lib/commands/hardis/org/retrieve/sources/analytics.js +24 -1
  100. package/lib/commands/hardis/org/retrieve/sources/analytics.js.map +1 -1
  101. package/lib/commands/hardis/org/retrieve/sources/dx.js +33 -2
  102. package/lib/commands/hardis/org/retrieve/sources/dx.js.map +1 -1
  103. package/lib/commands/hardis/org/retrieve/sources/dx2.js +28 -3
  104. package/lib/commands/hardis/org/retrieve/sources/dx2.js.map +1 -1
  105. package/lib/commands/hardis/org/retrieve/sources/metadata.js +28 -1
  106. package/lib/commands/hardis/org/retrieve/sources/metadata.js.map +1 -1
  107. package/lib/commands/hardis/org/select.js +24 -1
  108. package/lib/commands/hardis/org/select.js.map +1 -1
  109. package/lib/commands/hardis/org/test/apex.js +14 -3
  110. package/lib/commands/hardis/org/test/apex.js.map +1 -1
  111. package/lib/commands/hardis/org/user/activateinvalid.js +3 -0
  112. package/lib/commands/hardis/org/user/activateinvalid.js.map +1 -1
  113. package/lib/commands/hardis/org/user/freeze.js +29 -2
  114. package/lib/commands/hardis/org/user/freeze.js.map +1 -1
  115. package/lib/commands/hardis/org/user/unfreeze.js +29 -2
  116. package/lib/commands/hardis/org/user/unfreeze.js.map +1 -1
  117. package/lib/commands/hardis/package/create.js +30 -1
  118. package/lib/commands/hardis/package/create.js.map +1 -1
  119. package/lib/commands/hardis/package/install.js +6 -0
  120. package/lib/commands/hardis/package/install.js.map +1 -1
  121. package/lib/commands/hardis/package/mergexml.js +27 -1
  122. package/lib/commands/hardis/package/mergexml.js.map +1 -1
  123. package/lib/commands/hardis/package/version/create.js +33 -2
  124. package/lib/commands/hardis/package/version/create.js.map +1 -1
  125. package/lib/commands/hardis/package/version/list.js +20 -1
  126. package/lib/commands/hardis/package/version/list.js.map +1 -1
  127. package/lib/commands/hardis/package/version/promote.js +26 -1
  128. package/lib/commands/hardis/package/version/promote.js.map +1 -1
  129. package/lib/commands/hardis/packagexml/append.d.ts +1 -1
  130. package/lib/commands/hardis/packagexml/append.js +23 -1
  131. package/lib/commands/hardis/packagexml/append.js.map +1 -1
  132. package/lib/commands/hardis/packagexml/remove.d.ts +1 -1
  133. package/lib/commands/hardis/packagexml/remove.js +24 -1
  134. package/lib/commands/hardis/packagexml/remove.js.map +1 -1
  135. package/lib/commands/hardis/project/audit/apiversion.js +35 -24
  136. package/lib/commands/hardis/project/audit/apiversion.js.map +1 -1
  137. package/lib/commands/hardis/project/audit/callincallout.js +27 -1
  138. package/lib/commands/hardis/project/audit/callincallout.js.map +1 -1
  139. package/lib/commands/hardis/project/audit/duplicatefiles.js +35 -2
  140. package/lib/commands/hardis/project/audit/duplicatefiles.js.map +1 -1
  141. package/lib/commands/hardis/project/audit/remotesites.js +25 -1
  142. package/lib/commands/hardis/project/audit/remotesites.js.map +1 -1
  143. package/lib/commands/hardis/project/clean/emptyitems.js +25 -1
  144. package/lib/commands/hardis/project/clean/emptyitems.js.map +1 -1
  145. package/lib/commands/hardis/project/clean/filter-xml-content.d.ts +1 -1
  146. package/lib/commands/hardis/project/clean/filter-xml-content.js +28 -5
  147. package/lib/commands/hardis/project/clean/filter-xml-content.js.map +1 -1
  148. package/lib/commands/hardis/project/clean/hiddenitems.js +25 -1
  149. package/lib/commands/hardis/project/clean/hiddenitems.js.map +1 -1
  150. package/lib/commands/hardis/project/clean/manageditems.js +24 -1
  151. package/lib/commands/hardis/project/clean/manageditems.js.map +1 -1
  152. package/lib/commands/hardis/project/clean/minimizeprofiles.js +9 -6
  153. package/lib/commands/hardis/project/clean/minimizeprofiles.js.map +1 -1
  154. package/lib/commands/hardis/project/clean/orgmissingitems.js +30 -2
  155. package/lib/commands/hardis/project/clean/orgmissingitems.js.map +1 -1
  156. package/lib/commands/hardis/project/clean/references.js +30 -3
  157. package/lib/commands/hardis/project/clean/references.js.map +1 -1
  158. package/lib/commands/hardis/project/clean/retrievefolders.js +20 -1
  159. package/lib/commands/hardis/project/clean/retrievefolders.js.map +1 -1
  160. package/lib/commands/hardis/project/clean/standarditems.js +25 -1
  161. package/lib/commands/hardis/project/clean/standarditems.js.map +1 -1
  162. package/lib/commands/hardis/project/clean/systemdebug.js +28 -1
  163. package/lib/commands/hardis/project/clean/systemdebug.js.map +1 -1
  164. package/lib/commands/hardis/project/clean/xml.js +5 -4
  165. package/lib/commands/hardis/project/clean/xml.js.map +1 -1
  166. package/lib/commands/hardis/project/configure/auth.js +74 -8
  167. package/lib/commands/hardis/project/configure/auth.js.map +1 -1
  168. package/lib/commands/hardis/project/convert/profilestopermsets.js +22 -1
  169. package/lib/commands/hardis/project/convert/profilestopermsets.js.map +1 -1
  170. package/lib/commands/hardis/project/create.js +5 -1
  171. package/lib/commands/hardis/project/create.js.map +1 -1
  172. package/lib/commands/hardis/project/deploy/simulate.js +27 -4
  173. package/lib/commands/hardis/project/deploy/simulate.js.map +1 -1
  174. package/lib/commands/hardis/project/fix/profiletabs.js +30 -1
  175. package/lib/commands/hardis/project/fix/profiletabs.js.map +1 -1
  176. package/lib/commands/hardis/project/fix/v53flexipages.js +24 -2
  177. package/lib/commands/hardis/project/fix/v53flexipages.js.map +1 -1
  178. package/lib/commands/hardis/project/generate/bypass.js +58 -14
  179. package/lib/commands/hardis/project/generate/bypass.js.map +1 -1
  180. package/lib/commands/hardis/project/generate/flow-git-diff.js +4 -0
  181. package/lib/commands/hardis/project/generate/flow-git-diff.js.map +1 -1
  182. package/lib/commands/hardis/project/generate/gitdelta.js +42 -3
  183. package/lib/commands/hardis/project/generate/gitdelta.js.map +1 -1
  184. package/lib/commands/hardis/project/lint.js +23 -1
  185. package/lib/commands/hardis/project/lint.js.map +1 -1
  186. package/lib/commands/hardis/project/metadata/findduplicates.js +19 -7
  187. package/lib/commands/hardis/project/metadata/findduplicates.js.map +1 -1
  188. package/lib/commands/hardis/scratch/create.js +3 -2
  189. package/lib/commands/hardis/scratch/create.js.map +1 -1
  190. package/lib/commands/hardis/scratch/delete.js +24 -1
  191. package/lib/commands/hardis/scratch/delete.js.map +1 -1
  192. package/lib/commands/hardis/scratch/pool/create.js +4 -0
  193. package/lib/commands/hardis/scratch/pool/create.js.map +1 -1
  194. package/lib/commands/hardis/scratch/pool/localauth.js +22 -1
  195. package/lib/commands/hardis/scratch/pool/localauth.js.map +1 -1
  196. package/lib/commands/hardis/scratch/pool/refresh.js +25 -1
  197. package/lib/commands/hardis/scratch/pool/refresh.js.map +1 -1
  198. package/lib/commands/hardis/scratch/pool/reset.js +25 -1
  199. package/lib/commands/hardis/scratch/pool/reset.js.map +1 -1
  200. package/lib/commands/hardis/scratch/pool/view.js +22 -1
  201. package/lib/commands/hardis/scratch/pool/view.js.map +1 -1
  202. package/lib/commands/hardis/scratch/pull.js +28 -9
  203. package/lib/commands/hardis/scratch/pull.js.map +1 -1
  204. package/lib/commands/hardis/scratch/push.js +17 -2
  205. package/lib/commands/hardis/scratch/push.js.map +1 -1
  206. package/lib/commands/hardis/source/retrieve.d.ts +1 -1
  207. package/lib/commands/hardis/source/retrieve.js +22 -4
  208. package/lib/commands/hardis/source/retrieve.js.map +1 -1
  209. package/lib/commands/hardis/work/new.js +51 -88
  210. package/lib/commands/hardis/work/new.js.map +1 -1
  211. package/lib/commands/hardis/work/refresh.js +42 -1
  212. package/lib/commands/hardis/work/refresh.js.map +1 -1
  213. package/lib/commands/hardis/work/resetselection.js +28 -3
  214. package/lib/commands/hardis/work/resetselection.js.map +1 -1
  215. package/lib/commands/hardis/work/save.js +52 -30
  216. package/lib/commands/hardis/work/save.js.map +1 -1
  217. package/lib/commands/hardis/work/ws.d.ts +3 -0
  218. package/lib/commands/hardis/work/ws.js +23 -3
  219. package/lib/commands/hardis/work/ws.js.map +1 -1
  220. package/lib/commands/hello/world.d.ts +1 -1
  221. package/lib/commands/hello/world.js +20 -1
  222. package/lib/commands/hello/world.js.map +1 -1
  223. package/lib/common/aiProvider/index.js +1 -0
  224. package/lib/common/aiProvider/index.js.map +1 -1
  225. package/lib/common/gitProvider/azureDevops.js +2 -1
  226. package/lib/common/gitProvider/azureDevops.js.map +1 -1
  227. package/lib/common/gitProvider/index.js +1 -0
  228. package/lib/common/gitProvider/index.js.map +1 -1
  229. package/lib/common/metadata-utils/index.js +12 -4
  230. package/lib/common/metadata-utils/index.js.map +1 -1
  231. package/lib/common/utils/apiUtils.js +22 -9
  232. package/lib/common/utils/apiUtils.js.map +1 -1
  233. package/lib/common/utils/authUtils.js +3 -2
  234. package/lib/common/utils/authUtils.js.map +1 -1
  235. package/lib/common/utils/dataUtils.js +1 -0
  236. package/lib/common/utils/dataUtils.js.map +1 -1
  237. package/lib/common/utils/deployUtils.js +21 -2
  238. package/lib/common/utils/deployUtils.js.map +1 -1
  239. package/lib/common/utils/filesUtils.js +33 -9
  240. package/lib/common/utils/filesUtils.js.map +1 -1
  241. package/lib/common/utils/gitUtils.js +3 -1
  242. package/lib/common/utils/gitUtils.js.map +1 -1
  243. package/lib/common/utils/index.d.ts +1 -1
  244. package/lib/common/utils/index.js +104 -25
  245. package/lib/common/utils/index.js.map +1 -1
  246. package/lib/common/utils/mermaidUtils.js +2 -2
  247. package/lib/common/utils/orgUtils.js +31 -18
  248. package/lib/common/utils/orgUtils.js.map +1 -1
  249. package/lib/common/utils/poolUtils.js +1 -0
  250. package/lib/common/utils/poolUtils.js.map +1 -1
  251. package/lib/common/utils/prompts.d.ts +2 -0
  252. package/lib/common/utils/prompts.js +4 -0
  253. package/lib/common/utils/prompts.js.map +1 -1
  254. package/lib/common/utils/xmlUtils.js +1 -1
  255. package/lib/common/websocketClient.d.ts +15 -2
  256. package/lib/common/websocketClient.js +149 -10
  257. package/lib/common/websocketClient.js.map +1 -1
  258. package/lib/config/index.js +4 -1
  259. package/lib/config/index.js.map +1 -1
  260. package/lib/hooks/{postrun → finally}/notify.d.ts +1 -1
  261. package/lib/hooks/{postrun → finally}/notify.js +3 -1
  262. package/lib/hooks/finally/notify.js.map +1 -0
  263. package/lib/hooks/init/check-local-sfdx-hardis-files.js +3 -1
  264. package/lib/hooks/init/check-local-sfdx-hardis-files.js.map +1 -1
  265. package/oclif.lock +117 -60
  266. package/oclif.manifest.json +636 -630
  267. package/package.json +15 -11
  268. package/lib/hooks/postrun/notify.js.map +0 -1
@@ -6,7 +6,26 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
6
6
  const messages = Messages.loadMessages('sfdx-hardis', 'org');
7
7
  export default class PackageVersionList extends SfCommand {
8
8
  static title = 'Create a new version of a package';
9
- static description = messages.getMessage('packageVersionList');
9
+ static description = `
10
+ ## Command Behavior
11
+
12
+ **Lists all Salesforce package versions associated with your Dev Hub.**
13
+
14
+ This command provides a comprehensive overview of your Salesforce packages and their versions, including details such as package ID, version number, installation key status, and creation date. It's an essential tool for managing your package development lifecycle, tracking releases, and identifying available versions for installation or promotion.
15
+
16
+ Key functionalities:
17
+
18
+ - **Comprehensive Listing:** Displays all package versions, regardless of their status (e.g., released, beta).
19
+ - **Dev Hub Integration:** Retrieves package version information directly from your connected Dev Hub.
20
+
21
+ ## Technical explanations
22
+
23
+ The command's technical implementation is straightforward:
24
+
25
+ - **Salesforce CLI Integration:** It directly executes the \`sf package version list\` command.
26
+ - **\`execCommand\`:** This utility is used to run the Salesforce CLI command and capture its output.
27
+ - **Output Display:** The raw output from the Salesforce CLI command is displayed to the user, providing all the details about the package versions.
28
+ `;
10
29
  static examples = ['$ sf hardis:package:version:list'];
11
30
  // public static args = [{name: 'file'}];
12
31
  static flags = {
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/package/version/list.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,SAAc;IACrD,MAAM,CAAC,KAAK,GAAG,mCAAmC,CAAC;IAEnD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAE/D,MAAM,CAAC,QAAQ,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAE9D,yCAAyC;IAElC,MAAM,CAAC,KAAK,GAAQ;QACzB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;SAC9C,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;SAC9C,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YACtB,WAAW,EAAE,+DAA+D;SAC7E,CAAC;QACF,gBAAgB,EAAE,+BAA+B;KAClD,CAAC;IAEF,uGAAuG;IAChG,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;IAErC,sBAAsB;IAEf,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;QACvC,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAChD,MAAM,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE;YACrC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,+CAA+C;QAC/C,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;IACrD,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/package/version/list.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,SAAc;IACrD,MAAM,CAAC,KAAK,GAAG,mCAAmC,CAAC;IAEnD,MAAM,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;CAmB7B,CAAC;IAEO,MAAM,CAAC,QAAQ,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAE9D,yCAAyC;IAElC,MAAM,CAAC,KAAK,GAAQ;QACzB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;SAC9C,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;SAC9C,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YACtB,WAAW,EAAE,+DAA+D;SAC7E,CAAC;QACF,gBAAgB,EAAE,+BAA+B;KAClD,CAAC;IAEF,uGAAuG;IAChG,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;IAErC,sBAAsB;IAEf,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;QACvC,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAChD,MAAM,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE;YACrC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,+CAA+C;QAC/C,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;IACrD,CAAC"}
@@ -8,7 +8,30 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
8
8
  const messages = Messages.loadMessages('sfdx-hardis', 'org');
9
9
  export default class PackageVersionPromote extends SfCommand {
10
10
  static title = 'Promote new versions of package(s)';
11
- static description = 'Promote package(s) version(s): convert it from beta to released';
11
+ static description = `
12
+ ## Command Behavior
13
+
14
+ **Promotes a Salesforce package version from beta to released status in your Dev Hub.**
15
+
16
+ This command is a critical step in the package development lifecycle, marking a package version as stable and ready for production use. Once promoted, a package version can be installed in production organizations.
17
+
18
+ Key functionalities:
19
+
20
+ - **Package Version Selection:** Allows you to select a specific package version to promote. If the \`--auto\` flag is used, it automatically identifies package versions that are not yet released and promotes them.
21
+ - **Automated Promotion:** When \`--auto\` is enabled, it queries for all unreleased package versions and promotes them without further user interaction.
22
+ - **Dev Hub Integration:** Interacts with your connected Dev Hub to change the status of the package version.
23
+
24
+ ## Technical explanations
25
+
26
+ The command's technical implementation involves:
27
+
28
+ - **Package Alias Retrieval:** It retrieves package aliases from your \`sfdx-project.json\` to identify available packages.
29
+ - **Automated Promotion Logic:** If \`--auto\` is used, it executes \`sf package version list --released\` to get a list of already released packages and then filters the available package aliases to find those that are not yet released.
30
+ - **Interactive Prompts:** If not in auto mode, it uses the \`prompts\` library to allow the user to select a package version to promote.
31
+ - **Salesforce CLI Integration:** It constructs and executes the \`sf package version promote\` command, passing the package version ID.
32
+ - **\`execSfdxJson\`:** This utility is used to execute the Salesforce CLI command and capture its JSON output.
33
+ - **Error Handling:** It handles cases where a package version might already be promoted or if other errors occur during the promotion process.
34
+ `;
12
35
  static examples = ['$ sf hardis:package:version:promote', '$ sf hardis:package:version:promote --auto'];
13
36
  // public static args = [{name: 'file'}];
14
37
  static flags = {
@@ -69,6 +92,8 @@ export default class PackageVersionPromote extends SfCommand {
69
92
  type: 'select',
70
93
  name: 'packageSelected',
71
94
  message: c.cyanBright(`Please select a package (this is not a drill, it will create an official new version !)`),
95
+ description: 'Choose which package to promote - this will create a new official version that cannot be undone',
96
+ placeholder: 'Select a package',
72
97
  choices: Object.values(availablePackageAliases).map((packageAlias) => {
73
98
  return { title: packageAlias, value: packageAlias };
74
99
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/package/version/promote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/package/version/promote.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { SfCommand } from '@salesforce/sf-plugins-core';
2
2
  import { AnyJson } from "@salesforce/ts-types";
3
3
  export declare class PackageXmlAppend extends SfCommand<any> {
4
- static readonly description = "Append one or multiple package.xml files into a single one";
4
+ static readonly description = "\n## Command Behavior\n\n**Appends the content of one or more Salesforce `package.xml` files into a single target `package.xml` file.**\n\nThis command is useful for consolidating metadata definitions from various sources into a single manifest. For instance, you might have separate `package.xml` files for different features or metadata types, and this command allows you to combine them into one comprehensive file for deployment or retrieval.\n\nKey functionalities:\n\n- **Multiple Input Files:** Takes a comma-separated list of `package.xml` file paths as input.\n- **Single Output File:** Merges the content of all input files into a specified output `package.xml` file.\n- **Metadata Consolidation:** Combines the `<types>` and `<members>` elements from all input files, ensuring that all unique metadata components are included in the resulting file.\n\n## Technical explanations\n\nThe command's technical implementation involves:\n\n- **File Parsing:** It reads and parses the XML content of each input `package.xml` file.\n- **Content Merging:** It iterates through the parsed XML structures, merging the `types` and `members` arrays. If a metadata type exists in multiple input files, its members are combined (duplicates are typically handled by the underlying XML utility).\n- **XML Building:** After consolidating the metadata, it rebuilds the XML structure for the output `package.xml` file.\n- **File Writing:** The newly constructed XML content is then written to the specified output file.\n- **`appendPackageXmlFilesContent` Utility:** The core logic for this operation is encapsulated within the `appendPackageXmlFilesContent` utility function, which handles the parsing, merging, and writing of the `package.xml` files.\n";
5
5
  static readonly examples: string[];
6
6
  static readonly flags: any;
7
7
  protected packageXmlFiles: string[];
@@ -1,7 +1,29 @@
1
1
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
2
2
  import { appendPackageXmlFilesContent } from "../../../common/utils/xmlUtils.js";
3
3
  export class PackageXmlAppend extends SfCommand {
4
- static description = `Append one or multiple package.xml files into a single one`;
4
+ static description = `
5
+ ## Command Behavior
6
+
7
+ **Appends the content of one or more Salesforce \`package.xml\` files into a single target \`package.xml\` file.**
8
+
9
+ This command is useful for consolidating metadata definitions from various sources into a single manifest. For instance, you might have separate \`package.xml\` files for different features or metadata types, and this command allows you to combine them into one comprehensive file for deployment or retrieval.
10
+
11
+ Key functionalities:
12
+
13
+ - **Multiple Input Files:** Takes a comma-separated list of \`package.xml\` file paths as input.
14
+ - **Single Output File:** Merges the content of all input files into a specified output \`package.xml\` file.
15
+ - **Metadata Consolidation:** Combines the \`<types>\` and \`<members>\` elements from all input files, ensuring that all unique metadata components are included in the resulting file.
16
+
17
+ ## Technical explanations
18
+
19
+ The command's technical implementation involves:
20
+
21
+ - **File Parsing:** It reads and parses the XML content of each input \`package.xml\` file.
22
+ - **Content Merging:** It iterates through the parsed XML structures, merging the \`types\` and \`members\` arrays. If a metadata type exists in multiple input files, its members are combined (duplicates are typically handled by the underlying XML utility).
23
+ - **XML Building:** After consolidating the metadata, it rebuilds the XML structure for the output \`package.xml\` file.
24
+ - **File Writing:** The newly constructed XML content is then written to the specified output file.
25
+ - **\`appendPackageXmlFilesContent\` Utility:** The core logic for this operation is encapsulated within the \`appendPackageXmlFilesContent\` utility function, which handles the parsing, merging, and writing of the \`package.xml\` files.
26
+ `;
5
27
  static examples = ["$ sf hardis packagexml append -p package1.xml,package2.xml -o package3.xml"];
6
28
  static flags = {
7
29
  packagexmls: Flags.string({
@@ -1 +1 @@
1
- {"version":3,"file":"append.js","sourceRoot":"","sources":["../../../../src/commands/hardis/packagexml/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,OAAO,gBAAiB,SAAQ,SAAc;IAC3C,MAAM,CAAU,WAAW,GAAG,4DAA4D,CAAC;IAC3F,MAAM,CAAU,QAAQ,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC1G,MAAM,CAAU,KAAK,GAAQ;QAClC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,OAAO;SACrB,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,WAAW;SACzB,CAAC;KACH,CAAC;IAEQ,eAAe,CAAW;IAC1B,UAAU,CAAS;IAEtB,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,MAAM,4BAA4B,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1E,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC"}
1
+ {"version":3,"file":"append.js","sourceRoot":"","sources":["../../../../src/commands/hardis/packagexml/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,OAAO,gBAAiB,SAAQ,SAAc;IAC3C,MAAM,CAAU,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBtC,CAAC;IACO,MAAM,CAAU,QAAQ,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC1G,MAAM,CAAU,KAAK,GAAQ;QAClC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,OAAO;SACrB,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,WAAW;SACzB,CAAC;KACH,CAAC;IAEQ,eAAe,CAAW;IAC1B,UAAU,CAAS;IAEtB,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,MAAM,4BAA4B,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1E,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { SfCommand } from '@salesforce/sf-plugins-core';
2
2
  import { AnyJson } from "@salesforce/ts-types";
3
3
  export declare class PackageXmlRemove extends SfCommand<any> {
4
- static readonly description = "Removes the content of a package.xml file matching another package.xml file";
4
+ static readonly description = "\n## Command Behavior\n\n**Removes metadata components from a `package.xml` file that are also present in another `package.xml` file (e.g., a `destructiveChanges.xml`).**\n\nThis command is useful for refining your `package.xml` manifests by excluding components that are being deleted or are otherwise irrelevant for a specific deployment or retrieval. For example, you can use it to create a `package.xml` that only contains additions and modifications, by removing items listed in a `destructiveChanges.xml`.\n\nKey functionalities:\n\n- **Source `package.xml`:** The main `package.xml` file from which components will be removed (specified by `--packagexml`). Defaults to `package.xml`.\n- **Filter `package.xml`:** The `package.xml` file containing the components to be removed from the source (specified by `--removepackagexml`). Defaults to `destructiveChanges.xml`.\n- **Output File:** The path to the new `package.xml` file that will contain the filtered content (specified by `--outputfile`).\n- **Removed Only Output:** The `--removedonly` flag allows you to generate a `package.xml` that contains *only* the items that were removed from the source `package.xml`.\n\n## Technical explanations\n\nThe command's technical implementation involves:\n\n- **File Parsing:** It reads and parses the XML content of both the source `package.xml` and the filter `package.xml`.\n- **Content Comparison and Filtering:** It compares the metadata types and members defined in both files. Components found in the filter `package.xml` are excluded from the output.\n- **XML Building:** After filtering, it rebuilds the XML structure for the new `package.xml` file.\n- **File Writing:** The newly constructed XML content is then written to the specified output file.\n- **`removePackageXmlFilesContent` Utility:** The core logic for this operation is encapsulated within the `removePackageXmlFilesContent` utility function, which handles the parsing, filtering, and writing of the `package.xml` files.\n";
5
5
  static readonly examples: string[];
6
6
  static readonly requiresProject = false;
7
7
  static readonly flags: any;
@@ -1,7 +1,30 @@
1
1
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
2
2
  import { removePackageXmlFilesContent } from "../../../common/utils/xmlUtils.js";
3
3
  export class PackageXmlRemove extends SfCommand {
4
- static description = `Removes the content of a package.xml file matching another package.xml file`;
4
+ static description = `
5
+ ## Command Behavior
6
+
7
+ **Removes metadata components from a \`package.xml\` file that are also present in another \`package.xml\` file (e.g., a \`destructiveChanges.xml\`).**
8
+
9
+ This command is useful for refining your \`package.xml\` manifests by excluding components that are being deleted or are otherwise irrelevant for a specific deployment or retrieval. For example, you can use it to create a \`package.xml\` that only contains additions and modifications, by removing items listed in a \`destructiveChanges.xml\`.
10
+
11
+ Key functionalities:
12
+
13
+ - **Source \`package.xml\`:** The main \`package.xml\` file from which components will be removed (specified by \`--packagexml\`). Defaults to \`package.xml\`.
14
+ - **Filter \`package.xml\`:** The \`package.xml\` file containing the components to be removed from the source (specified by \`--removepackagexml\`). Defaults to \`destructiveChanges.xml\`.
15
+ - **Output File:** The path to the new \`package.xml\` file that will contain the filtered content (specified by \`--outputfile\`).
16
+ - **Removed Only Output:** The \`--removedonly\` flag allows you to generate a \`package.xml\` that contains *only* the items that were removed from the source \`package.xml\`.
17
+
18
+ ## Technical explanations
19
+
20
+ The command's technical implementation involves:
21
+
22
+ - **File Parsing:** It reads and parses the XML content of both the source \`package.xml\` and the filter \`package.xml\`.
23
+ - **Content Comparison and Filtering:** It compares the metadata types and members defined in both files. Components found in the filter \`package.xml\` are excluded from the output.
24
+ - **XML Building:** After filtering, it rebuilds the XML structure for the new \`package.xml\` file.
25
+ - **File Writing:** The newly constructed XML content is then written to the specified output file.
26
+ - **\`removePackageXmlFilesContent\` Utility:** The core logic for this operation is encapsulated within the \`removePackageXmlFilesContent\` utility function, which handles the parsing, filtering, and writing of the \`package.xml\` files.
27
+ `;
5
28
  static examples = ["$ sf hardis packagexml:remove -p package.xml -r destructiveChanges.xml -o my-reduced-package.xml"];
6
29
  static requiresProject = false;
7
30
  static flags = {
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/hardis/packagexml/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,OAAO,gBAAiB,SAAQ,SAAc;IAC3C,MAAM,CAAU,WAAW,GAAG,6EAA6E,CAAC;IAC5G,MAAM,CAAU,QAAQ,GAAG,CAAC,kGAAkG,CAAC,CAAC;IAChI,MAAM,CAAU,eAAe,GAAG,KAAK,CAAC;IACxC,MAAM,CAAU,KAAK,GAAQ;QAClC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4BAA4B;SAC1C,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qDAAqD;SACnE,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,iEAAiE;YAC9E,OAAO,EAAE,KAAK;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,OAAO;SACrB,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,WAAW;SACzB,CAAC;KACH,CAAC;IAEQ,cAAc,CAAS;IACvB,oBAAoB,CAAS;IAC7B,WAAW,GAAG,KAAK,CAAC;IACpB,UAAU,CAAS;IAEtB,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,IAAI,aAAa,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,IAAI,wBAAwB,CAAC;QAC/E,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEnC,MAAM,4BAA4B,CAChC,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,oBAAoB,EACzB,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CACxF,CAAC;QAEF,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/hardis/packagexml/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,OAAO,gBAAiB,SAAQ,SAAc;IAC3C,MAAM,CAAU,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBtC,CAAC;IACO,MAAM,CAAU,QAAQ,GAAG,CAAC,kGAAkG,CAAC,CAAC;IAChI,MAAM,CAAU,eAAe,GAAG,KAAK,CAAC;IACxC,MAAM,CAAU,KAAK,GAAQ;QAClC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4BAA4B;SAC1C,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qDAAqD;SACnE,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;YACzB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,iEAAiE;YAC9E,OAAO,EAAE,KAAK;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,OAAO;SACrB,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,WAAW;SACzB,CAAC;KACH,CAAC;IAEQ,cAAc,CAAS;IACvB,oBAAoB,CAAS;IAC7B,WAAW,GAAG,KAAK,CAAC;IACpB,UAAU,CAAS;IAEtB,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,IAAI,aAAa,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,IAAI,wBAAwB,CAAC;QAC/E,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEnC,MAAM,4BAA4B,CAChC,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,oBAAoB,EACzB,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CACxF,CAAC;QAEF,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC"}
@@ -116,30 +116,40 @@ export default class CallInCallOut extends SfCommand {
116
116
  uxLog(this, `Browsing ${xmlFiles.length} files`);
117
117
  // Loop in files
118
118
  for (const file of xmlFiles) {
119
- const fileText = await fs.readFile(file, 'utf8');
120
- // Update ApiVersion on file
121
- let fixed = false;
122
- if (shouldFix && fixTargetedMetadataTypes.length > 0 && fixTargetedMetadataTypesPattern.test(file)) {
123
- const apiVersionMatch = fileText.match(/<apiVersion>(.*?)<\/apiVersion>/);
124
- if (apiVersionMatch && apiVersionMatch[1]) {
125
- const currentApiVersion = parseFloat(apiVersionMatch[1]);
126
- if (currentApiVersion < minimumApiVersion) {
127
- const updatedContent = fileText.replace(/<apiVersion>(.*?)<\/apiVersion>/, `<apiVersion>${fixApiVersion}.0</apiVersion>`);
128
- await fs.promises.writeFile(file, updatedContent, 'utf-8');
129
- fixed = true;
130
- uxLog(this, `Updated apiVersion in file: ${file} from ${currentApiVersion}.0 to ${fixApiVersion}.0`);
119
+ try {
120
+ const fileText = await fs.readFile(file, 'utf8');
121
+ // Update ApiVersion on file
122
+ let fixed = false;
123
+ if (shouldFix && fixTargetedMetadataTypes.length > 0 && fixTargetedMetadataTypesPattern.test(file)) {
124
+ const apiVersionMatch = fileText.match(/<apiVersion>(.*?)<\/apiVersion>/);
125
+ if (apiVersionMatch && apiVersionMatch[1]) {
126
+ const currentApiVersion = parseFloat(apiVersionMatch[1]);
127
+ if (currentApiVersion < minimumApiVersion) {
128
+ const updatedContent = fileText.replace(/<apiVersion>(.*?)<\/apiVersion>/, `<apiVersion>${fixApiVersion}.0</apiVersion>`);
129
+ await fs.promises.writeFile(file, updatedContent, 'utf-8');
130
+ fixed = true;
131
+ uxLog(this, `Updated apiVersion in file: ${file} from ${currentApiVersion}.0 to ${fixApiVersion}.0`);
132
+ }
131
133
  }
132
134
  }
135
+ // Loop on criteria to find matches in this file
136
+ for (const catcher of catchers) {
137
+ const catcherMatchResults = await catchMatches(catcher, file, fileText, this);
138
+ // Add the "fixed" flag
139
+ const enrichedResults = catcherMatchResults.map(result => ({
140
+ ...result,
141
+ fixed,
142
+ }));
143
+ this.matchResults.push(...enrichedResults);
144
+ }
133
145
  }
134
- // Loop on criteria to find matches in this file
135
- for (const catcher of catchers) {
136
- const catcherMatchResults = await catchMatches(catcher, file, fileText, this);
137
- // Add the "fixed" flag
138
- const enrichedResults = catcherMatchResults.map(result => ({
139
- ...result,
140
- fixed,
141
- }));
142
- this.matchResults.push(...enrichedResults);
146
+ catch (error) {
147
+ if (error instanceof Error) {
148
+ uxLog(this, c.yellow(`Error processing file ${file}: ${error.message}`));
149
+ }
150
+ else {
151
+ uxLog(this, c.yellow(`Error processing file ${file}: ${String(error)}`));
152
+ }
143
153
  }
144
154
  }
145
155
  // Format result
@@ -164,16 +174,17 @@ export default class CallInCallOut extends SfCommand {
164
174
  delete item.detail;
165
175
  return item;
166
176
  }));
177
+ uxLog(this, c.cyan(`Found ${c.bold(resultSorted.length)} metadata files with API Version.`));
167
178
  const numberOfInvalid = result.filter((res) => res.valid === 'no').length;
168
179
  const numberOfValid = result.length - numberOfInvalid;
169
180
  if (numberOfInvalid > 0) {
170
- uxLog(this, c.yellow(`[sfdx-hardis] WARNING: Your sources contain ${c.bold(numberOfInvalid)} metadata files with API Version lesser than ${c.bold(minimumApiVersion)}`));
181
+ uxLog(this, c.yellow(`WARNING: Your sources contain ${c.bold(numberOfInvalid)} metadata files with API Version lesser than ${c.bold(minimumApiVersion)}`));
171
182
  if (failIfError) {
172
- throw new SfError(c.red(`[sfdx-hardis][ERROR] ${c.bold(numberOfInvalid)} metadata files with wrong API version detected`));
183
+ throw new SfError(c.red(`${c.bold(numberOfInvalid)} metadata files with wrong API version detected`));
173
184
  }
174
185
  }
175
186
  else {
176
- uxLog(this, c.green(`[sfdx-hardis] SUCCESS: Your sources contain ${c.bold(numberOfValid)} metadata files with API Version superior to ${c.bold(minimumApiVersion)}`));
187
+ uxLog(this, c.green(`SUCCESS: Your sources contain ${c.bold(numberOfValid)} metadata files with API Version superior to ${c.bold(minimumApiVersion)}`));
177
188
  }
178
189
  // Generate output files
179
190
  const columns = [
@@ -1 +1 @@
1
- {"version":3,"file":"apiversion.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/apiversion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiversion.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/apiversion.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,33 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
10
10
  const messages = Messages.loadMessages('sfdx-hardis', 'org');
11
11
  export default class CallInCallOut extends SfCommand {
12
12
  static title = 'Audit CallIns and CallOuts';
13
- static description = messages.getMessage('auditCallInCallOut');
13
+ static description = `
14
+ ## Command Behavior
15
+
16
+ **Audits Apex classes for inbound (Call-In) and outbound (Call-Out) API calls, providing insights into integration points.**
17
+
18
+ This command helps developers and architects understand the integration landscape of their Salesforce project by identifying where Apex code interacts with external systems or exposes functionality for external consumption. It's useful for security reviews, refactoring efforts, and documenting system integrations.
19
+
20
+ Key functionalities:
21
+
22
+ - **Inbound Call Detection:** Identifies Apex methods exposed as web services (\`webservice static\`) or REST resources (\`@RestResource\`).
23
+ - **Outbound Call Detection:** Detects HTTP callouts (\`new HttpRequest\`).
24
+ - **Detailed Information:** Extracts relevant details for each detected call, such as endpoint URLs for outbound calls or resource names for inbound calls.
25
+ - **Test Class Exclusion:** Automatically skips test classes (\`@isTest\`) to focus on production code.
26
+ - **CSV Report Generation:** Generates a CSV report summarizing all detected call-ins and call-outs, including their type, subtype (protocol), file name, namespace, and extracted details.
27
+
28
+ ## Technical explanations
29
+
30
+ The command's technical implementation involves:
31
+
32
+ - **File Discovery:** Uses \`glob\` to find all Apex class (\`.cls\`) and trigger (\`.trigger\`) files within the project.
33
+ - **Content Analysis:** Reads the content of each Apex file and uses regular expressions to identify patterns indicative of inbound or outbound calls.
34
+ - **Pattern Matching:** Defines a set of \`catchers\`, each with a \`type\` (INBOUND/OUTBOUND), \`subType\` (SOAP/REST/HTTP), and \`regex\` to match specific API call patterns. It also includes \`detail\` regexes to extract additional information.
35
+ - **\`catchMatches\` Utility:** This utility function is used to apply the defined \`catchers\` to each Apex file and extract all matching occurrences.
36
+ - **Data Structuring:** Organizes the extracted information into a structured format, including the file name, namespace, and detailed matches.
37
+ - **Reporting:** Uses \`generateReports\` to create a CSV report and display a table in the console, summarizing the audit findings.
38
+ - **Filtering:** Filters out files that start with 'hidden' or contain \`@isTest\` to focus on relevant code.
39
+ `;
14
40
  static examples = ['$ sf hardis:project:audit:callouts'];
15
41
  // public static args = [{name: 'file'}];
16
42
  static flags = {
@@ -1 +1 @@
1
- {"version":3,"file":"callincallout.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/callincallout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callincallout.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/callincallout.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,29 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
9
9
  const messages = Messages.loadMessages('sfdx-hardis', 'org');
10
10
  export default class AuditDuplicateFiles extends SfCommand {
11
11
  static title = 'Find duplicate sfdx files';
12
- static description = 'Find duplicate files in sfdx folder (often from past @salesforce/cli bugs)';
12
+ static description = `
13
+ ## Command Behavior
14
+
15
+ **Identifies and reports on duplicate file names within your Salesforce DX project folder.**
16
+
17
+ This command helps detect instances where files with the same name exist in different directories within your SFDX project. While some duplicates are expected (e.g., metadata files for different components of the same object), others can be a result of past Salesforce CLI bugs or improper source control practices, leading to confusion and potential deployment issues.
18
+
19
+ Key functionalities:
20
+
21
+ - **File Scan:** Recursively scans a specified root path (defaults to the current working directory) for all files.
22
+ - **Duplicate Detection:** Identifies files that share the same name but reside in different locations.
23
+ - **Intelligent Filtering:** Accounts for known patterns where duplicate file names are legitimate (e.g., \`field-meta.xml\`, \`listView-meta.xml\`, \`recordType-meta.xml\`, \`webLink-meta.xml\` files within object subdirectories).
24
+ - **Reporting:** Outputs a JSON object detailing the detected duplicates, including the file name and the full paths of its occurrences.
25
+
26
+ ## Technical explanations
27
+
28
+ The command's technical implementation involves:
29
+
30
+ - **File System Traversal:** Uses \`fs-readdir-recursive\` to list all files within the specified directory, excluding \`node_modules\`.
31
+ - **Duplicate Logic:** Iterates through the list of all files and compares their base names. If two files have the same base name but different full paths, they are considered potential duplicates.
32
+ - **Exclusion Logic:** The \`checkDoublingAllowed\` function contains regular expressions to identify specific file path patterns where duplicate names are acceptable (e.g., \`objects/Account/fields/MyField__c.field-meta.xml\` and \`objects/Contact/fields/MyField__c.field-meta.xml\`). This prevents false positives.
33
+ - **Data Structuring:** Organizes the results into a JavaScript object where keys are duplicate file names and values are arrays of their full paths.
34
+ `;
13
35
  static examples = ['$ sf hardis:project:audit:duplicatefiles'];
14
36
  static flags = {
15
37
  path: Flags.string({
@@ -52,7 +74,18 @@ export default class AuditDuplicateFiles extends SfCommand {
52
74
  duplicates[file.fileName] = doublingFullPaths;
53
75
  }
54
76
  }
55
- uxLog(this, JSON.stringify(duplicates, null, 2));
77
+ // Build summary
78
+ const duplicateCount = Object.keys(duplicates).length;
79
+ if (duplicateCount > 0) {
80
+ const duplicateList = Object.entries(duplicates)
81
+ .map(([fileName, paths]) => `${c.bold(fileName)}:\n - ${paths.join('\n - ')}`)
82
+ .join('\n');
83
+ uxLog(this, c.cyan(`Found ${c.bold(duplicateCount)} duplicate file names in ${c.bold(pathToBrowser)}.`));
84
+ uxLog(this, c.yellow(`Duplicate files:\n${duplicateList}`));
85
+ }
86
+ else {
87
+ uxLog(this, c.cyan(`No duplicate file names found in ${c.bold(pathToBrowser)}.`));
88
+ }
56
89
  return { duplicates: duplicates };
57
90
  }
58
91
  checkDoublingAllowed(file1, file2) {
@@ -1 +1 @@
1
- {"version":3,"file":"duplicatefiles.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/duplicatefiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duplicatefiles.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/duplicatefiles.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,31 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
12
12
  const messages = Messages.loadMessages('sfdx-hardis', 'org');
13
13
  export default class RemoteSites extends SfCommand {
14
14
  static title = 'Audit Remote Sites';
15
- static description = messages.getMessage('auditRemoteSites');
15
+ static description = `
16
+ ## Command Behavior
17
+
18
+ **Audits Salesforce Remote Site Settings in your project, providing a comprehensive overview of external endpoints accessed by your Salesforce org.**
19
+
20
+ This command is crucial for security reviews, compliance checks, and understanding the external integrations of your Salesforce environment. It helps identify all configured remote sites, their URLs, activity status, and associated protocols.
21
+
22
+ Key functionalities:
23
+
24
+ - **Remote Site Discovery:** Scans your project for RemoteSiteSetting metadata files (.remoteSite-meta.xml or .remoteSite).
25
+ - **URL Extraction:** Extracts the URL, active status, and description for each remote site.
26
+ - **Protocol and Domain Identification:** Determines the protocol (HTTP/HTTPS) and extracts the domain from each URL, providing a clearer picture of the external systems being accessed.
27
+ - **Reporting:** Generates a CSV report summarizing all detected remote sites, including their protocol, domain, name, URL, active status, and description.
28
+
29
+ ## Technical explanations
30
+
31
+ The command's technical implementation involves:
32
+
33
+ - **File Discovery:** Uses \`glob\` to find all RemoteSiteSetting metadata files within the project.
34
+ - **Content Analysis:** Reads the content of each XML file and uses regular expressions (/<url>(.*?)<\\/url>/gim, /<isActive>(.*?)<\\/isActive>/gim, /<description>(.*?)<\\/description>/gim) to extract relevant details.
35
+ - **\`catchMatches\` Utility:** This utility function is used to apply the defined regular expressions to each file and extract all matching occurrences.
36
+ - **URL Parsing:** Uses Node.js's \`url\` module to parse the extracted URLs and \`psl\` (Public Suffix List) to extract the domain name from the hostname.
37
+ - **Data Structuring:** Organizes the extracted information into a structured format, including the remote site's name, file name, namespace, URL, active status, description, protocol, and domain.
38
+ - **Reporting:** Uses \`generateReports\` to create a CSV report and display a table in the console, summarizing the audit findings.
39
+ `;
16
40
  static examples = ['$ sf hardis:project:audit:remotesites'];
17
41
  // public static args = [{name: 'file'}];
18
42
  static flags = {
@@ -1 +1 @@
1
- {"version":3,"file":"remotesites.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/remotesites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remotesites.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/audit/remotesites.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,31 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
12
12
  const messages = Messages.loadMessages('sfdx-hardis', 'org');
13
13
  export default class CleanEmptyItems extends SfCommand {
14
14
  static title = 'Clean retrieved empty items in dx sources';
15
- static description = 'Remove unwanted empty items within sfdx project sources';
15
+ static description = `
16
+ ## Command Behavior
17
+
18
+ **Removes empty or irrelevant metadata items from your Salesforce DX project sources.**
19
+
20
+ This command helps maintain a clean and efficient Salesforce codebase by deleting metadata files that are essentially empty or contain no meaningful configuration. These files can sometimes be generated during retrieval processes or remain after refactoring, contributing to unnecessary clutter in your project.
21
+
22
+ Key functionalities:
23
+
24
+ - **Targeted Cleaning:** Specifically targets and removes empty instances of:
25
+ - Global Value Set Translations (\`.globalValueSetTranslation-meta.xml\`)
26
+ - Standard Value Sets (\`.standardValueSet-meta.xml\`)
27
+ - Sharing Rules (\`.sharingRules-meta.xml\`)
28
+ - **Content-Based Deletion:** It checks the XML content of these files for the presence of specific tags (e.g., \`valueTranslation\` for Global Value Set Translations) to determine if they are truly empty or lack relevant data.
29
+
30
+ ## Technical explanations
31
+
32
+ The command's technical implementation involves:
33
+
34
+ - **File Discovery:** Uses \`glob\` to find files matching predefined patterns for Global Value Set Translations, Standard Value Sets, and Sharing Rules within the specified root folder (defaults to \`force-app\`).
35
+ - **XML Parsing:** For each matching file, it reads and parses the XML content using \`parseXmlFile\`.
36
+ - **Content Validation:** It then checks the parsed XML object for the existence of specific nested properties (e.g., \`xmlContent.GlobalValueSetTranslation.valueTranslation\`). If these properties are missing or empty, the file is considered empty.
37
+ - **File Deletion:** If a file is determined to be empty, it is removed from the file system using \`fs.remove\`.
38
+ - **Logging:** Provides clear messages about which files are being removed and a summary of the total number of items cleaned.
39
+ `;
16
40
  static examples = ['$ sf hardis:project:clean:emptyitems'];
17
41
  static flags = {
18
42
  folder: Flags.string({
@@ -1 +1 @@
1
- {"version":3,"file":"emptyitems.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/clean/emptyitems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emptyitems.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/clean/emptyitems.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { SfCommand } from '@salesforce/sf-plugins-core';
2
2
  import { AnyJson } from '@salesforce/ts-types';
3
3
  export declare class FilterXmlContent extends SfCommand<any> {
4
- static readonly description = "Filter content of metadatas (XML) in order to be able to deploy only part of them on an org (See [Example configuration](https://github.com/nvuillam/sfdx-essentials/blob/master/examples/filter-xml-content-config.json))\n\nWhen you perform deployments from one org to another, the features activated in the target org may not fit the content of the sfdx/metadata files extracted from the source org.\n\nYou may need to filter some elements in the XML files, for example in the Profiles\n\nThis script requires a filter-config.json file";
4
+ static readonly description = "\n## Command Behavior\n\n**Filters the content of Salesforce metadata XML files to remove specific elements, enabling more granular deployments.**\n\nThis command addresses a common challenge in Salesforce development: deploying only a subset of metadata from an XML file when the target org might not support all elements or when certain elements are not desired. It allows you to define rules in a JSON configuration file to remove unwanted XML nodes.\n\nKey functionalities:\n\n- **Configurable Filtering:** Uses a JSON configuration file (e.g., `filter-config.json`) to define which XML elements to remove. This configuration specifies the XML tags to target and the values within those tags that should trigger removal.\n- **Targeted File Processing:** Processes XML files within a specified input folder (defaults to current directory) and writes the filtered content to an output folder.\n- **Example Use Cases:** Useful for scenarios like:\n - Removing references to features not enabled in the target org.\n - Stripping out specific profile permissions or field-level security settings.\n - Cleaning up metadata that is not relevant to a particular deployment.\n\n## Technical explanations\n\nThe command's technical implementation involves:\n\n- **Configuration Loading:** Reads the `filter-config.json` file, which contains an array of `filters`. Each filter defines a `name`, `description`, `folders` (where to apply the filter), `file_extensions`, and an `exclude_list`.\n- **File System Operations:** Copies the input folder to an output folder (if different) to avoid modifying original files directly. It then iterates through the files in the output folder that match the specified file extensions.\n- **XML Parsing and Manipulation:** For each matching XML file:\n - It uses `xml2js.Parser` to parse the XML content into a JavaScript object.\n - It recursively traverses the JavaScript object, applying the `filterElement` function.\n - The `filterElement` function checks for `type_tag` and `identifier_tag` defined in the `exclude_list`. If a match is found and the value is in the `excludeDef.values`, the element is removed from the XML structure.\n - After filtering, it uses `writeXmlFile` to write the modified JavaScript object back to the XML file.\n- **Logging:** Provides detailed logs about the filtering process, including which files are being processed and which elements are being filtered.\n- **Summary Reporting:** Tracks and reports on the files that have been updated due to filtering.\n";
5
5
  static readonly examples: string[];
6
6
  static readonly requiresProject = true;
7
7
  static readonly flags: any;