mcdev 6.0.2 → 7.0.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 (602) hide show
  1. package/.beautyamp.json +13 -0
  2. package/.eslintrc.json +7 -1
  3. package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
  4. package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +10 -3
  5. package/.github/workflows/close_issues_on_merge.yml +1 -1
  6. package/.github/workflows/code-test.yml +51 -3
  7. package/.github/workflows/coverage-base-update.yml +1 -1
  8. package/.github/workflows/coverage-develop-branch.yml +1 -1
  9. package/.github/workflows/coverage-main-branch.yml +1 -1
  10. package/.github/workflows/coverage.yml +2 -2
  11. package/.github/workflows/npm-publish.yml +3 -2
  12. package/.github/workflows/pr-labeler.yml +1 -1
  13. package/.husky/commit-msg +0 -2
  14. package/.husky/post-checkout +0 -3
  15. package/.husky/post-merge +2 -7
  16. package/.husky/pre-commit +5 -5
  17. package/.prettierrc +0 -8
  18. package/.vscode/extensions.json +2 -0
  19. package/.vscode/settings.json +15 -3
  20. package/@types/lib/Builder.d.ts +97 -0
  21. package/@types/lib/Builder.d.ts.map +1 -0
  22. package/@types/lib/Deployer.d.ts +99 -0
  23. package/@types/lib/Deployer.d.ts.map +1 -0
  24. package/@types/lib/MetadataTypeDefinitions.d.ts +80 -0
  25. package/@types/lib/MetadataTypeDefinitions.d.ts.map +1 -0
  26. package/@types/lib/MetadataTypeInfo.d.ts +78 -0
  27. package/@types/lib/MetadataTypeInfo.d.ts.map +1 -0
  28. package/@types/lib/Retriever.d.ts +66 -0
  29. package/@types/lib/Retriever.d.ts.map +1 -0
  30. package/@types/lib/cli.d.ts +3 -0
  31. package/@types/lib/cli.d.ts.map +1 -0
  32. package/@types/lib/index.d.ts +383 -0
  33. package/@types/lib/index.d.ts.map +1 -0
  34. package/@types/lib/metadataTypes/Asset.d.ts +1082 -0
  35. package/@types/lib/metadataTypes/Asset.d.ts.map +1 -0
  36. package/@types/lib/metadataTypes/AttributeGroup.d.ts +290 -0
  37. package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -0
  38. package/@types/lib/metadataTypes/AttributeSet.d.ts +968 -0
  39. package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -0
  40. package/@types/lib/metadataTypes/Automation.d.ts +921 -0
  41. package/@types/lib/metadataTypes/Automation.d.ts.map +1 -0
  42. package/@types/lib/metadataTypes/Campaign.d.ts +190 -0
  43. package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -0
  44. package/@types/lib/metadataTypes/ContentArea.d.ts +250 -0
  45. package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -0
  46. package/@types/lib/metadataTypes/DataExtension.d.ts +571 -0
  47. package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -0
  48. package/@types/lib/metadataTypes/DataExtensionField.d.ts +236 -0
  49. package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -0
  50. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +175 -0
  51. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -0
  52. package/@types/lib/metadataTypes/DataExtract.d.ts +217 -0
  53. package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -0
  54. package/@types/lib/metadataTypes/DataExtractType.d.ts +80 -0
  55. package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -0
  56. package/@types/lib/metadataTypes/DeliveryProfile.d.ts +102 -0
  57. package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -0
  58. package/@types/lib/metadataTypes/Discovery.d.ts +189 -0
  59. package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -0
  60. package/@types/lib/metadataTypes/Email.d.ts +384 -0
  61. package/@types/lib/metadataTypes/Email.d.ts.map +1 -0
  62. package/@types/lib/metadataTypes/EmailSend.d.ts +652 -0
  63. package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -0
  64. package/@types/lib/metadataTypes/Event.d.ts +958 -0
  65. package/@types/lib/metadataTypes/Event.d.ts.map +1 -0
  66. package/@types/lib/metadataTypes/FileLocation.d.ts +101 -0
  67. package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -0
  68. package/@types/lib/metadataTypes/FileTransfer.d.ts +228 -0
  69. package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -0
  70. package/@types/lib/metadataTypes/Filter.d.ts +145 -0
  71. package/@types/lib/metadataTypes/Filter.d.ts.map +1 -0
  72. package/@types/lib/metadataTypes/Folder.d.ts +287 -0
  73. package/@types/lib/metadataTypes/Folder.d.ts.map +1 -0
  74. package/@types/lib/metadataTypes/ImportFile.d.ts +409 -0
  75. package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -0
  76. package/@types/lib/metadataTypes/Journey.d.ts +541 -0
  77. package/@types/lib/metadataTypes/Journey.d.ts.map +1 -0
  78. package/@types/lib/metadataTypes/List.d.ts +191 -0
  79. package/@types/lib/metadataTypes/List.d.ts.map +1 -0
  80. package/@types/lib/metadataTypes/MetadataType.d.ts +680 -0
  81. package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -0
  82. package/@types/lib/metadataTypes/MobileCode.d.ts +225 -0
  83. package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -0
  84. package/@types/lib/metadataTypes/MobileKeyword.d.ts +432 -0
  85. package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -0
  86. package/@types/lib/metadataTypes/MobileMessage.d.ts +931 -0
  87. package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -0
  88. package/@types/lib/metadataTypes/Query.d.ts +299 -0
  89. package/@types/lib/metadataTypes/Query.d.ts.map +1 -0
  90. package/@types/lib/metadataTypes/Role.d.ts +164 -0
  91. package/@types/lib/metadataTypes/Role.d.ts.map +1 -0
  92. package/@types/lib/metadataTypes/Script.d.ts +305 -0
  93. package/@types/lib/metadataTypes/Script.d.ts.map +1 -0
  94. package/@types/lib/metadataTypes/SendClassification.d.ts +221 -0
  95. package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -0
  96. package/@types/lib/metadataTypes/SenderProfile.d.ts +257 -0
  97. package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -0
  98. package/@types/lib/metadataTypes/TransactionalEmail.d.ts +230 -0
  99. package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -0
  100. package/@types/lib/metadataTypes/TransactionalMessage.d.ts +163 -0
  101. package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -0
  102. package/@types/lib/metadataTypes/TransactionalPush.d.ts +175 -0
  103. package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -0
  104. package/@types/lib/metadataTypes/TransactionalSMS.d.ts +205 -0
  105. package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -0
  106. package/@types/lib/metadataTypes/TriggeredSend.d.ts +671 -0
  107. package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -0
  108. package/@types/lib/metadataTypes/User.d.ts +677 -0
  109. package/@types/lib/metadataTypes/User.d.ts.map +1 -0
  110. package/@types/lib/metadataTypes/Verification.d.ts +188 -0
  111. package/@types/lib/metadataTypes/Verification.d.ts.map +1 -0
  112. package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts +692 -0
  113. package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts.map +1 -0
  114. package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts +246 -0
  115. package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts.map +1 -0
  116. package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts +893 -0
  117. package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts.map +1 -0
  118. package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts +616 -0
  119. package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts.map +1 -0
  120. package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts +126 -0
  121. package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts.map +1 -0
  122. package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts +182 -0
  123. package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts.map +1 -0
  124. package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts +237 -0
  125. package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts.map +1 -0
  126. package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts +121 -0
  127. package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts.map +1 -0
  128. package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts +133 -0
  129. package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts.map +1 -0
  130. package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts +156 -0
  131. package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts.map +1 -0
  132. package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts +34 -0
  133. package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts.map +1 -0
  134. package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts +80 -0
  135. package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts.map +1 -0
  136. package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts +146 -0
  137. package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts.map +1 -0
  138. package/@types/lib/metadataTypes/definitions/Email.definition.d.ts +314 -0
  139. package/@types/lib/metadataTypes/definitions/Email.definition.d.ts.map +1 -0
  140. package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts +582 -0
  141. package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts.map +1 -0
  142. package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +867 -0
  143. package/@types/lib/metadataTypes/definitions/Event.definition.d.ts.map +1 -0
  144. package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts +68 -0
  145. package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts.map +1 -0
  146. package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts +191 -0
  147. package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts.map +1 -0
  148. package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts +147 -0
  149. package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts.map +1 -0
  150. package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts +174 -0
  151. package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts.map +1 -0
  152. package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts +306 -0
  153. package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts.map +1 -0
  154. package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +426 -0
  155. package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts.map +1 -0
  156. package/@types/lib/metadataTypes/definitions/List.definition.d.ts +118 -0
  157. package/@types/lib/metadataTypes/definitions/List.definition.d.ts.map +1 -0
  158. package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts +167 -0
  159. package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts.map +1 -0
  160. package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts +276 -0
  161. package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts.map +1 -0
  162. package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts +783 -0
  163. package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts.map +1 -0
  164. package/@types/lib/metadataTypes/definitions/Query.definition.d.ts +203 -0
  165. package/@types/lib/metadataTypes/definitions/Query.definition.d.ts.map +1 -0
  166. package/@types/lib/metadataTypes/definitions/Role.definition.d.ts +108 -0
  167. package/@types/lib/metadataTypes/definitions/Role.definition.d.ts.map +1 -0
  168. package/@types/lib/metadataTypes/definitions/Script.definition.d.ts +153 -0
  169. package/@types/lib/metadataTypes/definitions/Script.definition.d.ts.map +1 -0
  170. package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts +151 -0
  171. package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts.map +1 -0
  172. package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts +180 -0
  173. package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts.map +1 -0
  174. package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +167 -0
  175. package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts.map +1 -0
  176. package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts +99 -0
  177. package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts.map +1 -0
  178. package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts +119 -0
  179. package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts.map +1 -0
  180. package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts +113 -0
  181. package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts.map +1 -0
  182. package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts +560 -0
  183. package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts.map +1 -0
  184. package/@types/lib/metadataTypes/definitions/User.definition.d.ts +423 -0
  185. package/@types/lib/metadataTypes/definitions/User.definition.d.ts.map +1 -0
  186. package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts +129 -0
  187. package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts.map +1 -0
  188. package/@types/lib/retrieveChangelog.d.ts +3 -0
  189. package/@types/lib/retrieveChangelog.d.ts.map +1 -0
  190. package/@types/lib/util/auth.d.ts +41 -0
  191. package/@types/lib/util/auth.d.ts.map +1 -0
  192. package/@types/lib/util/businessUnit.d.ts +21 -0
  193. package/@types/lib/util/businessUnit.d.ts.map +1 -0
  194. package/@types/lib/util/cache.d.ts +64 -0
  195. package/@types/lib/util/cache.d.ts.map +1 -0
  196. package/@types/lib/util/cli.d.ts +125 -0
  197. package/@types/lib/util/cli.d.ts.map +1 -0
  198. package/@types/lib/util/config.d.ts +45 -0
  199. package/@types/lib/util/config.d.ts.map +1 -0
  200. package/@types/lib/util/devops.d.ts +62 -0
  201. package/@types/lib/util/devops.d.ts.map +1 -0
  202. package/@types/lib/util/file.d.ts +20 -0
  203. package/@types/lib/util/file.d.ts.map +1 -0
  204. package/@types/lib/util/init.config.d.ts +66 -0
  205. package/@types/lib/util/init.config.d.ts.map +1 -0
  206. package/@types/lib/util/init.d.ts +72 -0
  207. package/@types/lib/util/init.d.ts.map +1 -0
  208. package/@types/lib/util/init.git.d.ts +40 -0
  209. package/@types/lib/util/init.git.d.ts.map +1 -0
  210. package/@types/lib/util/init.npm.d.ts +24 -0
  211. package/@types/lib/util/init.npm.d.ts.map +1 -0
  212. package/@types/lib/util/replaceContentBlockReference.d.ts +105 -0
  213. package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -0
  214. package/@types/lib/util/util.d.ts +322 -0
  215. package/@types/lib/util/util.d.ts.map +1 -0
  216. package/@types/types/mcdev.d.d.ts +1282 -0
  217. package/@types/types/mcdev.d.d.ts.map +1 -0
  218. package/LICENSE +1 -1
  219. package/README.md +7 -3
  220. package/boilerplate/files/.beautyamp.json +13 -0
  221. package/boilerplate/files/.prettierrc +3 -0
  222. package/boilerplate/files/.vscode/extensions.json +6 -1
  223. package/boilerplate/files/.vscode/settings.json +16 -4
  224. package/boilerplate/forcedUpdates.json +9 -0
  225. package/jsconfig.json +7 -2
  226. package/lib/Builder.js +49 -45
  227. package/lib/Deployer.js +100 -45
  228. package/lib/MetadataTypeDefinitions.js +6 -0
  229. package/lib/MetadataTypeInfo.js +4 -0
  230. package/lib/Retriever.js +33 -27
  231. package/lib/cli.js +363 -28
  232. package/lib/index.js +615 -55
  233. package/lib/metadataTypes/Asset.js +811 -159
  234. package/lib/metadataTypes/AttributeGroup.js +17 -12
  235. package/lib/metadataTypes/AttributeSet.js +20 -15
  236. package/lib/metadataTypes/Automation.js +125 -93
  237. package/lib/metadataTypes/Campaign.js +18 -6
  238. package/lib/metadataTypes/ContentArea.js +21 -18
  239. package/lib/metadataTypes/DataExtension.js +229 -113
  240. package/lib/metadataTypes/DataExtensionField.js +52 -53
  241. package/lib/metadataTypes/DataExtensionTemplate.js +17 -5
  242. package/lib/metadataTypes/DataExtract.js +62 -27
  243. package/lib/metadataTypes/DataExtractType.js +17 -5
  244. package/lib/metadataTypes/DeliveryProfile.js +47 -0
  245. package/lib/metadataTypes/Discovery.js +15 -4
  246. package/lib/metadataTypes/Email.js +22 -19
  247. package/lib/metadataTypes/EmailSend.js +135 -35
  248. package/lib/metadataTypes/Event.js +95 -60
  249. package/lib/metadataTypes/FileLocation.js +17 -5
  250. package/lib/metadataTypes/FileTransfer.js +62 -26
  251. package/lib/metadataTypes/Filter.js +16 -4
  252. package/lib/metadataTypes/Folder.js +67 -39
  253. package/lib/metadataTypes/ImportFile.js +341 -91
  254. package/lib/metadataTypes/Journey.js +681 -324
  255. package/lib/metadataTypes/List.js +26 -14
  256. package/lib/metadataTypes/MetadataType.js +501 -265
  257. package/lib/metadataTypes/MobileCode.js +17 -5
  258. package/lib/metadataTypes/MobileKeyword.js +59 -43
  259. package/lib/metadataTypes/MobileMessage.js +67 -40
  260. package/lib/metadataTypes/Query.js +46 -38
  261. package/lib/metadataTypes/Role.js +34 -23
  262. package/lib/metadataTypes/Script.js +127 -39
  263. package/lib/metadataTypes/SendClassification.js +120 -5
  264. package/lib/metadataTypes/SenderProfile.js +179 -0
  265. package/lib/metadataTypes/TransactionalEmail.js +30 -17
  266. package/lib/metadataTypes/TransactionalMessage.js +25 -11
  267. package/lib/metadataTypes/TransactionalPush.js +24 -9
  268. package/lib/metadataTypes/TransactionalSMS.js +78 -46
  269. package/lib/metadataTypes/TriggeredSend.js +191 -43
  270. package/lib/metadataTypes/User.js +90 -62
  271. package/lib/metadataTypes/Verification.js +39 -21
  272. package/lib/metadataTypes/definitions/Asset.definition.js +3 -3
  273. package/lib/metadataTypes/definitions/AttributeGroup.definition.js +7 -1
  274. package/lib/metadataTypes/definitions/AttributeSet.definition.js +2 -2
  275. package/lib/metadataTypes/definitions/Automation.definition.js +4 -1
  276. package/lib/metadataTypes/definitions/Campaign.definition.js +1 -1
  277. package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -1
  278. package/lib/metadataTypes/definitions/DataExtension.definition.js +17 -1
  279. package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -1
  280. package/lib/metadataTypes/definitions/DataExtractType.definition.js +2 -2
  281. package/lib/metadataTypes/definitions/DeliveryProfile.definition.js +59 -0
  282. package/lib/metadataTypes/definitions/Discovery.definition.js +1 -1
  283. package/lib/metadataTypes/definitions/Email.definition.js +1 -1
  284. package/lib/metadataTypes/definitions/EmailSend.definition.js +19 -4
  285. package/lib/metadataTypes/definitions/Event.definition.js +140 -128
  286. package/lib/metadataTypes/definitions/FileLocation.definition.js +1 -1
  287. package/lib/metadataTypes/definitions/Filter.definition.js +1 -1
  288. package/lib/metadataTypes/definitions/Folder.definition.js +25 -2
  289. package/lib/metadataTypes/definitions/ImportFile.definition.js +52 -7
  290. package/lib/metadataTypes/definitions/Journey.definition.js +12 -0
  291. package/lib/metadataTypes/definitions/List.definition.js +1 -1
  292. package/lib/metadataTypes/definitions/MobileCode.definition.js +1 -1
  293. package/lib/metadataTypes/definitions/MobileMessage.definition.js +11 -5
  294. package/lib/metadataTypes/definitions/Query.definition.js +6 -0
  295. package/lib/metadataTypes/definitions/Script.definition.js +14 -14
  296. package/lib/metadataTypes/definitions/SendClassification.definition.js +60 -20
  297. package/lib/metadataTypes/definitions/SenderProfile.definition.js +185 -0
  298. package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -2
  299. package/lib/metadataTypes/definitions/TransactionalMessage.definition.js +69 -0
  300. package/lib/metadataTypes/definitions/TransactionalPush.definition.js +6 -0
  301. package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +6 -0
  302. package/lib/metadataTypes/definitions/TriggeredSend.definition.js +15 -4
  303. package/lib/metadataTypes/definitions/Verification.definition.js +1 -1
  304. package/lib/retrieveChangelog.js +7 -2
  305. package/lib/util/auth.js +56 -21
  306. package/lib/util/businessUnit.js +20 -2
  307. package/lib/util/cache.js +37 -18
  308. package/lib/util/cli.js +72 -29
  309. package/lib/util/config.js +27 -9
  310. package/lib/util/devops.js +45 -24
  311. package/lib/util/file.js +58 -33
  312. package/lib/util/init.config.js +55 -24
  313. package/lib/util/init.git.js +6 -6
  314. package/lib/util/init.js +36 -14
  315. package/lib/util/init.npm.js +2 -2
  316. package/lib/util/replaceContentBlockReference.js +278 -0
  317. package/lib/util/util.js +152 -54
  318. package/package.json +33 -30
  319. package/test/general.test.js +1327 -4
  320. package/test/mockRoot/.mcdevrc.json +26 -4
  321. package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testExisting_dataExtensionShared.dataExtension-meta.json +3 -4
  322. package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testNew_dataExtensionShared.dataExtension-meta.json +1 -4
  323. package/test/mockRoot/deploy/testInstance/_ParentBU_/query/testNew_query.query-meta.json +11 -0
  324. package/test/mockRoot/deploy/testInstance/_ParentBU_/query/testNew_query.query-meta.sql +4 -0
  325. package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset.asset-block-meta.html +12 -0
  326. package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset.asset-block-meta.json +39 -0
  327. package/test/mockRoot/deploy/testInstance/testBU/automation/testExisting_automation.automation-meta.json +6 -6
  328. package/test/mockRoot/deploy/testInstance/testBU/automation/testNew_automation.automation-meta.json +7 -7
  329. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testExisting_dataExtension.dataExtension-meta.json +3 -4
  330. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testNew_dataExtension.dataExtension-meta.json +1 -4
  331. package/test/mockRoot/deploy/testInstance/testBU/emailSend/testExisting_emailSend.emailSend-meta.json +36 -0
  332. package/test/mockRoot/deploy/testInstance/testBU/emailSend/testNew_emailSend.emailSend-meta.json +36 -0
  333. package/test/mockRoot/deploy/testInstance/testBU/importFile/testExisting_importFile.importFile-meta.json +10 -4
  334. package/test/mockRoot/deploy/testInstance/testBU/importFile/testNew_importFile.importFile-meta.json +8 -4
  335. package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_journey_Quicksend.journey-meta.json +232 -0
  336. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json +2 -4
  337. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.json +2 -4
  338. package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query.query-meta.json +1 -1
  339. package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query_fixKeys.query-meta.json +1 -1
  340. package/test/mockRoot/deploy/testInstance/testBU/query/testNew_query.query-meta.json +1 -1
  341. package/test/mockRoot/deploy/testInstance/testBU/sendClassification/testExisting_sendClassification.sendClassification-meta.json +8 -0
  342. package/test/mockRoot/deploy/testInstance/testBU/sendClassification/testNew_sendClassification.sendClassification-meta.json +8 -0
  343. package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testExisting_senderProfile.senderProfile-meta.json +14 -0
  344. package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testNew_senderProfile.senderProfile-meta.json +14 -0
  345. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +1 -1
  346. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -1
  347. package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testExisting_tpush.transactionalPush-meta.json +1 -3
  348. package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testNew_tpush.transactionalPush-meta.json +1 -3
  349. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testExisting_tsms.transactionalSMS-meta.json +1 -2
  350. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testNew_tsms.transactionalSMS-meta.json +1 -2
  351. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testExisting_triggeredSend.triggeredSend-meta.json +4 -5
  352. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testNew_triggeredSend.triggeredSend-meta.json +4 -5
  353. package/test/mockRoot/deploy/testInstance/testBU/verification/testExisting_39f6a488-20eb-4ba0-b0b9.verification-meta.json +1 -1
  354. package/test/mockRoot/deploy/testInstance/testBU/verification/testNew_39f6a488-20eb-4ba0-b0b9.verification-meta.json +1 -1
  355. package/test/resourceFactory.js +118 -7
  356. package/test/resources/1111111/automation/v1/queries/get-response.json +6 -0
  357. package/test/resources/1111111/automation/v1/queries/post-response.json +18 -0
  358. package/test/resources/1111111/dataExtension/create-expected.json +4 -7
  359. package/test/resources/1111111/dataExtension/retrieve-expected.json +2 -4
  360. package/test/resources/1111111/dataExtension/update-expected.json +7 -7
  361. package/test/resources/1111111/dataExtension/update-response.xml +3 -1
  362. package/test/resources/1111111/dataFolder/retrieve-ContentType=queryactivity-response.xml +48 -0
  363. package/test/resources/1111111/query/patch_keySuffix-expected.json +11 -0
  364. package/test/resources/1111111/query/patch_keySuffix-expected.sql +4 -0
  365. package/test/resources/9999999/asset/block-1157-retrieve-expected.html +4 -3
  366. package/test/resources/9999999/asset/build-templatebasedemail-expected.json +81 -0
  367. package/test/resources/9999999/asset/build-templatebasedemail-html-expected.html +20 -0
  368. package/test/resources/9999999/asset/build-templatebasedemail-preheader-expected.amp +1 -0
  369. package/test/resources/9999999/asset/create-expected.json +18 -0
  370. package/test/resources/9999999/asset/resolveId-1234-notFound-expected.json +1 -0
  371. package/test/resources/9999999/asset/resolveId-1295064-noPath-expected.json +8 -0
  372. package/test/resources/9999999/asset/resolveId-1295064-withPath-expected.json +8 -0
  373. package/test/resources/9999999/asset/retrieve-templatebasedemail-expected.json +84 -0
  374. package/test/resources/9999999/asset/retrieve-templatebasedemail-html-expected.html +20 -0
  375. package/test/resources/9999999/asset/retrieve-templatebasedemail-preheader-expected.amp +1 -0
  376. package/test/resources/9999999/asset/template-templatebasedemail-expected.json +81 -0
  377. package/test/resources/9999999/asset/template-templatebasedemail-html-expected.html +20 -0
  378. package/test/resources/9999999/asset/template-templatebasedemail-preheader-expected.amp +1 -0
  379. package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-id-expected.html +33 -0
  380. package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-key-expected.html +33 -0
  381. package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-name-expected.html +35 -0
  382. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-id-expected.amp +4 -0
  383. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-key-expected.amp +4 -0
  384. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-name-expected.amp +4 -0
  385. package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-id-expected.amp +4 -0
  386. package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-key-expected.amp +4 -0
  387. package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-name-expected.amp +4 -0
  388. package/test/resources/9999999/asset/v1/content/assets/1295064/get-response.json +1 -1
  389. package/test/resources/9999999/asset/v1/content/assets/5286/get-response.json +48 -0
  390. package/test/resources/9999999/asset/v1/content/assets/5289/get-response.json +198 -0
  391. package/test/resources/9999999/asset/v1/content/assets/808714/get-response.json +4 -3
  392. package/test/resources/9999999/asset/v1/content/assets/950143/delete-response.txt +1 -0
  393. package/test/resources/9999999/asset/v1/content/assets/get-response-customerKey=testExisting_asset.json +105 -0
  394. package/test/resources/9999999/asset/v1/content/assets/post-response.json +59 -0
  395. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14.json +7 -0
  396. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN193,194,15.json +7 -0
  397. 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 +46 -0
  398. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1.json +32 -0
  399. package/test/resources/9999999/asset/v1/content/assets/query/{post-response.json → post-response-assetType.idIN207,208,209,5.json} +45 -47
  400. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN214,4.json +35 -0
  401. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN215,216,217,218,219,220,221,222,223,224,225,226,227,228.json +7 -0
  402. package/test/resources/9999999/asset/v1/content/assets/query/post-response-customerKey=mcdev-issue-1157.json +46 -0
  403. package/test/resources/9999999/attributeGroup/retrieve-expected.json +1 -1
  404. package/test/resources/9999999/attributeSet/retrieve-expected.json +3 -3
  405. package/test/resources/9999999/automation/build-expected.json +7 -7
  406. package/test/resources/9999999/automation/create-expected.json +7 -7
  407. package/test/resources/9999999/automation/patch_fixKeys-pause-expected.json +6 -6
  408. package/test/resources/9999999/automation/patch_fixKeys-schedule-expected.json +6 -6
  409. package/test/resources/9999999/automation/retrieve-expected.json +7 -7
  410. package/test/resources/9999999/automation/template-expected.json +7 -7
  411. package/test/resources/9999999/automation/update-expected.json +6 -6
  412. package/test/resources/9999999/automation/v1/dataextracts/56c5370a-f988-4f36-b0ee-0f876573f6d7/delete-response.txt +1 -0
  413. package/test/resources/9999999/automation/v1/filetransfers/72c328ac-f5b0-4e37-91d3-a775666f15a6/delete-response.json +1 -0
  414. package/test/resources/9999999/automation/v1/imports/1ebf557b-372e-eb11-b81b-48df37d1dbd7/get-response.json +78 -0
  415. package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/delete-response.txt +0 -0
  416. package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/get-response.json +35 -0
  417. package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/patch-response.json +14 -10
  418. package/test/resources/9999999/automation/v1/imports/get-response.json +78 -1
  419. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +1 -1
  420. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeysSuffix/get-response.json +17 -0
  421. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeysSuffix/patch-response.json +18 -0
  422. package/test/resources/9999999/automation/v1/queries/abcde-607c-4940-afef-437965094dat/get-response.json +17 -0
  423. package/test/resources/9999999/automation/v1/queries/get-response.json +20 -3
  424. package/test/resources/9999999/automation/v1/scripts/39f6a488-20eb-4ba0-b0b9-023725b574e4/delete-response.txt +1 -0
  425. package/test/resources/9999999/automation/v1/scripts/get-response.json +3 -3
  426. package/test/resources/9999999/dataExtension/build-expected.json +3 -4
  427. package/test/resources/9999999/dataExtension/create-expected.json +1 -4
  428. package/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml +4 -4
  429. package/test/resources/9999999/dataExtension/retrieve-expected.json +3 -4
  430. package/test/resources/9999999/dataExtension/retrieve-response.xml +96 -1
  431. package/test/resources/9999999/dataExtension/template-expected.json +3 -4
  432. package/test/resources/9999999/dataExtension/update-expected.json +4 -3
  433. package/test/resources/9999999/dataExtension/update-response.xml +5 -3
  434. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +72 -0
  435. package/test/resources/9999999/dataFolder/retrieve-ContentType=userinitiatedsends-response.xml +48 -0
  436. package/test/resources/9999999/deliveryProfile/get-expected.json +7 -0
  437. package/test/resources/9999999/emailSend/build-expected.json +43 -0
  438. package/test/resources/9999999/emailSend/get-expected.json +43 -0
  439. package/test/resources/9999999/emailSend/patch-expected.json +41 -0
  440. package/test/resources/9999999/emailSend/post-expected.json +41 -0
  441. package/test/resources/9999999/emailSend/template-expected.json +43 -0
  442. package/test/resources/9999999/emailSendDefinition/create-response.xml +98 -0
  443. package/test/resources/9999999/emailSendDefinition/delete-response.xml +36 -0
  444. package/test/resources/9999999/emailSendDefinition/retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml +18 -8
  445. package/test/resources/9999999/emailSendDefinition/update-response.xml +97 -0
  446. package/test/resources/9999999/importDefinition/retrieve-CustomerKey=testExisting_importFile-response.xml +30 -0
  447. package/test/resources/9999999/importDefinition/retrieve-Name=testExisting_importFile-response.xml +30 -0
  448. package/test/resources/9999999/importFile/build-expected.json +11 -6
  449. package/test/resources/9999999/importFile/get-expected.json +13 -7
  450. package/test/resources/9999999/importFile/get-sms-expected.json +79 -0
  451. package/test/resources/9999999/importFile/patch-expected.json +12 -7
  452. package/test/resources/9999999/importFile/post-expected.json +8 -5
  453. package/test/resources/9999999/importFile/template-expected.json +10 -5
  454. package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +124 -0
  455. package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/delete-response.txt +1 -0
  456. package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/get-response.json +253 -0
  457. package/test/resources/9999999/interaction/v1/interactions/get-response.json +83 -779
  458. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Multistep/get-response.json +457 -0
  459. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response.json +253 -0
  460. package/test/resources/9999999/interaction/v1/interactions/{key_0b76dccf-594c-b6dc-1acf-10c4493dcb84 → key_testExisting_temail}/get-response.json +5 -5
  461. package/test/resources/9999999/journey/build-expected.json +105 -449
  462. package/test/resources/9999999/journey/get-multistep-expected.json +413 -0
  463. package/test/resources/9999999/journey/get-quicksend-expected.json +232 -0
  464. package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +232 -0
  465. package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +232 -0
  466. package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +232 -0
  467. package/test/resources/9999999/journey/get-transactionalEmail-expected.json +211 -0
  468. package/test/resources/9999999/journey/template-expected.json +105 -449
  469. package/test/resources/9999999/legacy/v1/beta/messaging/deliverypolicy/get-response.json +15 -0
  470. package/test/resources/9999999/legacy/v1/beta/mobile/imports/get-response.json +112 -0
  471. package/test/resources/9999999/legacy/v1/beta/mobile/message/NTQ3Ojc4OjA/get-response.json +1 -1
  472. package/test/resources/9999999/legacy/v1/beta/object/NWQwdnhEU3dFZWVBekJRQzdISWl0QTo0NTow/get-response.json +12 -0
  473. package/test/resources/9999999/list/retrieve-response.xml +13 -0
  474. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +1 -1
  475. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +1 -1
  476. package/test/resources/9999999/mobileMessage/build-expected.json +2 -5
  477. package/test/resources/9999999/mobileMessage/get-expected.json +2 -5
  478. package/test/resources/9999999/mobileMessage/post-create-expected.json +2 -4
  479. package/test/resources/9999999/mobileMessage/post-update-expected.json +2 -5
  480. package/test/resources/9999999/mobileMessage/template-expected.json +2 -5
  481. package/test/resources/9999999/query/build-expected.json +1 -1
  482. package/test/resources/9999999/query/build-expected.sql +2 -1
  483. package/test/resources/9999999/query/get-expected.json +1 -1
  484. package/test/resources/9999999/query/get-expected.sql +2 -1
  485. package/test/resources/9999999/query/get2-expected.json +1 -1
  486. package/test/resources/9999999/query/patch-expected.json +1 -1
  487. package/test/resources/9999999/query/patch_fixKeys-expected.json +1 -1
  488. package/test/resources/9999999/query/patch_fixKeysSuffix-expected.json +11 -0
  489. package/test/resources/9999999/query/patch_fixKeysSuffix-expected.sql +6 -0
  490. package/test/resources/9999999/query/post-expected.json +1 -1
  491. package/test/resources/9999999/query/template-expected.json +1 -1
  492. package/test/resources/9999999/query/template-expected.sql +2 -1
  493. package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query2ANDStatus=Active-response.xml +30 -0
  494. package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysSuffixANDStatus=Active-response.xml +30 -0
  495. package/test/resources/9999999/script/get_ampincluded-expected.html +5 -0
  496. package/test/resources/9999999/script/get_ampincluded-rcb-id-expected.html +5 -0
  497. package/test/resources/9999999/script/get_ampincluded-rcb-key-expected.html +5 -0
  498. package/test/resources/9999999/script/get_ampincluded-rcb-name-expected.html +5 -0
  499. package/test/resources/9999999/script/get_ampscript-expected.html +6 -1
  500. package/test/resources/9999999/script/get_ampscript-rcb-id-expected.html +8 -0
  501. package/test/resources/9999999/script/get_ampscript-rcb-key-expected.html +8 -0
  502. package/test/resources/9999999/script/get_ampscript-rcb-name-expected.html +10 -0
  503. package/test/resources/9999999/script/get_mixed-expected.html +5 -2
  504. package/test/resources/9999999/script/get_mixed-rcb-id-expected.html +12 -0
  505. package/test/resources/9999999/script/get_mixed-rcb-key-expected.html +12 -0
  506. package/test/resources/9999999/script/get_mixed-rcb-name-expected.html +14 -0
  507. package/test/resources/9999999/sendClassification/build-expected.json +8 -0
  508. package/test/resources/9999999/sendClassification/create-response.xml +51 -0
  509. package/test/resources/9999999/sendClassification/delete-response.xml +36 -0
  510. package/test/resources/9999999/sendClassification/get-expected.json +10 -0
  511. package/test/resources/9999999/sendClassification/patch-expected.json +8 -0
  512. package/test/resources/9999999/sendClassification/post-expected.json +8 -0
  513. package/test/resources/9999999/sendClassification/retrieve-response.xml +86 -0
  514. package/test/resources/9999999/sendClassification/template-expected.json +8 -0
  515. package/test/resources/9999999/sendClassification/update-response.xml +49 -0
  516. package/test/resources/9999999/senderProfile/build-expected.json +14 -0
  517. package/test/resources/9999999/senderProfile/create-response.xml +49 -0
  518. package/test/resources/9999999/senderProfile/delete-response.xml +36 -0
  519. package/test/resources/9999999/senderProfile/get-expected.json +16 -0
  520. package/test/resources/9999999/senderProfile/get-rcb-id-expected.json +16 -0
  521. package/test/resources/9999999/senderProfile/get-rcb-key-expected.json +16 -0
  522. package/test/resources/9999999/senderProfile/get-rcb-name-expected.json +16 -0
  523. package/test/resources/9999999/senderProfile/patch-expected.json +14 -0
  524. package/test/resources/9999999/senderProfile/post-expected.json +14 -0
  525. package/test/resources/9999999/senderProfile/retrieve-CustomerKey=Default-response.xml +44 -0
  526. package/test/resources/9999999/senderProfile/retrieve-CustomerKey=wrong-key-response.xml +26 -0
  527. package/test/resources/9999999/senderProfile/retrieve-response.xml +80 -0
  528. package/test/resources/9999999/senderProfile/template-expected.json +14 -0
  529. package/test/resources/9999999/senderProfile/update-response.xml +47 -0
  530. package/test/resources/9999999/transactionalEmail/build-expected.json +3 -3
  531. package/test/resources/9999999/transactionalEmail/get-expected.json +3 -3
  532. package/test/resources/9999999/transactionalEmail/patch-expected.json +3 -3
  533. package/test/resources/9999999/transactionalEmail/post-expected.json +2 -2
  534. package/test/resources/9999999/transactionalEmail/template-expected.json +3 -3
  535. package/test/resources/9999999/transactionalPush/build-expected.json +1 -1
  536. package/test/resources/9999999/transactionalPush/get-expected.json +1 -1
  537. package/test/resources/9999999/transactionalPush/patch-expected.json +1 -3
  538. package/test/resources/9999999/transactionalPush/post-expected.json +1 -3
  539. package/test/resources/9999999/transactionalPush/template-expected.json +1 -1
  540. package/test/resources/9999999/transactionalSMS/build-expected.amp +1 -1
  541. package/test/resources/9999999/transactionalSMS/build-expected.json +1 -2
  542. package/test/resources/9999999/transactionalSMS/get-expected.amp +1 -1
  543. package/test/resources/9999999/transactionalSMS/get-expected.json +1 -2
  544. package/test/resources/9999999/transactionalSMS/patch-expected.amp +1 -1
  545. package/test/resources/9999999/transactionalSMS/patch-expected.json +1 -2
  546. package/test/resources/9999999/transactionalSMS/post-expected.amp +1 -1
  547. package/test/resources/9999999/transactionalSMS/post-expected.json +1 -2
  548. package/test/resources/9999999/transactionalSMS/template-expected.amp +1 -1
  549. package/test/resources/9999999/transactionalSMS/template-expected.json +1 -2
  550. package/test/resources/9999999/triggeredSend/build-expected.json +5 -6
  551. package/test/resources/9999999/triggeredSend/get-expected.json +5 -6
  552. package/test/resources/9999999/triggeredSend/get-rcb-id-expected.json +29 -0
  553. package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +29 -0
  554. package/test/resources/9999999/triggeredSend/get-rcb-name-expected.json +29 -0
  555. package/test/resources/9999999/triggeredSend/patch-expected.json +5 -6
  556. package/test/resources/9999999/triggeredSend/post-expected.json +5 -6
  557. package/test/resources/9999999/triggeredSend/template-expected.json +5 -6
  558. package/test/resources/9999999/triggeredSendDefinition/create-response.xml +6 -1
  559. package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +53 -1
  560. package/test/resources/9999999/triggeredSendDefinition/update-response.xml +6 -1
  561. package/test/resources/9999999/verification/build-expected.json +1 -1
  562. package/test/resources/9999999/verification/get-expected.json +1 -1
  563. package/test/resources/9999999/verification/patch-expected.json +1 -1
  564. package/test/resources/9999999/verification/post-expected.json +1 -1
  565. package/test/resources/9999999/verification/template-expected.json +1 -1
  566. package/test/type.asset.test.js +733 -17
  567. package/test/type.attributeGroup.test.js +6 -2
  568. package/test/type.attributeSet.test.js +6 -2
  569. package/test/type.automation.test.js +174 -162
  570. package/test/type.dataExtension.test.js +41 -45
  571. package/test/type.dataExtract.test.js +22 -29
  572. package/test/type.deliveryProfile.test.js +45 -0
  573. package/test/type.emailSend.test.js +144 -0
  574. package/test/type.event.test.js +62 -0
  575. package/test/type.fileTransfer.test.js +21 -29
  576. package/test/type.importFile.test.js +61 -35
  577. package/test/type.journey.test.js +251 -45
  578. package/test/type.mobileKeyword.test.js +46 -54
  579. package/test/type.mobileMessage.test.js +28 -27
  580. package/test/type.query.test.js +303 -124
  581. package/test/type.script.test.js +288 -69
  582. package/test/type.sendClassification.test.js +156 -0
  583. package/test/type.senderProfile.test.js +254 -0
  584. package/test/type.transactionalEmail.test.js +15 -11
  585. package/test/type.transactionalPush.test.js +15 -11
  586. package/test/type.transactionalSMS.test.js +30 -23
  587. package/test/type.triggeredSend.test.js +130 -17
  588. package/test/type.user.test.js +22 -14
  589. package/test/type.verification.test.js +13 -10
  590. package/test/utils.js +76 -21
  591. package/tsconfig.json +21 -0
  592. package/types/mcdev.d.js +190 -66
  593. package/docs/dist/documentation.md +0 -8878
  594. package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_interaction.interaction-meta.json +0 -576
  595. package/test/mockRoot/deploy/testInstance/testBU/journey/testNew_interaction.interaction-meta.json +0 -266
  596. package/test/resources/9999999/interaction/v1/EventDefinitions/get-response.json +0 -43
  597. package/test/resources/9999999/interaction/v1/interactions/233d4413-922c-4568-85a5-e5cc77efc3be/delete-response.json +0 -1
  598. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +0 -592
  599. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/put-response.json +0 -592
  600. package/test/resources/9999999/interaction/v1/interactions/post-response.json +0 -280
  601. package/test/resources/9999999/journey/get-expected.json +0 -576
  602. package/test/resources/9999999/script/get_ampincluded-expected.ssjs +0 -5
@@ -1,13 +1,34 @@
1
1
  'use strict';
2
2
 
3
3
  import MetadataType from './MetadataType.js';
4
- import TYPE from '../../types/mcdev.d.js';
5
4
  import { Util } from '../util/util.js';
6
5
  import File from '../util/file.js';
7
6
  import Definitions from '../MetadataTypeDefinitions.js';
8
7
  import cache from '../util/cache.js';
9
8
  import pLimit from 'p-limit';
10
9
 
10
+ /**
11
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
12
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
13
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
14
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
15
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
16
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
17
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
18
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
19
+ * @typedef {import('../../types/mcdev.d.js').SDKError} SDKError
20
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
21
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
22
+ */
23
+ /**
24
+ * @typedef {import('../../types/mcdev.d.js').AutomationItem} AutomationItem
25
+ * @typedef {import('../../types/mcdev.d.js').AutomationItemObj} AutomationItemObj
26
+ * @typedef {import('../../types/mcdev.d.js').AutomationMap} AutomationMap
27
+ * @typedef {import('../../types/mcdev.d.js').AutomationMapObj} AutomationMapObj
28
+ * @typedef {import('../../types/mcdev.d.js').AutomationSchedule} AutomationSchedule
29
+ * @typedef {import('../../types/mcdev.d.js').AutomationScheduleSoap} AutomationScheduleSoap
30
+ */
31
+
11
32
  /**
12
33
  * Automation MetadataType
13
34
  *
@@ -15,14 +36,18 @@ import pLimit from 'p-limit';
15
36
  */
16
37
  class Automation extends MetadataType {
17
38
  static notificationUpdates = {};
39
+ static createdKeyMap;
40
+ static _skipNotificationRetrieve = false;
41
+ /** @type {AutomationMap} */
42
+ static _cachedMetadataMap;
18
43
  /**
19
44
  * Retrieves Metadata of Automation
20
45
  *
21
- * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
22
- * @param {void} [_] unused parameter
23
- * @param {void} [__] unused parameter
46
+ * @param {string} [retrieveDir] Directory where retrieved metadata directory will be saved
47
+ * @param {void | string[]} [_] unused parameter
48
+ * @param {void | string[]} [__] unused parameter
24
49
  * @param {string} [key] customer key of single item to retrieve
25
- * @returns {Promise.<TYPE.AutomationMapObj>} Promise of metadata
50
+ * @returns {Promise.<AutomationMapObj>} Promise of metadata
26
51
  */
27
52
  static async retrieve(retrieveDir, _, __, key) {
28
53
  let metadataMap;
@@ -34,9 +59,12 @@ class Automation extends MetadataType {
34
59
  metadataMap = this._cachedMetadataMap;
35
60
  delete this._cachedMetadataMap;
36
61
  } else {
37
- /** @type {TYPE.SoapRequestParams} */
62
+ /** @type {SoapRequestParams} */
38
63
  let requestParams = null;
39
- if (key) {
64
+ const objectIds = [];
65
+ if (key?.startsWith('id:')) {
66
+ objectIds.push(key.slice(3));
67
+ } else if (key) {
40
68
  requestParams = {
41
69
  filter: {
42
70
  leftOperand: 'CustomerKey',
@@ -50,12 +78,16 @@ class Automation extends MetadataType {
50
78
  ['ObjectID'],
51
79
  requestParams
52
80
  );
81
+ if (results?.Results?.length) {
82
+ objectIds.push(...results.Results.map((item) => item.ObjectID));
83
+ }
84
+
53
85
  // the API seems to handle 50 concurrent requests nicely
54
- const response = results?.Results?.length
86
+ const response = objectIds.length
55
87
  ? await this.retrieveRESTcollection(
56
- results?.Results.map((item) => ({
57
- id: item.ObjectID,
58
- uri: '/automation/v1/automations/' + item.ObjectID,
88
+ objectIds.map((objectID) => ({
89
+ id: objectID,
90
+ uri: '/automation/v1/automations/' + objectID,
59
91
  })),
60
92
  50,
61
93
  !key
@@ -86,9 +118,9 @@ class Automation extends MetadataType {
86
118
  /**
87
119
  * helper for {@link this.retrieveRESTcollection}
88
120
  *
89
- * @param {Error} ex exception
121
+ * @param {SDKError} ex exception
90
122
  * @param {string} id id or key of item
91
- * @returns {null} -
123
+ * @returns {Promise.<any>} can return retry-result
92
124
  */
93
125
  static async handleRESTErrors(ex, id) {
94
126
  try {
@@ -107,9 +139,8 @@ class Automation extends MetadataType {
107
139
  /**
108
140
  * helper for {@link Automation.retrieve} to get Automation Notifications
109
141
  *
110
- * @private
111
- * @param {TYPE.MetadataTypeMap} metadataMap keyField => metadata map
112
- * @returns {Promise.<void>} Promise of nothing
142
+ * @param {MetadataTypeMap} metadataMap keyField => metadata map
143
+ * @returns {Promise.<object>} Promise of automation legacy api response
113
144
  */
114
145
  static async #getAutomationNotificationsREST(metadataMap) {
115
146
  Util.logger.info(Util.getGrayMsg(` Retrieving Automation Notification information...`));
@@ -185,7 +216,7 @@ class Automation extends MetadataType {
185
216
  /**
186
217
  * Retrieves Metadata of Automation
187
218
  *
188
- * @returns {Promise.<TYPE.AutomationMapObj>} Promise of metadata
219
+ * @returns {Promise.<AutomationMapObj>} Promise of metadata
189
220
  */
190
221
  static async retrieveChangelog() {
191
222
  const results = await this.client.soap.retrieveBulk('Program', ['ObjectID']);
@@ -230,7 +261,7 @@ class Automation extends MetadataType {
230
261
  /**
231
262
  * Retrieves automation metadata for caching
232
263
  *
233
- * @returns {Promise.<TYPE.AutomationMapObj>} Promise of metadata
264
+ * @returns {Promise.<AutomationMapObj>} Promise of metadata
234
265
  */
235
266
  static async retrieveForCache() {
236
267
  let results = {};
@@ -245,6 +276,7 @@ class Automation extends MetadataType {
245
276
  'Name',
246
277
  ]);
247
278
  }
279
+ /** @type {AutomationMap} */
248
280
  const resultsConverted = {};
249
281
  if (Array.isArray(results?.Results)) {
250
282
  // get encodedAutomationID to retrieve notification information
@@ -279,8 +311,8 @@ class Automation extends MetadataType {
279
311
  *
280
312
  * @param {string} templateDir Directory where retrieved metadata directory will be saved
281
313
  * @param {string} name name of the metadata file
282
- * @param {TYPE.TemplateMap} templateVariables variables to be replaced in the metadata
283
- * @returns {Promise.<TYPE.AutomationItemObj>} Promise of metadata
314
+ * @param {TemplateMap} templateVariables variables to be replaced in the metadata
315
+ * @returns {Promise.<AutomationItemObj>} Promise of metadata
284
316
  */
285
317
  static async retrieveAsTemplate(templateDir, name, templateVariables) {
286
318
  const results = await this.client.soap.retrieve('Program', ['ObjectID', 'Name'], {
@@ -319,7 +351,7 @@ class Automation extends MetadataType {
319
351
  );
320
352
  }
321
353
  } catch {
322
- val = JSON.parse(JSON.stringify(details));
354
+ val = structuredClone(details);
323
355
  }
324
356
  if (val === null) {
325
357
  throw new Error(
@@ -346,7 +378,7 @@ class Automation extends MetadataType {
346
378
  /**
347
379
  * helper for {@link Automation.postRetrieveTasks} and {@link Automation.execute}
348
380
  *
349
- * @param {TYPE.AutomationItem} metadata a single automation
381
+ * @param {AutomationItem} metadata a single automation
350
382
  * @returns {boolean} true if the automation schedule is valid
351
383
  */
352
384
  static #isValidSchedule(metadata) {
@@ -369,8 +401,8 @@ class Automation extends MetadataType {
369
401
  /**
370
402
  * manages post retrieve steps
371
403
  *
372
- * @param {TYPE.AutomationItem} metadata a single automation
373
- * @returns {TYPE.AutomationItem | void} parsed item
404
+ * @param {AutomationItem} metadata a single automation
405
+ * @returns {AutomationItem | void} parsed item
374
406
  */
375
407
  static postRetrieveTasks(metadata) {
376
408
  // folder
@@ -448,23 +480,16 @@ class Automation extends MetadataType {
448
480
  // / if managed by cache we can update references to support deployment
449
481
  if (
450
482
  Definitions[activity.r__type]?.['idField'] &&
451
- cache.getCache(this.buObject.mid)[activity.r__type]
483
+ cache.getCache()[activity.r__type]
452
484
  ) {
453
485
  try {
454
- // this will override the name returned by the API in case this activity's name was changed since the automation was last updated, keeping things nicely in sync for mcdev
455
- const name = cache.searchForField(
486
+ activity.r__key = cache.searchForField(
456
487
  activity.r__type,
457
488
  activity.activityObjectId,
458
489
  Definitions[activity.r__type].idField,
459
- Definitions[activity.r__type].nameField
490
+ Definitions[activity.r__type].keyField
460
491
  );
461
- if (name !== activity.name) {
462
- Util.logger.debug(
463
- ` - updated name of step ${stepNumber}.${activity.displayOrder}` +
464
- ` in Automation '${metadata.name}' from ${activity.name} to ${name}`
465
- );
466
- activity.name = name;
467
- }
492
+ delete activity.name;
468
493
  } catch (ex) {
469
494
  // getFromCache throws error where the dependent metadata is not found
470
495
  Util.logger.warn(
@@ -483,7 +508,7 @@ class Automation extends MetadataType {
483
508
  }
484
509
  }
485
510
  }
486
- return JSON.parse(JSON.stringify(metadata));
511
+ return structuredClone(metadata);
487
512
  } catch (ex) {
488
513
  Util.logger.warn(
489
514
  ` - ${this.definition.typeName} '${metadata[this.definition.nameField]}': ${
@@ -500,6 +525,7 @@ class Automation extends MetadataType {
500
525
  * @returns {Promise.<string[]>} Returns list of keys that were executed
501
526
  */
502
527
  static async execute(keyArr) {
528
+ /** @type {AutomationMap} */
503
529
  const metadataMap = {};
504
530
  for (const key of keyArr) {
505
531
  if (Util.OPTIONS.schedule) {
@@ -519,14 +545,13 @@ class Automation extends MetadataType {
519
545
  } else {
520
546
  // runOnce
521
547
  const objectId = await this.#getObjectIdForSingleRetrieve(key);
522
- metadataMap[key] = {};
523
- metadataMap[key][this.definition.idField] = objectId;
524
- metadataMap[key][this.definition.keyField] = key;
548
+ /** @type {AutomationItem} */
549
+ metadataMap[key] = { key, id: objectId };
525
550
  }
526
551
  }
527
552
  if (!Object.keys(metadataMap).length) {
528
553
  Util.logger.error(`No ${this.definition.type} to execute`);
529
- return false;
554
+ return;
530
555
  }
531
556
  Util.logger.info(
532
557
  `Starting automations ${
@@ -558,7 +583,7 @@ class Automation extends MetadataType {
558
583
  /**
559
584
  * helper for {@link Automation.execute}
560
585
  *
561
- * @param {TYPE.AutomationMap} metadataMap map of metadata
586
+ * @param {AutomationMap} metadataMap map of metadata
562
587
  * @param {string} key key of the metadata
563
588
  * @returns {Promise.<{key:string, response:object}>} metadata key and API response
564
589
  */
@@ -575,7 +600,7 @@ class Automation extends MetadataType {
575
600
  /**
576
601
  * helper for {@link Automation.execute}
577
602
  *
578
- * @param {TYPE.AutomationItem} metadataEntry metadata object
603
+ * @param {AutomationItem} metadataEntry metadata object
579
604
  * @returns {Promise.<{key:string, response:object}>} metadata key and API response
580
605
  */
581
606
  static async #runOnce(metadataEntry) {
@@ -586,7 +611,7 @@ class Automation extends MetadataType {
586
611
  * Standardizes a check for multiple messages but adds query specific filters to error texts
587
612
  *
588
613
  * @param {object} ex response payload from REST API
589
- * @returns {string[] | void} formatted Error Message
614
+ * @returns {string[]} formatted Error Message
590
615
  */
591
616
  static getErrorsREST(ex) {
592
617
  const errors = super.getErrorsREST(ex);
@@ -656,7 +681,7 @@ class Automation extends MetadataType {
656
681
  /**
657
682
  * helper for {@link Automation.pause}
658
683
  *
659
- * @param {TYPE.AutomationItem} metadata automation metadata
684
+ * @param {AutomationItem} metadata automation metadata
660
685
  * @returns {Promise.<{key:string, response:object}>} metadata key and API response
661
686
  */
662
687
  static async #pauseItem(metadata) {
@@ -688,10 +713,10 @@ class Automation extends MetadataType {
688
713
  /**
689
714
  * Deploys automation - the saved file is the original one due to large differences required for deployment
690
715
  *
691
- * @param {TYPE.AutomationMap} metadata metadata mapped by their keyField
716
+ * @param {AutomationMap} metadata metadata mapped by their keyField
692
717
  * @param {string} targetBU name/shorthand of target businessUnit for mapping
693
718
  * @param {string} retrieveDir directory where metadata after deploy should be saved
694
- * @returns {Promise.<TYPE.AutomationMap>} Promise
719
+ * @returns {Promise.<AutomationMap>} Promise
695
720
  */
696
721
  static async deploy(metadata, targetBU, retrieveDir) {
697
722
  const upsertResults = await this.upsert(metadata, targetBU);
@@ -710,7 +735,7 @@ class Automation extends MetadataType {
710
735
  /**
711
736
  * Creates a single automation
712
737
  *
713
- * @param {TYPE.AutomationItem} metadata single metadata entry
738
+ * @param {AutomationItem} metadata single metadata entry
714
739
  * @returns {Promise} Promise
715
740
  */
716
741
  static create(metadata) {
@@ -721,8 +746,8 @@ class Automation extends MetadataType {
721
746
  /**
722
747
  * Updates a single automation
723
748
  *
724
- * @param {TYPE.AutomationItem} metadata single metadata entry
725
- * @param {TYPE.AutomationItem} metadataBefore metadata mapped by their keyField
749
+ * @param {AutomationItem} metadata single metadata entry
750
+ * @param {AutomationItem} metadataBefore metadata mapped by their keyField
726
751
  * @returns {Promise} Promise
727
752
  */
728
753
  static update(metadata, metadataBefore) {
@@ -743,7 +768,7 @@ class Automation extends MetadataType {
743
768
  /**
744
769
  * helper for {@link Automation.preDeployTasks} and {@link Automation.execute}
745
770
  *
746
- * @param {TYPE.AutomationItem} metadata metadata mapped by their keyField
771
+ * @param {AutomationItem} metadata metadata mapped by their keyField
747
772
  */
748
773
  static #preDeploySchedule(metadata) {
749
774
  delete metadata.schedule.rangeTypeId;
@@ -770,14 +795,14 @@ class Automation extends MetadataType {
770
795
  /**
771
796
  * Gets executed before deploying metadata
772
797
  *
773
- * @param {TYPE.AutomationItem} metadata metadata mapped by their keyField
774
- * @returns {Promise.<TYPE.AutomationItem>} Promise
798
+ * @param {AutomationItem} metadata metadata mapped by their keyField
799
+ * @returns {Promise.<AutomationItem>} Promise
775
800
  */
776
801
  static async preDeployTasks(metadata) {
777
802
  if (metadata.notifications) {
778
803
  this.notificationUpdates[metadata.key] = metadata.notifications;
779
804
  } else {
780
- const cached = cache.getByKey(metadata.key);
805
+ const cached = cache.getByKey(this.definition.type, metadata.key);
781
806
  if (cached?.notifications) {
782
807
  // if notifications existed but are no longer present in the deployment package, we need to run an empty update call to remove them
783
808
  this.notificationUpdates[metadata.key] = [];
@@ -802,8 +827,8 @@ class Automation extends MetadataType {
802
827
  // prep startSource
803
828
  metadata.startSource = {
804
829
  fileDrop: {
805
- filenamePattern: metadata.fileTrigger.fileNamingPattern,
806
- filenamePatternTypeId: metadata.fileTrigger.fileNamePatternTypeId,
830
+ fileNamePattern: metadata.fileTrigger.fileNamingPattern,
831
+ fileNamePatternTypeId: metadata.fileTrigger.fileNamePatternTypeId,
807
832
  folderLocation: metadata.fileTrigger.folderLocationText,
808
833
  queueFiles: metadata.fileTrigger.queueFiles,
809
834
  },
@@ -844,8 +869,8 @@ class Automation extends MetadataType {
844
869
  // automations can have empty placeholder for activities with only their type defined
845
870
  activity.activityObjectId = cache.searchForField(
846
871
  activity.r__type,
847
- activity.name,
848
- Definitions[activity.r__type].nameField,
872
+ activity.r__key,
873
+ Definitions[activity.r__type].keyField,
849
874
  Definitions[activity.r__type].idField
850
875
  );
851
876
  }
@@ -869,7 +894,7 @@ class Automation extends MetadataType {
869
894
  * Validates the automation to be sure it can be deployed.
870
895
  * Whitelisted Activites are deployed but require configuration
871
896
  *
872
- * @param {TYPE.AutomationItem} metadata single automation record
897
+ * @param {AutomationItem} metadata single automation record
873
898
  * @returns {boolean} result if automation can be deployed based on steps
874
899
  */
875
900
  static validateDeployMetadata(metadata) {
@@ -914,9 +939,8 @@ class Automation extends MetadataType {
914
939
  /**
915
940
  * helper for {@link MetadataType.updateREST} and {@link MetadataType.updateSOAP} that removes old files after the key was changed
916
941
  *
917
- * @private
918
- * @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
919
- * @returns {void}
942
+ * @param {MetadataTypeItem} metadataEntry a single metadata Entry
943
+ * @returns {Promise.<void>} -
920
944
  */
921
945
  static async _postChangeKeyTasks(metadataEntry) {
922
946
  super._postChangeKeyTasks(metadataEntry, true);
@@ -925,8 +949,8 @@ class Automation extends MetadataType {
925
949
  /**
926
950
  * Gets executed after deployment of metadata type
927
951
  *
928
- * @param {TYPE.AutomationMap} metadataMap metadata mapped by their keyField
929
- * @param {TYPE.AutomationMap} originalMetadataMap metadata to be updated (contains additioanl fields)
952
+ * @param {AutomationMap} metadataMap metadata mapped by their keyField
953
+ * @param {AutomationMap} originalMetadataMap metadata to be updated (contains additioanl fields)
930
954
  * @returns {Promise.<void>} -
931
955
  */
932
956
  static async postDeployTasks(metadataMap, originalMetadataMap) {
@@ -957,7 +981,7 @@ class Automation extends MetadataType {
957
981
  );
958
982
  }
959
983
 
960
- // el.status
984
+ // @ts-expect-error - string vs enum
961
985
  item.status ||= Util.inverseGet(this.definition.statusMapping, item.statusId);
962
986
  }
963
987
  // need to put schedule on here if status is scheduled
@@ -982,7 +1006,7 @@ class Automation extends MetadataType {
982
1006
  /**
983
1007
  * helper for {@link Automation.postDeployTasks}
984
1008
  *
985
- * @param {TYPE.AutomationMap} metadataMap metadata mapped by their keyField
1009
+ * @param {AutomationMap} metadataMap metadata mapped by their keyField
986
1010
  * @param {string} key current customer key
987
1011
  * @returns {Promise.<void>} -
988
1012
  */
@@ -1029,8 +1053,8 @@ class Automation extends MetadataType {
1029
1053
  /**
1030
1054
  * helper for {@link Automation.postDeployTasks}
1031
1055
  *
1032
- * @param {TYPE.AutomationMap} metadataMap metadata mapped by their keyField
1033
- * @param {TYPE.AutomationMap} originalMetadataMap metadata to be updated (contains additioanl fields)
1056
+ * @param {AutomationMap} metadataMap metadata mapped by their keyField
1057
+ * @param {AutomationMap} originalMetadataMap metadata to be updated (contains additioanl fields)
1034
1058
  * @param {string} key current customer key
1035
1059
  * @param {string} [oldKey] old customer key before fixKey / changeKeyValue / changeKeyField
1036
1060
  * @returns {Promise.<{key:string, response:object}>} metadata key and API response
@@ -1113,7 +1137,7 @@ class Automation extends MetadataType {
1113
1137
  /**
1114
1138
  * generic script that retrieves the folder path from cache and updates the given metadata with it after retrieve
1115
1139
  *
1116
- * @param {TYPE.MetadataTypeItem} metadata a single script activity definition
1140
+ * @param {MetadataTypeItem} metadata a single script activity definition
1117
1141
  */
1118
1142
  static setFolderPath(metadata) {
1119
1143
  const folderIdField = metadata[this.definition.folderIdField]
@@ -1148,7 +1172,7 @@ class Automation extends MetadataType {
1148
1172
  /**
1149
1173
  * automation-specific script that retrieves the folder ID from cache and updates the given metadata with it before deploy
1150
1174
  *
1151
- * @param {TYPE.MetadataTypeItem} metadata a single item
1175
+ * @param {MetadataTypeItem} metadata a single item
1152
1176
  */
1153
1177
  static setFolderId(metadata) {
1154
1178
  try {
@@ -1179,14 +1203,19 @@ class Automation extends MetadataType {
1179
1203
  * Builds a schedule object to be used for scheduling an automation
1180
1204
  * based on combination of ical string and start/end dates.
1181
1205
  *
1182
- * @param {TYPE.AutomationSchedule} scheduleObject child of automation metadata used for scheduling
1183
- * @returns {TYPE.AutomationScheduleSoap} Schedulable object for soap API (currently not rest supported)
1206
+ * @param {AutomationSchedule} scheduleObject child of automation metadata used for scheduling
1207
+ * @returns {AutomationScheduleSoap} Schedulable object for soap API (currently not rest supported)
1184
1208
  */
1185
1209
  static _buildSchedule(scheduleObject) {
1186
1210
  /**
1187
- * @type {TYPE.AutomationScheduleSoap}
1211
+ * @type {AutomationScheduleSoap}
1188
1212
  */
1189
- const schedule = { Recurrence: {}, TimeZone: { IDSpecified: true } };
1213
+ const schedule = {
1214
+ Recurrence: {},
1215
+ TimeZone: { ID: null, IDSpecified: true },
1216
+ RecurrenceRangeType: null,
1217
+ StartDateTime: null,
1218
+ };
1190
1219
  // build recurrence
1191
1220
  const recurHelper = {};
1192
1221
  // ical values are split by ; then have key values split by =
@@ -1245,10 +1274,12 @@ class Automation extends MetadataType {
1245
1274
  // add tz to input date to ensure Date() creates a date object with the right tz
1246
1275
  const inputStartDateString = scheduleObject.startDate + schedule._timezoneString;
1247
1276
 
1277
+ /** @type {Date | string} */
1278
+ let startDateTime;
1248
1279
  if (new Date(inputStartDateString) > new Date()) {
1249
1280
  // if start date is in future take this
1250
- schedule.StartDateTime = scheduleObject.startDate;
1251
- schedule._StartDateTime = schedule.StartDateTime; // store copy for CLI output
1281
+ startDateTime = scheduleObject.startDate;
1282
+ schedule._StartDateTime = scheduleObject.startDate; // store copy for CLI output
1252
1283
  } else {
1253
1284
  // if start date is in past calculate new start date
1254
1285
  const scheduledDate = new Date(inputStartDateString);
@@ -1288,16 +1319,16 @@ class Automation extends MetadataType {
1288
1319
  // No default
1289
1320
  }
1290
1321
  // return time as Dateobject
1291
- schedule.StartDateTime = futureDate;
1292
- const localTimezoneOffset = schedule.StartDateTime.getTimezoneOffset() / -60;
1293
- schedule._StartDateTime = this._calcTime(localTimezoneOffset, schedule.StartDateTime); // store copy for CLI output
1322
+ startDateTime = futureDate;
1323
+ const localTimezoneOffset = futureDate.getTimezoneOffset() / -60;
1324
+ schedule._StartDateTime = this._calcTime(localTimezoneOffset, futureDate); // store copy for CLI output
1294
1325
  }
1295
1326
 
1296
1327
  // The Create/Update API expects dates to be in US-Central time
1297
1328
  // The retrieve API returns the date in whatever timezone one chose, hence we need to convert this upon upsert
1298
1329
  schedule.StartDateTime = this._calcTime(
1299
1330
  this.properties.options.serverTimeOffset,
1300
- schedule.StartDateTime,
1331
+ startDateTime,
1301
1332
  schedule._timezoneString
1302
1333
  );
1303
1334
 
@@ -1339,7 +1370,7 @@ class Automation extends MetadataType {
1339
1370
  * The json's first level of keys must represent the rows and the secend level the columns
1340
1371
  *
1341
1372
  * @private
1342
- * @param {TYPE.AutomationItem} json dataextension
1373
+ * @param {AutomationItem} json dataextension
1343
1374
  * @param {object[][]} tabled prepped array for output in tabular format
1344
1375
  * @returns {string} file content
1345
1376
  */
@@ -1440,8 +1471,10 @@ class Automation extends MetadataType {
1440
1471
  }
1441
1472
  output += row1.join('') + `|\n${tableSeparator}|\n`;
1442
1473
  for (let i = 1; i < tabled.length; i++) {
1443
- for (const field of tabled[i]) {
1444
- output += field ? `| _${field.i}: ${field.type}_<br>${field.name} ` : '| - ';
1474
+ for (const activity of tabled[i]) {
1475
+ output += activity
1476
+ ? `| _${activity.i}: ${activity.type}_<br>${activity.key} `
1477
+ : '| - ';
1445
1478
  }
1446
1479
  output += '|\n';
1447
1480
  }
@@ -1455,9 +1488,9 @@ class Automation extends MetadataType {
1455
1488
  * @private
1456
1489
  * @param {string} directory directory the file will be written to
1457
1490
  * @param {string} filename name of the file without '.json' ending
1458
- * @param {TYPE.AutomationItem} json dataextension.columns
1491
+ * @param {AutomationItem} json dataextension.columns
1459
1492
  * @param {'html'|'md'} mode html or md
1460
- * @returns {Promise.<boolean>} Promise of success of saving the file
1493
+ * @returns {Promise.<void>} Promise of success of saving the file
1461
1494
  */
1462
1495
  static async _writeDoc(directory, filename, json, mode) {
1463
1496
  await File.ensureDir(directory);
@@ -1482,7 +1515,7 @@ class Automation extends MetadataType {
1482
1515
  step.activities[activityIndex]
1483
1516
  ? {
1484
1517
  i: stepIndex + 1 + '.' + (activityIndex + 1),
1485
- name: step.activities[activityIndex].name,
1518
+ key: step.activities[activityIndex].r__key,
1486
1519
  type: step.activities[activityIndex].r__type,
1487
1520
  }
1488
1521
  : null
@@ -1504,13 +1537,13 @@ class Automation extends MetadataType {
1504
1537
  /**
1505
1538
  * Parses metadata into a readable Markdown/HTML format then saves it
1506
1539
  *
1507
- * @param {TYPE.AutomationMap} [metadata] a list of dataExtension definitions
1540
+ * @param {AutomationMap} [metadata] a list of dataExtension definitions
1508
1541
  * @returns {Promise.<void>} -
1509
1542
  */
1510
1543
  static async document(metadata) {
1511
1544
  if (['md', 'both'].includes(this.properties.options.documentType)) {
1512
1545
  if (!metadata) {
1513
- metadata = this.readBUMetadataForType(
1546
+ metadata = await this.readBUMetadataForType(
1514
1547
  File.normalizePath([
1515
1548
  this.properties.directories.retrieve,
1516
1549
  this.buObject.credential,
@@ -1529,7 +1562,7 @@ class Automation extends MetadataType {
1529
1562
  // as part of retrieve & manual execution we could face an empty folder
1530
1563
  return;
1531
1564
  }
1532
- return await Promise.all(
1565
+ await Promise.all(
1533
1566
  Object.keys(metadata).map((key) =>
1534
1567
  this._writeDoc(docPath + '/', key, metadata[key], 'md')
1535
1568
  )
@@ -1541,9 +1574,9 @@ class Automation extends MetadataType {
1541
1574
  * additionally, the documentation for dataExtension and automation should be returned
1542
1575
  *
1543
1576
  * @param {string[]} keyArr customerkey of the metadata
1544
- * @returns {string[]} list of all files that need to be committed in a flat array ['path/file1.ext', 'path/file2.ext']
1577
+ * @returns {Promise.<string[]>} list of all files that need to be committed in a flat array ['path/file1.ext', 'path/file2.ext']
1545
1578
  */
1546
- static getFilesToCommit(keyArr) {
1579
+ static async getFilesToCommit(keyArr) {
1547
1580
  if (this.properties.metaDataTypes.documentOnRetrieve.includes(this.definition.type)) {
1548
1581
  // document automation is active. assume we want to commit the MD file as well
1549
1582
  const path = File.normalizePath([
@@ -1566,7 +1599,6 @@ class Automation extends MetadataType {
1566
1599
  /**
1567
1600
  * helper to allow us to select single metadata entries via REST
1568
1601
  *
1569
- * @private
1570
1602
  * @param {string} key customer key
1571
1603
  * @returns {Promise.<string>} objectId or enpty string
1572
1604
  */
@@ -1585,7 +1617,7 @@ class Automation extends MetadataType {
1585
1617
  * Delete a metadata item from the specified business unit
1586
1618
  *
1587
1619
  * @param {string} customerKey Identifier of data extension
1588
- * @returns {boolean} deletion success status
1620
+ * @returns {Promise.<boolean>} deletion success status
1589
1621
  */
1590
1622
  static async deleteByKey(customerKey) {
1591
1623
  // the delete endpoint returns a general exception if the automation does not exist; handle it gracefully instead by adding a retrieve first
@@ -1600,7 +1632,7 @@ class Automation extends MetadataType {
1600
1632
  * clean up after deleting a metadata item
1601
1633
  *
1602
1634
  * @param {string} customerKey Identifier of metadata item
1603
- * @returns {void}
1635
+ * @returns {Promise.<void>} -
1604
1636
  */
1605
1637
  static async postDeleteTasks(customerKey) {
1606
1638
  // delete local copy: retrieve/cred/bu/.../...-meta.json
@@ -1,10 +1,22 @@
1
1
  'use strict';
2
2
 
3
- import TYPE from '../../types/mcdev.d.js';
4
3
  import MetadataType from './MetadataType.js';
5
4
  import { Util } from '../util/util.js';
6
5
  import File from '../util/file.js';
7
6
 
7
+ /**
8
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
9
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
10
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
11
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
12
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
13
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
14
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
15
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
16
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
17
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
18
+ */
19
+
8
20
  /**
9
21
  * Campaign MetadataType
10
22
  *
@@ -15,10 +27,10 @@ class Campaign extends MetadataType {
15
27
  * Retrieves Metadata of campaigns. Afterwards, starts metadata retrieval for their campaign assets
16
28
  *
17
29
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
18
- * @param {void} [_] unused parameter
19
- * @param {void} [__] unused parameter
30
+ * @param {void | string[]} [_] unused parameter
31
+ * @param {void | string[]} [__] unused parameter
20
32
  * @param {string} [key] customer key of single item to retrieve
21
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
33
+ * @returns {Promise.<MetadataTypeMapObj>} Promise
22
34
  */
23
35
  static async retrieve(retrieveDir, _, __, key) {
24
36
  const res = await super.retrieveREST(
@@ -43,7 +55,7 @@ class Campaign extends MetadataType {
43
55
  /**
44
56
  * Retrieves event definition metadata for caching
45
57
  *
46
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
58
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
47
59
  */
48
60
  static retrieveForCache() {
49
61
  return super.retrieveREST(null, '/legacy/v1/beta2/data/campaign/');
@@ -55,7 +67,7 @@ class Campaign extends MetadataType {
55
67
  * @param {string} retrieveDir folder where to save
56
68
  * @param {string} campaignId of camapaign to retrieve
57
69
  * @param {string} name of camapaign for saving
58
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Campaign Asset Object
70
+ * @returns {Promise.<MetadataTypeMapObj>} Campaign Asset Object
59
71
  */
60
72
  static async getAssetTags(retrieveDir, campaignId, name) {
61
73
  const res = await this.client.rest.getBulk(`/hub/v1/campaigns/${campaignId}/assets`);