mcdev 6.0.1 → 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 (619) hide show
  1. package/.beautyamp.json +13 -0
  2. package/.eslintrc.json +7 -1
  3. package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
  4. package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +13 -5
  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 +17 -5
  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 +36 -29
  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 +238 -131
  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 +179 -59
  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 +79 -67
  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/MobileKeyword.definition.js +1 -1
  294. package/lib/metadataTypes/definitions/MobileMessage.definition.js +11 -5
  295. package/lib/metadataTypes/definitions/Query.definition.js +6 -0
  296. package/lib/metadataTypes/definitions/Script.definition.js +14 -14
  297. package/lib/metadataTypes/definitions/SendClassification.definition.js +60 -20
  298. package/lib/metadataTypes/definitions/SenderProfile.definition.js +185 -0
  299. package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -2
  300. package/lib/metadataTypes/definitions/TransactionalMessage.definition.js +69 -0
  301. package/lib/metadataTypes/definitions/TransactionalPush.definition.js +6 -0
  302. package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +6 -0
  303. package/lib/metadataTypes/definitions/TriggeredSend.definition.js +15 -4
  304. package/lib/metadataTypes/definitions/Verification.definition.js +1 -1
  305. package/lib/retrieveChangelog.js +7 -2
  306. package/lib/util/auth.js +56 -21
  307. package/lib/util/businessUnit.js +20 -2
  308. package/lib/util/cache.js +37 -18
  309. package/lib/util/cli.js +72 -29
  310. package/lib/util/config.js +27 -9
  311. package/lib/util/devops.js +45 -24
  312. package/lib/util/file.js +66 -41
  313. package/lib/util/init.config.js +55 -24
  314. package/lib/util/init.git.js +6 -6
  315. package/lib/util/init.js +36 -14
  316. package/lib/util/init.npm.js +2 -2
  317. package/lib/util/replaceContentBlockReference.js +278 -0
  318. package/lib/util/util.js +152 -54
  319. package/package.json +37 -34
  320. package/test/general.test.js +1327 -4
  321. package/test/mockRoot/.mcdevrc.json +26 -4
  322. package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testExisting_dataExtensionShared.dataExtension-meta.json +3 -4
  323. package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testNew_dataExtensionShared.dataExtension-meta.json +1 -4
  324. package/test/mockRoot/deploy/testInstance/_ParentBU_/query/testNew_query.query-meta.json +11 -0
  325. package/test/mockRoot/deploy/testInstance/_ParentBU_/query/testNew_query.query-meta.sql +4 -0
  326. package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset.asset-block-meta.html +12 -0
  327. package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset.asset-block-meta.json +39 -0
  328. package/test/mockRoot/deploy/testInstance/testBU/automation/testExisting_automation.automation-meta.json +6 -6
  329. package/test/mockRoot/deploy/testInstance/testBU/automation/testNew_automation.automation-meta.json +7 -7
  330. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testExisting_dataExtension.dataExtension-meta.json +3 -4
  331. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testNew_dataExtension.dataExtension-meta.json +1 -4
  332. package/test/mockRoot/deploy/testInstance/testBU/emailSend/testExisting_emailSend.emailSend-meta.json +36 -0
  333. package/test/mockRoot/deploy/testInstance/testBU/emailSend/testNew_emailSend.emailSend-meta.json +36 -0
  334. package/test/mockRoot/deploy/testInstance/testBU/importFile/testExisting_importFile.importFile-meta.json +10 -4
  335. package/test/mockRoot/deploy/testInstance/testBU/importFile/testNew_importFile.importFile-meta.json +8 -4
  336. package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_journey_Quicksend.journey-meta.json +232 -0
  337. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json +2 -4
  338. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.json +2 -4
  339. package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query.query-meta.json +1 -1
  340. package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query_fixKeys.query-meta.json +1 -1
  341. package/test/mockRoot/deploy/testInstance/testBU/query/testNew_query.query-meta.json +1 -1
  342. package/test/mockRoot/deploy/testInstance/testBU/sendClassification/testExisting_sendClassification.sendClassification-meta.json +8 -0
  343. package/test/mockRoot/deploy/testInstance/testBU/sendClassification/testNew_sendClassification.sendClassification-meta.json +8 -0
  344. package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testExisting_senderProfile.senderProfile-meta.json +14 -0
  345. package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testNew_senderProfile.senderProfile-meta.json +14 -0
  346. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +1 -1
  347. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -1
  348. package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testExisting_tpush.transactionalPush-meta.json +1 -3
  349. package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testNew_tpush.transactionalPush-meta.json +1 -3
  350. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testExisting_tsms.transactionalSMS-meta.json +1 -2
  351. package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testNew_tsms.transactionalSMS-meta.json +1 -2
  352. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testExisting_triggeredSend.triggeredSend-meta.json +4 -5
  353. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testNew_triggeredSend.triggeredSend-meta.json +4 -5
  354. package/test/mockRoot/deploy/testInstance/testBU/verification/testExisting_39f6a488-20eb-4ba0-b0b9.verification-meta.json +1 -1
  355. package/test/mockRoot/deploy/testInstance/testBU/verification/testNew_39f6a488-20eb-4ba0-b0b9.verification-meta.json +1 -1
  356. package/test/resourceFactory.js +118 -7
  357. package/test/resources/1111111/automation/v1/queries/get-response.json +6 -0
  358. package/test/resources/1111111/automation/v1/queries/post-response.json +18 -0
  359. package/test/resources/1111111/dataExtension/create-expected.json +4 -7
  360. package/test/resources/1111111/dataExtension/retrieve-expected.json +2 -4
  361. package/test/resources/1111111/dataExtension/update-expected.json +7 -7
  362. package/test/resources/1111111/dataExtension/update-response.xml +3 -1
  363. package/test/resources/1111111/dataFolder/retrieve-ContentType=queryactivity-response.xml +48 -0
  364. package/test/resources/1111111/query/patch_keySuffix-expected.json +11 -0
  365. package/test/resources/1111111/query/patch_keySuffix-expected.sql +4 -0
  366. package/test/resources/9999999/asset/block-1157-retrieve-expected.html +17 -7
  367. package/test/resources/9999999/asset/build-templatebasedemail-expected.json +81 -0
  368. package/test/resources/9999999/asset/build-templatebasedemail-html-expected.html +20 -0
  369. package/test/resources/9999999/asset/build-templatebasedemail-preheader-expected.amp +1 -0
  370. package/test/resources/9999999/asset/create-expected.json +18 -0
  371. package/test/resources/9999999/asset/resolveId-1234-notFound-expected.json +1 -0
  372. package/test/resources/9999999/asset/resolveId-1295064-noPath-expected.json +8 -0
  373. package/test/resources/9999999/asset/resolveId-1295064-withPath-expected.json +8 -0
  374. package/test/resources/9999999/asset/retrieve-templatebasedemail-expected.json +84 -0
  375. package/test/resources/9999999/asset/retrieve-templatebasedemail-html-expected.html +20 -0
  376. package/test/resources/9999999/asset/retrieve-templatebasedemail-preheader-expected.amp +1 -0
  377. package/test/resources/9999999/asset/template-templatebasedemail-expected.json +81 -0
  378. package/test/resources/9999999/asset/template-templatebasedemail-html-expected.html +20 -0
  379. package/test/resources/9999999/asset/template-templatebasedemail-preheader-expected.amp +1 -0
  380. package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-id-expected.html +33 -0
  381. package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-key-expected.html +33 -0
  382. package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-name-expected.html +35 -0
  383. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-id-expected.amp +4 -0
  384. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-key-expected.amp +4 -0
  385. package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-name-expected.amp +4 -0
  386. package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-id-expected.amp +4 -0
  387. package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-key-expected.amp +4 -0
  388. package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-name-expected.amp +4 -0
  389. package/test/resources/9999999/asset/v1/content/assets/1295064/get-response.json +1 -1
  390. package/test/resources/9999999/asset/v1/content/assets/5286/get-response.json +48 -0
  391. package/test/resources/9999999/asset/v1/content/assets/5289/get-response.json +198 -0
  392. package/test/resources/9999999/asset/v1/content/assets/808714/get-response.json +4 -3
  393. package/test/resources/9999999/asset/v1/content/assets/950143/delete-response.txt +1 -0
  394. package/test/resources/9999999/asset/v1/content/assets/get-response-customerKey=testExisting_asset.json +105 -0
  395. package/test/resources/9999999/asset/v1/content/assets/post-response.json +59 -0
  396. 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
  397. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN193,194,15.json +7 -0
  398. 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
  399. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1.json +32 -0
  400. package/test/resources/9999999/asset/v1/content/assets/query/{post-response.json → post-response-assetType.idIN207,208,209,5.json} +45 -47
  401. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN214,4.json +35 -0
  402. 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
  403. package/test/resources/9999999/asset/v1/content/assets/query/post-response-customerKey=mcdev-issue-1157.json +46 -0
  404. package/test/resources/9999999/attributeGroup/retrieve-expected.json +1 -1
  405. package/test/resources/9999999/attributeSet/retrieve-expected.json +3 -3
  406. package/test/resources/9999999/automation/build-expected.json +7 -7
  407. package/test/resources/9999999/automation/create-expected.json +7 -7
  408. package/test/resources/9999999/automation/patch_fixKeys-pause-expected.json +6 -6
  409. package/test/resources/9999999/automation/patch_fixKeys-schedule-expected.json +6 -6
  410. package/test/resources/9999999/automation/retrieve-expected.json +7 -7
  411. package/test/resources/9999999/automation/template-expected.json +7 -7
  412. package/test/resources/9999999/automation/update-expected.json +6 -6
  413. package/test/resources/9999999/automation/v1/dataextracts/56c5370a-f988-4f36-b0ee-0f876573f6d7/delete-response.txt +1 -0
  414. package/test/resources/9999999/automation/v1/filetransfers/72c328ac-f5b0-4e37-91d3-a775666f15a6/delete-response.json +1 -0
  415. package/test/resources/9999999/automation/v1/imports/1ebf557b-372e-eb11-b81b-48df37d1dbd7/get-response.json +78 -0
  416. package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/delete-response.txt +0 -0
  417. package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/get-response.json +35 -0
  418. package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/patch-response.json +14 -10
  419. package/test/resources/9999999/automation/v1/imports/get-response.json +78 -1
  420. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +1 -1
  421. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeysSuffix/get-response.json +17 -0
  422. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeysSuffix/patch-response.json +18 -0
  423. package/test/resources/9999999/automation/v1/queries/abcde-607c-4940-afef-437965094dat/get-response.json +17 -0
  424. package/test/resources/9999999/automation/v1/queries/get-response.json +20 -3
  425. package/test/resources/9999999/automation/v1/scripts/39f6a488-20eb-4ba0-b0b9-023725b574e4/delete-response.txt +1 -0
  426. package/test/resources/9999999/automation/v1/scripts/get-response.json +32 -2
  427. package/test/resources/9999999/dataExtension/build-expected.json +3 -4
  428. package/test/resources/9999999/dataExtension/create-expected.json +1 -4
  429. package/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml +4 -4
  430. package/test/resources/9999999/dataExtension/retrieve-expected.json +3 -4
  431. package/test/resources/9999999/dataExtension/retrieve-response.xml +96 -1
  432. package/test/resources/9999999/dataExtension/template-expected.json +3 -4
  433. package/test/resources/9999999/dataExtension/update-expected.json +4 -3
  434. package/test/resources/9999999/dataExtension/update-response.xml +5 -3
  435. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +72 -0
  436. package/test/resources/9999999/dataFolder/retrieve-ContentType=userinitiatedsends-response.xml +48 -0
  437. package/test/resources/9999999/deliveryProfile/get-expected.json +7 -0
  438. package/test/resources/9999999/emailSend/build-expected.json +43 -0
  439. package/test/resources/9999999/emailSend/get-expected.json +43 -0
  440. package/test/resources/9999999/emailSend/patch-expected.json +41 -0
  441. package/test/resources/9999999/emailSend/post-expected.json +41 -0
  442. package/test/resources/9999999/emailSend/template-expected.json +43 -0
  443. package/test/resources/9999999/emailSendDefinition/create-response.xml +98 -0
  444. package/test/resources/9999999/emailSendDefinition/delete-response.xml +36 -0
  445. package/test/resources/9999999/emailSendDefinition/retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml +18 -8
  446. package/test/resources/9999999/emailSendDefinition/update-response.xml +97 -0
  447. package/test/resources/9999999/importDefinition/retrieve-CustomerKey=testExisting_importFile-response.xml +30 -0
  448. package/test/resources/9999999/importDefinition/retrieve-Name=testExisting_importFile-response.xml +30 -0
  449. package/test/resources/9999999/importFile/build-expected.json +11 -6
  450. package/test/resources/9999999/importFile/get-expected.json +13 -7
  451. package/test/resources/9999999/importFile/get-sms-expected.json +79 -0
  452. package/test/resources/9999999/importFile/patch-expected.json +12 -7
  453. package/test/resources/9999999/importFile/post-expected.json +8 -5
  454. package/test/resources/9999999/importFile/template-expected.json +10 -5
  455. package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +124 -0
  456. package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/delete-response.txt +1 -0
  457. package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/get-response.json +253 -0
  458. package/test/resources/9999999/interaction/v1/interactions/get-response.json +83 -779
  459. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Multistep/get-response.json +457 -0
  460. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response.json +253 -0
  461. package/test/resources/9999999/interaction/v1/interactions/{key_0b76dccf-594c-b6dc-1acf-10c4493dcb84 → key_testExisting_temail}/get-response.json +5 -5
  462. package/test/resources/9999999/journey/build-expected.json +105 -449
  463. package/test/resources/9999999/journey/get-multistep-expected.json +413 -0
  464. package/test/resources/9999999/journey/get-quicksend-expected.json +232 -0
  465. package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +232 -0
  466. package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +232 -0
  467. package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +232 -0
  468. package/test/resources/9999999/journey/get-transactionalEmail-expected.json +211 -0
  469. package/test/resources/9999999/journey/template-expected.json +105 -449
  470. package/test/resources/9999999/legacy/v1/beta/messaging/deliverypolicy/get-response.json +15 -0
  471. package/test/resources/9999999/legacy/v1/beta/mobile/imports/get-response.json +112 -0
  472. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/get-response.json +1 -1
  473. package/test/resources/9999999/legacy/v1/beta/mobile/message/NTQ3Ojc4OjA/get-response.json +1 -1
  474. package/test/resources/9999999/legacy/v1/beta/mobile/message/get-response.json +1 -1
  475. package/test/resources/9999999/legacy/v1/beta/object/NWQwdnhEU3dFZWVBekJRQzdISWl0QTo0NTow/get-response.json +12 -0
  476. package/test/resources/9999999/list/retrieve-response.xml +13 -0
  477. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +1 -1
  478. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +1 -1
  479. package/test/resources/9999999/messaging/v1/sms/definitions/post-response.json +3 -1
  480. package/test/resources/9999999/messaging/v1/sms/definitions/testExisting_tsms/get-response.json +3 -1
  481. package/test/resources/9999999/messaging/v1/sms/definitions/testExisting_tsms/patch-response.json +3 -1
  482. package/test/resources/9999999/mobileKeyword/build-expected.amp +5 -1
  483. package/test/resources/9999999/mobileKeyword/get-expected.amp +5 -1
  484. package/test/resources/9999999/mobileKeyword/post-create-expected.amp +1 -1
  485. package/test/resources/9999999/mobileKeyword/template-expected.amp +5 -1
  486. package/test/resources/9999999/mobileMessage/build-expected.amp +6 -1
  487. package/test/resources/9999999/mobileMessage/build-expected.json +2 -5
  488. package/test/resources/9999999/mobileMessage/get-expected.amp +6 -1
  489. package/test/resources/9999999/mobileMessage/get-expected.json +2 -5
  490. package/test/resources/9999999/mobileMessage/post-create-expected.amp +1 -1
  491. package/test/resources/9999999/mobileMessage/post-create-expected.json +2 -4
  492. package/test/resources/9999999/mobileMessage/post-update-expected.amp +1 -1
  493. package/test/resources/9999999/mobileMessage/post-update-expected.json +2 -5
  494. package/test/resources/9999999/mobileMessage/template-expected.amp +6 -1
  495. package/test/resources/9999999/mobileMessage/template-expected.json +2 -5
  496. package/test/resources/9999999/query/build-expected.json +1 -1
  497. package/test/resources/9999999/query/build-expected.sql +2 -1
  498. package/test/resources/9999999/query/get-expected.json +1 -1
  499. package/test/resources/9999999/query/get-expected.sql +2 -1
  500. package/test/resources/9999999/query/get2-expected.json +1 -1
  501. package/test/resources/9999999/query/patch-expected.json +1 -1
  502. package/test/resources/9999999/query/patch_fixKeys-expected.json +1 -1
  503. package/test/resources/9999999/query/patch_fixKeysSuffix-expected.json +11 -0
  504. package/test/resources/9999999/query/patch_fixKeysSuffix-expected.sql +6 -0
  505. package/test/resources/9999999/query/post-expected.json +1 -1
  506. package/test/resources/9999999/query/template-expected.json +1 -1
  507. package/test/resources/9999999/query/template-expected.sql +2 -1
  508. package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query2ANDStatus=Active-response.xml +30 -0
  509. package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysSuffixANDStatus=Active-response.xml +30 -0
  510. package/test/resources/9999999/script/get_ampincluded-expected.html +5 -0
  511. package/test/resources/9999999/script/get_ampincluded-expected.json +8 -0
  512. package/test/resources/9999999/script/get_ampincluded-rcb-id-expected.html +5 -0
  513. package/test/resources/9999999/script/get_ampincluded-rcb-key-expected.html +5 -0
  514. package/test/resources/9999999/script/get_ampincluded-rcb-name-expected.html +5 -0
  515. package/test/resources/9999999/script/get_ampscript-expected.html +10 -0
  516. package/test/resources/9999999/script/get_ampscript-expected.json +8 -0
  517. package/test/resources/9999999/script/get_ampscript-rcb-id-expected.html +8 -0
  518. package/test/resources/9999999/script/get_ampscript-rcb-key-expected.html +8 -0
  519. package/test/resources/9999999/script/get_ampscript-rcb-name-expected.html +10 -0
  520. package/test/resources/9999999/script/get_mixed-expected.html +12 -0
  521. package/test/resources/9999999/script/get_mixed-expected.json +8 -0
  522. package/test/resources/9999999/script/get_mixed-rcb-id-expected.html +12 -0
  523. package/test/resources/9999999/script/get_mixed-rcb-key-expected.html +12 -0
  524. package/test/resources/9999999/script/get_mixed-rcb-name-expected.html +14 -0
  525. package/test/resources/9999999/sendClassification/build-expected.json +8 -0
  526. package/test/resources/9999999/sendClassification/create-response.xml +51 -0
  527. package/test/resources/9999999/sendClassification/delete-response.xml +36 -0
  528. package/test/resources/9999999/sendClassification/get-expected.json +10 -0
  529. package/test/resources/9999999/sendClassification/patch-expected.json +8 -0
  530. package/test/resources/9999999/sendClassification/post-expected.json +8 -0
  531. package/test/resources/9999999/sendClassification/retrieve-response.xml +86 -0
  532. package/test/resources/9999999/sendClassification/template-expected.json +8 -0
  533. package/test/resources/9999999/sendClassification/update-response.xml +49 -0
  534. package/test/resources/9999999/senderProfile/build-expected.json +14 -0
  535. package/test/resources/9999999/senderProfile/create-response.xml +49 -0
  536. package/test/resources/9999999/senderProfile/delete-response.xml +36 -0
  537. package/test/resources/9999999/senderProfile/get-expected.json +16 -0
  538. package/test/resources/9999999/senderProfile/get-rcb-id-expected.json +16 -0
  539. package/test/resources/9999999/senderProfile/get-rcb-key-expected.json +16 -0
  540. package/test/resources/9999999/senderProfile/get-rcb-name-expected.json +16 -0
  541. package/test/resources/9999999/senderProfile/patch-expected.json +14 -0
  542. package/test/resources/9999999/senderProfile/post-expected.json +14 -0
  543. package/test/resources/9999999/senderProfile/retrieve-CustomerKey=Default-response.xml +44 -0
  544. package/test/resources/9999999/senderProfile/retrieve-CustomerKey=wrong-key-response.xml +26 -0
  545. package/test/resources/9999999/senderProfile/retrieve-response.xml +80 -0
  546. package/test/resources/9999999/senderProfile/template-expected.json +14 -0
  547. package/test/resources/9999999/senderProfile/update-response.xml +47 -0
  548. package/test/resources/9999999/transactionalEmail/build-expected.json +3 -3
  549. package/test/resources/9999999/transactionalEmail/get-expected.json +3 -3
  550. package/test/resources/9999999/transactionalEmail/patch-expected.json +3 -3
  551. package/test/resources/9999999/transactionalEmail/post-expected.json +2 -2
  552. package/test/resources/9999999/transactionalEmail/template-expected.json +3 -3
  553. package/test/resources/9999999/transactionalPush/build-expected.json +1 -1
  554. package/test/resources/9999999/transactionalPush/get-expected.json +1 -1
  555. package/test/resources/9999999/transactionalPush/patch-expected.json +1 -3
  556. package/test/resources/9999999/transactionalPush/post-expected.json +1 -3
  557. package/test/resources/9999999/transactionalPush/template-expected.json +1 -1
  558. package/test/resources/9999999/transactionalSMS/build-expected.amp +105 -1
  559. package/test/resources/9999999/transactionalSMS/build-expected.json +1 -2
  560. package/test/resources/9999999/transactionalSMS/get-expected.amp +105 -1
  561. package/test/resources/9999999/transactionalSMS/get-expected.json +1 -2
  562. package/test/resources/9999999/transactionalSMS/patch-expected.amp +99 -1
  563. package/test/resources/9999999/transactionalSMS/patch-expected.json +1 -2
  564. package/test/resources/9999999/transactionalSMS/post-expected.amp +99 -1
  565. package/test/resources/9999999/transactionalSMS/post-expected.json +1 -2
  566. package/test/resources/9999999/transactionalSMS/template-expected.amp +105 -1
  567. package/test/resources/9999999/transactionalSMS/template-expected.json +1 -2
  568. package/test/resources/9999999/triggeredSend/build-expected.json +5 -6
  569. package/test/resources/9999999/triggeredSend/get-expected.json +5 -6
  570. package/test/resources/9999999/triggeredSend/get-rcb-id-expected.json +29 -0
  571. package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +29 -0
  572. package/test/resources/9999999/triggeredSend/get-rcb-name-expected.json +29 -0
  573. package/test/resources/9999999/triggeredSend/patch-expected.json +5 -6
  574. package/test/resources/9999999/triggeredSend/post-expected.json +5 -6
  575. package/test/resources/9999999/triggeredSend/template-expected.json +5 -6
  576. package/test/resources/9999999/triggeredSendDefinition/create-response.xml +6 -1
  577. package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +53 -1
  578. package/test/resources/9999999/triggeredSendDefinition/update-response.xml +6 -1
  579. package/test/resources/9999999/verification/build-expected.json +1 -1
  580. package/test/resources/9999999/verification/get-expected.json +1 -1
  581. package/test/resources/9999999/verification/patch-expected.json +1 -1
  582. package/test/resources/9999999/verification/post-expected.json +1 -1
  583. package/test/resources/9999999/verification/template-expected.json +1 -1
  584. package/test/type.asset.test.js +733 -17
  585. package/test/type.attributeGroup.test.js +6 -2
  586. package/test/type.attributeSet.test.js +6 -2
  587. package/test/type.automation.test.js +174 -162
  588. package/test/type.dataExtension.test.js +41 -45
  589. package/test/type.dataExtract.test.js +22 -29
  590. package/test/type.deliveryProfile.test.js +45 -0
  591. package/test/type.emailSend.test.js +144 -0
  592. package/test/type.event.test.js +62 -0
  593. package/test/type.fileTransfer.test.js +21 -29
  594. package/test/type.importFile.test.js +61 -35
  595. package/test/type.journey.test.js +251 -45
  596. package/test/type.mobileKeyword.test.js +46 -54
  597. package/test/type.mobileMessage.test.js +28 -27
  598. package/test/type.query.test.js +303 -124
  599. package/test/type.script.test.js +332 -73
  600. package/test/type.sendClassification.test.js +156 -0
  601. package/test/type.senderProfile.test.js +254 -0
  602. package/test/type.transactionalEmail.test.js +15 -11
  603. package/test/type.transactionalPush.test.js +15 -11
  604. package/test/type.transactionalSMS.test.js +30 -23
  605. package/test/type.triggeredSend.test.js +130 -17
  606. package/test/type.user.test.js +22 -14
  607. package/test/type.verification.test.js +13 -10
  608. package/test/utils.js +79 -21
  609. package/tsconfig.json +21 -0
  610. package/types/mcdev.d.js +190 -66
  611. package/docs/dist/documentation.md +0 -8890
  612. package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_interaction.interaction-meta.json +0 -576
  613. package/test/mockRoot/deploy/testInstance/testBU/journey/testNew_interaction.interaction-meta.json +0 -266
  614. package/test/resources/9999999/interaction/v1/EventDefinitions/get-response.json +0 -43
  615. package/test/resources/9999999/interaction/v1/interactions/233d4413-922c-4568-85a5-e5cc77efc3be/delete-response.json +0 -1
  616. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +0 -592
  617. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/put-response.json +0 -592
  618. package/test/resources/9999999/interaction/v1/interactions/post-response.json +0 -280
  619. package/test/resources/9999999/journey/get-expected.json +0 -576
@@ -1,15 +1,18 @@
1
- import chai, { assert, expect } from 'chai';
1
+ import * as chai from 'chai';
2
+ const assert = chai.assert;
3
+ const expect = chai.expect;
4
+
2
5
  import chaiFiles from 'chai-files';
3
6
  import cache from '../lib/util/cache.js';
4
7
  import * as testUtils from './utils.js';
5
8
  import handler from '../lib/index.js';
6
9
  chai.use(chaiFiles);
7
- const file = chaiFiles.file;
8
10
 
9
11
  describe('type: query', () => {
10
12
  beforeEach(() => {
11
13
  testUtils.mockSetup();
12
14
  });
15
+
13
16
  afterEach(() => {
14
17
  testUtils.mockReset();
15
18
  });
@@ -19,13 +22,13 @@ describe('type: query', () => {
19
22
  // WHEN
20
23
  await handler.retrieve('testInstance/testBU', ['query']);
21
24
  // THEN
22
- assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
25
+ assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error');
23
26
  // get results from cache
24
27
  const result = cache.getCache();
25
28
  assert.equal(
26
29
  result.query ? Object.keys(result.query).length : 0,
27
- 3,
28
- 'only three queries expected'
30
+ 4,
31
+ 'only 4 queries expected'
29
32
  );
30
33
  // normal test
31
34
  assert.deepEqual(
@@ -33,10 +36,10 @@ describe('type: query', () => {
33
36
  await testUtils.getExpectedJson('9999999', 'query', 'get'),
34
37
  'returned metadata with correct key was not equal expected'
35
38
  );
36
- expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.equal(
37
- file(testUtils.getExpectedFile('9999999', 'query', 'get', 'sql'))
39
+ expect(await testUtils.getActualFile('testExisting_query', 'query', 'sql')).to.equal(
40
+ await testUtils.getExpectedFile('9999999', 'query', 'get', 'sql')
38
41
  );
39
- // check if targetKey was overwritten
42
+ // check if r__dataExtension_key was overwritten
40
43
  assert.deepEqual(
41
44
  await testUtils.getActualJson('testExisting_query2', 'query'),
42
45
  await testUtils.getExpectedJson('9999999', 'query', 'get2'),
@@ -50,11 +53,12 @@ describe('type: query', () => {
50
53
  );
51
54
  return;
52
55
  });
56
+
53
57
  it('Should retrieve one specific query by key', async () => {
54
58
  // WHEN
55
59
  await handler.retrieve('testInstance/testBU', ['query'], ['testExisting_query']);
56
60
  // THEN
57
- assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
61
+ assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error');
58
62
  // get results from cache
59
63
  const result = cache.getCache();
60
64
  assert.equal(
@@ -67,8 +71,8 @@ describe('type: query', () => {
67
71
  await testUtils.getExpectedJson('9999999', 'query', 'get'),
68
72
  'returned metadata was not equal expected'
69
73
  );
70
- expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.equal(
71
- file(testUtils.getExpectedFile('9999999', 'query', 'get', 'sql'))
74
+ expect(await testUtils.getActualFile('testExisting_query', 'query', 'sql')).to.equal(
75
+ await testUtils.getExpectedFile('9999999', 'query', 'get', 'sql')
72
76
  );
73
77
  assert.equal(
74
78
  testUtils.getAPIHistoryLength(),
@@ -77,28 +81,29 @@ describe('type: query', () => {
77
81
  );
78
82
  return;
79
83
  });
84
+
80
85
  it('Should retrieve one specific query via --like', async () => {
81
86
  // WHEN
82
87
  handler.setOptions({ like: { key: '%Existing_query' } });
83
88
  await handler.retrieve('testInstance/testBU', ['query']);
84
89
  // THEN
85
- assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
90
+ assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error');
86
91
  // get results from cache
87
92
  const result = cache.getCache();
88
93
  assert.equal(
89
94
  result.query ? Object.keys(result.query).length : 0,
90
- 3,
91
- 'three queries in cache expected'
95
+ 4,
96
+ '4 queries in cache expected'
92
97
  );
93
98
  assert.deepEqual(
94
99
  await testUtils.getActualJson('testExisting_query', 'query'),
95
100
  await testUtils.getExpectedJson('9999999', 'query', 'get'),
96
101
  'returned metadata was not equal expected'
97
102
  );
98
- expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.equal(
99
- file(testUtils.getExpectedFile('9999999', 'query', 'get', 'sql'))
103
+ expect(await testUtils.getActualFile('testExisting_query', 'query', 'sql')).to.equal(
104
+ await testUtils.getExpectedFile('9999999', 'query', 'get', 'sql')
100
105
  );
101
- expect(file(testUtils.getActualFile('testExisting_query2', 'query', 'sql'))).to.not
106
+ expect(await testUtils.getActualFile('testExisting_query2', 'query', 'sql')).to.not
102
107
  .exist;
103
108
  assert.equal(
104
109
  testUtils.getAPIHistoryLength(),
@@ -107,23 +112,24 @@ describe('type: query', () => {
107
112
  );
108
113
  return;
109
114
  });
115
+
110
116
  it('Should not retrieve any query via --like and key due to a mismatching filter', async () => {
111
117
  // WHEN
112
118
  handler.setOptions({ like: { key: 'NotExisting_query' } });
113
119
  await handler.retrieve('testInstance/testBU', ['query']);
114
120
  // THEN
115
- assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
121
+ assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error');
116
122
  // get results from cache
117
123
  const result = cache.getCache();
118
124
  assert.equal(
119
125
  result.query ? Object.keys(result.query).length : 0,
120
- 3,
121
- 'three queries in cache expected'
126
+ 4,
127
+ '4 queries in cache expected'
122
128
  );
123
129
 
124
- expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.not
130
+ expect(await testUtils.getActualFile('testExisting_query', 'query', 'sql')).to.not
125
131
  .exist;
126
- expect(file(testUtils.getActualFile('testExisting_query2', 'query', 'sql'))).to.not
132
+ expect(await testUtils.getActualFile('testExisting_query2', 'query', 'sql')).to.not
127
133
  .exist;
128
134
  assert.equal(
129
135
  testUtils.getAPIHistoryLength(),
@@ -133,10 +139,12 @@ describe('type: query', () => {
133
139
  return;
134
140
  });
135
141
  });
142
+
136
143
  describe('Deploy ================', () => {
137
144
  beforeEach(() => {
138
145
  testUtils.mockSetup(true);
139
146
  });
147
+
140
148
  it('Should create & upsert a query', async () => {
141
149
  // WHEN
142
150
  const resultDeploy = await handler.deploy(
@@ -145,7 +153,7 @@ describe('type: query', () => {
145
153
  ['testNew_query', 'testExisting_query']
146
154
  );
147
155
  // THEN
148
- assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
156
+ assert.equal(process.exitCode, 0, 'deploy should not have thrown an error');
149
157
  assert.equal(
150
158
  resultDeploy['testInstance/testBU']?.query
151
159
  ? Object.keys(resultDeploy['testInstance/testBU']?.query).length
@@ -157,8 +165,8 @@ describe('type: query', () => {
157
165
  const result = cache.getCache();
158
166
  assert.equal(
159
167
  result.query ? Object.keys(result.query).length : 0,
160
- 4,
161
- 'four queries expected in cache'
168
+ 5,
169
+ '5 queries expected in cache'
162
170
  );
163
171
  // confirm created item
164
172
  assert.deepEqual(
@@ -166,8 +174,8 @@ describe('type: query', () => {
166
174
  await testUtils.getExpectedJson('9999999', 'query', 'post'),
167
175
  'returned metadata was not equal expected for insert query'
168
176
  );
169
- expect(file(testUtils.getActualFile('testNew_query', 'query', 'sql'))).to.equal(
170
- file(testUtils.getExpectedFile('9999999', 'query', 'post', 'sql'))
177
+ expect(await testUtils.getActualFile('testNew_query', 'query', 'sql')).to.equal(
178
+ await testUtils.getExpectedFile('9999999', 'query', 'post', 'sql')
171
179
  );
172
180
  // confirm updated item
173
181
  assert.deepEqual(
@@ -175,8 +183,8 @@ describe('type: query', () => {
175
183
  await testUtils.getExpectedJson('9999999', 'query', 'patch'),
176
184
  'returned metadata was not equal expected for insert query'
177
185
  );
178
- expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.equal(
179
- file(testUtils.getExpectedFile('9999999', 'query', 'patch', 'sql'))
186
+ expect(await testUtils.getActualFile('testExisting_query', 'query', 'sql')).to.equal(
187
+ await testUtils.getExpectedFile('9999999', 'query', 'patch', 'sql')
180
188
  );
181
189
  // check number of API calls
182
190
  assert.equal(
@@ -186,6 +194,7 @@ describe('type: query', () => {
186
194
  );
187
195
  return;
188
196
  });
197
+
189
198
  it('Should deploy and execute with --execute', async () => {
190
199
  handler.setOptions({ execute: true });
191
200
  // WHEN
@@ -197,7 +206,7 @@ describe('type: query', () => {
197
206
  // THEN
198
207
  assert.equal(
199
208
  process.exitCode,
200
- false,
209
+ 0,
201
210
  'deploy with --execute should not have thrown an error'
202
211
  );
203
212
  // confirm updated item
@@ -206,8 +215,8 @@ describe('type: query', () => {
206
215
  await testUtils.getExpectedJson('9999999', 'query', 'patch'),
207
216
  'returned metadata was not equal expected for insert query'
208
217
  );
209
- expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.equal(
210
- file(testUtils.getExpectedFile('9999999', 'query', 'patch', 'sql'))
218
+ expect(await testUtils.getActualFile('testExisting_query', 'query', 'sql')).to.equal(
219
+ await testUtils.getExpectedFile('9999999', 'query', 'patch', 'sql')
211
220
  );
212
221
  // check number of API calls
213
222
  assert.equal(
@@ -218,10 +227,12 @@ describe('type: query', () => {
218
227
  return;
219
228
  });
220
229
  });
230
+
221
231
  describe('FixKeys ================', () => {
222
232
  beforeEach(() => {
223
233
  testUtils.mockSetup(true);
224
234
  });
235
+
225
236
  it('Should change the key during update with --changeKeyValue', async () => {
226
237
  // WHEN
227
238
  await handler.retrieve(
@@ -241,9 +252,16 @@ describe('type: query', () => {
241
252
  // THEN
242
253
  assert.equal(
243
254
  process.exitCode,
244
- false,
255
+ 0,
245
256
  'deploy --changeKeyValue should not have thrown an error'
246
257
  );
258
+ const upsertCallout = testUtils.getRestCallout('patch', '/automation/v1/queries/%');
259
+ assert.equal(
260
+ upsertCallout?.key,
261
+ 'testExisting_query_fixedKeys',
262
+ 'key in create callout was not as expected'
263
+ );
264
+
247
265
  assert.equal(
248
266
  Object.keys(deployed['testInstance/testBU'].query).length,
249
267
  1,
@@ -262,8 +280,8 @@ describe('type: query', () => {
262
280
  'returned metadata was not equal expected for update query'
263
281
  );
264
282
  expect(
265
- file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
266
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
283
+ await testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql')
284
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql'));
267
285
  // check number of API calls
268
286
  assert.equal(
269
287
  testUtils.getAPIHistoryLength(),
@@ -272,6 +290,7 @@ describe('type: query', () => {
272
290
  );
273
291
  return;
274
292
  });
293
+
275
294
  it('Should change the key during update with --changeKeyField', async () => {
276
295
  // WHEN
277
296
  await handler.retrieve(
@@ -288,9 +307,16 @@ describe('type: query', () => {
288
307
  // THEN
289
308
  assert.equal(
290
309
  process.exitCode,
291
- false,
310
+ 0,
292
311
  'deploy --changeKeyValue should not have thrown an error'
293
312
  );
313
+ const upsertCallout = testUtils.getRestCallout('patch', '/automation/v1/queries/%');
314
+ assert.equal(
315
+ upsertCallout?.key,
316
+ 'testExisting_query_fixedKeys',
317
+ 'key in create callout was not as expected'
318
+ );
319
+
294
320
  assert.equal(
295
321
  Object.keys(deployed['testInstance/testBU'].query).length,
296
322
  1,
@@ -308,8 +334,8 @@ describe('type: query', () => {
308
334
  'returned metadata was not equal expected for update query'
309
335
  );
310
336
  expect(
311
- file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
312
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
337
+ await testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql')
338
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql'));
313
339
  // check number of API calls
314
340
  assert.equal(
315
341
  testUtils.getAPIHistoryLength(),
@@ -318,17 +344,119 @@ describe('type: query', () => {
318
344
  );
319
345
  return;
320
346
  });
347
+
348
+ it('Should change the key during update with --changeKeyField and --keySuffix', async () => {
349
+ // WHEN
350
+ await handler.retrieve(
351
+ 'testInstance/testBU',
352
+ ['query'],
353
+ ['testExisting_query_fixKeysSuffix']
354
+ );
355
+ handler.setOptions({ changeKeyField: 'name', keySuffix: '_DEV', fromRetrieve: true });
356
+ const deployed = await handler.deploy(
357
+ 'testInstance/testBU',
358
+ ['query'],
359
+ ['testExisting_query_fixKeysSuffix']
360
+ );
361
+ // THEN
362
+ assert.equal(
363
+ process.exitCode,
364
+ 0,
365
+ 'deploy --changeKeyValue --keySuffix should not have thrown an error'
366
+ );
367
+ assert.equal(
368
+ Object.keys(deployed['testInstance/testBU'].query).length,
369
+ 1,
370
+ 'returned number of keys does not correspond to number of expected fixed keys'
371
+ );
372
+ const upsertCallout = testUtils.getRestCallout('patch', '/automation/v1/queries/%');
373
+
374
+ assert.equal(
375
+ upsertCallout?.key,
376
+ 'testExisting_query_fixedKeys_DEV',
377
+ 'key in create callout was not as expected'
378
+ );
379
+ assert.equal(
380
+ Object.keys(deployed['testInstance/testBU'].query)[0],
381
+ 'testExisting_query_fixedKeys_DEV',
382
+ 'returned keys do not correspond to expected fixed keys'
383
+ );
384
+ // confirm updated item
385
+ assert.deepEqual(
386
+ await testUtils.getActualJson('testExisting_query_fixedKeys_DEV', 'query'),
387
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeysSuffix'),
388
+ 'returned metadata was not equal expected for update query'
389
+ );
390
+ expect(
391
+ await testUtils.getActualFile('testExisting_query_fixedKeys_DEV', 'query', 'sql')
392
+ ).to.equal(
393
+ await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeysSuffix', 'sql')
394
+ );
395
+ // check number of API calls
396
+ assert.equal(
397
+ testUtils.getAPIHistoryLength(),
398
+ 14,
399
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
400
+ );
401
+ return;
402
+ });
403
+
404
+ it('Should change the key during create with and --keySuffix', async () => {
405
+ handler.setOptions({ keySuffix: '_DEV' });
406
+ const deployed = await handler.deploy(
407
+ 'testInstance/_ParentBU_',
408
+ ['query'],
409
+ ['testNew_query']
410
+ );
411
+ // THEN
412
+ assert.equal(process.exitCode, 0, 'deploy --keySuffix should not have thrown an error');
413
+ assert.equal(
414
+ Object.keys(deployed['testInstance/_ParentBU_'].query).length,
415
+ 1,
416
+ 'returned number of keys does not correspond to number of expected fixed keys'
417
+ );
418
+ assert.equal(
419
+ Object.keys(deployed['testInstance/_ParentBU_'].query)[0],
420
+ 'testNew_query_DEV',
421
+ 'returned keys do not correspond to expected fixed keys'
422
+ );
423
+
424
+ const createCallout = testUtils.getRestCallout('post', '/automation/v1/queries/');
425
+ assert.equal(
426
+ createCallout?.key,
427
+ 'testNew_query_DEV',
428
+ 'key in create callout was not as expected'
429
+ );
430
+
431
+ // confirm updated item
432
+ assert.deepEqual(
433
+ await testUtils.getActualJson('testNew_query_DEV', 'query', '_ParentBU_'),
434
+ await testUtils.getExpectedJson('1111111', 'query', 'patch_keySuffix'),
435
+ 'returned metadata was not equal expected for update query'
436
+ );
437
+
438
+ // check number of API calls
439
+ assert.equal(
440
+ testUtils.getAPIHistoryLength(),
441
+ 4,
442
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
443
+ );
444
+ return;
445
+ });
446
+
321
447
  it('Should run fixKeys but not find fixable keys and hence stop', async () => {
322
448
  // WHEN
323
449
  handler.setOptions({ skipInteraction: { fixKeysReretrieve: false } });
324
- const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
325
- 'testExisting_query',
326
- ]);
450
+ const resultFixKeys = await handler.fixKeys(
451
+ 'testInstance/testBU',
452
+ ['query'],
453
+ ['testExisting_query']
454
+ );
327
455
  // THEN
328
- assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
456
+ assert.equal(process.exitCode, 0, 'fixKeys should not have thrown an error');
329
457
  // check which keys were fixed
330
458
  assert.equal(
331
- resultFixKeys['testInstance/testBU'].length,
459
+ resultFixKeys['testInstance/testBU']['query'].length,
332
460
  0,
333
461
  'expected to find no keys to be fixed'
334
462
  );
@@ -348,25 +476,27 @@ describe('type: query', () => {
348
476
  );
349
477
  return;
350
478
  });
479
+
351
480
  it('Should fixKeys by key WITHOUT re-retrieving dependent types', async () => {
352
481
  // WHEN
353
482
  handler.setOptions({ skipInteraction: { fixKeysReretrieve: false } });
354
- const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
355
- 'testExisting_query_fixKeys',
356
- 'testExisting_query',
357
- ]);
483
+ const resultFixKeys = await handler.fixKeys(
484
+ 'testInstance/testBU',
485
+ ['query'],
486
+ ['testExisting_query_fixKeys', 'testExisting_query']
487
+ );
358
488
  assert.equal(
359
- resultFixKeys['testInstance/testBU'].length,
489
+ resultFixKeys['testInstance/testBU']['query'].length,
360
490
  1,
361
491
  'returned number of keys does not correspond to number of expected fixed keys'
362
492
  );
363
493
  assert.equal(
364
- resultFixKeys['testInstance/testBU'][0],
494
+ resultFixKeys['testInstance/testBU']['query'][0],
365
495
  'testExisting_query_fixedKeys',
366
496
  'returned keys do not correspond to expected fixed keys'
367
497
  );
368
498
  // THEN
369
- assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
499
+ assert.equal(process.exitCode, 0, 'fixKeys should not have thrown an error');
370
500
  // confirm updated item
371
501
  assert.deepEqual(
372
502
  await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
@@ -374,8 +504,59 @@ describe('type: query', () => {
374
504
  'returned metadata was not equal expected for update query'
375
505
  );
376
506
  expect(
377
- file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
378
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
507
+ await testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql')
508
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql'));
509
+ // check number of API calls
510
+ assert.equal(
511
+ testUtils.getAPIHistoryLength(),
512
+ 16,
513
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
514
+ );
515
+ return;
516
+ });
517
+
518
+ it('Should fixKeys by key with --keySuffix WITHOUT re-retrieving dependent types', async () => {
519
+ // WHEN
520
+ handler.setOptions({
521
+ keySuffix: '_DEV',
522
+ skipInteraction: { fixKeysReretrieve: false },
523
+ });
524
+ const resultFixKeys = await handler.fixKeys(
525
+ 'testInstance/testBU',
526
+ ['query'],
527
+ ['testExisting_query_fixKeysSuffix', 'testExisting_query']
528
+ );
529
+ // THEN
530
+ assert.equal(process.exitCode, 0, 'fixKeys should not have thrown an error');
531
+
532
+ const upsertCallout = testUtils.getRestCallout('patch', '/automation/v1/queries/%');
533
+ assert.equal(
534
+ upsertCallout?.key,
535
+ 'testExisting_query_fixedKeys_DEV',
536
+ 'key in create callout was not as expected'
537
+ );
538
+
539
+ assert.equal(
540
+ resultFixKeys['testInstance/testBU']['query'].length,
541
+ 1,
542
+ 'returned number of keys does not correspond to number of expected fixed keys'
543
+ );
544
+ assert.equal(
545
+ resultFixKeys['testInstance/testBU']['query'][0],
546
+ 'testExisting_query_fixedKeys_DEV',
547
+ 'returned keys do not correspond to expected fixed keys'
548
+ );
549
+ // confirm updated item
550
+ assert.deepEqual(
551
+ await testUtils.getActualJson('testExisting_query_fixedKeys_DEV', 'query'),
552
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeysSuffix'),
553
+ 'returned metadata was not equal expected for update query'
554
+ );
555
+ expect(
556
+ await testUtils.getActualFile('testExisting_query_fixedKeys_DEV', 'query', 'sql')
557
+ ).to.equal(
558
+ await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeysSuffix', 'sql')
559
+ );
379
560
  // check number of API calls
380
561
  assert.equal(
381
562
  testUtils.getAPIHistoryLength(),
@@ -384,27 +565,29 @@ describe('type: query', () => {
384
565
  );
385
566
  return;
386
567
  });
568
+
387
569
  it('Should fixKeys by key WITHOUT re-retrieving dependent types and then --execute', async () => {
388
570
  // WHEN
389
571
  handler.setOptions({ skipInteraction: { fixKeysReretrieve: false }, execute: true });
390
- const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
391
- 'testExisting_query_fixKeys',
392
- 'testExisting_query',
393
- ]);
572
+ const resultFixKeys = await handler.fixKeys(
573
+ 'testInstance/testBU',
574
+ ['query'],
575
+ ['testExisting_query_fixKeys', 'testExisting_query']
576
+ );
394
577
  assert.equal(
395
- resultFixKeys['testInstance/testBU'].length,
578
+ resultFixKeys['testInstance/testBU']['query'].length,
396
579
  1,
397
580
  'returned number of keys does not correspond to number of expected fixed keys'
398
581
  );
399
582
  assert.equal(
400
- resultFixKeys['testInstance/testBU'][0],
583
+ resultFixKeys['testInstance/testBU']['query'][0],
401
584
  'testExisting_query_fixedKeys',
402
585
  'returned keys do not correspond to expected fixed keys'
403
586
  );
404
587
  // THEN
405
588
  assert.equal(
406
589
  process.exitCode,
407
- false,
590
+ 0,
408
591
  'fixKeys with --execute should not have thrown an error'
409
592
  );
410
593
  // confirm updated item
@@ -414,8 +597,8 @@ describe('type: query', () => {
414
597
  'returned metadata was not equal expected for update query'
415
598
  );
416
599
  expect(
417
- file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
418
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
600
+ await testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql')
601
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql'));
419
602
  // check number of API calls
420
603
  assert.equal(
421
604
  testUtils.getAPIHistoryLength(),
@@ -424,25 +607,27 @@ describe('type: query', () => {
424
607
  );
425
608
  return;
426
609
  });
610
+
427
611
  it('Should fixKeys by key AND re-retrieve dependent types', async () => {
428
612
  // WHEN
429
613
  handler.setOptions({ skipInteraction: { fixKeysReretrieve: true } });
430
- const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
431
- 'testExisting_query_fixKeys',
432
- 'testExisting_query',
433
- ]);
614
+ const resultFixKeys = await handler.fixKeys(
615
+ 'testInstance/testBU',
616
+ ['query'],
617
+ ['testExisting_query_fixKeys', 'testExisting_query']
618
+ );
434
619
  assert.equal(
435
- resultFixKeys['testInstance/testBU'].length,
620
+ resultFixKeys['testInstance/testBU']['query'].length,
436
621
  1,
437
622
  'returned number of keys does not correspond to number of expected fixed keys'
438
623
  );
439
624
  assert.equal(
440
- resultFixKeys['testInstance/testBU'][0],
625
+ resultFixKeys['testInstance/testBU']['query'][0],
441
626
  'testExisting_query_fixedKeys',
442
627
  'returned keys do not correspond to expected fixed keys'
443
628
  );
444
629
  // THEN
445
- assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
630
+ assert.equal(process.exitCode, 0, 'fixKeys should not have thrown an error');
446
631
  // confirm updated item
447
632
  assert.deepEqual(
448
633
  await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
@@ -450,37 +635,39 @@ describe('type: query', () => {
450
635
  'returned metadata was not equal expected for update query'
451
636
  );
452
637
  expect(
453
- file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
454
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
638
+ await testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql')
639
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql'));
455
640
  // check number of API calls
456
641
  assert.equal(
457
642
  testUtils.getAPIHistoryLength(),
458
- 34,
643
+ 38,
459
644
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
460
645
  );
461
646
  return;
462
647
  });
648
+
463
649
  it('Should fixKeys by key AND re-retrieve dependent types and then --execute', async () => {
464
650
  // WHEN
465
651
  handler.setOptions({ skipInteraction: { fixKeysReretrieve: true }, execute: true });
466
- const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
467
- 'testExisting_query_fixKeys',
468
- 'testExisting_query',
469
- ]);
652
+ const resultFixKeys = await handler.fixKeys(
653
+ 'testInstance/testBU',
654
+ ['query'],
655
+ ['testExisting_query_fixKeys', 'testExisting_query']
656
+ );
470
657
  assert.equal(
471
- resultFixKeys['testInstance/testBU'].length,
658
+ resultFixKeys['testInstance/testBU']['query'].length,
472
659
  1,
473
660
  'returned number of keys does not correspond to number of expected fixed keys'
474
661
  );
475
662
  assert.equal(
476
- resultFixKeys['testInstance/testBU'][0],
663
+ resultFixKeys['testInstance/testBU']['query'][0],
477
664
  'testExisting_query_fixedKeys',
478
665
  'returned keys do not correspond to expected fixed keys'
479
666
  );
480
667
  // THEN
481
668
  assert.equal(
482
669
  process.exitCode,
483
- false,
670
+ 0,
484
671
  'fixKeys with --execute should not have thrown an error'
485
672
  );
486
673
  // confirm updated item
@@ -490,35 +677,36 @@ describe('type: query', () => {
490
677
  'returned metadata was not equal expected for update query'
491
678
  );
492
679
  expect(
493
- file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
494
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
680
+ await testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql')
681
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql'));
495
682
  // check number of API calls
496
683
  assert.equal(
497
684
  testUtils.getAPIHistoryLength(),
498
- 36,
685
+ 40,
499
686
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
500
687
  );
501
688
  return;
502
689
  });
690
+
503
691
  it('Should fixKeys via --like WITHOUT re-retrieving dependent types', async () => {
504
692
  // WHEN
505
693
  handler.setOptions({
506
694
  like: { key: 'testExisting_query_f%' },
507
695
  skipInteraction: { fixKeysReretrieve: false },
508
696
  });
509
- const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query');
697
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', ['query']);
510
698
  assert.equal(
511
- resultFixKeys['testInstance/testBU'].length,
512
- 1,
699
+ resultFixKeys['testInstance/testBU']['query'].length,
700
+ 2,
513
701
  'returned number of keys does not correspond to number of expected fixed keys'
514
702
  );
515
703
  assert.equal(
516
- resultFixKeys['testInstance/testBU'][0],
704
+ resultFixKeys['testInstance/testBU']['query'][0],
517
705
  'testExisting_query_fixedKeys',
518
706
  'returned keys do not correspond to expected fixed keys'
519
707
  );
520
708
  // THEN
521
- assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
709
+ assert.equal(process.exitCode, 0, 'fixKeys should not have thrown an error');
522
710
  // confirm updated item
523
711
  assert.deepEqual(
524
712
  await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
@@ -526,17 +714,18 @@ describe('type: query', () => {
526
714
  'returned metadata was not equal expected for update query'
527
715
  );
528
716
  expect(
529
- file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
530
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
717
+ await testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql')
718
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql'));
531
719
  // check number of API calls
532
720
  assert.equal(
533
721
  testUtils.getAPIHistoryLength(),
534
- 13,
722
+ 14,
535
723
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
536
724
  );
537
725
  return;
538
726
  });
539
727
  });
728
+
540
729
  describe('Templating ================', () => {
541
730
  it('Should create a query template via retrieveAsTemplate and build it', async () => {
542
731
  // GIVEN there is a template
@@ -547,11 +736,7 @@ describe('type: query', () => {
547
736
  'testSourceMarket'
548
737
  );
549
738
  // WHEN
550
- assert.equal(
551
- process.exitCode,
552
- false,
553
- 'retrieveAsTemplate should not have thrown an error'
554
- );
739
+ assert.equal(process.exitCode, 0, 'retrieveAsTemplate should not have thrown an error');
555
740
  assert.equal(
556
741
  result.query ? Object.keys(result.query).length : 0,
557
742
  1,
@@ -563,20 +748,16 @@ describe('type: query', () => {
563
748
  'returned template JSON of retrieveAsTemplate was not equal expected'
564
749
  );
565
750
  expect(
566
- file(testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql'))
567
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'template', 'sql')));
751
+ await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
752
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
568
753
  // THEN
569
754
  await handler.buildDefinition(
570
755
  'testInstance/testBU',
571
756
  'query',
572
- 'testExisting_query',
757
+ ['testExisting_query'],
573
758
  'testTargetMarket'
574
759
  );
575
- assert.equal(
576
- process.exitCode,
577
- false,
578
- 'buildDefinition should not have thrown an error'
579
- );
760
+ assert.equal(process.exitCode, 0, 'buildDefinition should not have thrown an error');
580
761
 
581
762
  assert.deepEqual(
582
763
  await testUtils.getActualDeployJson('testTemplated_query', 'query'),
@@ -584,8 +765,8 @@ describe('type: query', () => {
584
765
  'returned deployment JSON was not equal expected'
585
766
  );
586
767
  expect(
587
- file(testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql'))
588
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'build', 'sql')));
768
+ await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
769
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
589
770
 
590
771
  assert.equal(
591
772
  testUtils.getAPIHistoryLength(),
@@ -594,6 +775,7 @@ describe('type: query', () => {
594
775
  );
595
776
  return;
596
777
  });
778
+
597
779
  it('Should create a query template via buildTemplate and build it', async () => {
598
780
  // download first before we test buildTemplate
599
781
  await handler.retrieve('testInstance/testBU', ['query']);
@@ -605,7 +787,7 @@ describe('type: query', () => {
605
787
  'testSourceMarket'
606
788
  );
607
789
  // WHEN
608
- assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
790
+ assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
609
791
 
610
792
  assert.equal(
611
793
  result.query ? Object.keys(result.query).length : 0,
@@ -618,20 +800,16 @@ describe('type: query', () => {
618
800
  'returned template JSON of buildTemplate was not equal expected'
619
801
  );
620
802
  expect(
621
- file(testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql'))
622
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'template', 'sql')));
803
+ await testUtils.getActualTemplateFile('testExisting_query', 'query', 'sql')
804
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'template', 'sql'));
623
805
  // THEN
624
806
  await handler.buildDefinition(
625
807
  'testInstance/testBU',
626
808
  'query',
627
- 'testExisting_query',
809
+ ['testExisting_query'],
628
810
  'testTargetMarket'
629
811
  );
630
- assert.equal(
631
- process.exitCode,
632
- false,
633
- 'buildDefinition should not have thrown an error'
634
- );
812
+ assert.equal(process.exitCode, 0, 'buildDefinition should not have thrown an error');
635
813
 
636
814
  assert.deepEqual(
637
815
  await testUtils.getActualDeployJson('testTemplated_query', 'query'),
@@ -639,8 +817,8 @@ describe('type: query', () => {
639
817
  'returned deployment JSON was not equal expected'
640
818
  );
641
819
  expect(
642
- file(testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql'))
643
- ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'build', 'sql')));
820
+ await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
821
+ ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
644
822
 
645
823
  assert.equal(
646
824
  testUtils.getAPIHistoryLength(),
@@ -650,6 +828,7 @@ describe('type: query', () => {
650
828
  return;
651
829
  });
652
830
  });
831
+
653
832
  describe('Delete ================', () => {
654
833
  it('Should delete the item', async () => {
655
834
  // WHEN
@@ -659,12 +838,13 @@ describe('type: query', () => {
659
838
  'testExisting_query'
660
839
  );
661
840
  // THEN
662
- assert.equal(process.exitCode, false, 'delete should not have thrown an error');
841
+ assert.equal(process.exitCode, 0, 'delete should not have thrown an error');
663
842
 
664
843
  assert.equal(isDeleted, true, 'should have deleted the item');
665
844
  return;
666
845
  });
667
846
  });
847
+
668
848
  describe('CI/CD ================', () => {
669
849
  it('Should return a list of files based on their type and key', async () => {
670
850
  // WHEN
@@ -672,11 +852,7 @@ describe('type: query', () => {
672
852
  'testExisting_query',
673
853
  ]);
674
854
  // THEN
675
- assert.equal(
676
- process.exitCode,
677
- false,
678
- 'getFilesToCommit should not have thrown an error'
679
- );
855
+ assert.equal(process.exitCode, 0, 'getFilesToCommit should not have thrown an error');
680
856
  assert.equal(fileList.length, 2, 'expected only 2 file paths');
681
857
 
682
858
  assert.equal(
@@ -692,12 +868,13 @@ describe('type: query', () => {
692
868
  return;
693
869
  });
694
870
  });
871
+
695
872
  describe('Execute ================', () => {
696
873
  it('Should start a query by key', async () => {
697
874
  const executedKeys = await handler.execute('testInstance/testBU', 'query', [
698
875
  'testExisting_query',
699
876
  ]);
700
- assert.equal(process.exitCode, false, 'execute should not have thrown an error');
877
+ assert.equal(process.exitCode, 0, 'execute should not have thrown an error');
701
878
  assert.equal(
702
879
  executedKeys['testInstance/testBU']?.length,
703
880
  1,
@@ -710,10 +887,11 @@ describe('type: query', () => {
710
887
  );
711
888
  return;
712
889
  });
890
+
713
891
  it('Should start a query selected via --like', async () => {
714
892
  handler.setOptions({ like: { key: 'testExist%query' } });
715
893
  const executedKeys = await handler.execute('testInstance/testBU', 'query');
716
- assert.equal(process.exitCode, false, 'execute should not have thrown an error');
894
+ assert.equal(process.exitCode, 0, 'execute should not have thrown an error');
717
895
  assert.equal(
718
896
  executedKeys['testInstance/testBU']?.length,
719
897
  1,
@@ -726,12 +904,13 @@ describe('type: query', () => {
726
904
  );
727
905
  return;
728
906
  });
907
+
729
908
  it('Should not start executing a query because key and --like was specified', async () => {
730
909
  handler.setOptions({ like: { key: 'testExisting%' } });
731
910
  const executedKeys = await handler.execute('testInstance/testBU', 'query', [
732
911
  'testExisting_query',
733
912
  ]);
734
- assert.equal(process.exitCode, true, 'execute should have thrown an error');
913
+ assert.equal(process.exitCode, 1, 'execute should have thrown an error');
735
914
  assert.equal(
736
915
  Object.keys(executedKeys).length,
737
916
  0,