mcdev 4.2.1 → 4.3.1

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 (98) hide show
  1. package/.github/ISSUE_TEMPLATE/bug.yml +3 -0
  2. package/.github/PULL_REQUEST_TEMPLATE.md +1 -2
  3. package/.github/pr-labeler.yml +3 -0
  4. package/.github/workflows/close_issues_on_merge.yml +18 -0
  5. package/.github/workflows/pr-labeler.yml +19 -0
  6. package/LICENSE +1 -1
  7. package/README.md +1 -1
  8. package/docs/dist/documentation.md +702 -284
  9. package/lib/Deployer.js +21 -15
  10. package/lib/Retriever.js +41 -34
  11. package/lib/cli.js +36 -6
  12. package/lib/index.js +56 -10
  13. package/lib/metadataTypes/AccountUser.js +17 -23
  14. package/lib/metadataTypes/Asset.js +36 -48
  15. package/lib/metadataTypes/AttributeGroup.js +1 -2
  16. package/lib/metadataTypes/Automation.js +75 -37
  17. package/lib/metadataTypes/Campaign.js +4 -3
  18. package/lib/metadataTypes/ContentArea.js +2 -3
  19. package/lib/metadataTypes/DataExtension.js +56 -47
  20. package/lib/metadataTypes/DataExtensionField.js +9 -12
  21. package/lib/metadataTypes/DataExtensionTemplate.js +2 -3
  22. package/lib/metadataTypes/DataExtract.js +1 -2
  23. package/lib/metadataTypes/DataExtractType.js +1 -2
  24. package/lib/metadataTypes/Discovery.js +3 -4
  25. package/lib/metadataTypes/Email.js +20 -6
  26. package/lib/metadataTypes/EmailSendDefinition.js +40 -39
  27. package/lib/metadataTypes/EventDefinition.js +29 -2
  28. package/lib/metadataTypes/FileTransfer.js +1 -2
  29. package/lib/metadataTypes/Filter.js +1 -2
  30. package/lib/metadataTypes/Folder.js +12 -14
  31. package/lib/metadataTypes/FtpLocation.js +1 -2
  32. package/lib/metadataTypes/ImportFile.js +1 -2
  33. package/lib/metadataTypes/Interaction.js +743 -12
  34. package/lib/metadataTypes/List.js +36 -33
  35. package/lib/metadataTypes/MetadataType.js +170 -124
  36. package/lib/metadataTypes/MobileCode.js +1 -2
  37. package/lib/metadataTypes/MobileKeyword.js +1 -2
  38. package/lib/metadataTypes/Query.js +15 -6
  39. package/lib/metadataTypes/Role.js +10 -11
  40. package/lib/metadataTypes/Script.js +2 -5
  41. package/lib/metadataTypes/SetDefinition.js +1 -2
  42. package/lib/metadataTypes/TransactionalMessage.js +25 -32
  43. package/lib/metadataTypes/TransactionalSMS.js +3 -4
  44. package/lib/metadataTypes/TriggeredSendDefinition.js +232 -56
  45. package/lib/metadataTypes/definitions/Asset.definition.js +1 -1
  46. package/lib/metadataTypes/definitions/Automation.definition.js +1 -1
  47. package/lib/metadataTypes/definitions/DataExtension.definition.js +10 -1
  48. package/lib/metadataTypes/definitions/Email.definition.js +1 -1
  49. package/lib/metadataTypes/definitions/EmailSendDefinition.definition.js +1 -1
  50. package/lib/metadataTypes/definitions/EventDefinition.definition.js +40 -1
  51. package/lib/metadataTypes/definitions/Folder.definition.js +31 -0
  52. package/lib/metadataTypes/definitions/ImportFile.definition.js +1 -1
  53. package/lib/metadataTypes/definitions/Interaction.definition.js +47 -26
  54. package/lib/metadataTypes/definitions/List.definition.js +1 -1
  55. package/lib/metadataTypes/definitions/Query.definition.js +1 -1
  56. package/lib/metadataTypes/definitions/Script.definition.js +1 -1
  57. package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +4 -3
  58. package/lib/metadataTypes/definitions/TransactionalPush.definition.js +4 -3
  59. package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +4 -3
  60. package/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js +10 -2
  61. package/lib/util/auth.js +15 -2
  62. package/lib/util/cli.js +4 -1
  63. package/lib/util/file.js +7 -3
  64. package/lib/util/init.js +62 -0
  65. package/lib/util/util.js +173 -11
  66. package/package.json +23 -9
  67. package/test/dataExtension.test.js +10 -10
  68. package/test/interaction.test.js +123 -0
  69. package/test/mockRoot/.mcdevrc.json +1 -1
  70. package/test/mockRoot/deploy/testInstance/testBU/interaction/testExisting_interaction.interaction-meta.json +266 -0
  71. package/test/mockRoot/deploy/testInstance/testBU/interaction/testNew_interaction.interaction-meta.json +266 -0
  72. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +0 -3
  73. package/test/query.test.js +8 -8
  74. package/test/resourceFactory.js +30 -14
  75. package/test/resources/1111111/dataExtension/retrieve-response.xml +26 -0
  76. package/test/resources/9999999/data/v1/customobjectdata/key/childBU_dataextension_test/rowset/get-response.json +13 -0
  77. package/test/resources/9999999/dataFolder/retrieve-response.xml +22 -0
  78. package/test/resources/9999999/eventDefinition/get-expected.json +34 -0
  79. package/test/resources/9999999/interaction/build-expected.json +260 -0
  80. package/test/resources/9999999/interaction/get-expected.json +264 -0
  81. package/test/resources/9999999/interaction/post-expected.json +264 -0
  82. package/test/resources/9999999/interaction/put-expected.json +264 -0
  83. package/test/resources/9999999/interaction/template-expected.json +260 -0
  84. package/test/resources/9999999/interaction/v1/EventDefinitions/get-response.json +43 -0
  85. package/test/resources/9999999/interaction/v1/interactions/get-response.json +222 -3
  86. package/test/resources/9999999/interaction/v1/interactions/key_0b76dccf-594c-b6dc-1acf-10c4493dcb84/get-response.json +219 -0
  87. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +280 -0
  88. package/test/resources/9999999/interaction/v1/interactions/post-response.json +280 -0
  89. package/test/resources/9999999/interaction/v1/interactions/put-response.json +280 -0
  90. package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
  91. package/test/resources/9999999/query/post-expected.sql +1 -1
  92. package/test/resources/9999999/transactionalEmail/post-expected.json +1 -1
  93. package/test/resources/9999999/triggeredSendDefinition/retrieve-response.xml +68 -0
  94. package/test/transactionalEmail.test.js +7 -7
  95. package/test/transactionalPush.test.js +7 -7
  96. package/test/transactionalSMS.test.js +7 -7
  97. package/test/utils.js +50 -0
  98. package/types/mcdev.d.js +1 -0
@@ -18,21 +18,19 @@ class Folder extends MetadataType {
18
18
  *
19
19
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
20
20
  * @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
21
- * @param {TYPE.BuObject} buObject properties for auth
22
- * @param {void} [___] unused parameter
21
+ * @param {string[]} [subTypeArr] content type of folder
23
22
  * @param {string} [key] customer key of single item to retrieve
24
- * @param {string[]} [contentTypeList] content type of folder
25
23
  * @returns {Promise} Promise
26
24
  */
27
- static async retrieve(retrieveDir, additionalFields, buObject, ___, key, contentTypeList) {
25
+ static async retrieve(retrieveDir, additionalFields, subTypeArr, key) {
28
26
  if (key) {
29
27
  Util.logger.error(`Folder.retrieve() does not support key parameter`);
30
28
  }
31
- const queryAllFolders = await this.retrieveHelper(additionalFields, true, contentTypeList);
29
+ const queryAllFolders = await this.retrieveHelper(additionalFields, true, subTypeArr);
32
30
 
33
- if (buObject.eid !== buObject.mid) {
31
+ if (this.buObject.eid !== this.buObject.mid) {
34
32
  queryAllFolders.push(
35
- ...(await this.retrieveHelper(additionalFields, false, contentTypeList))
33
+ ...(await this.retrieveHelper(additionalFields, false, subTypeArr))
36
34
  );
37
35
  }
38
36
  const sortPairs = toposort(queryAllFolders.map((a) => [a.ParentFolder.ID, a.ID]));
@@ -45,7 +43,7 @@ class Folder extends MetadataType {
45
43
  }
46
44
  // by default folders do not have an external key, we set this to ID plus EID as this will be unique
47
45
  else if (!val.CustomerKey) {
48
- val.CustomerKey = [buObject.eid, val.ID].join('-');
46
+ val.CustomerKey = [this.buObject.eid, val.ID].join('-');
49
47
  }
50
48
  // ensure name is a string and not a number (SFMC-SDK workaround)
51
49
  val.Name = val.Name + '';
@@ -108,7 +106,7 @@ class Folder extends MetadataType {
108
106
  // remove keys which are listed in other BUs and skip root
109
107
  if (
110
108
  idMap[id].Client?.ID &&
111
- (buObject.mid == idMap[id].Client.ID ||
109
+ (this.buObject.mid == idMap[id].Client.ID ||
112
110
  this.definition.folderTypesFromParent.includes(
113
111
  idMap[id].ContentType.toLowerCase()
114
112
  ))
@@ -141,7 +139,7 @@ class Folder extends MetadataType {
141
139
  }
142
140
  }
143
141
  if (retrieveDir) {
144
- const savedMetadata = await this.saveResults(metadata, retrieveDir, buObject.mid);
142
+ const savedMetadata = await this.saveResults(metadata, retrieveDir, this.buObject.mid);
145
143
  Util.logger.info(
146
144
  `Downloaded: ${this.definition.type} (${Object.keys(savedMetadata).length})`
147
145
  );
@@ -152,12 +150,12 @@ class Folder extends MetadataType {
152
150
  /**
153
151
  * Retrieves folder metadata for caching
154
152
  *
155
- * @param {TYPE.BuObject} buObject properties for auth
156
- * @param {string[]} [contentTypeList] content type of folder
153
+ * @param {void} _ unused
154
+ * @param {string[]} [subTypeArr] content type of folder
157
155
  * @returns {Promise} Promise
158
156
  */
159
- static retrieveForCache(buObject, contentTypeList) {
160
- return this.retrieve(null, null, buObject, null, null, contentTypeList);
157
+ static retrieveForCache(_, subTypeArr) {
158
+ return this.retrieve(null, null, subTypeArr, null);
161
159
  }
162
160
 
163
161
  /**
@@ -16,11 +16,10 @@ class FtpLocation extends MetadataType {
16
16
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
17
17
  * @param {void} [_] unused parameter
18
18
  * @param {void} [__] unused parameter
19
- * @param {void} [___] unused parameter
20
19
  * @param {string} [key] customer key of single item to retrieve
21
20
  * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
22
21
  */
23
- static retrieve(retrieveDir, _, __, ___, key) {
22
+ static retrieve(retrieveDir, _, __, key) {
24
23
  return super.retrieveREST(retrieveDir, '/automation/v1/ftplocations/', null, null, key);
25
24
  }
26
25
 
@@ -20,11 +20,10 @@ class ImportFile extends MetadataType {
20
20
  * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
21
21
  * @param {void} [_] unused parameter
22
22
  * @param {void} [__] unused parameter
23
- * @param {void} [___] unused parameter
24
23
  * @param {string} [key] customer key of single item to retrieve
25
24
  * @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
26
25
  */
27
- static retrieve(retrieveDir, _, __, ___, key) {
26
+ static retrieve(retrieveDir, _, __, key) {
28
27
  return super.retrieveREST(retrieveDir, '/automation/v1/imports/', null, null, key);
29
28
  }
30
29