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
package/lib/util/file.js CHANGED
@@ -1,15 +1,34 @@
1
1
  /* eslint-disable no-control-regex */
2
2
  'use strict';
3
3
 
4
- import TYPE from '../../types/mcdev.d.js';
5
4
  import fs from 'fs-extra';
6
5
 
7
6
  import path from 'node:path';
8
7
  import prettier from 'prettier';
9
- import beautyAmp from 'beauty-amp-core';
8
+ import beautyAmp from 'beauty-amp-core2';
10
9
  import { Util } from './util.js';
11
10
  import updateNotifier from 'update-notifier';
12
11
 
12
+ /**
13
+ * @typedef {import('../../types/mcdev.d.js').AuthObject} AuthObject
14
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
15
+ * @typedef {import('../../types/mcdev.d.js').Cache} Cache
16
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
17
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
18
+ * @typedef {import('../../types/mcdev.d.js').DeltaPkgItem} DeltaPkgItem
19
+ * @typedef {import('../../types/mcdev.d.js').Mcdevrc} Mcdevrc
20
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
21
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
22
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
23
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
24
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
25
+ * @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeList} MultiMetadataTypeList
26
+ * @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeMap} MultiMetadataTypeMap
27
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
28
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
29
+ * @typedef {import('../../types/mcdev.d.js').TypeKeyCombo} TypeKeyCombo
30
+ */
31
+
13
32
  // inform user when there is an update
14
33
  const notifier = updateNotifier({
15
34
  pkg: Util.packageJsonMcdev,
@@ -22,17 +41,19 @@ notifier.notify();
22
41
  * File extends fs-extra. It adds logger and util methods for file handling
23
42
  */
24
43
  const File = {
44
+ prettierConfig: null,
45
+ prettierConfigFileType: null,
25
46
  /**
26
47
  * copies a file from one path to another
27
48
  *
28
49
  * @param {string} from - full filepath including name of existing file
29
50
  * @param {string} to - full filepath including name where file should go
30
- * @returns {object} - results object
51
+ * @returns {Promise.<{status:'ok'|'skipped'|'failed', statusMessage:string, file:string}>} - results object
31
52
  */
32
53
  async copyFile(from, to) {
33
54
  try {
34
55
  await fs.copy(from, to);
35
- return { status: 'ok', file: from };
56
+ return { status: 'ok', statusMessage: null, file: from };
36
57
  } catch (ex) {
37
58
  // This can happen in some cases where referencing files deleted in Commit
38
59
  return ex.message.startsWith('ENOENT: no such file or directory')
@@ -165,48 +186,52 @@ const File = {
165
186
  * @param {string} filename name of the file without suffix
166
187
  * @param {string} filetype filetype ie. JSON or SSJS
167
188
  * @param {string} content filecontent
168
- * @param {TYPE.TemplateMap} [templateVariables] templating variables to be replaced in the metadata
189
+ * @param {TemplateMap} [templateVariables] templating variables to be replaced in the metadata
169
190
  * @returns {Promise.<boolean>} Promise
170
191
  */
171
192
  writePrettyToFile: async function (directory, filename, filetype, content, templateVariables) {
172
193
  let formatted =
173
194
  filetype === 'amp'
174
- ? this._beautify_beautyAmp(content)
195
+ ? await this.beautify_beautyAmp(content, false)
175
196
  : await this._beautify_prettier(directory, filename, filetype, content);
176
197
  if (templateVariables) {
177
198
  formatted = Util.replaceByObject(formatted, templateVariables);
178
199
  }
179
200
  return this.writeToFile(directory, filename, filetype, formatted);
180
201
  },
202
+ /**
203
+ * helper that applies beautyAmp onto given stringified content; strongly typed for strings only
204
+ *
205
+ * @param {string} content code
206
+ * @param {boolean} [formatHTML] applies formatting to html and ampscript if true
207
+ * @returns {Promise.<string>} formatted code
208
+ */
209
+ beautify_beautyAmp_beautify: async function (content, formatHTML = true) {
210
+ const response = await beautyAmp.beautify(content, formatHTML);
211
+ if (typeof response == 'string') {
212
+ return response.trim() + '\n';
213
+ } else {
214
+ throw new TypeError('beautyAmp failed to beautify the content');
215
+ }
216
+ },
181
217
  /**
182
218
  * helper for {@link File.writePrettyToFile}, applying beautyAmp onto given stringified content
183
219
  *
184
220
  * @param {string} content filecontent
185
- * @returns {string} original string on error; formatted string on success
221
+ * @param {boolean} formatHTML should we format HTML or not via prettier included in beautyAmp
222
+ * @returns {Promise.<string>} original string on error; formatted string on success
186
223
  */
187
- _beautify_beautyAmp: function (content) {
188
- // immutable at the moment:
189
- const ampscript = {
190
- capitalizeAndOrNot: true,
191
- capitalizeIfFor: true,
192
- capitalizeSet: true,
193
- capitalizeVar: true,
194
- maxParametersPerLine: 4,
195
- };
196
- // immutable at the moment:
197
- const editor = {
198
- insertSpaces: true,
199
- tabSize: 4,
200
- };
224
+ beautify_beautyAmp: async function (content, formatHTML = true) {
201
225
  // logs trough console only for the moment.
202
226
  const logs = {
203
227
  loggerOn: false, // <= disable logging
204
228
  };
205
229
  try {
206
- beautyAmp.setup(ampscript, editor, logs);
207
- return beautyAmp.beautify(content);
230
+ beautyAmp.setup(null, null, logs);
231
+ // Note: we need to trim the result as beautyAmp adds a leading new line; but we also want to ensure there is a single new line at the end to comply with standard linting rules
232
+ return await this.beautify_beautyAmp_beautify(content, formatHTML);
208
233
  } catch (ex) {
209
- Util.logger.debug('File._beautify_beautyAmp:: error | ' + ex.message);
234
+ Util.logger.debug('File.beautify_beautyAmp:: error | ' + ex.message);
210
235
  return content;
211
236
  }
212
237
  },
@@ -229,7 +254,7 @@ const File = {
229
254
  } else if (content.includes('%%[') || content.includes('%%=')) {
230
255
  // in case we find AMPScript we need to abort beautifying as prettier
231
256
  // will throw an error falsely assuming bad syntax
232
- return this._beautify_beautyAmp(content);
257
+ return await this.beautify_beautyAmp(content, true);
233
258
  }
234
259
  // load the right prettier config relative to our file
235
260
  switch (filetype) {
@@ -345,11 +370,10 @@ const File = {
345
370
  *
346
371
  * @param {string | string[]} directory directory where the file is stored
347
372
  * @param {string} filename name of the file without '.json' ending
348
- * @param {boolean} sync should execute sync (default is async)
349
- * @param {boolean} cleanPath should execute sync (default is true)
373
+ * @param {boolean} cleanPath filters illegal chars if true
350
374
  * @returns {Promise.<object> | object | void} Promise or JSON object depending on if async or not; void on error
351
375
  */
352
- readJSONFile: function (directory, filename, sync, cleanPath) {
376
+ readJSONFile: async function (directory, filename, cleanPath) {
353
377
  try {
354
378
  if (cleanPath == null || cleanPath == true) {
355
379
  directory = this.filterIllegalPathChars(this.normalizePath(directory));
@@ -363,13 +387,9 @@ const File = {
363
387
  }
364
388
  let json;
365
389
  try {
366
- json = sync
367
- ? fs.readJsonSync(path.join(directory, filename + '.json'))
368
- : fs.readJson(path.join(directory, filename + '.json'));
390
+ json = await fs.readJSON(path.join(directory, filename + '.json'));
369
391
  } catch (ex) {
370
- // Note: this only works for sync, not async
371
392
  Util.logger.debug(ex.stack);
372
- throw new Error(`${ex.code}: ${ex.message}`);
373
393
  }
374
394
  return json;
375
395
  } catch (ex) {
@@ -383,16 +403,21 @@ const File = {
383
403
  * @param {string} filename name of the file without '.json' ending
384
404
  * @param {string} filetype filetype suffix
385
405
  * @param {string} [encoding] read file with encoding (defaults to utf-8)
386
- * @returns {Promise.<string> | void} file contents; void on error
406
+ * @returns {Promise.<string>} file contents; void on error
387
407
  */
388
- readFilteredFilename: function (directory, filename, filetype, encoding) {
408
+ readFilteredFilename: async function (directory, filename, filetype, encoding) {
389
409
  try {
390
410
  directory = this.filterIllegalPathChars(this.normalizePath(directory));
391
411
  filename = this.filterIllegalFilenames(filename);
392
- return fs.readFile(path.join(directory, filename + '.' + filetype), encoding || 'utf8');
412
+ // @ts-expect-error - somehow, the declared type does not allow for encoding to be passed in as a string, despite that working and being stated in the docs.
413
+ return await fs.readFile(
414
+ path.join(directory, filename + '.' + filetype),
415
+ encoding || 'utf8'
416
+ );
393
417
  } catch (ex) {
394
- Util.logger.error('File.readFilteredFilename:: error | ' + ex.message);
418
+ Util.logger.debug('File.readFilteredFilename:: error | ' + ex.message);
395
419
  }
420
+ return;
396
421
  },
397
422
  /**
398
423
  * reads directories to a specific depth returning an array
@@ -490,7 +515,9 @@ const File = {
490
515
  includeStem,
491
516
  _stemLength
492
517
  );
493
- children.push(...nestedChildren);
518
+ if (Array.isArray(nestedChildren) && nestedChildren.length > 0) {
519
+ children.push(...nestedChildren);
520
+ }
494
521
  }
495
522
  }
496
523
  return children;
@@ -502,7 +529,7 @@ const File = {
502
529
  /**
503
530
  * helper that splits the config back into auth & config parts to save them separately
504
531
  *
505
- * @param {TYPE.Mcdevrc} properties central properties object
532
+ * @param {Mcdevrc} properties central properties object
506
533
  * @returns {Promise.<void>} -
507
534
  */
508
535
  async saveConfigFile(properties) {
@@ -548,7 +575,5 @@ const File = {
548
575
  },
549
576
  };
550
577
  const FileFs = { ...fs, ...File };
551
- FileFs.prettierConfig = null;
552
- FileFs.prettierConfigFileType = null;
553
578
 
554
579
  export default FileFs;
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- import TYPE from '../../types/mcdev.d.js';
4
3
  import Cli from './cli.js';
5
4
  import File from './file.js';
6
5
  import config from './config.js';
@@ -11,6 +10,26 @@ import semver from 'semver';
11
10
  import { fileURLToPath } from 'node:url';
12
11
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
13
12
 
13
+ /**
14
+ * @typedef {import('../../types/mcdev.d.js').AuthObject} AuthObject
15
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
16
+ * @typedef {import('../../types/mcdev.d.js').Cache} Cache
17
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
18
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
19
+ * @typedef {import('../../types/mcdev.d.js').DeltaPkgItem} DeltaPkgItem
20
+ * @typedef {import('../../types/mcdev.d.js').Mcdevrc} Mcdevrc
21
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
22
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
23
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
24
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
25
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
26
+ * @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeList} MultiMetadataTypeList
27
+ * @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeMap} MultiMetadataTypeMap
28
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
29
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
30
+ * @typedef {import('../../types/mcdev.d.js').TypeKeyCombo} TypeKeyCombo
31
+ */
32
+
14
33
  /**
15
34
  * CLI helper class
16
35
  */
@@ -19,7 +38,7 @@ const Init = {
19
38
  /**
20
39
  * helper method for this.upgradeProject that upgrades project config if needed
21
40
  *
22
- * @param {TYPE.Mcdevrc} properties config file's json
41
+ * @param {Mcdevrc} properties config file's json
23
42
  * @returns {Promise.<boolean>} returns true if worked without errors
24
43
  */
25
44
  async fixMcdevConfig(properties) {
@@ -34,13 +53,16 @@ const Init = {
34
53
 
35
54
  const missingFields = await config.checkProperties(properties, true);
36
55
  const defaultProps = await config.getDefaultProperties();
37
- if (missingFields.length) {
56
+ if (Array.isArray(missingFields) && missingFields.length) {
38
57
  for (const fieldName of missingFields) {
39
58
  switch (fieldName) {
40
59
  case 'marketList': {
60
+ // @ts-expect-error - deprecated field
41
61
  if (properties.marketBulk) {
42
62
  upgradeMsgs.push(`- ✔️ converted 'marketBulk' to '${fieldName}'`);
63
+ // @ts-expect-error - deprecated field
43
64
  properties[fieldName] = properties.marketBulk;
65
+ // @ts-expect-error - deprecated field
44
66
  delete properties.marketBulk;
45
67
  } else {
46
68
  upgradeMsgs.push(`- ✔️ added '${fieldName}'`);
@@ -49,28 +71,35 @@ const Init = {
49
71
  break;
50
72
  }
51
73
  case 'directories.docs': {
74
+ // @ts-expect-error - deprecated field
52
75
  if (properties.directories.badKeys) {
76
+ // @ts-expect-error - deprecated field
53
77
  delete properties.directories.badKeys;
54
78
  upgradeMsgs.push(`- ✋ removed 'directories.badKeys'`);
55
79
  }
80
+ // @ts-expect-error - deprecated field
56
81
  if (properties.directories.dataExtension) {
82
+ // @ts-expect-error - deprecated field
57
83
  File.removeSync(properties.directories.dataExtension);
84
+ // @ts-expect-error - deprecated field
58
85
  delete properties.directories.dataExtension;
59
86
  upgradeMsgs.push(`- ✋ removed 'directories.dataExtension'`);
60
87
  }
88
+ // @ts-expect-error - deprecated field
61
89
  if (properties.directories.deltaPackage) {
90
+ // @ts-expect-error - deprecated field
62
91
  delete properties.directories.deltaPackage;
63
92
  upgradeMsgs.push(`- ✋ removed 'directories.deltaPackage'`);
64
93
  }
65
- if (properties.directories.dataextension) {
66
- delete properties.directories.dataextension;
67
- upgradeMsgs.push(`- ✋ removed 'directories.dataextension'`);
68
- }
94
+ // @ts-expect-error - deprecated field
69
95
  if (properties.directories.roles) {
96
+ // @ts-expect-error - deprecated field
70
97
  delete properties.directories.roles;
71
98
  upgradeMsgs.push(`- ✋ removed 'directories.roles'`);
72
99
  }
100
+ // @ts-expect-error - deprecated field
73
101
  if (properties.directories.users) {
102
+ // @ts-expect-error - deprecated field
74
103
  delete properties.directories.users;
75
104
  upgradeMsgs.push(`- ✋ removed 'directories.users'`);
76
105
  }
@@ -237,22 +266,24 @@ const Init = {
237
266
  const boilerPlateFilesPath = path.resolve(__dirname, Util.boilerplateDirectory, 'files');
238
267
  // ! do not switch to readDirectories before merging the two custom methods. Their logic is different!
239
268
  const directories = await File.readDirectoriesSync(boilerPlateFilesPath, 10, false);
240
- for (const subdir of directories) {
241
- // walk thru the root of our boilerplate-files directory and all sub folders
242
- const curDir = path.join(boilerPlateFilesPath, subdir);
243
- for (const file of await File.readdir(curDir)) {
244
- // read all files in these directories
245
- if (!(await File.lstat(path.join(curDir, file))).isDirectory()) {
246
- // filter entries that are actually folders
247
- const fileArr = file.split('.');
248
- const ext = '.' + fileArr.pop();
249
- // awaiting the result here due to interactive optional overwrite
250
- creationLog.push(
251
- await this._createIdeConfigFile(
252
- [subdir + path.sep, fileArr.join('.'), ext],
253
- relevantForcedUpdates
254
- )
255
- );
269
+ if (directories) {
270
+ for (const subdir of directories) {
271
+ // walk thru the root of our boilerplate-files directory and all sub folders
272
+ const curDir = path.join(boilerPlateFilesPath, subdir);
273
+ for (const file of await File.readdir(curDir)) {
274
+ // read all files in these directories
275
+ if (!(await File.lstat(path.join(curDir, file))).isDirectory()) {
276
+ // filter entries that are actually folders
277
+ const fileArr = file.split('.');
278
+ const ext = '.' + fileArr.pop();
279
+ // awaiting the result here due to interactive optional overwrite
280
+ creationLog.push(
281
+ await this._createIdeConfigFile(
282
+ [subdir + path.sep, fileArr.join('.'), ext],
283
+ relevantForcedUpdates
284
+ )
285
+ );
286
+ }
256
287
  }
257
288
  }
258
289
  }
@@ -304,7 +335,7 @@ const Init = {
304
335
  let forceIdeConfigUpdate;
305
336
  const relevantForcedUpdates = [];
306
337
  if (await File.pathExists(Util.configFileName)) {
307
- forceIdeConfigUpdate = File.readJsonSync(
338
+ forceIdeConfigUpdate = await File.readJSON(
308
339
  path.resolve(__dirname, Util.boilerplateDirectory, 'forcedUpdates.json')
309
340
  );
310
341
  // return all if no project version was found or only changes from "newer" versions otherwise
@@ -4,8 +4,8 @@ import File from './file.js';
4
4
  import inquirer from 'inquirer';
5
5
  import { Util } from './util.js';
6
6
  import commandExists from 'command-exists';
7
- import gitFactory from 'simple-git';
8
- const git = gitFactory();
7
+ import { simpleGit } from 'simple-git';
8
+ const git = simpleGit();
9
9
 
10
10
  /**
11
11
  * CLI helper class
@@ -36,7 +36,7 @@ const Init = {
36
36
  newRepoInitialized = false;
37
37
  } else {
38
38
  Util.logger.warn('No Git repository found. Initializing git:');
39
- Util.execSync('git', ['init']);
39
+ Util.execSync('git', ['init', '--initial-branch=' + Util.defaultGitBranch]);
40
40
  if (await File.pathExists('.git')) {
41
41
  newRepoInitialized = true;
42
42
  } else {
@@ -78,7 +78,7 @@ const Init = {
78
78
  /**
79
79
  * offer to push the new repo straight to the server
80
80
  *
81
- * @returns {void}
81
+ * @returns {Promise.<void>} -
82
82
  */
83
83
  async gitPush() {
84
84
  const skipInteraction = Util.skipInteraction;
@@ -124,7 +124,7 @@ const Init = {
124
124
  /**
125
125
  * offers to add the git remote origin
126
126
  *
127
- * @returns {string} repo name (optionally)
127
+ * @returns {Promise.<string>} repo name (optionally)
128
128
  */
129
129
  async _addGitRemote() {
130
130
  const skipInteraction = Util.skipInteraction;
@@ -178,7 +178,7 @@ const Init = {
178
178
  /**
179
179
  * checks global config and ask to config the user info and then store it locally
180
180
  *
181
- * @returns {void}
181
+ * @returns {Promise.<void>} -
182
182
  */
183
183
  async _updateGitConfigUser() {
184
184
  const skipInteraction = Util.skipInteraction;
package/lib/util/init.js CHANGED
@@ -1,5 +1,4 @@
1
1
  'use strict';
2
- import TYPE from '../../types/mcdev.d.js';
3
2
  import Cli from './cli.js';
4
3
  import File from './file.js';
5
4
  import config from './config.js';
@@ -11,6 +10,26 @@ import { Util } from './util.js';
11
10
  import fs from 'node:fs';
12
11
  import path from 'node:path';
13
12
 
13
+ /**
14
+ * @typedef {import('../../types/mcdev.d.js').AuthObject} AuthObject
15
+ * @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
16
+ * @typedef {import('../../types/mcdev.d.js').Cache} Cache
17
+ * @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
18
+ * @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
19
+ * @typedef {import('../../types/mcdev.d.js').DeltaPkgItem} DeltaPkgItem
20
+ * @typedef {import('../../types/mcdev.d.js').Mcdevrc} Mcdevrc
21
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
22
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
23
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
24
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
25
+ * @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
26
+ * @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeList} MultiMetadataTypeList
27
+ * @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeMap} MultiMetadataTypeMap
28
+ * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
29
+ * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
30
+ * @typedef {import('../../types/mcdev.d.js').TypeKeyCombo} TypeKeyCombo
31
+ */
32
+
14
33
  /**
15
34
  * CLI helper class
16
35
  */
@@ -19,11 +38,12 @@ const Init = {
19
38
  /**
20
39
  * Creates template file for properties.json
21
40
  *
22
- * @param {TYPE.Mcdevrc} properties config file's json
23
- * @param {string} credentialName identifying name of the installed package / project
41
+ * @param {Mcdevrc} properties config file's json
42
+ * @param {string} [credentialName] identifying name of the installed package / project; if set, will update this credential
43
+ * @param {boolean} [refreshBUs] if this was triggered by mcdev join, do not refresh BUs
24
44
  * @returns {Promise.<void>} -
25
45
  */
26
- async initProject(properties, credentialName) {
46
+ async initProject(properties, credentialName, refreshBUs = true) {
27
47
  if (!(await Init._checkPathForCloud())) {
28
48
  return;
29
49
  }
@@ -86,7 +106,11 @@ const Init = {
86
106
  do {
87
107
  error = false;
88
108
  try {
89
- const success = await Cli.updateCredential(properties, badCredName);
109
+ const success = await Cli.updateCredential(
110
+ properties,
111
+ badCredName,
112
+ refreshBUs
113
+ );
90
114
  if (success) {
91
115
  Util.logger.info(`✔️ Credential '${badCredName}' updated.`);
92
116
  } else {
@@ -156,14 +180,12 @@ const Init = {
156
180
 
157
181
  // set up IDE files and load npm dependencies
158
182
 
159
- let status = await this.upgradeProject(properties, true, initGit.repoName);
160
- if (!status) {
183
+ if (!(await this.upgradeProject(properties, true, initGit.repoName))) {
161
184
  return;
162
185
  }
163
186
 
164
187
  // ask for credentials and create mcdev config
165
- status = await Cli.initMcdevConfig();
166
- if (!status) {
188
+ if (!(await Cli.initMcdevConfig())) {
167
189
  return;
168
190
  }
169
191
 
@@ -266,7 +288,7 @@ const Init = {
266
288
  await InitGit._updateGitConfigUser();
267
289
 
268
290
  // ask the user to enter the server credentials
269
- await this.initProject(properties);
291
+ await this.initProject(properties, null, false);
270
292
  } else {
271
293
  return;
272
294
  }
@@ -374,7 +396,7 @@ const Init = {
374
396
  /**
375
397
  * wrapper around npm dependency & configuration file setup
376
398
  *
377
- * @param {TYPE.Mcdevrc} properties config file's json
399
+ * @param {Mcdevrc} properties config file's json
378
400
  * @param {boolean} [initial] print message if not part of initial setup
379
401
  * @param {string} [repoName] if git URL was provided earlier, the repo name was extracted to use it for npm init
380
402
  * @returns {Promise.<boolean>} success flag
@@ -397,7 +419,7 @@ const Init = {
397
419
  return false;
398
420
  }
399
421
  // version 4 release to simplify auth
400
- status = await InitConfig.upgradeAuthFile(properties);
422
+ status = await InitConfig.upgradeAuthFile();
401
423
  if (!status) {
402
424
  return false;
403
425
  }
@@ -421,7 +443,7 @@ const Init = {
421
443
  * check if git repo is being saved on a cloud service and warn the user
422
444
  *
423
445
  * @private
424
- * @returns {void} throws errors if problems were found
446
+ * @returns {Promise.<boolean>} true if path is good; false if project seems to be in a cloud service folder
425
447
  */
426
448
  async _checkPathForCloud() {
427
449
  const absolutePath = path.resolve('');
@@ -477,7 +499,7 @@ const Init = {
477
499
  * finds credentials that are set up in config but not in auth file
478
500
  *
479
501
  * @private
480
- * @param {TYPE.Mcdevrc} properties javascript object in .mcdevrc.json
502
+ * @param {Mcdevrc} properties javascript object in .mcdevrc.json
481
503
  * @returns {string[]} list of credential names
482
504
  */
483
505
  _getMissingCredentials(properties) {
@@ -53,7 +53,7 @@ const Init = {
53
53
  // execute "no questions asked" npm init
54
54
  Util.execSync('npm', ['init', '--yes'], true);
55
55
  try {
56
- fileContent = File.readFileSync('package.json', 'utf8');
56
+ fileContent = await File.readFile('package.json', 'utf8');
57
57
  if (fileContent) {
58
58
  projectPackageJson = JSON.parse(fileContent);
59
59
  }
@@ -74,7 +74,7 @@ const Init = {
74
74
  Util.logger.debug(`Dependency file not found in ${dependencyFile}`);
75
75
  return false;
76
76
  }
77
- const defaultDependencies = await File.readJson(dependencyFile);
77
+ const defaultDependencies = await File.readJSON(dependencyFile);
78
78
  const versionsDefault = {};
79
79
  for (const name of defaultDependencies) {
80
80
  // check mcdev.devDependencies first