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,21 +1,37 @@
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
 
6
+ /**
7
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
8
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
9
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
10
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
11
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
12
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
13
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
14
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
15
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
16
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
17
+ */
18
+ /**
19
+ * @typedef {import('../../types/mcdev.d.js').DataExtensionFieldMap} DataExtensionFieldMap
20
+ * @typedef {import('../../types/mcdev.d.js').DataExtensionFieldItem} DataExtensionFieldItem
21
+ */
7
22
  /**
8
23
  * DataExtensionField MetadataType
9
24
  *
10
25
  * @augments MetadataType
11
26
  */
12
27
  class DataExtensionField extends MetadataType {
28
+ static fixShared_fields;
13
29
  /**
14
30
  * Retrieves all records and saves it to disk
15
31
  *
16
32
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
17
33
  * @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
18
- * @returns {Promise.<{metadata: TYPE.DataExtensionFieldMap, type: string}>} Promise of items
34
+ * @returns {Promise.<{metadata: DataExtensionFieldMap, type: string}>} Promise of items
19
35
  */
20
36
  static async retrieve(retrieveDir, additionalFields) {
21
37
  return super.retrieveSOAP(retrieveDir, null, null, additionalFields);
@@ -23,18 +39,18 @@ class DataExtensionField extends MetadataType {
23
39
  /**
24
40
  * Retrieves all records for caching
25
41
  *
26
- * @param {TYPE.SoapRequestParams} [requestParams] required for the specific request (filter for example)
42
+ * @param {SoapRequestParams} [requestParams] required for the specific request (filter for example)
27
43
  * @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
28
- * @returns {Promise.<{metadata: TYPE.DataExtensionFieldMap, type: string}>} Promise of items
44
+ * @returns {Promise.<{metadata: DataExtensionFieldMap, type: string}>} Promise of items
29
45
  */
30
- static async retrieveForCache(requestParams, additionalFields) {
46
+ static async retrieveForCacheDE(requestParams, additionalFields) {
31
47
  return super.retrieveSOAP(null, requestParams, null, additionalFields);
32
48
  }
33
49
  /**
34
50
  * helper for DataExtension.retrieveFieldsForSingleDe that sorts the fields into an array
35
51
  *
36
- * @param {TYPE.DataExtensionFieldMap} fieldsObj customerKey-based list of fields for one dataExtension
37
- * @returns {TYPE.DataExtensionFieldItem[]} sorted array of field objects
52
+ * @param {DataExtensionFieldMap} fieldsObj customerKey-based list of fields for one dataExtension
53
+ * @returns {DataExtensionFieldItem[]} sorted array of field objects
38
54
  */
39
55
  static convertToSortedArray(fieldsObj) {
40
56
  return (
@@ -48,45 +64,30 @@ class DataExtensionField extends MetadataType {
48
64
  /**
49
65
  * sorting method to ensure `Ordinal` is respected
50
66
  *
51
- * @param {TYPE.DataExtensionFieldItem} a -
52
- * @param {TYPE.DataExtensionFieldItem} b -
53
- * @returns {boolean} sorting based on Ordinal
67
+ * @param {DataExtensionFieldItem} a -
68
+ * @param {DataExtensionFieldItem} b -
69
+ * @returns {number} sorting based on Ordinal
54
70
  */
55
71
  static sortDeFields(a, b) {
56
72
  return a.Ordinal - b.Ordinal;
57
73
  }
58
74
  /**
59
- * manages post retrieve steps
75
+ * manages post retrieve steps; only used by DataExtension class
60
76
  *
61
- * @param {TYPE.DataExtensionFieldItem} metadata a single item
62
- * @param {boolean} forDataExtension when used by DataExtension class we remove more fields
63
- * @returns {TYPE.DataExtensionFieldItem} metadata
77
+ * @param {DataExtensionFieldItem} metadata a single item
78
+ * @returns {DataExtensionFieldItem} metadata
64
79
  */
65
- static postRetrieveTasks(metadata, forDataExtension) {
66
- return this._parseMetadata(metadata, forDataExtension);
67
- }
80
+ static postRetrieveTasksDE(metadata) {
81
+ // remove fields according to definition
82
+ this.keepRetrieveFields(metadata);
68
83
 
69
- /**
70
- * parses retrieved Metadata before saving
71
- *
72
- * @private
73
- * @param {TYPE.DataExtensionFieldItem} metadata a single record
74
- * @param {boolean} forDataExtension when used by DataExtension class we remove more fields
75
- * @returns {TYPE.DataExtensionFieldItem} parsed metadata definition
76
- */
77
- static _parseMetadata(metadata, forDataExtension) {
78
- if (forDataExtension) {
79
- // remove fields according to definition
80
- this.keepRetrieveFields(metadata);
81
-
82
- // remove fields that we do not need after association to a DE
83
- delete metadata.CustomerKey;
84
- delete metadata.DataExtension;
85
- delete metadata.Ordinal;
86
- if (metadata.FieldType !== 'Decimal') {
87
- // remove scale - it's only used for "Decimal" to define the digits behind the decimal
88
- delete metadata.Scale;
89
- }
84
+ // remove fields that we do not need after association to a DE
85
+ delete metadata.CustomerKey;
86
+ delete metadata.DataExtension;
87
+ delete metadata.Ordinal;
88
+ if (metadata.FieldType !== 'Decimal') {
89
+ // remove scale - it's only used for "Decimal" to define the digits behind the decimal
90
+ delete metadata.Scale;
90
91
  }
91
92
  return metadata;
92
93
  }
@@ -94,9 +95,9 @@ class DataExtensionField extends MetadataType {
94
95
  * Mofifies passed deployColumns for update by mapping ObjectID to their target column's values.
95
96
  * Removes FieldType field if its the same in deploy and target column, because it results in an error even if its of the same type
96
97
  *
97
- * @param {TYPE.DataExtensionFieldItem[]} deployColumns Columns of data extension that will be deployed
98
+ * @param {DataExtensionFieldItem[]} deployColumns Columns of data extension that will be deployed
98
99
  * @param {string} deKey external/customer key of Data Extension
99
- * @returns {Promise.<Object.<string, TYPE.DataExtensionFieldItem>>} existing fields by their original name to allow re-adding FieldType after update
100
+ * @returns {Promise.<Object.<string, DataExtensionFieldItem>>} existing fields by their original name to allow re-adding FieldType after update
100
101
  */
101
102
  static async prepareDeployColumnsOnUpdate(deployColumns, deKey) {
102
103
  // create list of DE keys that had changes to their fields to be able to use it as a filter in the --fixShared logic
@@ -117,7 +118,7 @@ class DataExtensionField extends MetadataType {
117
118
  }
118
119
 
119
120
  // retrieve existing fields to enable updating them
120
- const response = await this.retrieveForCache(
121
+ const response = await this.retrieveForCacheDE(
121
122
  {
122
123
  filter: {
123
124
  leftOperand: 'DataExtension.CustomerKey',
@@ -131,7 +132,7 @@ class DataExtensionField extends MetadataType {
131
132
  const fieldsObj = response.metadata;
132
133
 
133
134
  // ensure fields can be updated properly by their adding ObjectId based on Name-matching
134
- /** @type {Object.<string, TYPE.DataExtensionFieldItem>} */
135
+ /** @type {Object.<string, DataExtensionFieldItem>} */
135
136
  const existingFieldByName = {};
136
137
 
137
138
  for (const key of Object.keys(fieldsObj)) {
@@ -189,7 +190,7 @@ class DataExtensionField extends MetadataType {
189
190
  }
190
191
  }
191
192
  // share fields with fixShared logic
192
- this.fixShared_fields[deKey][item.Name] = JSON.parse(JSON.stringify(item));
193
+ this.fixShared_fields[deKey][item.Name] = structuredClone(item);
193
194
  this.fixShared_fields[deKey][item.Name].FieldType = itemOld.FieldType;
194
195
 
195
196
  if (!changeFound) {
@@ -226,7 +227,7 @@ class DataExtensionField extends MetadataType {
226
227
  // Field doesn't exist in target, therefore Remove ObjectID if present
227
228
  delete item.ObjectID;
228
229
 
229
- this.fixShared_fields[deKey][item.Name] = JSON.parse(JSON.stringify(item));
230
+ this.fixShared_fields[deKey][item.Name] = structuredClone(item);
230
231
  }
231
232
  if (Util.isTrue(item.IsPrimaryKey) && Util.isFalse(item.IsRequired)) {
232
233
  // applicable: with or without data
@@ -268,7 +269,7 @@ class DataExtensionField extends MetadataType {
268
269
  * @param {string} customerKey Identifier of data extension
269
270
  * @returns {Promise.<boolean>} deletion success status
270
271
  */
271
- static deleteByKey(customerKey) {
272
+ static async deleteByKey(customerKey) {
272
273
  return this.deleteByKeySOAP(customerKey);
273
274
  }
274
275
 
@@ -277,7 +278,7 @@ class DataExtensionField extends MetadataType {
277
278
  *
278
279
  * @param {string} customerKey Identifier of metadata
279
280
  * @param {string} [fieldId] for programmatic deletes only one can pass in the ID directly
280
- * @returns {boolean} deletion success flag
281
+ * @returns {Promise.<boolean>} deletion success flag
281
282
  */
282
283
  static async deleteByKeySOAP(customerKey, fieldId) {
283
284
  const [deKey, fieldKey] = customerKey.split('.');
@@ -286,7 +287,7 @@ class DataExtensionField extends MetadataType {
286
287
  let fieldObjectID = fieldId;
287
288
  // get the object id
288
289
  if (!fieldObjectID) {
289
- const response = await this.retrieveForCache(
290
+ const response = await this.retrieveForCacheDE(
290
291
  {
291
292
  filter: {
292
293
  leftOperand: 'CustomerKey',
@@ -313,11 +314,9 @@ class DataExtensionField extends MetadataType {
313
314
  },
314
315
  };
315
316
  try {
316
- this.client.soap.delete(
317
- 'DataExtension', // yes, not DataExtensionField
318
- keyObj,
319
- null
320
- );
317
+ // ! we really do need to delete from DataExtension not DataExtensionField here!
318
+ // @ts-expect-error wrong jsdoc for 2nd parameter in SFMC-SDK
319
+ this.client.soap.delete('DataExtension', keyObj, null);
321
320
 
322
321
  if (!fieldId) {
323
322
  Util.logger.info(` - deleted ${this.definition.type}: ${customerKey}`);
@@ -339,7 +338,7 @@ class DataExtensionField extends MetadataType {
339
338
  * clean up after deleting a metadata item
340
339
  *
341
340
  * @param {string} customerKey Identifier of metadata item
342
- * @returns {void}
341
+ * @returns {Promise.<void>} -
343
342
  */
344
343
  static async postDeleteTasks(customerKey) {
345
344
  // TODO actually clean up local dataextension json
@@ -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
  * DataExtensionTemplate MetadataType
8
20
  *
@@ -13,13 +25,13 @@ class DataExtensionTemplate extends MetadataType {
13
25
  * Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
14
26
  *
15
27
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
16
- * @param {void} [_] unused parameter
17
- * @param {void} [__] unused parameter
28
+ * @param {void | string[]} [_] unused parameter
29
+ * @param {void | string[]} [__] unused parameter
18
30
  * @param {string} [key] customer key of single item to retrieve
19
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
31
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
20
32
  */
21
33
  static retrieve(retrieveDir, _, __, key) {
22
- /** @type {TYPE.SoapRequestParams} */
34
+ /** @type {SoapRequestParams} */
23
35
  let requestParams = null;
24
36
  if (key) {
25
37
  requestParams = {
@@ -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
  * DataExtract MetadataType
11
23
  *
@@ -17,10 +29,10 @@ class DataExtract extends MetadataType {
17
29
  * Endpoint /automation/v1/dataextracts/ returns all Data Extracts
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 of metadata
35
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
24
36
  */
25
37
  static async retrieve(retrieveDir, _, __, key) {
26
38
  return super.retrieveREST(retrieveDir, '/automation/v1/dataextracts/', null, key);
@@ -28,7 +40,7 @@ class DataExtract extends MetadataType {
28
40
  /**
29
41
  * Retrieves Metadata of Data Extract Activity for caching
30
42
  *
31
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
43
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
32
44
  */
33
45
  static async retrieveForCache() {
34
46
  return super.retrieveREST(null, '/automation/v1/dataextracts/');
@@ -39,8 +51,8 @@ class DataExtract 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 of metadata
54
+ * @param {TemplateMap} templateVariables variables to be replaced in the metadata
55
+ * @returns {Promise.<MetadataTypeItemObj>} Promise of metadata
44
56
  */
45
57
  static async retrieveAsTemplate(templateDir, name, templateVariables) {
46
58
  const res = await this.client.rest.get(
@@ -61,7 +73,7 @@ class DataExtract 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,20 +98,10 @@ class DataExtract extends MetadataType {
86
98
  }
87
99
  }
88
100
 
89
- /**
90
- * manages post retrieve steps
91
- *
92
- * @param {TYPE.MetadataTypeItem} fileTransfer a single fileTransfer
93
- * @returns {TYPE.MetadataTypeItem} metadata
94
- */
95
- static postRetrieveTasks(fileTransfer) {
96
- return this.parseMetadata(fileTransfer);
97
- }
98
-
99
101
  /**
100
102
  * Creates a single Data Extract
101
103
  *
102
- * @param {TYPE.MetadataTypeItem} dataExtract a single Data Extract
104
+ * @param {MetadataTypeItem} dataExtract a single Data Extract
103
105
  * @returns {Promise} Promise
104
106
  */
105
107
  static create(dataExtract) {
@@ -109,7 +111,7 @@ class DataExtract extends MetadataType {
109
111
  /**
110
112
  * Updates a single Data Extract
111
113
  *
112
- * @param {TYPE.MetadataTypeItem} dataExtract a single Data Extract
114
+ * @param {MetadataTypeItem} dataExtract a single Data Extract
113
115
  * @returns {Promise} Promise
114
116
  */
115
117
  static update(dataExtract) {
@@ -122,8 +124,8 @@ class DataExtract extends MetadataType {
122
124
  /**
123
125
  * prepares a dataExtract for deployment
124
126
  *
125
- * @param {TYPE.MetadataTypeItem} metadata a single dataExtract activity definition
126
- * @returns {TYPE.MetadataTypeItem} metadata object
127
+ * @param {MetadataTypeItem} metadata a single dataExtract activity definition
128
+ * @returns {MetadataTypeItem} metadata object
127
129
  */
128
130
  static preDeployTasks(metadata) {
129
131
  metadata.dataExtractTypeId = cache.searchForField(
@@ -136,12 +138,12 @@ class DataExtract extends MetadataType {
136
138
  return metadata;
137
139
  }
138
140
  /**
139
- * parses retrieved Metadata before saving
141
+ * manages post retrieve steps
140
142
  *
141
- * @param {TYPE.MetadataTypeItem} metadata a single dataExtract activity definition
142
- * @returns {TYPE.MetadataTypeItem} Array with one metadata object and one sql string
143
+ * @param {MetadataTypeItem} metadata a single item
144
+ * @returns {MetadataTypeItem} metadata
143
145
  */
144
- static parseMetadata(metadata) {
146
+ static postRetrieveTasks(metadata) {
145
147
  try {
146
148
  metadata.r__dataExtractType_name = cache.searchForField(
147
149
  'dataExtractType',
@@ -155,7 +157,40 @@ class DataExtract extends MetadataType {
155
157
  ` - ${this.definition.type} ${metadata[this.definition.keyField]}: ${ex.message}`
156
158
  );
157
159
  }
158
- return JSON.parse(JSON.stringify(metadata));
160
+ return structuredClone(metadata);
161
+ }
162
+ /**
163
+ * helper to allow us to select single metadata entries via REST
164
+ *
165
+ * @private
166
+ * @param {string} key customer key
167
+ * @returns {Promise.<string>} objectId or enpty string
168
+ */
169
+ static async _getObjectIdForSingleRetrieve(key) {
170
+ const name = key.startsWith('name:') ? key.slice(5) : null;
171
+ const filter = name ? '?$filter=name%20eq%20' + encodeURIComponent(name) : '';
172
+ const results = await this.client.rest.get('/automation/v1/dataextracts/' + filter);
173
+ const items = results?.items || [];
174
+ const found = items.find((item) =>
175
+ name ? item[this.definition.nameField] === name : item[this.definition.keyField] === key
176
+ );
177
+ return found?.dataExtractDefinitionId || null;
178
+ }
179
+
180
+ /**
181
+ * Delete a metadata item from the specified business unit
182
+ *
183
+ * @param {string} customerKey Identifier of data extension
184
+ * @returns {Promise.<boolean>} deletion success flag
185
+ */
186
+ static async deleteByKey(customerKey) {
187
+ // delete only works with the query's object id
188
+ const objectId = customerKey ? await this._getObjectIdForSingleRetrieve(customerKey) : null;
189
+ if (!objectId) {
190
+ Util.logger.error(` - dataExtract not found`);
191
+ return false;
192
+ }
193
+ return super.deleteByKeyREST('/automation/v1/dataextracts/' + objectId, customerKey);
159
194
  }
160
195
  }
161
196
 
@@ -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
  * DataExtractType MetadataType
8
20
  * Only for Caching No retrieve/upsert is required
@@ -15,10 +27,10 @@ class DataExtractType extends MetadataType {
15
27
  * Retrieves Metadata of Data Extract Type.
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 of metadata
33
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
22
34
  */
23
35
  static retrieve(retrieveDir, _, __, key) {
24
36
  return super.retrieveREST(retrieveDir, '/automation/v1/dataextracttypes/', null, key);
@@ -26,7 +38,7 @@ class DataExtractType extends MetadataType {
26
38
  /**
27
39
  * Retrieves Metadata of Data Extract Type for caching.
28
40
  *
29
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
41
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
30
42
  */
31
43
  static retrieveForCache() {
32
44
  return super.retrieveREST(null, '/automation/v1/dataextracttypes/');
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ import MetadataType from './MetadataType.js';
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
+
18
+ /**
19
+ * DeliveryProfile MetadataType
20
+ *
21
+ * @augments MetadataType
22
+ */
23
+ class DeliveryProfile extends MetadataType {
24
+ /**
25
+ * Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
26
+ *
27
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
28
+ * @param {void | string[]} [_] not used
29
+ * @param {void | string[]} [__] unused parameter
30
+ * @param {string} [key] customer key of single item to retrieve
31
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
32
+ */
33
+ static retrieve(retrieveDir, _, __, key) {
34
+ return super.retrieveREST(
35
+ retrieveDir,
36
+ '/legacy/v1/beta/messaging/deliverypolicy/',
37
+ null,
38
+ key
39
+ );
40
+ }
41
+ }
42
+
43
+ // Assign definition to static attributes
44
+ import MetadataTypeDefinitions from '../MetadataTypeDefinitions.js';
45
+ DeliveryProfile.definition = MetadataTypeDefinitions.deliveryProfile;
46
+
47
+ export default DeliveryProfile;
@@ -1,9 +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
  import { Util } from '../util/util.js';
6
5
 
6
+ /**
7
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
8
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
9
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
10
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
11
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
12
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
13
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
14
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
15
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
16
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
17
+ */
7
18
  /**
8
19
  * ImportFile MetadataType
9
20
  *
@@ -15,10 +26,10 @@ class Discovery extends MetadataType {
15
26
  * documentation: https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-apis.meta/mc-apis/routes.htm
16
27
  *
17
28
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
18
- * @param {void} [_] not used
19
- * @param {void} [__] unused parameter
29
+ * @param {void | string[]} [_] not used
30
+ * @param {void | string[]} [__] unused parameter
20
31
  * @param {string} [key] customer key of single item to retrieve
21
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
32
+ * @returns {Promise.<MetadataTypeMapObj>} Promise
22
33
  */
23
34
  static async retrieve(retrieveDir, _, __, key) {
24
35
  if (key) {
@@ -1,9 +1,21 @@
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
 
6
+ /**
7
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
8
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
9
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
10
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
11
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
12
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
13
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
14
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
15
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
16
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
17
+ */
18
+
7
19
  /**
8
20
  * Email MetadataType
9
21
  *
@@ -14,13 +26,13 @@ class Email extends MetadataType {
14
26
  * Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
15
27
  *
16
28
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
17
- * @param {void} [_] unused parameter
18
- * @param {void} [__] unused parameter
29
+ * @param {void | string[]} [_] unused parameter
30
+ * @param {void | string[]} [__] unused parameter
19
31
  * @param {string} [key] customer key of single item to retrieve
20
- * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
32
+ * @returns {Promise.<MetadataTypeMapObj>} Promise of metadata
21
33
  */
22
34
  static retrieve(retrieveDir, _, __, key) {
23
- /** @type {TYPE.SoapRequestParams} */
35
+ /** @type {SoapRequestParams} */
24
36
  let requestParams = null;
25
37
  if (key) {
26
38
  requestParams = {
@@ -37,11 +49,11 @@ class Email extends MetadataType {
37
49
  /**
38
50
  * Helper for writing Metadata to disk, used for Retrieve and deploy
39
51
  *
40
- * @param {TYPE.MetadataTypeMap} results metadata results from deploy
52
+ * @param {MetadataTypeMap} results metadata results from deploy
41
53
  * @param {string} retrieveDir directory where metadata should be stored after deploy/retrieve
42
54
  * @param {string} [overrideType] for use when there is a subtype (such as folder-queries)
43
- * @param {TYPE.TemplateMap} [templateVariables] variables to be replaced in the metadata
44
- * @returns {Promise.<TYPE.MetadataTypeMap>} Promise of saved metadata
55
+ * @param {TemplateMap} [templateVariables] variables to be replaced in the metadata
56
+ * @returns {Promise.<MetadataTypeMap>} Promise of saved metadata
45
57
  */
46
58
  static async saveResults(results, retrieveDir, overrideType, templateVariables) {
47
59
  if (Object.keys(results).length) {
@@ -55,19 +67,10 @@ class Email extends MetadataType {
55
67
  /**
56
68
  * manages post retrieve steps
57
69
  *
58
- * @param {TYPE.MetadataTypeItem} metadata a single query
59
- * @returns {TYPE.MetadataTypeItem} Array with one metadata object and one query string
70
+ * @param {MetadataTypeItem} metadata a single query
71
+ * @returns {MetadataTypeItem} Array with one metadata object and one query string
60
72
  */
61
73
  static postRetrieveTasks(metadata) {
62
- return this.parseMetadata(metadata);
63
- }
64
- /**
65
- * parses retrieved Metadata before saving
66
- *
67
- * @param {TYPE.MetadataTypeItem} metadata a single query activity definition
68
- * @returns {TYPE.MetadataTypeItem} Array with one metadata object and one sql string
69
- */
70
- static parseMetadata(metadata) {
71
74
  // folder
72
75
  super.setFolderPath(metadata);
73
76