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,11 +1,23 @@
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
  import cache from '../util/cache.js';
8
7
 
8
+ /**
9
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
10
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
11
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
12
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
13
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
14
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
15
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
16
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
17
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
18
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
19
+ */
20
+
9
21
  /**
10
22
  * FileTransfer MetadataType
11
23
  *
@@ -17,10 +29,10 @@ class FileTransfer extends MetadataType {
17
29
  * Endpoint /automation/v1/filetransfers/ returns all File Transfers
18
30
  *
19
31
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
20
- * @param {void} [_] unused parameter
21
- * @param {void} [__] unused parameter
32
+ * @param {void | string[]} [_] unused parameter
33
+ * @param {void | string[]} [__] unused parameter
22
34
  * @param {string} [key] customer key of single item to retrieve
23
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
35
+ * @returns {Promise.<MetadataTypeMapObj>} Promise
24
36
  */
25
37
  static async retrieve(retrieveDir, _, __, key) {
26
38
  return super.retrieveREST(retrieveDir, '/automation/v1/filetransfers/', null, key);
@@ -28,7 +40,7 @@ class FileTransfer extends MetadataType {
28
40
  /**
29
41
  * Retrieves Metadata of FileTransfer Activity for caching
30
42
  *
31
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
43
+ * @returns {Promise.<MetadataTypeMapObj>} Promise
32
44
  */
33
45
  static async retrieveForCache() {
34
46
  return super.retrieveREST(null, '/automation/v1/filetransfers/');
@@ -39,8 +51,8 @@ class FileTransfer extends MetadataType {
39
51
  *
40
52
  * @param {string} templateDir Directory where retrieved metadata directory will be saved
41
53
  * @param {string} name name of the metadata file
42
- * @param {TYPE.TemplateMap} templateVariables variables to be replaced in the metadata
43
- * @returns {Promise.<TYPE.MetadataTypeItemObj>} Promise
54
+ * @param {TemplateMap} templateVariables variables to be replaced in the metadata
55
+ * @returns {Promise.<MetadataTypeItemObj>} Promise
44
56
  */
45
57
  static async retrieveAsTemplate(templateDir, name, templateVariables) {
46
58
  const res = await this.client.rest.get(
@@ -61,7 +73,7 @@ class FileTransfer extends MetadataType {
61
73
  const originalKey = extended[this.definition.keyField];
62
74
  const val = JSON.parse(
63
75
  Util.replaceByObject(
64
- JSON.stringify(this.parseMetadata(extended)),
76
+ JSON.stringify(this.postRetrieveTasks(extended)),
65
77
  templateVariables
66
78
  )
67
79
  );
@@ -86,21 +98,10 @@ class FileTransfer extends MetadataType {
86
98
  }
87
99
  }
88
100
 
89
- /**
90
- * manages post retrieve steps
91
- *
92
- * @param {TYPE.MetadataTypeItem} metadata a single fileTransfer activity definition
93
- * @returns {object[]} metadata
94
- */
95
- static postRetrieveTasks(metadata) {
96
- const values = this.parseMetadata(metadata);
97
- return values;
98
- }
99
-
100
101
  /**
101
102
  * Creates a single File Transfer
102
103
  *
103
- * @param {TYPE.MetadataTypeItem} fileTransfer a single File Transfer
104
+ * @param {MetadataTypeItem} fileTransfer a single File Transfer
104
105
  * @returns {Promise} Promise
105
106
  */
106
107
  static create(fileTransfer) {
@@ -110,7 +111,7 @@ class FileTransfer extends MetadataType {
110
111
  /**
111
112
  * Updates a single File Transfer
112
113
  *
113
- * @param {TYPE.MetadataTypeItem} fileTransfer a single File Transfer
114
+ * @param {MetadataTypeItem} fileTransfer a single File Transfer
114
115
  * @returns {Promise} Promise
115
116
  */
116
117
  static update(fileTransfer) {
@@ -120,7 +121,7 @@ class FileTransfer extends MetadataType {
120
121
  /**
121
122
  * prepares a fileTransfer for deployment
122
123
  *
123
- * @param {TYPE.MetadataTypeItem} metadata a single fileTransfer activity definition
124
+ * @param {MetadataTypeItem} metadata a single fileTransfer activity definition
124
125
  * @returns {Promise} Promise
125
126
  */
126
127
  static async preDeployTasks(metadata) {
@@ -139,13 +140,14 @@ class FileTransfer extends MetadataType {
139
140
  }
140
141
  return metadata;
141
142
  }
143
+
142
144
  /**
143
- * parses retrieved Metadata before saving
145
+ * manages post retrieve steps
144
146
  *
145
- * @param {TYPE.MetadataTypeItem} metadata a single fileTransfer activity definition
146
- * @returns {TYPE.MetadataTypeItem} parsed metadata
147
+ * @param {MetadataTypeItem} metadata a single fileTransfer activity definition
148
+ * @returns {MetadataTypeItem} parsed metadata
147
149
  */
148
- static parseMetadata(metadata) {
150
+ static postRetrieveTasks(metadata) {
149
151
  try {
150
152
  metadata.r__fileLocation_name = cache.searchForField(
151
153
  'fileLocation',
@@ -162,6 +164,40 @@ class FileTransfer extends MetadataType {
162
164
 
163
165
  return metadata;
164
166
  }
167
+
168
+ /**
169
+ * helper to allow us to select single metadata entries via REST
170
+ *
171
+ * @private
172
+ * @param {string} key customer key
173
+ * @returns {Promise.<string>} objectId or enpty string
174
+ */
175
+ static async _getObjectIdForSingleRetrieve(key) {
176
+ const name = key.startsWith('name:') ? key.slice(5) : null;
177
+ const filter = name ? '?$filter=name%20eq%20' + encodeURIComponent(name) : '';
178
+ const results = await this.client.rest.get('/automation/v1/filetransfers/' + filter);
179
+ const items = results?.items || [];
180
+ const found = items.find((item) =>
181
+ name ? item[this.definition.nameField] === name : item[this.definition.keyField] === key
182
+ );
183
+ return found?.id || null;
184
+ }
185
+
186
+ /**
187
+ * Delete a metadata item from the specified business unit
188
+ *
189
+ * @param {string} customerKey Identifier of data extension
190
+ * @returns {Promise.<boolean>} deletion success flag
191
+ */
192
+ static async deleteByKey(customerKey) {
193
+ // delete only works with the query's object id
194
+ const objectId = customerKey ? await this._getObjectIdForSingleRetrieve(customerKey) : null;
195
+ if (!objectId) {
196
+ Util.logger.error(` - fileTransfer not found`);
197
+ return false;
198
+ }
199
+ return super.deleteByKeyREST('/automation/v1/filetransfers/' + objectId, customerKey);
200
+ }
165
201
  }
166
202
 
167
203
  // Assign definition to static attributes
@@ -1,8 +1,20 @@
1
1
  'use strict';
2
2
 
3
- import TYPE from '../../types/mcdev.d.js';
4
3
  import MetadataType from './MetadataType.js';
5
4
 
5
+ /**
6
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
7
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
8
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
9
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
10
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
11
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
12
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
13
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
14
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
15
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
16
+ */
17
+
6
18
  /**
7
19
  * Filter MetadataType
8
20
  *
@@ -16,10 +28,10 @@ class Filter extends MetadataType {
16
28
  * Filters with the endpoint /automation/v1/filters/{id}
17
29
  *
18
30
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
19
- * @param {void} [_] unused parameter
20
- * @param {void} [__] unused parameter
31
+ * @param {void | string[]} [_] unused parameter
32
+ * @param {void | string[]} [__] unused parameter
21
33
  * @param {string} [key] customer key of single item to retrieve
22
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
34
+ * @returns {Promise.<MetadataTypeMapObj>} Promise
23
35
  */
24
36
  static async retrieve(retrieveDir, _, __, key) {
25
37
  return super.retrieveREST(retrieveDir, '/automation/v1/filters/', null, key);
@@ -1,12 +1,24 @@
1
1
  'use strict';
2
2
 
3
- import TYPE from '../../types/mcdev.d.js';
4
3
  import MetadataType from './MetadataType.js';
5
4
  import toposort from 'toposort';
6
5
  import { Util } from '../util/util.js';
7
6
  import File from '../util/file.js';
8
7
  import cache from '../util/cache.js';
9
8
 
9
+ /**
10
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
11
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
12
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
13
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
14
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
15
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
16
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
17
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
18
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
19
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
20
+ */
21
+
10
22
  /**
11
23
  * Folder MetadataType
12
24
  *
@@ -150,7 +162,7 @@ class Folder extends MetadataType {
150
162
  /**
151
163
  * Retrieves folder metadata for caching
152
164
  *
153
- * @param {void} _ unused
165
+ * @param {void | string[]} [_] parameter not used
154
166
  * @param {string[]} [subTypeArr] content type of folder
155
167
  * @returns {Promise} Promise
156
168
  */
@@ -163,11 +175,11 @@ class Folder extends MetadataType {
163
175
  * and comparing to check if create or update operation is needed.
164
176
  * Copied due to having a dependency on itself, meaning the created need to be serial
165
177
  *
166
- * @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
178
+ * @param {MetadataTypeMap} metadata metadata mapped by their keyField
167
179
  * @returns {Promise.<object>} Promise of saved metadata
168
180
  */
169
181
  static async upsert(metadata) {
170
- const orignalMetadata = JSON.parse(JSON.stringify(metadata));
182
+ const orignalMetadata = structuredClone(metadata);
171
183
  let updateCount = 0;
172
184
  let updateFailedCount = 0;
173
185
  let createCount = 0;
@@ -211,13 +223,12 @@ class Folder extends MetadataType {
211
223
  );
212
224
  if (
213
225
  existingId &&
214
- (metadata[metadataKey]._generated || // of generated, never "update"
215
- !this.hasChangedGeneric(
216
- cachedVersion,
217
- metadata[metadataKey],
218
- 'Path',
219
- true
220
- ))
226
+ !this.hasChangedGeneric(
227
+ cachedVersion,
228
+ metadata[metadataKey],
229
+ 'Path',
230
+ true
231
+ )
221
232
  ) {
222
233
  Util.logger.verbose(
223
234
  ` - skipping ${this.definition.type} ${
@@ -234,13 +245,12 @@ class Folder extends MetadataType {
234
245
  existingId = cachedVersion?.ID;
235
246
  if (
236
247
  existingId &&
237
- (metadata[metadataKey]._generated || // of generated, never "update"
238
- !this.hasChangedGeneric(
239
- cachedVersion,
240
- metadata[metadataKey],
241
- 'Path',
242
- true
243
- ))
248
+ !this.hasChangedGeneric(
249
+ cachedVersion,
250
+ metadata[metadataKey],
251
+ 'Path',
252
+ true
253
+ )
244
254
  ) {
245
255
  Util.logger.verbose(
246
256
  ` - skipping ${this.definition.type} ${
@@ -255,7 +265,7 @@ class Folder extends MetadataType {
255
265
 
256
266
  let result;
257
267
  // since deployableMetadata will be modified for deploy, make a copy for reference
258
- const beforeMetadata = JSON.parse(JSON.stringify(deployableMetadata));
268
+ const beforeMetadata = structuredClone(deployableMetadata);
259
269
  if (existingId) {
260
270
  // if an existing folder exists with the same name/path then use that
261
271
  deployableMetadata.ID = existingId;
@@ -329,7 +339,7 @@ class Folder extends MetadataType {
329
339
  /**
330
340
  * creates a folder based on metatadata
331
341
  *
332
- * @param {TYPE.MetadataTypeItem} metadataEntry metadata of the folder
342
+ * @param {MetadataTypeItem} metadataEntry metadata of the folder
333
343
  * @returns {Promise} Promise
334
344
  */
335
345
  static async create(metadataEntry) {
@@ -341,15 +351,29 @@ class Folder extends MetadataType {
341
351
  }
342
352
  const path = metadataEntry.Path;
343
353
  try {
344
- const response = await super.createSOAP(metadataEntry, true);
345
- if (response) {
346
- response.Results[0].Object = metadataEntry;
347
- response.Results[0].Object.ID = response.Results[0].NewID;
348
- response.Results[0].Object.CustomerKey = metadataEntry.CustomerKey;
349
- delete response.Results[0].Object.$;
354
+ // * We tried using the SOAP endpoint for creating folders but that did not support folders for automations nor journeys. This rest endpoint seems to cover everything though
355
+ const restPayload = {
356
+ parentCatId: metadataEntry.ParentFolder.ID,
357
+ name: metadataEntry.Name,
358
+ catType: metadataEntry.ContentType,
359
+ };
360
+ const response = await super.createREST(restPayload, '/email/v1/category', true);
361
+ if (response?.objectId) {
362
+ // convert the response to the same format as the SOAP response
363
+ metadataEntry.ID = response.objectId;
364
+ // the following is a bit of a hack to make the response look like the SOAP response; not sure if we actually need that anywhere like this --> future developers feel free to double check
365
+ const returnObject = {
366
+ Results: [
367
+ {
368
+ Object: metadataEntry,
369
+ },
370
+ ],
371
+ };
350
372
 
351
373
  Util.logger.info(` - created folder: ${path}`);
352
- return response;
374
+ return returnObject;
375
+ } else {
376
+ throw new Error(response);
353
377
  }
354
378
  } catch (ex) {
355
379
  if (ex?.results) {
@@ -367,7 +391,7 @@ class Folder extends MetadataType {
367
391
  /**
368
392
  * Updates a single Folder.
369
393
  *
370
- * @param {TYPE.MetadataTypeItem} metadataEntry single metadata entry
394
+ * @param {MetadataTypeItem} metadataEntry single metadata entry
371
395
  * @returns {Promise} Promise
372
396
  */
373
397
  static async update(metadataEntry) {
@@ -397,8 +421,8 @@ class Folder extends MetadataType {
397
421
  /**
398
422
  * prepares a folder for deployment
399
423
  *
400
- * @param {TYPE.MetadataTypeItem} metadata a single folder definition
401
- * @returns {Promise.<TYPE.MetadataTypeItem>} Promise of parsed folder metadata
424
+ * @param {MetadataTypeItem} metadata a single folder definition
425
+ * @returns {Promise.<MetadataTypeItem>} Promise of parsed folder metadata
402
426
  */
403
427
  static async preDeployTasks(metadata) {
404
428
  if (!this.definition.deployFolderTypes.includes(metadata.ContentType.toLowerCase())) {
@@ -453,13 +477,17 @@ class Folder extends MetadataType {
453
477
  *
454
478
  * @param {string} dir directory that contains '.json' files to be read
455
479
  * @param {boolean} [listBadKeys] do not print errors, used for badKeys()
456
- * @returns {TYPE.MetadataTypeMap} fileName => fileContent map
480
+ * @returns {Promise.<MetadataTypeMap>} fileName => fileContent map
457
481
  */
458
- static getJsonFromFS(dir, listBadKeys) {
482
+ static async getJsonFromFS(dir, listBadKeys) {
459
483
  try {
484
+ /** @type {MetadataTypeMap} */
460
485
  const fileName2FileContent = {};
461
486
  const directories = File.readDirectoriesSync(dir, 10, true);
462
487
  let newCounter = 0;
488
+ if (!Array.isArray(directories)) {
489
+ return fileName2FileContent;
490
+ }
463
491
  for (const subdir of directories) {
464
492
  // standardise to / and then remove the stem up until folder as this
465
493
  // should not be in the path for the metadata. In case no split then return empty as this is root
@@ -467,10 +495,10 @@ class Folder extends MetadataType {
467
495
  const standardSubDir = File.reverseFilterIllegalFilenames(
468
496
  subdir.replaceAll('\\', '/').split(/folder\//)[1] || ''
469
497
  );
470
- for (const fileName of File.readdirSync(subdir)) {
498
+ for (const fileName of await File.readdir(subdir)) {
471
499
  try {
472
500
  if (fileName.endsWith('meta.json')) {
473
- const fileContent = File.readJSONFile(subdir, fileName, true, false);
501
+ const fileContent = await File.readJSONFile(subdir, fileName, false);
474
502
 
475
503
  const fileNameWithoutEnding = File.reverseFilterIllegalFilenames(
476
504
  fileName.split(/\.(\w|-)+-meta.json/)[0]
@@ -558,18 +586,18 @@ class Folder extends MetadataType {
558
586
  /**
559
587
  * Gets executed after retreive of metadata type
560
588
  *
561
- * @param {TYPE.MetadataTypeItem} metadata metadata mapped by their keyField
562
- * @returns {TYPE.MetadataTypeItem} cloned metadata
589
+ * @param {MetadataTypeItem} metadata metadata mapped by their keyField
590
+ * @returns {MetadataTypeItem} cloned metadata
563
591
  */
564
592
  static postRetrieveTasks(metadata) {
565
- return JSON.parse(JSON.stringify(metadata));
593
+ return structuredClone(metadata);
566
594
  }
567
595
  /**
568
596
  * Helper for writing Metadata to disk, used for Retrieve and deploy
569
597
  *
570
- * @param {object} results metadata results from deploy
598
+ * @param {MetadataTypeMap} results metadata results from deploy
571
599
  * @param {string} retrieveDir directory where metadata should be stored after deploy/retrieve
572
- * @param {number} mid current mid for this credential / business unit
600
+ * @param {number | string} mid unused parameter
573
601
  * @returns {Promise.<object>} Promise of saved metadata
574
602
  */
575
603
  static async saveResults(results, retrieveDir, mid) {