mcdev 4.2.0 → 4.3.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.
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +1 -2
- package/.github/pr-labeler.yml +3 -0
- package/.github/workflows/close_issues_on_merge.yml +18 -0
- package/.github/workflows/pr-labeler.yml +19 -0
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/docs/dist/documentation.md +703 -283
- package/lib/Deployer.js +21 -15
- package/lib/Retriever.js +23 -19
- package/lib/cli.js +36 -6
- package/lib/index.js +57 -11
- package/lib/metadataTypes/AccountUser.js +17 -23
- package/lib/metadataTypes/Asset.js +28 -21
- package/lib/metadataTypes/AttributeGroup.js +1 -2
- package/lib/metadataTypes/Automation.js +75 -37
- package/lib/metadataTypes/Campaign.js +4 -3
- package/lib/metadataTypes/ContentArea.js +2 -3
- package/lib/metadataTypes/DataExtension.js +56 -47
- package/lib/metadataTypes/DataExtensionField.js +9 -12
- package/lib/metadataTypes/DataExtensionTemplate.js +2 -3
- package/lib/metadataTypes/DataExtract.js +1 -2
- package/lib/metadataTypes/DataExtractType.js +1 -2
- package/lib/metadataTypes/Discovery.js +3 -4
- package/lib/metadataTypes/Email.js +20 -6
- package/lib/metadataTypes/EmailSendDefinition.js +5 -8
- package/lib/metadataTypes/EventDefinition.js +29 -2
- package/lib/metadataTypes/FileTransfer.js +1 -2
- package/lib/metadataTypes/Filter.js +1 -2
- package/lib/metadataTypes/Folder.js +12 -14
- package/lib/metadataTypes/FtpLocation.js +1 -2
- package/lib/metadataTypes/ImportFile.js +1 -2
- package/lib/metadataTypes/Interaction.js +678 -12
- package/lib/metadataTypes/List.js +36 -33
- package/lib/metadataTypes/MetadataType.js +170 -124
- package/lib/metadataTypes/MobileCode.js +1 -2
- package/lib/metadataTypes/MobileKeyword.js +1 -2
- package/lib/metadataTypes/Query.js +15 -6
- package/lib/metadataTypes/Role.js +10 -11
- package/lib/metadataTypes/Script.js +2 -5
- package/lib/metadataTypes/SetDefinition.js +1 -2
- package/lib/metadataTypes/TransactionalMessage.js +25 -32
- package/lib/metadataTypes/TransactionalSMS.js +3 -4
- package/lib/metadataTypes/TriggeredSendDefinition.js +232 -56
- package/lib/metadataTypes/definitions/Asset.definition.js +1 -1
- package/lib/metadataTypes/definitions/Automation.definition.js +1 -1
- package/lib/metadataTypes/definitions/DataExtension.definition.js +10 -1
- package/lib/metadataTypes/definitions/Email.definition.js +1 -1
- package/lib/metadataTypes/definitions/EmailSendDefinition.definition.js +1 -1
- package/lib/metadataTypes/definitions/EventDefinition.definition.js +40 -1
- package/lib/metadataTypes/definitions/Folder.definition.js +31 -0
- package/lib/metadataTypes/definitions/ImportFile.definition.js +1 -1
- package/lib/metadataTypes/definitions/Interaction.definition.js +47 -26
- package/lib/metadataTypes/definitions/List.definition.js +1 -1
- package/lib/metadataTypes/definitions/Query.definition.js +1 -1
- package/lib/metadataTypes/definitions/Script.definition.js +1 -1
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -1
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +2 -1
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +2 -1
- package/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js +10 -2
- package/lib/util/auth.js +10 -2
- package/lib/util/cli.js +4 -1
- package/lib/util/config.js +3 -2
- package/lib/util/file.js +7 -3
- package/lib/util/init.js +65 -3
- package/lib/util/util.js +131 -11
- package/package.json +22 -9
- package/test/dataExtension.test.js +10 -10
- package/test/interaction.test.js +123 -0
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/interaction/testExisting_interaction.interaction-meta.json +266 -0
- package/test/mockRoot/deploy/testInstance/testBU/interaction/testNew_interaction.interaction-meta.json +266 -0
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +0 -3
- package/test/query.test.js +8 -8
- package/test/resourceFactory.js +12 -7
- package/test/resources/1111111/dataExtension/retrieve-response.xml +26 -0
- package/test/resources/9999999/data/v1/customobjectdata/key/childBU_dataextension_test/rowset/get-response.json +13 -0
- package/test/resources/9999999/dataFolder/retrieve-response.xml +22 -0
- package/test/resources/9999999/eventDefinition/get-expected.json +34 -0
- package/test/resources/9999999/interaction/build-expected.json +260 -0
- package/test/resources/9999999/interaction/get-expected.json +264 -0
- package/test/resources/9999999/interaction/post-expected.json +264 -0
- package/test/resources/9999999/interaction/put-expected.json +264 -0
- package/test/resources/9999999/interaction/template-expected.json +260 -0
- package/test/resources/9999999/interaction/v1/EventDefinitions/get-response.json +43 -0
- package/test/resources/9999999/interaction/v1/interactions/get-response.json +222 -3
- package/test/resources/9999999/interaction/v1/interactions/post-response.json +280 -0
- package/test/resources/9999999/interaction/v1/interactions/put-response.json +280 -0
- package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
- package/test/resources/9999999/query/post-expected.sql +1 -1
- package/test/resources/9999999/transactionalEmail/post-expected.json +1 -1
- package/test/transactionalEmail.test.js +7 -7
- package/test/transactionalPush.test.js +7 -7
- package/test/transactionalSMS.test.js +7 -7
- package/test/utils.js +50 -0
- package/types/mcdev.d.js +1 -0
|
@@ -18,12 +18,11 @@ class List extends MetadataType {
|
|
|
18
18
|
*
|
|
19
19
|
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
|
|
20
20
|
* @param {void} [_] unused parameter
|
|
21
|
-
* @param {
|
|
22
|
-
* @param {void} [___] unused parameter
|
|
21
|
+
* @param {void} [__] unused parameter
|
|
23
22
|
* @param {string} [key] customer key of single item to retrieve
|
|
24
23
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
25
24
|
*/
|
|
26
|
-
static async retrieve(retrieveDir, _,
|
|
25
|
+
static async retrieve(retrieveDir, _, __, key) {
|
|
27
26
|
/** @type {TYPE.SoapRequestParams} */
|
|
28
27
|
let requestParams = null;
|
|
29
28
|
if (key) {
|
|
@@ -44,29 +43,31 @@ class List extends MetadataType {
|
|
|
44
43
|
},
|
|
45
44
|
};
|
|
46
45
|
}
|
|
47
|
-
const results = await super.retrieveSOAP(retrieveDir,
|
|
48
|
-
return await this._retrieveParentAllSubs(
|
|
46
|
+
const results = await super.retrieveSOAP(retrieveDir, requestParams);
|
|
47
|
+
return await this._retrieveParentAllSubs(results);
|
|
49
48
|
}
|
|
50
49
|
/**
|
|
51
50
|
* Gets metadata cache with limited fields and does not store value to disk
|
|
52
51
|
*
|
|
53
|
-
* @param {TYPE.BuObject} buObject properties for auth
|
|
54
52
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
|
|
55
53
|
*/
|
|
56
|
-
static async retrieveForCache(
|
|
57
|
-
const results = await this.retrieve(
|
|
54
|
+
static async retrieveForCache() {
|
|
55
|
+
const results = await this.retrieve();
|
|
58
56
|
if (!cache.getCache()?.folder) {
|
|
59
|
-
|
|
60
|
-
Util.logger.info(' - Caching dependent Metadata: folder');
|
|
61
|
-
Folder.client = this.client;
|
|
62
|
-
Folder.properties = this.properties;
|
|
63
|
-
const result = await Folder.retrieveForCache(buObject, [
|
|
57
|
+
const subTypeArr = [
|
|
64
58
|
'list',
|
|
65
59
|
'mysubs',
|
|
66
60
|
'suppression_list',
|
|
67
61
|
'publication',
|
|
68
62
|
'contextual_suppression_list',
|
|
69
|
-
]
|
|
63
|
+
];
|
|
64
|
+
Util.logger.debug('folders not cached but required for list');
|
|
65
|
+
Util.logger.info(' - Caching dependent Metadata: folder');
|
|
66
|
+
Util.logSubtypes(subTypeArr);
|
|
67
|
+
Folder.client = this.client;
|
|
68
|
+
Folder.buObject = this.buObject;
|
|
69
|
+
Folder.properties = this.properties;
|
|
70
|
+
const result = await Folder.retrieveForCache(null, subTypeArr);
|
|
70
71
|
cache.setMetadata('folder', result.metadata);
|
|
71
72
|
}
|
|
72
73
|
for (const metadataEntry in results.metadata) {
|
|
@@ -78,27 +79,30 @@ class List extends MetadataType {
|
|
|
78
79
|
/**
|
|
79
80
|
* helper for @link retrieveForCache and @link retrieve
|
|
80
81
|
*
|
|
81
|
-
* @
|
|
82
|
+
* @private
|
|
82
83
|
* @param {TYPE.MetadataTypeMapObj} results metadata from retrieve for current BU
|
|
83
84
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
84
85
|
*/
|
|
85
|
-
static async _retrieveParentAllSubs(
|
|
86
|
-
if (buObject.eid !== buObject.mid) {
|
|
86
|
+
static async _retrieveParentAllSubs(results) {
|
|
87
|
+
if (this.buObject.eid !== this.buObject.mid) {
|
|
87
88
|
// for caching, we want to get the All Subscriber List from the Parent Account
|
|
88
89
|
Util.logger.debug(' - Checking MasterUnsubscribeBehavior for current BU');
|
|
89
90
|
/** @type {TYPE.BuObject} */
|
|
90
91
|
const buObjectParentBu = {
|
|
91
|
-
eid: this.properties.credentials[buObject.credential].eid,
|
|
92
|
-
mid: this.properties.credentials[buObject.credential].eid,
|
|
92
|
+
eid: this.properties.credentials[this.buObject.credential].eid,
|
|
93
|
+
mid: this.properties.credentials[this.buObject.credential].eid,
|
|
93
94
|
businessUnit: Util.parentBuName,
|
|
94
|
-
credential: buObject.credential,
|
|
95
|
+
credential: this.buObject.credential,
|
|
95
96
|
};
|
|
97
|
+
const clientBackup = this.client;
|
|
98
|
+
const buObjectBackup = this.buObject;
|
|
96
99
|
try {
|
|
97
100
|
this.client = auth.getSDK(buObjectParentBu);
|
|
98
101
|
} catch (ex) {
|
|
99
102
|
Util.logger.error(ex.message);
|
|
100
103
|
return;
|
|
101
104
|
}
|
|
105
|
+
this.buObject = buObjectParentBu;
|
|
102
106
|
const buResult = await this.client.soap.retrieve(
|
|
103
107
|
'BusinessUnit',
|
|
104
108
|
['MasterUnsubscribeBehavior'],
|
|
@@ -107,7 +111,7 @@ class List extends MetadataType {
|
|
|
107
111
|
filter: {
|
|
108
112
|
leftOperand: 'ID',
|
|
109
113
|
operator: 'equals',
|
|
110
|
-
rightOperand: this.properties.credentials[buObject.credential].eid,
|
|
114
|
+
rightOperand: this.properties.credentials[this.buObject.credential].eid,
|
|
111
115
|
},
|
|
112
116
|
}
|
|
113
117
|
);
|
|
@@ -117,13 +121,8 @@ class List extends MetadataType {
|
|
|
117
121
|
Util.logger.info(
|
|
118
122
|
' - Caching dependent Metadata: All Subscriber list (on _ParentBU_)'
|
|
119
123
|
);
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
null,
|
|
123
|
-
buObjectParentBu,
|
|
124
|
-
null,
|
|
125
|
-
'All Subscribers'
|
|
126
|
-
);
|
|
124
|
+
// do not use retrieveForCache here because (a) it does not support key-filtering and (b) it would cache folders on top which we do not need for the global all subscriber list
|
|
125
|
+
const metadataParentBu = await this.retrieve(null, null, null, 'All Subscribers');
|
|
127
126
|
// manually set folder path of parent's All Subscriber List to avoid retrieving folders
|
|
128
127
|
for (const key of Object.keys(metadataParentBu.metadata)) {
|
|
129
128
|
metadataParentBu.metadata[key].r__folder_Path = 'my subscribers';
|
|
@@ -136,16 +135,21 @@ class List extends MetadataType {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
|
|
138
|
+
// revert to current default
|
|
139
|
+
this.client = clientBackup;
|
|
140
|
+
this.buObject = buObjectBackup;
|
|
141
|
+
|
|
139
142
|
// make sure to overwrite parent bu DEs with local ones
|
|
140
143
|
return {
|
|
141
144
|
metadata: { ...metadataParentBu.metadata, ...results.metadata },
|
|
142
145
|
type: results.type,
|
|
143
146
|
};
|
|
144
147
|
} else if (masterUnsubscribeBehavior === 'BUSINESS_UNIT_ONLY') {
|
|
148
|
+
// revert client to current default
|
|
149
|
+
this.client = clientBackup;
|
|
150
|
+
|
|
145
151
|
Util.logger.debug(' - BU uses own All Subscriber List');
|
|
146
152
|
}
|
|
147
|
-
// revert client to current default
|
|
148
|
-
this.client = auth.getSDK(this.buObject);
|
|
149
153
|
}
|
|
150
154
|
return results;
|
|
151
155
|
}
|
|
@@ -153,12 +157,11 @@ class List extends MetadataType {
|
|
|
153
157
|
/**
|
|
154
158
|
* Delete a metadata item from the specified business unit
|
|
155
159
|
*
|
|
156
|
-
* @param {TYPE.BuObject} buObject references credentials
|
|
157
160
|
* @param {string} customerKey Identifier of data extension
|
|
158
161
|
* @returns {Promise.<boolean>} deletion success status
|
|
159
162
|
*/
|
|
160
|
-
static deleteByKey(
|
|
161
|
-
return super.deleteByKeySOAP(
|
|
163
|
+
static deleteByKey(customerKey) {
|
|
164
|
+
return super.deleteByKeySOAP(customerKey, false);
|
|
162
165
|
}
|
|
163
166
|
|
|
164
167
|
/**
|