mcdev 7.10.0 → 8.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 (209) hide show
  1. package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
  2. package/.github/workflows/code-test.yml +8 -100
  3. package/@types/lib/Deployer.d.ts.map +1 -1
  4. package/@types/lib/Retriever.d.ts.map +1 -1
  5. package/@types/lib/index.d.ts +16 -4
  6. package/@types/lib/index.d.ts.map +1 -1
  7. package/@types/lib/metadataTypes/Asset.d.ts +45 -8
  8. package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
  9. package/@types/lib/metadataTypes/Automation.d.ts +73 -53
  10. package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
  11. package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
  12. package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
  13. package/@types/lib/metadataTypes/DataExtract.d.ts +13 -2
  14. package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
  15. package/@types/lib/metadataTypes/Event.d.ts +14 -0
  16. package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
  17. package/@types/lib/metadataTypes/Folder.d.ts +49 -12
  18. package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
  19. package/@types/lib/metadataTypes/ImportFile.d.ts +14 -0
  20. package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
  21. package/@types/lib/metadataTypes/Journey.d.ts +166 -6
  22. package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
  23. package/@types/lib/metadataTypes/MetadataType.d.ts +24 -6
  24. package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
  25. package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
  26. package/@types/lib/metadataTypes/SenderProfile.d.ts +3 -1
  27. package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
  28. package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts +45 -8
  29. package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts +43 -1
  30. package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts +21 -3
  31. package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +6 -0
  32. package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts +49 -12
  33. package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts +3 -0
  34. package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +159 -6
  35. package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts +3 -1
  36. package/@types/lib/util/cache.d.ts +2 -1
  37. package/@types/lib/util/cache.d.ts.map +1 -1
  38. package/@types/lib/util/devops.d.ts.map +1 -1
  39. package/@types/lib/util/util.d.ts +1 -0
  40. package/@types/lib/util/util.d.ts.map +1 -1
  41. package/@types/lib/util/validations.d.ts.map +1 -1
  42. package/@types/types/mcdev.d.d.ts +48 -0
  43. package/@types/types/mcdev.d.d.ts.map +1 -1
  44. package/boilerplate/files/.vscode/settings.json +5 -0
  45. package/eslint.config.js +2 -2
  46. package/lib/Deployer.js +3 -0
  47. package/lib/Retriever.js +8 -2
  48. package/lib/cli.js +29 -0
  49. package/lib/index.js +37 -33
  50. package/lib/metadataTypes/Asset.js +130 -15
  51. package/lib/metadataTypes/Automation.js +308 -410
  52. package/lib/metadataTypes/DataExtension.js +1 -11
  53. package/lib/metadataTypes/DataExtensionField.js +9 -15
  54. package/lib/metadataTypes/DataExtract.js +41 -6
  55. package/lib/metadataTypes/DomainVerification.js +1 -1
  56. package/lib/metadataTypes/EmailSend.js +3 -3
  57. package/lib/metadataTypes/Event.js +81 -39
  58. package/lib/metadataTypes/FileTransfer.js +5 -5
  59. package/lib/metadataTypes/Folder.js +98 -12
  60. package/lib/metadataTypes/ImportFile.js +96 -33
  61. package/lib/metadataTypes/Journey.js +186 -32
  62. package/lib/metadataTypes/MetadataType.js +118 -70
  63. package/lib/metadataTypes/MobileKeyword.js +2 -2
  64. package/lib/metadataTypes/MobileMessage.js +4 -2
  65. package/lib/metadataTypes/Query.js +5 -5
  66. package/lib/metadataTypes/Script.js +5 -5
  67. package/lib/metadataTypes/SendClassification.js +3 -3
  68. package/lib/metadataTypes/SenderProfile.js +3 -3
  69. package/lib/metadataTypes/TransactionalEmail.js +1 -1
  70. package/lib/metadataTypes/TransactionalMessage.js +1 -1
  71. package/lib/metadataTypes/TriggeredSend.js +3 -3
  72. package/lib/metadataTypes/Verification.js +1 -1
  73. package/lib/metadataTypes/definitions/Asset.definition.js +196 -142
  74. package/lib/metadataTypes/definitions/Automation.definition.js +49 -7
  75. package/lib/metadataTypes/definitions/DataExtension.definition.js +7 -6
  76. package/lib/metadataTypes/definitions/DataExtract.definition.js +16 -3
  77. package/lib/metadataTypes/definitions/DomainVerification.definition.js +1 -1
  78. package/lib/metadataTypes/definitions/Event.definition.js +6 -0
  79. package/lib/metadataTypes/definitions/Folder.definition.js +69 -22
  80. package/lib/metadataTypes/definitions/ImportFile.definition.js +3 -0
  81. package/lib/metadataTypes/definitions/Journey.definition.js +165 -11
  82. package/lib/metadataTypes/definitions/SenderProfile.definition.js +3 -1
  83. package/lib/util/cache.js +24 -5
  84. package/lib/util/devops.js +20 -5
  85. package/lib/util/util.js +12 -0
  86. package/lib/util/validations.js +3 -1
  87. package/package.json +16 -17
  88. package/test/general.test.js +42 -37
  89. package/test/mockRoot/.mcdev-validations.js +2 -3
  90. package/test/mockRoot/.mcdevrc.json +1 -1
  91. package/test/mockRoot/deploy/testInstance/testBU/importFile/testExisting_importFile.importFile-meta.json +2 -1
  92. package/test/mockRoot/deploy/testInstance/testBU/importFile/testNew_importFile.importFile-meta.json +2 -1
  93. package/test/resourceFactory.js +35 -6
  94. package/test/resources/1111111/dataExtension/update-expected.json +1 -1
  95. package/test/resources/9999999/asset/test_coderesource_js-retrieve-expected.js +1 -0
  96. package/test/resources/9999999/asset/test_coderesource_js-retrieve-expected.json +47 -0
  97. package/test/resources/9999999/asset/test_coderesource_json-retrieve-expected.json +47 -0
  98. package/test/resources/9999999/asset/test_coderesource_json-retrieve-expected.jsonc +1 -0
  99. package/test/resources/9999999/asset/test_coderesource_xml-retrieve-expected.json +46 -0
  100. package/test/resources/9999999/asset/test_coderesource_xml-retrieve-expected.xml +1 -0
  101. package/test/resources/9999999/asset/test_interactivecontent-retrieve-expected.json +43 -0
  102. package/test/resources/9999999/asset/test_landingpage-retrieve-expected.json +42 -0
  103. package/test/resources/9999999/asset/test_microsite-retrieve-expected.json +43 -0
  104. package/test/resources/9999999/asset/v1/content/assets/9451/get-response.json +61 -0
  105. package/test/resources/9999999/asset/v1/content/assets/9456/get-response.json +56 -0
  106. package/test/resources/9999999/asset/v1/content/assets/9458/get-response.json +56 -0
  107. package/test/resources/9999999/asset/v1/content/assets/9460/get-response.json +59 -0
  108. package/test/resources/9999999/asset/v1/content/assets/9463/get-response.json +61 -0
  109. package/test/resources/9999999/asset/v1/content/assets/9465/get-response.json +54 -0
  110. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN1,3,4,14,15,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,205,206,210,211,212,213,214,215,216,217,218,219,220,221,222.json +94 -1
  111. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN219,220,221,222,223,224,225,226,227,228,230,232,240,241,242,243,244,245.json +168 -0
  112. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN240,241,242,243,244,245.json +144 -0
  113. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN246,247,248,249.json +132 -0
  114. package/test/resources/9999999/automation/create-expected.json +2 -1
  115. package/test/resources/9999999/automation/retrieve-expected.json +7 -1
  116. package/test/resources/9999999/automation/retrieve-wait-expected.json +7 -1
  117. package/test/resources/9999999/automation/update-expected.json +24 -2
  118. package/test/resources/9999999/automation/update-testExisting_automation-expected.md +5 -2
  119. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_pause/patch-response.json +1 -0
  120. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_schedule/patch-response.json +1 -0
  121. package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -1
  122. package/test/resources/9999999/dataExtract/build-expected.json +2 -2
  123. package/test/resources/9999999/dataExtract/get-expected.json +2 -2
  124. package/test/resources/9999999/dataExtract/patch-expected.json +2 -2
  125. package/test/resources/9999999/dataExtract/post-expected.json +2 -2
  126. package/test/resources/9999999/dataExtract/template-expected.json +2 -2
  127. package/test/resources/9999999/dataFolder/{retrieve-ContentTypeINasset,asset-sha,automatio,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,triggered,triggered,useriniti-response.xml → retrieve-ContentTypeINasset,asset-sha,automatio,cloudpage,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,triggered,triggered,useriniti-response.xml} +44 -1
  128. package/test/resources/9999999/dataFolder/{retrieve-ContentTypeINasset,asset-sha,automatio,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,useriniti-response.xml → retrieve-ContentTypeINasset,asset-sha,automatio,cloudpage,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,useriniti-response.xml} +44 -0
  129. package/test/resources/9999999/dataFolder/{retrieve-ContentTypeINasset,asset-shared,dataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml → retrieve-ContentTypeINasset,asset-shared,cloudpages,dataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +44 -0
  130. package/test/resources/9999999/dataFolder/{retrieve-ContentTypeINasset,asset-shared,journey-response.xml → retrieve-ContentTypeINasset,asset-shared,cloudpages,journey-response.xml} +44 -0
  131. package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,cloudpages,ssjsactivity-response.xml +136 -0
  132. package/test/resources/9999999/dataFolder/{retrieve-ContentTypeINasset,asset-shared,ssjsactivity-response.xml → retrieve-ContentTypeINasset,asset-shared,cloudpages-response.xml} +29 -7
  133. package/test/resources/9999999/dataFolder/{+retrieve-response.xml → retrieve-response.xml} +23 -0
  134. package/test/resources/9999999/dataFolder/update-response.xml +31 -0
  135. package/test/resources/9999999/event/build-expected.json +0 -1
  136. package/test/resources/9999999/event/get-automation-expected.json +0 -1
  137. package/test/resources/9999999/event/get-expected.json +0 -2
  138. package/test/resources/9999999/event/get-published-expected.json +0 -2
  139. package/test/resources/9999999/event/post_withExistingDE-expected.json +0 -2
  140. package/test/resources/9999999/event/post_withSchema-callout-expected.json +3 -0
  141. package/test/resources/9999999/event/post_withSchema-expected.json +0 -2
  142. package/test/resources/9999999/event/put-callout-expected.json +3 -0
  143. package/test/resources/9999999/event/put-expected.json +0 -2
  144. package/test/resources/9999999/event/template-expected.json +0 -1
  145. package/test/resources/9999999/folder-deploy/Data Extensions/testExisting_folder.folder-meta.json +9 -0
  146. package/test/resources/9999999/importFile/get-dataImport-expected.json +1 -1
  147. package/test/resources/9999999/importFile/get-expected.json +4 -1
  148. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/audit/all/get-response-versionNumber=1.json +86 -0
  149. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/audit/all/get-response-versionNumber=2.json +101 -0
  150. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/audit/all/get-response-versionNumber=3.json +86 -0
  151. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/delete-response-versionNumber=1.txt +1 -0
  152. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/get-response-versionNumber=1.json +461 -0
  153. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/get-response-versionNumber=3.json +461 -0
  154. package/test/resources/9999999/interaction/v1/interactions/dsfdsafdsa-922c-4568-85a5-e5cc77efc3be/audit/all/get-response-versionNumber=1.json +38 -0
  155. package/test/resources/9999999/interaction/v1/interactions/dsfdsafdsa-922c-4568-85a5-e5cc77efc3be/audit/all/get-response-versionNumber=2.json +53 -0
  156. package/test/resources/9999999/interaction/v1/interactions/get-response.json +2 -2
  157. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Multistep/get-response-versionNumber=1.json +461 -0
  158. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response-versionNumber=1.json +253 -0
  159. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_temail/get-response-versionNumber=1.json +219 -0
  160. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_temail_notPublished/get-response-versionNumber=1.json +226 -0
  161. package/test/resources/9999999/interaction/v1/interactions/publishAsync/0175b971-71a3-4d8e-98ac-48121f3fbf4f/post-response-versionNumber=3.json +4 -0
  162. package/test/resources/9999999/journey/build-expected.json +0 -1
  163. package/test/resources/9999999/journey/create-transactionaEmail-publish-expected.json +0 -1
  164. package/test/resources/9999999/journey/get-multistep-expected.json +0 -4
  165. package/test/resources/9999999/journey/get-published-expected.json +0 -1
  166. package/test/resources/9999999/journey/get-quicksend-expected.json +0 -1
  167. package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +0 -1
  168. package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +0 -1
  169. package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +0 -1
  170. package/test/resources/9999999/journey/get-transactionalEmail-expected.json +0 -1
  171. package/test/resources/9999999/journey/template-expected.json +0 -1
  172. package/test/resources/9999999/legacy/v1/beta/automations/notifications/RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow-PAUSED/get-response.json +3 -0
  173. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/NewRkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow/get-response.json +29 -0
  174. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow/get-response.json +50 -0
  175. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow-PAUSED/get-response.json +51 -0
  176. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/bHF6Q0Q3b1VXa21OdVQzZFQ0ckVSQToyNTow/get-response.json +7 -1
  177. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/cDhLQ2o2NExxVVc5N3VZeHF5WEExUToyNTow/get-response.json +79 -0
  178. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/get-response.json +61 -2
  179. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/post-response-pauseSchedule.json +1 -0
  180. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/post-response-schedule.json +1 -0
  181. package/test/resources/9999999/messaging/v1/domainverification/get-response.json +10 -1
  182. package/test/resources/9999999/query/patch-expected.sql +1 -1
  183. package/test/resources/9999999/query/post-expected.sql +1 -1
  184. package/test/resources/9999999/script/patch-expected.ssjs +1 -0
  185. package/test/resources/9999999/senderProfile/build-expected.json +1 -1
  186. package/test/resources/9999999/senderProfile/get-expected.json +1 -1
  187. package/test/resources/9999999/senderProfile/patch-expected.json +1 -1
  188. package/test/resources/9999999/senderProfile/retrieve-response.xml +1 -1
  189. package/test/resources/9999999/senderProfile/template-expected.json +1 -1
  190. package/test/type.asset.test.js +123 -13
  191. package/test/type.automation.test.js +20 -17
  192. package/test/type.dataExtract.test.js +4 -4
  193. package/test/type.domainVerification.test.js +3 -3
  194. package/test/type.folder.test.js +12 -2
  195. package/test/type.journey.test.js +141 -5
  196. package/test/type.query.test.js +2 -2
  197. package/test/type.script.test.js +2 -1
  198. package/test/type.senderProfile.test.js +21 -3
  199. package/test/type.triggeredSend.test.js +13 -1
  200. package/test/utils.js +2 -0
  201. package/types/mcdev.d.js +12 -0
  202. package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN219,220,221,222,223,224,225,226,227,228,230,232.json +0 -32
  203. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +0 -52
  204. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-ad2e-pause-response.xml +0 -38
  205. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-fixKey_pause-response.xml +0 -52
  206. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-fixKey_schedule-response.xml +0 -52
  207. package/test/resources/9999999/automation/schedule-a8afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +0 -52
  208. /package/test/resources/9999999/dataFolder/{+retrieve-QAA-response.xml → retrieve-QAA-response.xml} +0 -0
  209. /package/test/resources/9999999/interaction/v1/interactions/publishAsync/0175b971-71a3-4d8e-98ac-48121f3fbf4f/{post-response.json → post-response-versionNumber=1.json} +0 -0
@@ -226,7 +226,7 @@ describe('GENERAL', () => {
226
226
 
227
227
  assert.equal(
228
228
  testUtils.getAPIHistoryLength(),
229
- 76,
229
+ 80,
230
230
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
231
231
  );
232
232
  return;
@@ -286,7 +286,7 @@ describe('GENERAL', () => {
286
286
 
287
287
  assert.equal(
288
288
  testUtils.getAPIHistoryLength(),
289
- 76,
289
+ 80,
290
290
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
291
291
  );
292
292
  return;
@@ -346,7 +346,7 @@ describe('GENERAL', () => {
346
346
 
347
347
  assert.equal(
348
348
  testUtils.getAPIHistoryLength(),
349
- 76,
349
+ 80,
350
350
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
351
351
  );
352
352
  return;
@@ -378,7 +378,7 @@ describe('GENERAL', () => {
378
378
  );
379
379
  assert.equal(
380
380
  testUtils.getAPIHistoryLength(),
381
- 6,
381
+ 9,
382
382
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
383
383
  );
384
384
  });
@@ -512,7 +512,7 @@ describe('GENERAL', () => {
512
512
  assert.equal(deployedTypes[0], 'dataExtract', 'deploy should have returned 1 type');
513
513
  assert.equal(
514
514
  testUtils.getAPIHistoryLength(),
515
- 10,
515
+ 13,
516
516
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
517
517
  );
518
518
  });
@@ -777,7 +777,7 @@ describe('GENERAL', () => {
777
777
  // download first before we test buildTemplate
778
778
  await handler.retrieve('testInstance/testBU', ['automation', 'query']);
779
779
 
780
- const expectedApiCallsRetrieve = 31;
780
+ const expectedApiCallsRetrieve = 35;
781
781
  assert.equal(
782
782
  testUtils.getAPIHistoryLength(),
783
783
  expectedApiCallsRetrieve,
@@ -882,7 +882,7 @@ describe('GENERAL', () => {
882
882
  });
883
883
 
884
884
  it('buildTemplate + buildDefinition for multiple types with keys and --retrieve', async () => {
885
- const expectedApiCallsRetrieve = 31;
885
+ const expectedApiCallsRetrieve = 32;
886
886
 
887
887
  // preparation
888
888
  const argvMetadata = [
@@ -987,7 +987,7 @@ describe('GENERAL', () => {
987
987
  // download first before we test buildTemplate
988
988
  await handler.retrieve('testInstance/testBU');
989
989
 
990
- const expectedApiCallsRetrieve = 93;
990
+ const expectedApiCallsRetrieve = 101;
991
991
  assert.equal(
992
992
  testUtils.getAPIHistoryLength(),
993
993
  expectedApiCallsRetrieve,
@@ -1025,15 +1025,16 @@ describe('GENERAL', () => {
1025
1025
  Object.keys(templateResult),
1026
1026
  [
1027
1027
  'automation',
1028
- 'query',
1028
+ 'dataExtension',
1029
1029
  'dataExtract',
1030
+ 'domainVerification',
1030
1031
  'emailSend',
1031
- 'dataExtension',
1032
- 'sendClassification',
1033
- 'senderProfile',
1034
1032
  'fileTransfer',
1035
1033
  'importFile',
1034
+ 'query',
1036
1035
  'script',
1036
+ 'sendClassification',
1037
+ 'senderProfile',
1037
1038
  'verification',
1038
1039
  ],
1039
1040
  'did not create deployment packages for all relevant types'
@@ -1145,15 +1146,16 @@ describe('GENERAL', () => {
1145
1146
  Object.keys(templateResult),
1146
1147
  [
1147
1148
  'automation',
1148
- 'query',
1149
+ 'dataExtension',
1149
1150
  'dataExtract',
1151
+ 'domainVerification',
1150
1152
  'emailSend',
1151
- 'dataExtension',
1152
- 'sendClassification',
1153
- 'senderProfile',
1154
1153
  'fileTransfer',
1155
1154
  'importFile',
1155
+ 'query',
1156
1156
  'script',
1157
+ 'sendClassification',
1158
+ 'senderProfile',
1157
1159
  'verification',
1158
1160
  ],
1159
1161
  'did not create deployment packages for all relevant types'
@@ -1227,7 +1229,7 @@ describe('GENERAL', () => {
1227
1229
  await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
1228
1230
  ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
1229
1231
 
1230
- const expectedApiCallsRetrieve = 97;
1232
+ const expectedApiCallsRetrieve = 105;
1231
1233
  assert.equal(
1232
1234
  testUtils.getAPIHistoryLength(),
1233
1235
  expectedApiCallsRetrieve,
@@ -1239,7 +1241,7 @@ describe('GENERAL', () => {
1239
1241
  // download first before we test buildTemplate
1240
1242
  await handler.retrieve('testInstance/testBU', ['automation', 'query']);
1241
1243
 
1242
- const expectedApiCallsRetrieve = 31;
1244
+ const expectedApiCallsRetrieve = 35;
1243
1245
  assert.equal(
1244
1246
  testUtils.getAPIHistoryLength(),
1245
1247
  expectedApiCallsRetrieve,
@@ -1431,7 +1433,7 @@ describe('GENERAL', () => {
1431
1433
  // download first before we test buildTemplate
1432
1434
  await handler.retrieve('testInstance/testBU', ['automation', 'query']);
1433
1435
 
1434
- const expectedApiCallsRetrieve = 31;
1436
+ const expectedApiCallsRetrieve = 35;
1435
1437
  assert.equal(
1436
1438
  testUtils.getAPIHistoryLength(),
1437
1439
  expectedApiCallsRetrieve,
@@ -1502,7 +1504,7 @@ describe('GENERAL', () => {
1502
1504
  // download first before we test buildTemplate
1503
1505
  await handler.retrieve('testInstance/testBU', ['automation', 'query']);
1504
1506
 
1505
- const expectedApiCallsRetrieve = 31;
1507
+ const expectedApiCallsRetrieve = 35;
1506
1508
  assert.equal(
1507
1509
  testUtils.getAPIHistoryLength(),
1508
1510
  expectedApiCallsRetrieve,
@@ -1601,7 +1603,7 @@ describe('GENERAL', () => {
1601
1603
  // download everything before we test buildTemplate
1602
1604
  await handler.retrieve('testInstance/testBU');
1603
1605
 
1604
- const expectedApiCallsRetrieve = 93;
1606
+ const expectedApiCallsRetrieve = 101;
1605
1607
  assert.equal(
1606
1608
  testUtils.getAPIHistoryLength(),
1607
1609
  expectedApiCallsRetrieve,
@@ -1660,15 +1662,16 @@ describe('GENERAL', () => {
1660
1662
  Object.keys(definitionResult),
1661
1663
  [
1662
1664
  'automation',
1663
- 'query',
1665
+ 'dataExtension',
1664
1666
  'dataExtract',
1667
+ 'domainVerification',
1665
1668
  'emailSend',
1666
- 'dataExtension',
1667
- 'sendClassification',
1668
- 'senderProfile',
1669
1669
  'fileTransfer',
1670
1670
  'importFile',
1671
+ 'query',
1671
1672
  'script',
1673
+ 'sendClassification',
1674
+ 'senderProfile',
1672
1675
  'verification',
1673
1676
  ],
1674
1677
  'did not create deployment packages for all relevant types'
@@ -1767,15 +1770,16 @@ describe('GENERAL', () => {
1767
1770
  Object.keys(definitionResult),
1768
1771
  [
1769
1772
  'automation',
1770
- 'query',
1773
+ 'dataExtension',
1771
1774
  'dataExtract',
1775
+ 'domainVerification',
1772
1776
  'emailSend',
1773
- 'dataExtension',
1774
- 'sendClassification',
1775
- 'senderProfile',
1776
1777
  'fileTransfer',
1777
1778
  'importFile',
1779
+ 'query',
1778
1780
  'script',
1781
+ 'sendClassification',
1782
+ 'senderProfile',
1779
1783
  'verification',
1780
1784
  ],
1781
1785
  'did not create deployment packages for all relevant types'
@@ -1810,7 +1814,7 @@ describe('GENERAL', () => {
1810
1814
  await testUtils.getActualDeployFile('testTemplated_query', 'query', 'sql')
1811
1815
  ).to.equal(await testUtils.getExpectedFile('9999999', 'query', 'build', 'sql'));
1812
1816
 
1813
- const expectedApiCallsRetrieve = 97;
1817
+ const expectedApiCallsRetrieve = 105;
1814
1818
  assert.equal(
1815
1819
  testUtils.getAPIHistoryLength(),
1816
1820
  expectedApiCallsRetrieve,
@@ -1822,7 +1826,7 @@ describe('GENERAL', () => {
1822
1826
  // download first before we test buildTemplate
1823
1827
  await handler.retrieve('testInstance/testBU', ['automation', 'query']);
1824
1828
 
1825
- const expectedApiCallsRetrieve = 31;
1829
+ const expectedApiCallsRetrieve = 35;
1826
1830
  assert.equal(
1827
1831
  testUtils.getAPIHistoryLength(),
1828
1832
  expectedApiCallsRetrieve,
@@ -2001,7 +2005,7 @@ describe('GENERAL', () => {
2001
2005
  // download first before we test buildTemplate
2002
2006
  await handler.retrieve('testInstance/testBU');
2003
2007
 
2004
- const expectedApiCallsRetrieve = 93;
2008
+ const expectedApiCallsRetrieve = 101;
2005
2009
  assert.equal(
2006
2010
  testUtils.getAPIHistoryLength(),
2007
2011
  expectedApiCallsRetrieve,
@@ -2061,15 +2065,16 @@ describe('GENERAL', () => {
2061
2065
  Object.keys(definitionResult),
2062
2066
  [
2063
2067
  'automation',
2064
- 'query',
2068
+ 'dataExtension',
2065
2069
  'dataExtract',
2070
+ 'domainVerification',
2066
2071
  'emailSend',
2067
- 'dataExtension',
2068
- 'sendClassification',
2069
- 'senderProfile',
2070
2072
  'fileTransfer',
2071
2073
  'importFile',
2074
+ 'query',
2072
2075
  'script',
2076
+ 'sendClassification',
2077
+ 'senderProfile',
2073
2078
  'verification',
2074
2079
  ],
2075
2080
  'did not create deployment packages for all relevant types'
@@ -2503,7 +2508,7 @@ describe('GENERAL', () => {
2503
2508
  );
2504
2509
  assert.equal(
2505
2510
  testUtils.getAPIHistoryLength(),
2506
- 9,
2511
+ 12,
2507
2512
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
2508
2513
  );
2509
2514
  });
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-unused-vars */
1
2
  'use strict';
2
3
  /**
3
4
  * @typedef {Object.<string, any>} MetadataTypeItem generic metadata item
@@ -39,13 +40,11 @@ const buPrefixBlacklistMap = {
39
40
  * @returns {validationRuleList} MetadataItem
40
41
  */
41
42
  export function validation(definition, item, targetDir, codeExtractItemArr, Util) {
42
- Util.logger.verbose('just here to not get a warning about the unused property Util');
43
-
44
43
  const bu =
45
44
  (targetDir.includes('/') ? targetDir.split('/').pop() : targetDir.split('\\').pop()) ||
46
45
  'not-found';
47
46
  const prefixBlacklist = buPrefixBlacklistMap[bu] || [];
48
- // eslint-disable-next-line no-unused-vars -- codeExtractItemArr is not used in this example
47
+
49
48
  const temp = codeExtractItemArr;
50
49
 
51
50
  return {
@@ -175,5 +175,5 @@
175
175
  "verification"
176
176
  ]
177
177
  },
178
- "version": "7.10.0"
178
+ "version": "8.0.0"
179
179
  }
@@ -26,10 +26,11 @@
26
26
  "c__dataAction": "AddUpdate",
27
27
  "c__subscriberImportType": "DataExtension",
28
28
  "destination": {
29
- "c__destinationType": "DataExtension",
29
+ "c__type": "DataExtension",
30
30
  "r__dataExtension_key": "testExisting_dataExtension"
31
31
  },
32
32
  "source": {
33
+ "c__type": "File Location",
33
34
  "r__fileLocation_name": "ExactTarget Enhanced FTP"
34
35
  }
35
36
  }
@@ -24,10 +24,11 @@
24
24
  "c__subscriberImportType": "DataExtension",
25
25
  "c__dataAction": "AddUpdate",
26
26
  "destination": {
27
- "c__destinationType": "DataExtension",
27
+ "c__type": "DataExtension",
28
28
  "r__dataExtension_key": "testExisting_dataExtension"
29
29
  },
30
30
  "source": {
31
+ "c__type": "File Location",
31
32
  "r__fileLocation_name": "ExactTarget Enhanced FTP"
32
33
  }
33
34
  }
@@ -270,7 +270,16 @@ export const handleRESTRequest = async (config) => {
270
270
  let filterBody;
271
271
  if (urlObj.searchParams.get('$filter')) {
272
272
  filterName = urlObj.searchParams.get('$filter').split(' eq ')[1];
273
+ } else if (urlObj.searchParams.get('action')) {
274
+ filterName = urlObj.searchParams.get('action');
275
+ } else if (urlObj.searchParams.get('mostRecentVersionOnly')) {
276
+ filterName = 'mostRecentVersionOnly';
277
+ } else if (urlObj.searchParams.get('versionNumber')) {
278
+ filterName = 'versionNumber';
279
+ } else if (urlObj.searchParams.get('id')) {
280
+ filterName = 'id';
273
281
  }
282
+
274
283
  const testPath = path
275
284
  .join(
276
285
  'test',
@@ -283,7 +292,16 @@ export const handleRESTRequest = async (config) => {
283
292
  const testPathFilter = filterName
284
293
  ? testPath +
285
294
  '-' +
286
- urlObj.searchParams.get('$filter').replaceAll(' eq ', '=').replaceAll(' ', '')
295
+ (urlObj.searchParams.get('$filter') || urlObj.searchParams.get('action') || '')
296
+ .replaceAll(' eq ', '=')
297
+ .replaceAll(' ', '') +
298
+ (urlObj.searchParams.get('id') ? 'id=' + urlObj.searchParams.get('id') : '') +
299
+ (urlObj.searchParams.get('versionNumber')
300
+ ? 'versionNumber=' + urlObj.searchParams.get('versionNumber')
301
+ : '') +
302
+ (urlObj.searchParams.get('mostRecentVersionOnly')
303
+ ? 'mostRecentVersionOnly=' + urlObj.searchParams.get('mostRecentVersionOnly')
304
+ : '')
287
305
  : null;
288
306
 
289
307
  if (!testPathFilter && config.method === 'post' && config.data) {
@@ -308,7 +326,6 @@ export const handleRESTRequest = async (config) => {
308
326
  }
309
327
  }
310
328
  const testPathFilterBody = filterBody ? testPath + '-' + filterBody : null;
311
-
312
329
  if (testPathFilter && (await fs.pathExists(testPathFilter + '.json'))) {
313
330
  // build filter logic to ensure templating works
314
331
  if (filterName) {
@@ -317,8 +334,14 @@ export const handleRESTRequest = async (config) => {
317
334
  encoding: 'utf8',
318
335
  })
319
336
  );
320
- response.items = response.items.filter((def) => def.name == filterName);
321
- response.count = response.items.length;
337
+ if (
338
+ response.items &&
339
+ filterName !== 'mostRecentVersionOnly' &&
340
+ filterName !== 'versionNumber' &&
341
+ filterName !== 'id'
342
+ ) {
343
+ response.items = response.items.filter((def) => def.name == filterName);
344
+ }
322
345
  console.log(loadingFile + projectRoot + testPathFilter + '.json'); // eslint-disable-line no-console
323
346
  return [200, JSON.stringify(response)];
324
347
  } else {
@@ -380,7 +403,12 @@ export const handleRESTRequest = async (config) => {
380
403
  }
381
404
 
382
405
  // build filter logic to ensure templating works
383
- if (filterName) {
406
+ if (
407
+ filterName &&
408
+ filterName !== 'mostRecentVersionOnly' &&
409
+ filterName !== 'versionNumber' &&
410
+ filterName !== 'id'
411
+ ) {
384
412
  const response = JSON.parse(
385
413
  await fs.readFile(testPath + '.json', {
386
414
  encoding: 'utf8',
@@ -445,7 +473,8 @@ export const handleRESTRequest = async (config) => {
445
473
  }),
446
474
  ];
447
475
  }
448
- } catch {
476
+ } catch (ex) {
477
+ console.log(ex); // eslint-disable-line no-console
449
478
  return [500, {}];
450
479
  }
451
480
  };
@@ -49,7 +49,7 @@
49
49
  }
50
50
  ],
51
51
  "c__dataRetentionPeriodUnitOfMeasure": "Months",
52
- "c__retentionPolicy": "individialRecords",
52
+ "c__retentionPolicy": "allRecords",
53
53
  "r__folder_ContentType": "shared_dataextension",
54
54
  "r__folder_Path": "Shared Items/Shared Data Extensions"
55
55
  }
@@ -0,0 +1,47 @@
1
+ {
2
+ "assetType": {
3
+ "displayName": "Javascript Code Resource",
4
+ "name": "jscoderesource"
5
+ },
6
+ "availableViews": [],
7
+ "category": {
8
+ "name": "mcdev"
9
+ },
10
+ "contentType": "application/javascript",
11
+ "createdBy": {
12
+ "email": "joern.berkefeld@accenture.com",
13
+ "name": "Jörn Berkefeld"
14
+ },
15
+ "createdDate": "2025-03-24T05:20:40.82-06:00",
16
+ "customerKey": "test_coderesource_js",
17
+ "data": {
18
+ "site": {
19
+ "content": {
20
+ "url": "https://oss-test.accenture.com/test_coderesource"
21
+ }
22
+ }
23
+ },
24
+ "description": "",
25
+ "memberId": 9999999,
26
+ "meta": {
27
+ "cloudPages": {
28
+ "c__published": true,
29
+ "publishDate": "2025-03-24 06:05:23.203"
30
+ }
31
+ },
32
+ "modelVersion": 2,
33
+ "modifiedBy": {
34
+ "email": "joern.berkefeld@accenture.com",
35
+ "name": "Jörn Berkefeld"
36
+ },
37
+ "modifiedDate": "2025-03-25T03:03:20.603-06:00",
38
+ "name": "test_coderesource_js",
39
+ "owner": {
40
+ "email": "joern.berkefeld@accenture.com",
41
+ "name": "Jörn Berkefeld"
42
+ },
43
+ "status": {
44
+ "name": "Draft"
45
+ },
46
+ "version": 1
47
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "assetType": {
3
+ "displayName": "JSON Code Resource",
4
+ "name": "jsoncoderesource"
5
+ },
6
+ "availableViews": [],
7
+ "category": {
8
+ "name": "mcdev"
9
+ },
10
+ "contentType": "application/json",
11
+ "createdBy": {
12
+ "email": "joern.berkefeld@accenture.com",
13
+ "name": "Jörn Berkefeld"
14
+ },
15
+ "createdDate": "2025-03-25T03:15:22.72-06:00",
16
+ "customerKey": "test_coderesource_json",
17
+ "data": {
18
+ "site": {
19
+ "content": {
20
+ "url": "https://oss-test.accenture.com/test_coderesource_json"
21
+ }
22
+ }
23
+ },
24
+ "description": "",
25
+ "memberId": 9999999,
26
+ "meta": {
27
+ "cloudPages": {
28
+ "c__published": true,
29
+ "publishDate": "2025-03-25 03:16:40.913"
30
+ }
31
+ },
32
+ "modelVersion": 2,
33
+ "modifiedBy": {
34
+ "email": "joern.berkefeld@accenture.com",
35
+ "name": "Jörn Berkefeld"
36
+ },
37
+ "modifiedDate": "2025-03-25T03:16:40.913-06:00",
38
+ "name": "test_coderesource_json",
39
+ "owner": {
40
+ "email": "joern.berkefeld@accenture.com",
41
+ "name": "Jörn Berkefeld"
42
+ },
43
+ "status": {
44
+ "name": "Draft"
45
+ },
46
+ "version": 1
47
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "assetType": {
3
+ "displayName": "XML Code Resource",
4
+ "name": "xmlcoderesource"
5
+ },
6
+ "availableViews": [],
7
+ "category": {
8
+ "name": "mcdev"
9
+ },
10
+ "contentType": "application/xml",
11
+ "createdBy": {
12
+ "email": "joern.berkefeld@accenture.com",
13
+ "name": "Jörn Berkefeld"
14
+ },
15
+ "createdDate": "2025-03-25T03:03:45.713-06:00",
16
+ "customerKey": "test_coderesource_xml",
17
+ "data": {
18
+ "site": {
19
+ "content": {
20
+ "url": "https://oss-test.accenture.com/test_coderesource_xml"
21
+ }
22
+ }
23
+ },
24
+ "description": "",
25
+ "memberId": 9999999,
26
+ "meta": {
27
+ "cloudPages": {
28
+ "c__published": false
29
+ }
30
+ },
31
+ "modelVersion": 2,
32
+ "modifiedBy": {
33
+ "email": "joern.berkefeld@accenture.com",
34
+ "name": "Jörn Berkefeld"
35
+ },
36
+ "modifiedDate": "2025-03-25T03:04:06.48-06:00",
37
+ "name": "test_coderesource_xml",
38
+ "owner": {
39
+ "email": "joern.berkefeld@accenture.com",
40
+ "name": "Jörn Berkefeld"
41
+ },
42
+ "status": {
43
+ "name": "Draft"
44
+ },
45
+ "version": 1
46
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "assetType": {
3
+ "displayName": "Interactive Email Page",
4
+ "name": "interactivecontent"
5
+ },
6
+ "availableViews": [],
7
+ "category": {
8
+ "name": "mcdev"
9
+ },
10
+ "content": {
11
+ "url": "https://oss-test.accenture.com/test_interactivecontent"
12
+ },
13
+ "createdBy": {
14
+ "email": "joern.berkefeld@accenture.com",
15
+ "name": "Jörn Berkefeld"
16
+ },
17
+ "createdDate": "2025-03-25T03:02:46.823-06:00",
18
+ "customerKey": "test_interactivecontent",
19
+ "description": "",
20
+ "memberId": 9999999,
21
+ "meta": {
22
+ "cloudPages": {
23
+ "c__published": true,
24
+ "publishDate": "2025-03-25 03:02:55.307"
25
+ },
26
+ "r__asset_key": "test_interactivecontent_content"
27
+ },
28
+ "modelVersion": 2,
29
+ "modifiedBy": {
30
+ "email": "joern.berkefeld@accenture.com",
31
+ "name": "Jörn Berkefeld"
32
+ },
33
+ "modifiedDate": "2025-03-25T03:02:55.307-06:00",
34
+ "name": "test_interactivecontent",
35
+ "owner": {
36
+ "email": "joern.berkefeld@accenture.com",
37
+ "name": "Jörn Berkefeld"
38
+ },
39
+ "status": {
40
+ "name": "Draft"
41
+ },
42
+ "version": 1
43
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "assetType": {
3
+ "displayName": "Landing Page",
4
+ "name": "landingpage"
5
+ },
6
+ "availableViews": [],
7
+ "category": {
8
+ "name": "mcdev"
9
+ },
10
+ "content": {
11
+ "url": "https://oss-test.accenture.com/test_landingpage"
12
+ },
13
+ "createdBy": {
14
+ "email": "joern.berkefeld@accenture.com",
15
+ "name": "Jörn Berkefeld"
16
+ },
17
+ "createdDate": "2025-03-25T03:17:51.88-06:00",
18
+ "customerKey": "test_landingpage",
19
+ "description": "",
20
+ "memberId": 9999999,
21
+ "meta": {
22
+ "cloudPages": {
23
+ "c__published": false
24
+ },
25
+ "r__asset_key": "test_landingpage_content"
26
+ },
27
+ "modelVersion": 2,
28
+ "modifiedBy": {
29
+ "email": "joern.berkefeld@accenture.com",
30
+ "name": "Jörn Berkefeld"
31
+ },
32
+ "modifiedDate": "2025-03-25T03:17:52.187-06:00",
33
+ "name": "test_landingpage",
34
+ "owner": {
35
+ "email": "joern.berkefeld@accenture.com",
36
+ "name": "Jörn Berkefeld"
37
+ },
38
+ "status": {
39
+ "name": "Draft"
40
+ },
41
+ "version": 1
42
+ }