mcdev 7.0.3 → 7.1.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 (380) hide show
  1. package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
  2. package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +1 -0
  3. package/.github/workflows/code-test.yml +48 -0
  4. package/.husky/post-checkout +1 -1
  5. package/.husky/post-merge +7 -1
  6. package/.husky/pre-commit +3 -1
  7. package/@types/lib/Builder.d.ts +13 -13
  8. package/@types/lib/Builder.d.ts.map +1 -1
  9. package/@types/lib/Deployer.d.ts +19 -16
  10. package/@types/lib/Deployer.d.ts.map +1 -1
  11. package/@types/lib/Retriever.d.ts +15 -15
  12. package/@types/lib/Retriever.d.ts.map +1 -1
  13. package/@types/lib/cli.d.ts +1 -1
  14. package/@types/lib/cli.d.ts.map +1 -1
  15. package/@types/lib/index.d.ts +102 -51
  16. package/@types/lib/index.d.ts.map +1 -1
  17. package/@types/lib/metadataTypes/Asset.d.ts +71 -59
  18. package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
  19. package/@types/lib/metadataTypes/AttributeGroup.d.ts +6 -8
  20. package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -1
  21. package/@types/lib/metadataTypes/AttributeSet.d.ts +10 -21
  22. package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
  23. package/@types/lib/metadataTypes/Automation.d.ts +47 -49
  24. package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
  25. package/@types/lib/metadataTypes/Campaign.d.ts +12 -18
  26. package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -1
  27. package/@types/lib/metadataTypes/ContentArea.d.ts +13 -31
  28. package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -1
  29. package/@types/lib/metadataTypes/DataExtension.d.ts +28 -33
  30. package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
  31. package/@types/lib/metadataTypes/DataExtensionField.d.ts +15 -22
  32. package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
  33. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +12 -11
  34. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -1
  35. package/@types/lib/metadataTypes/DataExtract.d.ts +13 -28
  36. package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
  37. package/@types/lib/metadataTypes/DataExtractType.d.ts +11 -10
  38. package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -1
  39. package/@types/lib/metadataTypes/DeliveryProfile.d.ts +11 -10
  40. package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -1
  41. package/@types/lib/metadataTypes/Discovery.d.ts +11 -10
  42. package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -1
  43. package/@types/lib/metadataTypes/Email.d.ts +14 -34
  44. package/@types/lib/metadataTypes/Email.d.ts.map +1 -1
  45. package/@types/lib/metadataTypes/EmailSend.d.ts +18 -10
  46. package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -1
  47. package/@types/lib/metadataTypes/Event.d.ts +22 -16
  48. package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
  49. package/@types/lib/metadataTypes/FileLocation.d.ts +11 -10
  50. package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -1
  51. package/@types/lib/metadataTypes/FileTransfer.d.ts +12 -18
  52. package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -1
  53. package/@types/lib/metadataTypes/Filter.d.ts +11 -10
  54. package/@types/lib/metadataTypes/Filter.d.ts.map +1 -1
  55. package/@types/lib/metadataTypes/Folder.d.ts +49 -35
  56. package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
  57. package/@types/lib/metadataTypes/ImportFile.d.ts +16 -15
  58. package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
  59. package/@types/lib/metadataTypes/Journey.d.ts +55 -35
  60. package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
  61. package/@types/lib/metadataTypes/List.d.ts +13 -12
  62. package/@types/lib/metadataTypes/List.d.ts.map +1 -1
  63. package/@types/lib/metadataTypes/MetadataType.d.ts +73 -26
  64. package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
  65. package/@types/lib/metadataTypes/MobileCode.d.ts +12 -20
  66. package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -1
  67. package/@types/lib/metadataTypes/MobileKeyword.d.ts +23 -14
  68. package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
  69. package/@types/lib/metadataTypes/MobileMessage.d.ts +18 -42
  70. package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
  71. package/@types/lib/metadataTypes/Query.d.ts +15 -12
  72. package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
  73. package/@types/lib/metadataTypes/Role.d.ts +12 -11
  74. package/@types/lib/metadataTypes/Role.d.ts.map +1 -1
  75. package/@types/lib/metadataTypes/Script.d.ts +18 -25
  76. package/@types/lib/metadataTypes/Script.d.ts.map +1 -1
  77. package/@types/lib/metadataTypes/SendClassification.d.ts +13 -10
  78. package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
  79. package/@types/lib/metadataTypes/SenderProfile.d.ts +12 -25
  80. package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
  81. package/@types/lib/metadataTypes/TransactionalEmail.d.ts +18 -12
  82. package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
  83. package/@types/lib/metadataTypes/TransactionalMessage.d.ts +12 -32
  84. package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -1
  85. package/@types/lib/metadataTypes/TransactionalPush.d.ts +15 -21
  86. package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -1
  87. package/@types/lib/metadataTypes/TransactionalSMS.d.ts +16 -18
  88. package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -1
  89. package/@types/lib/metadataTypes/TriggeredSend.d.ts +19 -24
  90. package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
  91. package/@types/lib/metadataTypes/User.d.ts +23 -40
  92. package/@types/lib/metadataTypes/User.d.ts.map +1 -1
  93. package/@types/lib/metadataTypes/Verification.d.ts +16 -13
  94. package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
  95. package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts +24 -14
  96. package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts +3 -0
  97. package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts +5 -0
  98. package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts +16 -0
  99. package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts +1 -0
  100. package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts +1 -0
  101. package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts +1 -0
  102. package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts +1 -0
  103. package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts +1 -0
  104. package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts +1 -0
  105. package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts +1 -0
  106. package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts +1 -0
  107. package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts +1 -0
  108. package/@types/lib/metadataTypes/definitions/Email.definition.d.ts +1 -0
  109. package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts +8 -0
  110. package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +10 -1
  111. package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts +1 -0
  112. package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts +1 -0
  113. package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts +1 -0
  114. package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts +1 -0
  115. package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts +5 -0
  116. package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +13 -0
  117. package/@types/lib/metadataTypes/definitions/List.definition.d.ts +1 -0
  118. package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts +1 -0
  119. package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts +9 -0
  120. package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts +4 -0
  121. package/@types/lib/metadataTypes/definitions/Query.definition.d.ts +3 -0
  122. package/@types/lib/metadataTypes/definitions/Role.definition.d.ts +1 -0
  123. package/@types/lib/metadataTypes/definitions/Script.definition.d.ts +1 -0
  124. package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts +3 -0
  125. package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts +1 -0
  126. package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +6 -0
  127. package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts +1 -0
  128. package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts +3 -0
  129. package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts +4 -0
  130. package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts +6 -0
  131. package/@types/lib/metadataTypes/definitions/User.definition.d.ts +1 -0
  132. package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts +3 -0
  133. package/@types/lib/util/auth.d.ts +19 -18
  134. package/@types/lib/util/auth.d.ts.map +1 -1
  135. package/@types/lib/util/businessUnit.d.ts +17 -17
  136. package/@types/lib/util/businessUnit.d.ts.map +1 -1
  137. package/@types/lib/util/cache.d.ts +34 -32
  138. package/@types/lib/util/cache.d.ts.map +1 -1
  139. package/@types/lib/util/cli.d.ts +30 -33
  140. package/@types/lib/util/cli.d.ts.map +1 -1
  141. package/@types/lib/util/config.d.ts +20 -20
  142. package/@types/lib/util/config.d.ts.map +1 -1
  143. package/@types/lib/util/devops.d.ts +21 -21
  144. package/@types/lib/util/devops.d.ts.map +1 -1
  145. package/@types/lib/util/file.d.ts +179 -18
  146. package/@types/lib/util/file.d.ts.map +1 -1
  147. package/@types/lib/util/init.config.d.ts +19 -19
  148. package/@types/lib/util/init.config.d.ts.map +1 -1
  149. package/@types/lib/util/init.d.ts +20 -20
  150. package/@types/lib/util/init.d.ts.map +1 -1
  151. package/@types/lib/util/init.git.d.ts +2 -2
  152. package/@types/lib/util/init.git.d.ts.map +1 -1
  153. package/@types/lib/util/init.npm.d.ts +2 -2
  154. package/@types/lib/util/init.npm.d.ts.map +1 -1
  155. package/@types/lib/util/replaceContentBlockReference.d.ts +55 -32
  156. package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
  157. package/@types/lib/util/util.d.ts +64 -39
  158. package/@types/lib/util/util.d.ts.map +1 -1
  159. package/@types/types/mcdev.d.d.ts +160 -52
  160. package/@types/types/mcdev.d.d.ts.map +1 -1
  161. package/boilerplate/files/.vscode/settings.json +1 -0
  162. package/boilerplate/forcedUpdates.json +4 -0
  163. package/boilerplate/gitignore-template +0 -1
  164. package/eslint.config.js +0 -1
  165. package/lib/Builder.js +13 -8
  166. package/lib/Deployer.js +13 -8
  167. package/lib/Retriever.js +4 -1
  168. package/lib/cli.js +384 -288
  169. package/lib/index.js +620 -241
  170. package/lib/metadataTypes/Asset.js +455 -209
  171. package/lib/metadataTypes/Automation.js +34 -0
  172. package/lib/metadataTypes/DataExtension.js +36 -31
  173. package/lib/metadataTypes/DataExtensionField.js +2 -3
  174. package/lib/metadataTypes/Event.js +227 -37
  175. package/lib/metadataTypes/Folder.js +64 -49
  176. package/lib/metadataTypes/Journey.js +340 -58
  177. package/lib/metadataTypes/MetadataType.js +272 -61
  178. package/lib/metadataTypes/MobileKeyword.js +12 -1
  179. package/lib/metadataTypes/Role.js +9 -7
  180. package/lib/metadataTypes/Script.js +4 -3
  181. package/lib/metadataTypes/SenderProfile.js +18 -5
  182. package/lib/metadataTypes/TransactionalEmail.js +2 -2
  183. package/lib/metadataTypes/TriggeredSend.js +21 -5
  184. package/lib/metadataTypes/User.js +31 -27
  185. package/lib/metadataTypes/definitions/Asset.definition.js +10 -2
  186. package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
  187. package/lib/metadataTypes/definitions/AttributeSet.definition.js +11 -0
  188. package/lib/metadataTypes/definitions/Automation.definition.js +9 -0
  189. package/lib/metadataTypes/definitions/Campaign.definition.js +1 -0
  190. package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
  191. package/lib/metadataTypes/definitions/DataExtension.definition.js +1 -0
  192. package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -0
  193. package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -0
  194. package/lib/metadataTypes/definitions/DataExtract.definition.js +2 -1
  195. package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -0
  196. package/lib/metadataTypes/definitions/DeliveryProfile.definition.js +1 -0
  197. package/lib/metadataTypes/definitions/Discovery.definition.js +1 -0
  198. package/lib/metadataTypes/definitions/Email.definition.js +1 -0
  199. package/lib/metadataTypes/definitions/EmailSend.definition.js +8 -0
  200. package/lib/metadataTypes/definitions/Event.definition.js +9 -8
  201. package/lib/metadataTypes/definitions/FileLocation.definition.js +1 -0
  202. package/lib/metadataTypes/definitions/FileTransfer.definition.js +4 -0
  203. package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
  204. package/lib/metadataTypes/definitions/Folder.definition.js +10 -8
  205. package/lib/metadataTypes/definitions/ImportFile.definition.js +8 -1
  206. package/lib/metadataTypes/definitions/Journey.definition.js +28 -0
  207. package/lib/metadataTypes/definitions/List.definition.js +1 -0
  208. package/lib/metadataTypes/definitions/MobileCode.definition.js +1 -0
  209. package/lib/metadataTypes/definitions/MobileKeyword.definition.js +7 -0
  210. package/lib/metadataTypes/definitions/MobileMessage.definition.js +9 -0
  211. package/lib/metadataTypes/definitions/Query.definition.js +3 -0
  212. package/lib/metadataTypes/definitions/Role.definition.js +1 -0
  213. package/lib/metadataTypes/definitions/Script.definition.js +1 -0
  214. package/lib/metadataTypes/definitions/SendClassification.definition.js +4 -0
  215. package/lib/metadataTypes/definitions/SenderProfile.definition.js +1 -0
  216. package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +7 -0
  217. package/lib/metadataTypes/definitions/TransactionalMessage.definition.js +1 -0
  218. package/lib/metadataTypes/definitions/TransactionalPush.definition.js +3 -0
  219. package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +4 -0
  220. package/lib/metadataTypes/definitions/TriggeredSend.definition.js +10 -3
  221. package/lib/metadataTypes/definitions/User.definition.js +3 -0
  222. package/lib/metadataTypes/definitions/Verification.definition.js +1 -0
  223. package/lib/util/auth.js +0 -1
  224. package/lib/util/cache.js +35 -0
  225. package/lib/util/cli.js +96 -140
  226. package/lib/util/config.js +11 -19
  227. package/lib/util/devops.js +42 -43
  228. package/lib/util/file.js +7 -10
  229. package/lib/util/init.config.js +6 -10
  230. package/lib/util/init.git.js +43 -57
  231. package/lib/util/init.js +35 -59
  232. package/lib/util/replaceContentBlockReference.js +110 -61
  233. package/lib/util/util.js +90 -4
  234. package/package.json +22 -19
  235. package/test/general.test.js +1144 -172
  236. package/test/mockRoot/.mcdevrc.json +1 -1
  237. package/test/mockRoot/deploy/testInstance/testBU/event/testExisting_event.event-meta.json +201 -0
  238. package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withExistingDE.event-meta.json +233 -0
  239. package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withSchema.event-meta.json +194 -0
  240. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.json +1 -0
  241. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.json +1 -0
  242. package/test/resourceFactory.js +43 -11
  243. package/test/resources/1111111/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +364 -0
  244. package/test/resources/9999999/asset/{block-1157-retrieve-expected.html → build-asset_htmlblock-expected.html} +1 -1
  245. package/test/resources/9999999/asset/build-asset_htmlblock-expected.json +29 -0
  246. package/test/resources/9999999/asset/build-templatebasedemail-expected.json +65 -0
  247. package/test/resources/9999999/asset/resolveId-1295064-noPath-expected.json +3 -3
  248. package/test/resources/9999999/asset/resolveId-1295064-withPath-expected.json +3 -3
  249. package/test/resources/9999999/asset/retrieve-templatebasedemail-expected.json +65 -0
  250. package/test/resources/9999999/asset/template-emailTemplate-expected.json +20 -0
  251. package/test/resources/9999999/asset/template-templatebasedemail-expected.json +65 -0
  252. package/test/resources/9999999/asset/template-testExisting_asset_htmlblock-expected.json +29 -0
  253. package/test/resources/9999999/asset/testExisting_asset_htmlblock-retrieve-expected.html +23 -0
  254. package/test/resources/9999999/asset/{block-1157-retrieve-expected.json → testExisting_asset_htmlblock-retrieve-expected.json} +3 -3
  255. package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-key-expected.html +6 -6
  256. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-id-expected.amp +1 -1
  257. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-key-expected.amp +4 -4
  258. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-name-expected.amp +1 -1
  259. package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-key-expected.amp +4 -4
  260. package/test/resources/9999999/asset/v1/content/assets/1295064/get-response.json +4 -4
  261. package/test/resources/9999999/asset/v1/content/assets/1295065/get-response.json +60 -0
  262. package/test/resources/9999999/asset/v1/content/assets/1295066/get-response.json +60 -0
  263. package/test/resources/9999999/asset/v1/content/assets/5289/get-response.json +75 -0
  264. package/test/resources/9999999/asset/v1/content/assets/808714/get-response.json +3 -3
  265. package/test/resources/9999999/asset/v1/content/assets/950143/get-response.json +97 -0
  266. package/test/resources/9999999/asset/v1/content/assets/get-response-customerKey=testExisting_asset.json +1 -1
  267. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN195,196,197,198,199,200,201,202,203,210,211,212,213,3.json +78 -2
  268. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,207,208,209,5,214,4,215,216.json +370 -0
  269. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,215,216,217,218,219,220,221,222.json +243 -0
  270. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,207,208,209,5.json +229 -0
  271. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1.json +98 -1
  272. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN217,218,219,220,221,222,223,224,225,226,227,228.json +7 -0
  273. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228,214,4.json +35 -0
  274. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228.json +7 -0
  275. package/test/resources/9999999/asset/v1/content/assets/query/{post-response-customerKey=mcdev-issue-1157.json → post-response-customerKey=testExisting_asset_htmlblock.json} +2 -2
  276. package/test/resources/9999999/automation/v1/queries/get-response-Name=testExisting_query.json +24 -0
  277. package/test/resources/9999999/automation/v1/scripts/get-response-name=testExisting_script.json +17 -0
  278. package/test/resources/9999999/automation/v1/scripts/get-response.json +2 -2
  279. package/test/resources/9999999/dataExtension/retrieve-CustomerKey=testNew_event_withSchema-response.xml +50 -0
  280. package/test/resources/9999999/dataExtension/retrieve-createdViaEvent-response.xml +50 -0
  281. package/test/resources/9999999/dataExtension/retrieve-response.xml +48 -0
  282. package/test/resources/9999999/dataExtension/retrieve_event_withSchema-expected.json +219 -0
  283. package/test/resources/9999999/dataExtension/update-afterCreatedViaEvent-response.xml +55 -0
  284. package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -0
  285. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_event_withSchema-response.xml +461 -0
  286. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKeyINtestExisting_dataExtension,testNew_dataExtension-response.xml +133 -0
  287. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +870 -0
  288. package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-QAA-response.xml +70 -0
  289. package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-response.xml +70 -0
  290. package/test/resources/9999999/dataFolder/retrieve-ContentType=journey-response.xml +48 -0
  291. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,automatio,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,triggered,triggered,useriniti-response.xml +519 -0
  292. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,dataexten,salesforc,shared_da,shared_da,shared_sa,synchroni,automatio,useriniti,journey,mysubs,list,publicati,queryacti,ssjsactiv,triggered,triggered-response.xml +519 -0
  293. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,journey-response.xml +92 -0
  294. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +115 -0
  295. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,ssjsactivity-response.xml +92 -0
  296. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared-QAA-response.xml +70 -0
  297. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +431 -0
  298. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINautomations,queryactivity-response.xml +70 -0
  299. package/test/resources/9999999/dataFolder/{retrieve-response.xml → retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +32 -119
  300. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINdataextension,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +117 -0
  301. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINhidden,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +46 -0
  302. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +251 -0
  303. package/test/resources/9999999/dataFolder/retrieve-response-.xml +519 -0
  304. package/test/resources/9999999/event/build-expected.json +227 -0
  305. package/test/resources/9999999/event/get-expected.json +234 -0
  306. package/test/resources/9999999/event/post_withExistingDE-callout-expected.json +20 -0
  307. package/test/resources/9999999/event/post_withExistingDE-expected.json +23 -0
  308. package/test/resources/9999999/event/post_withSchema-callout-expected.json +199 -0
  309. package/test/resources/9999999/event/post_withSchema-expected.json +234 -0
  310. package/test/resources/9999999/event/put-callout-expected.json +204 -0
  311. package/test/resources/9999999/event/put-expected.json +233 -0
  312. package/test/resources/9999999/event/template-expected.json +227 -0
  313. package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +252 -2
  314. package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/delete-response.txt +0 -0
  315. package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/put-response.json +242 -0
  316. package/test/resources/9999999/interaction/v1/eventDefinitions/post_withExistingDE-response.json +28 -0
  317. package/test/resources/9999999/interaction/v1/eventDefinitions/post_withSchema-response.json +243 -0
  318. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/delete-response.txt +1 -0
  319. package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/get-response.json +4 -4
  320. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response.json +4 -4
  321. package/test/resources/9999999/interaction/v1/interactions/publishAsync/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/post-response.json +4 -0
  322. package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-failed.json +34 -0
  323. package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-success.json +5 -0
  324. package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-successWarnings.json +36 -0
  325. package/test/resources/9999999/journey/build-expected.json +5 -5
  326. package/test/resources/9999999/journey/get-multistep-expected.json +1 -1
  327. package/test/resources/9999999/journey/get-quicksend-expected.json +5 -5
  328. package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +1 -1
  329. package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +7 -7
  330. package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +1 -1
  331. package/test/resources/9999999/journey/post-expected.json +1 -1
  332. package/test/resources/9999999/journey/publish-callout-expected.json +1 -0
  333. package/test/resources/9999999/journey/put-expected.json +1 -1
  334. package/test/resources/9999999/journey/template-expected.json +5 -5
  335. package/test/resources/9999999/mobileKeyword/build-expected.json +1 -0
  336. package/test/resources/9999999/mobileKeyword/get-expected.json +1 -0
  337. package/test/resources/9999999/mobileKeyword/post-create-expected.json +1 -0
  338. package/test/resources/9999999/mobileKeyword/template-expected.json +1 -0
  339. package/test/resources/{1111111/accountUser/retrieve-CustomerKey=testExisting_userANDActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → 9999999/queryDefinition/retrieve-CustomerKey=badANDStatus=Active-response.xml} +10 -11
  340. package/test/resources/9999999/script/get_ampincluded-rcb-key-expected.html +2 -2
  341. package/test/resources/9999999/script/get_ampscript-expected.html +1 -0
  342. package/test/resources/9999999/script/get_ampscript-rcb-id-expected.html +1 -0
  343. package/test/resources/9999999/script/get_ampscript-rcb-key-expected.html +3 -2
  344. package/test/resources/9999999/script/get_ampscript-rcb-name-expected.html +3 -0
  345. package/test/resources/9999999/script/get_mixed-expected.html +2 -2
  346. package/test/resources/9999999/script/get_mixed-rcb-key-expected.html +2 -2
  347. package/test/resources/9999999/senderProfile/get-rcb-key-expected.json +4 -4
  348. package/test/resources/9999999/senderProfile/retrieve-response.xml +1 -1
  349. package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +4 -4
  350. package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +1 -1
  351. package/test/type.asset.test.js +189 -42
  352. package/test/type.automation.test.js +135 -59
  353. package/test/type.dataExtension.test.js +4 -4
  354. package/test/type.dataExtract.test.js +4 -4
  355. package/test/type.emailSend.test.js +3 -3
  356. package/test/type.event.test.js +286 -7
  357. package/test/type.journey.test.js +335 -9
  358. package/test/type.query.test.js +33 -29
  359. package/test/type.script.test.js +61 -11
  360. package/test/type.senderProfile.test.js +36 -3
  361. package/test/type.transactionalEmail.test.js +3 -3
  362. package/test/type.triggeredSend.test.js +75 -6
  363. package/test/type.user.test.js +1 -1
  364. package/test/utils.js +31 -9
  365. package/tsconfig.json +6 -1
  366. package/{jsconfig.json → tsconfig.npmScripts.json} +1 -1
  367. package/tsconfig.precommit.json +26 -0
  368. package/types/mcdev.d.js +39 -14
  369. /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
  370. /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDEmaillike@-QAA-response.xml} +0 -0
  371. /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
  372. /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-QAA-response.xml} +0 -0
  373. /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDEmaillike@-QAA-response.xml} +0 -0
  374. /package/test/resources/1111111/businessUnit/{retrieve-ID=1111111-response.xml → retrieve-ID=1111111-QAA-response.xml} +0 -0
  375. /package/test/resources/1111111/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
  376. /package/test/resources/1111111/dataFolder/{retrieve-response.xml → retrieve-response-.xml} +0 -0
  377. /package/test/resources/9999999/dataFolder/{retrieve-ContentType=asset-sharedORContentType=asset-response.xml → retrieve-ContentTypeINasset,asset-shared-response.xml} +0 -0
  378. /package/test/resources/9999999/dataFolder/{retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml → retrieve-ContentTypeINcontextual_suppression_list,list,mysubs,publication,suppression_list-response.xml} +0 -0
  379. /package/test/resources/9999999/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
  380. /package/test/resources/9999999/dataFolder/{retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml → retrieve-ContentTypeINhidden,triggered_send,triggered_send_journeybuilder-response.xml} +0 -0
@@ -1,6 +1,6 @@
1
1
  import File from './file.js';
2
2
  import path from 'node:path';
3
- import inquirer from 'inquirer';
3
+ import { select, confirm, Separator } from '@inquirer/prompts';
4
4
  import { Util } from './util.js';
5
5
  import Cli from './cli.js';
6
6
  import { simpleGit } from 'simple-git';
@@ -70,23 +70,24 @@ const DevOps = {
70
70
  '--skip=1',
71
71
  `-${commitHistory || properties.options.deployment.commitHistory || 10}`,
72
72
  ]);
73
- const display = commits.all.map((commit) => ({
74
- name: commit.date + ' / ' + commit.message + ' / ' + commit.author_name,
73
+ /** @type {({value: string, name?: string, description?: string, disabled?: boolean | string} | Separator)[]} */
74
+ const choices = commits.all.map((commit) => ({
75
+ name:
76
+ commit.date.split('T').join(' ').split('+')[0] +
77
+ ' / ' +
78
+ commit.message +
79
+ ' / ' +
80
+ commit.author_name,
75
81
  value: commit.hash,
76
82
  }));
77
- // @ts-expect-error type checking this push() makes things very complicated...
78
- display.push(new inquirer.Separator(' ==== '));
83
+ choices.push(new Separator(' ==== '));
79
84
 
80
- const responses = await inquirer.prompt([
81
- {
82
- type: 'list',
83
- message: 'Select base commit for comparison with current commit',
84
- name: 'commit',
85
- pageSize: 10,
86
- choices: display,
87
- },
88
- ]);
89
- range = `${responses.commit}..HEAD`;
85
+ const baseCommit = await select({
86
+ message: 'Select base commit for comparison with current commit',
87
+ pageSize: 10,
88
+ choices: choices,
89
+ });
90
+ range = `${baseCommit}..HEAD`;
90
91
  }
91
92
 
92
93
  const metadata = {};
@@ -99,7 +100,8 @@ const DevOps = {
99
100
  /**
100
101
  * @type {DeltaPkgItem[]}
101
102
  */
102
- const delta = (await git.diffSummary([range])).files
103
+ // first, process everything that can be done synchronously here
104
+ const deltaSync = (await git.diffSummary([range])).files
103
105
  // populate additional info for all changed files
104
106
  .map((/** @type {DeltaPkgItem} */ file) => {
105
107
  // If file was moved it's path needs to be parsed
@@ -146,8 +148,13 @@ const DevOps = {
146
148
  );
147
149
  return false;
148
150
  }
149
- })
150
- .map(async (/** @type {DeltaPkgItem} */ file) => {
151
+ });
152
+ // second, we need to do asynchronous file operations
153
+ /**
154
+ * @type {DeltaPkgItem[]}
155
+ */
156
+ const delta = await Promise.all(
157
+ deltaSync.map(async (/** @type {DeltaPkgItem} */ file) => {
151
158
  // Gets external key based on file name und the assumption that filename = externalKey
152
159
  if (file.type === 'folder') {
153
160
  file.externalKey = null;
@@ -206,7 +213,8 @@ const DevOps = {
206
213
  }
207
214
  }
208
215
  return file;
209
- });
216
+ })
217
+ );
210
218
  if (
211
219
  !gitActionsCounter['add/update'] &&
212
220
  !gitActionsCounter.move &&
@@ -286,21 +294,17 @@ const DevOps = {
286
294
  }
287
295
  }
288
296
 
289
- let responses;
297
+ let isPurgeDeployFolder;
290
298
  if (!Util.skipInteraction) {
291
299
  // deploy folder is in targets for definition creation
292
300
  // recommend to purge their content first
293
- responses = await inquirer.prompt([
294
- {
295
- type: 'confirm',
296
- name: 'isPurgeDeployFolder',
297
- message:
298
- 'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
299
- default: true,
300
- },
301
- ]);
301
+ isPurgeDeployFolder = await confirm({
302
+ message:
303
+ 'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
304
+ default: true,
305
+ });
302
306
  }
303
- if (Util.skipInteraction || responses.isPurgeDeployFolder) {
307
+ if (Util.skipInteraction || isPurgeDeployFolder) {
304
308
  // Clear output folder structure for selected sub-type
305
309
  for (const buObject of Object.values(buObjects)) {
306
310
  await File.remove(
@@ -317,7 +321,7 @@ const DevOps = {
317
321
  const copied = delta
318
322
  .filter((file) => !file.file.endsWith('.md')) // filter documentation files
319
323
  .map((file) =>
320
- File.copyFile(
324
+ File.copyFileSimple(
321
325
  file.file,
322
326
  path
323
327
  .normalize(file.file)
@@ -489,21 +493,17 @@ const DevOps = {
489
493
  (Array.isArray(properties.directories.templateBuilds) &&
490
494
  properties.directories.templateBuilds.includes(properties.directories.deploy))
491
495
  ) {
492
- let responses;
496
+ let isPurgeDeployFolder;
493
497
  if (!skipInteraction) {
494
498
  // deploy folder is in targets for definition creation
495
499
  // recommend to purge their content first
496
- responses = await inquirer.prompt([
497
- {
498
- type: 'confirm',
499
- name: 'isPurgeDeployFolder',
500
- message:
501
- 'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
502
- default: true,
503
- },
504
- ]);
500
+ isPurgeDeployFolder = await confirm({
501
+ message:
502
+ 'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
503
+ default: true,
504
+ });
505
505
  }
506
- if (skipInteraction || responses.isPurgeDeployFolder) {
506
+ if (skipInteraction || isPurgeDeployFolder) {
507
507
  // Clear output folder structure for selected sub-type
508
508
  await File.remove(File.normalizePath([properties.directories.deploy]));
509
509
  }
@@ -561,7 +561,6 @@ const DevOps = {
561
561
  for (let i = 1; i < tabled.length; i++) {
562
562
  for (let field of tabled[i]) {
563
563
  if (field !== '') {
564
- // @ts-expect-error bad typing in jsonToTable
565
564
  field = field === true ? '✓' : field === false ? '✗' : field;
566
565
  output += `| ${field} `;
567
566
  }
package/lib/util/file.js CHANGED
@@ -1,6 +1,4 @@
1
- /* eslint-disable no-control-regex */
2
1
  'use strict';
3
-
4
2
  import fs from 'fs-extra';
5
3
 
6
4
  import path from 'node:path';
@@ -50,7 +48,7 @@ const File = {
50
48
  * @param {string} to - full filepath including name where file should go
51
49
  * @returns {Promise.<{status:'ok'|'skipped'|'failed', statusMessage:string, file:string}>} - results object
52
50
  */
53
- async copyFile(from, to) {
51
+ async copyFileSimple(from, to) {
54
52
  try {
55
53
  await fs.copy(from, to);
56
54
  return { status: 'ok', statusMessage: null, file: from };
@@ -321,6 +319,7 @@ const File = {
321
319
 
322
320
  // save prettier errror into log file
323
321
  // Note: we have to filter color codes from prettier's error message before saving it to file
322
+ /* eslint-disable no-control-regex */
324
323
  this.writeToFile(
325
324
  directory,
326
325
  filename + '.error',
@@ -331,6 +330,7 @@ const File = {
331
330
  ''
332
331
  )}`
333
332
  );
333
+ /* eslint-enable no-control-regex */
334
334
 
335
335
  formatted = content;
336
336
  }
@@ -371,7 +371,7 @@ const File = {
371
371
  * @param {string | string[]} directory directory where the file is stored
372
372
  * @param {string} filename name of the file without '.json' ending
373
373
  * @param {boolean} cleanPath filters illegal chars if true
374
- * @returns {Promise.<object> | object | void} Promise or JSON object depending on if async or not; void on error
374
+ * @returns {Promise.<object | object | void>} Promise or JSON object depending on if async or not; void on error
375
375
  */
376
376
  readJSONFile: async function (directory, filename, cleanPath) {
377
377
  try {
@@ -409,11 +409,8 @@ const File = {
409
409
  try {
410
410
  directory = this.filterIllegalPathChars(this.normalizePath(directory));
411
411
  filename = this.filterIllegalFilenames(filename);
412
- // @ts-expect-error - somehow, the declared type does not allow for encoding to be passed in as a string, despite that working and being stated in the docs.
413
- return await fs.readFile(
414
- path.join(directory, filename + '.' + filetype),
415
- encoding || 'utf8'
416
- );
412
+ // @ts-expect-error somehow, the typing for fs-extra is not correct
413
+ return fs.readFile(path.join(directory, filename + '.' + filetype), encoding || 'utf8');
417
414
  } catch (ex) {
418
415
  Util.logger.debug('File.readFilteredFilename:: error | ' + ex.message);
419
416
  }
@@ -574,6 +571,6 @@ const File = {
574
571
  }
575
572
  },
576
573
  };
577
- const FileFs = { ...fs, ...File };
578
574
 
575
+ const FileFs = Object.assign(fs, File);
579
576
  export default FileFs;
@@ -4,7 +4,7 @@ import Cli from './cli.js';
4
4
  import File from './file.js';
5
5
  import config from './config.js';
6
6
  import { Util } from './util.js';
7
- import inquirer from 'inquirer';
7
+ import { confirm } from '@inquirer/prompts';
8
8
  import path from 'node:path';
9
9
  import semver from 'semver';
10
10
  import { fileURLToPath } from 'node:url';
@@ -407,15 +407,11 @@ const Init = {
407
407
  `- ✋ ${fileName} found with differences to the new standard version. We recommend updating it.`
408
408
  );
409
409
  if (!Util.skipInteraction) {
410
- const responses = await inquirer.prompt([
411
- {
412
- type: 'confirm',
413
- name: 'overrideFile',
414
- message: 'Would you like to update (override) it?',
415
- default: true,
416
- },
417
- ]);
418
- if (!responses.overrideFile) {
410
+ const overrideFile = await confirm({
411
+ message: 'Would you like to update (override) it?',
412
+ default: true,
413
+ });
414
+ if (!overrideFile) {
419
415
  // skip override without error
420
416
  return true;
421
417
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  import File from './file.js';
3
3
 
4
- import inquirer from 'inquirer';
4
+ import { confirm, input } from '@inquirer/prompts';
5
5
  import { Util } from './util.js';
6
6
  import commandExists from 'command-exists';
7
7
  import { simpleGit } from 'simple-git';
@@ -100,18 +100,14 @@ const Init = {
100
100
  Util.logger.info(
101
101
  `Your remote Git repository is still empty and ready to store your initial backup. Hint: This is the server version of the repo which you share with your team.`
102
102
  );
103
- let responses;
103
+ let gitPush;
104
104
  if (!skipInteraction) {
105
- responses = await inquirer.prompt([
106
- {
107
- type: 'confirm',
108
- name: 'gitPush',
109
- message: `Would you like to 'push' your backup to the remote Git repo?`,
110
- default: true,
111
- },
112
- ]);
105
+ gitPush = await confirm({
106
+ message: `Would you like to 'push' your backup to the remote Git repo?`,
107
+ default: true,
108
+ });
113
109
  }
114
- if (skipInteraction?.gitPush === 'true' || responses?.gitPush) {
110
+ if (skipInteraction?.gitPush === 'true' || gitPush) {
115
111
  Util.execSync('git', ['push', '-u', 'origin', 'master']);
116
112
  }
117
113
  } else if (remoteBranchesExist === true) {
@@ -129,49 +125,42 @@ const Init = {
129
125
  async _addGitRemote() {
130
126
  const skipInteraction = Util.skipInteraction;
131
127
  // #1 ask if the user wants to do it now
132
- let responses;
128
+ let gitOriginKnown;
133
129
  if (!skipInteraction) {
134
- responses = await inquirer.prompt([
135
- {
136
- type: 'confirm',
137
- name: 'gitOriginKnown',
138
- message: `Do you know the remote/clone URL of your Git repo (starts with ssh:// or http:// and ends on '.git')?`,
139
- default: true,
140
- },
141
- ]);
130
+ gitOriginKnown = await confirm({
131
+ message: `Do you know the remote/clone URL of your Git repo (starts with ssh:// or http:// and ends on '.git')?`,
132
+ default: true,
133
+ });
142
134
  }
143
- if (skipInteraction || responses.gitOriginKnown) {
135
+ if (skipInteraction || gitOriginKnown) {
144
136
  // #2 if yes, guide the user to input the right url
145
- /* eslint-disable unicorn/prefer-ternary */
137
+
138
+ let answers = {};
146
139
  if (skipInteraction) {
147
- responses = skipInteraction;
140
+ answers = skipInteraction;
148
141
  } else {
149
- responses = await inquirer.prompt([
150
- {
151
- type: 'input',
152
- name: 'gitRemoteUrl',
153
- message: 'Git Remote URL',
154
- validate: (value) => {
155
- value = value.trim();
156
- if (!value || value.length < 10) {
157
- return 'Please enter a valid remote URL';
158
- } else if (!value.startsWith('http') && !value.startsWith('ssh')) {
159
- return `Your Git Remote URL should start with 'http' or 'ssh'`;
160
- } else if (value.endsWith('.git')) {
161
- // all good
162
- return true;
163
- } else {
164
- return `Your Git Remote URL should end with '.git'`;
165
- }
166
- },
142
+ answers.gitRemoteUrl = await input({
143
+ message: 'Git Remote URL',
144
+ validate: (value) => {
145
+ value = value.trim();
146
+ if (!value || value.length < 10) {
147
+ return 'Please enter a valid remote URL';
148
+ } else if (!value.startsWith('http') && !value.startsWith('ssh')) {
149
+ return `Your Git Remote URL should start with 'http' or 'ssh'`;
150
+ } else if (value.endsWith('.git')) {
151
+ // all good
152
+ return true;
153
+ } else {
154
+ return `Your Git Remote URL should end with '.git'`;
155
+ }
167
156
  },
168
- ]);
157
+ });
169
158
  }
170
- /* eslint-enable unicorn/prefer-ternary */
171
- if (typeof responses.gitRemoteUrl === 'string') {
172
- responses.gitRemoteUrl = responses.gitRemoteUrl.trim();
173
- Util.execSync('git', ['remote', 'add', 'origin', responses.gitRemoteUrl]);
174
- return responses.gitRemoteUrl.split('/').pop().split('.')[0];
159
+
160
+ if (typeof answers.gitRemoteUrl === 'string') {
161
+ answers.gitRemoteUrl = answers.gitRemoteUrl.trim();
162
+ Util.execSync('git', ['remote', 'add', 'origin', answers.gitRemoteUrl]);
163
+ return answers.gitRemoteUrl.split('/').pop().split('.')[0];
175
164
  }
176
165
  }
177
166
  },
@@ -187,6 +176,7 @@ const Init = {
187
176
  `Please confirm your Git user name & email. It should be in the format 'FirstName LastName' and 'your.email@accenture.com'. The current (potentially wrong) values are provided as default. If correct, confirm with ENTER, otherwise please update:`
188
177
  );
189
178
  let responses;
179
+
190
180
  /* eslint-disable unicorn/prefer-ternary */
191
181
  if (skipInteraction) {
192
182
  responses = {
@@ -194,10 +184,8 @@ const Init = {
194
184
  email: gitUser['user.email'],
195
185
  };
196
186
  } else {
197
- responses = await inquirer.prompt([
198
- {
199
- type: 'input',
200
- name: 'name',
187
+ responses = {
188
+ name: await input({
201
189
  message: 'Git user.name',
202
190
  default: gitUser['user.name'] || null,
203
191
  // eslint-disable-next-line jsdoc/require-jsdoc
@@ -212,10 +200,8 @@ const Init = {
212
200
  }
213
201
  return true;
214
202
  },
215
- },
216
- {
217
- type: 'input',
218
- name: 'email',
203
+ }),
204
+ email: await input({
219
205
  message: 'Git user.email',
220
206
  default: gitUser['user.email'] || null,
221
207
  // eslint-disable-next-line jsdoc/require-jsdoc
@@ -228,8 +214,8 @@ const Init = {
228
214
  }
229
215
  return true;
230
216
  },
231
- },
232
- ]);
217
+ }),
218
+ };
233
219
  }
234
220
  /* eslint-enable unicorn/prefer-ternary */
235
221
 
package/lib/util/init.js CHANGED
@@ -5,7 +5,7 @@ import config from './config.js';
5
5
  import InitGit from './init.git.js';
6
6
  import InitNpm from './init.npm.js';
7
7
  import InitConfig from './init.config.js';
8
- import inquirer from 'inquirer';
8
+ import { confirm, input, select } from '@inquirer/prompts';
9
9
  import { Util } from './util.js';
10
10
  import fs from 'node:fs';
11
11
  import path from 'node:path';
@@ -132,7 +132,7 @@ const Init = {
132
132
  // add-credential mode
133
133
  Util.logger.warn(Util.configFileName + ' found in root');
134
134
 
135
- let responses;
135
+ let isAddCredential;
136
136
  if (skipInteraction) {
137
137
  if (
138
138
  skipInteraction.client_id &&
@@ -151,17 +151,13 @@ const Init = {
151
151
  );
152
152
  }
153
153
  } else {
154
- responses = await inquirer.prompt([
155
- {
156
- type: 'confirm',
157
- name: 'isAddCredential',
158
- message: 'Do you want to add another credential instead?',
159
- default: false,
160
- },
161
- ]);
154
+ isAddCredential = await confirm({
155
+ message: 'Do you want to add another credential instead?',
156
+ default: false,
157
+ });
162
158
  }
163
159
  let credentialName;
164
- if (skipInteraction || responses.isAddCredential) {
160
+ if (skipInteraction || isAddCredential) {
165
161
  credentialName = await Cli.addExtraCredential(properties);
166
162
  }
167
163
  if (credentialName) {
@@ -224,29 +220,22 @@ const Init = {
224
220
  return;
225
221
  }
226
222
 
227
- const responses = await inquirer.prompt([
228
- {
229
- type: 'confirm',
230
- name: 'isJoin',
231
- message:
232
- 'Do you want to join an existing project for which you have a Git-Repository URL?',
233
- default: true,
234
- },
235
- ]);
236
- if (responses.isJoin) {
237
- const gitRepoQs = await inquirer.prompt([
238
- {
239
- type: 'input',
240
- name: 'gitRepoUrl',
223
+ const isJoin = await confirm({
224
+ message:
225
+ 'Do you want to join an existing project for which you have a Git-Repository URL?',
226
+ default: true,
227
+ });
228
+ if (isJoin) {
229
+ const gitRepoQs = {
230
+ gitRepoUrl: await input({
241
231
  message: 'Please enter the Git-Repository URL',
242
- },
243
- {
244
- type: 'input',
245
- name: 'gitBranch',
232
+ }),
233
+ gitBranch: await input({
246
234
  message:
247
235
  'If you were asked to work on a specific branch, please enter it now (or leave empty for default)',
248
- },
249
- ]);
236
+ }),
237
+ };
238
+
250
239
  const repoName = gitRepoQs.gitRepoUrl.split('/').pop().replace('.git', '');
251
240
  // clone repo into current folder
252
241
  Util.logger.info(
@@ -330,15 +319,10 @@ const Init = {
330
319
  );
331
320
  }
332
321
  } else {
333
- const responses = await inquirer.prompt([
334
- {
335
- type: 'list',
336
- name: 'developmentBu',
337
- message: 'Please select your development business unit:',
338
- choices: businessUnits.map((bu) => ({ name: bu, value: bu })),
339
- },
340
- ]);
341
- sourceBuName = responses.developmentBu;
322
+ sourceBuName = await select({
323
+ message: 'Please select your development business unit:',
324
+ choices: businessUnits.map((bu) => ({ name: bu, value: bu })),
325
+ });
342
326
  }
343
327
  // set source list
344
328
  properties.marketList['deployment-source'][firstCredentialName + '/' + sourceBuName] =
@@ -362,18 +346,14 @@ const Init = {
362
346
  */
363
347
  async _downloadAllBUs(bu, gitStatus) {
364
348
  const skipInteraction = Util.skipInteraction;
365
- let responses;
349
+ let initialRetrieveAll;
366
350
  if (!skipInteraction) {
367
- responses = await inquirer.prompt([
368
- {
369
- type: 'confirm',
370
- name: 'initialRetrieveAll',
371
- message: 'Do you want to start downloading all Business Units (recommended)?',
372
- default: true,
373
- },
374
- ]);
351
+ initialRetrieveAll = await confirm({
352
+ message: 'Do you want to start downloading all Business Units (recommended)?',
353
+ default: true,
354
+ });
375
355
  }
376
- if (skipInteraction?.downloadBUs === 'true' || responses?.initialRetrieveAll) {
356
+ if (skipInteraction?.downloadBUs === 'true' || initialRetrieveAll) {
377
357
  Util.execSync('mcdev', ['retrieve', bu]);
378
358
 
379
359
  if (gitStatus === 'init') {
@@ -479,15 +459,11 @@ const Init = {
479
459
  cloudServiceFound = true;
480
460
  }
481
461
  if (cloudServiceFound) {
482
- const responses = await inquirer.prompt([
483
- {
484
- type: 'confirm',
485
- name: 'ignoreCloudWarning',
486
- message: 'Do you want to continue anyways?',
487
- default: false,
488
- },
489
- ]);
490
- if (!responses.ignoreCloudWarning) {
462
+ const ignoreCloudWarning = await confirm({
463
+ message: 'Do you want to continue anyways?',
464
+ default: false,
465
+ });
466
+ if (!ignoreCloudWarning) {
491
467
  Util.logger.error('Exiting due to cloud service warning');
492
468
  return false;
493
469
  }