mcdev 4.2.1 → 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 +700 -281
- package/lib/Deployer.js +21 -15
- package/lib/Retriever.js +23 -19
- package/lib/cli.js +36 -6
- package/lib/index.js +56 -10
- 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/file.js +7 -3
- package/lib/util/init.js +62 -0
- 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
|
@@ -39,9 +39,9 @@ describe('transactionalSMS', () => {
|
|
|
39
39
|
file(testUtils.getExpectedFile('9999999', 'transactionalSMS', 'get', 'amp'))
|
|
40
40
|
);
|
|
41
41
|
assert.equal(
|
|
42
|
-
|
|
42
|
+
testUtils.getAPIHistoryLength(),
|
|
43
43
|
4,
|
|
44
|
-
'Unexpected number of requests made'
|
|
44
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
45
45
|
);
|
|
46
46
|
return;
|
|
47
47
|
});
|
|
@@ -85,9 +85,9 @@ describe('transactionalSMS', () => {
|
|
|
85
85
|
);
|
|
86
86
|
// check number of API calls
|
|
87
87
|
assert.equal(
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
'Unexpected number of requests made'
|
|
88
|
+
testUtils.getAPIHistoryLength(),
|
|
89
|
+
6,
|
|
90
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
91
91
|
);
|
|
92
92
|
return;
|
|
93
93
|
});
|
|
@@ -139,9 +139,9 @@ describe('transactionalSMS', () => {
|
|
|
139
139
|
file(testUtils.getExpectedFile('9999999', 'transactionalSMS', 'build', 'amp'))
|
|
140
140
|
);
|
|
141
141
|
assert.equal(
|
|
142
|
-
|
|
142
|
+
testUtils.getAPIHistoryLength(),
|
|
143
143
|
4,
|
|
144
|
-
'Unexpected number of requests made'
|
|
144
|
+
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
145
145
|
);
|
|
146
146
|
return;
|
|
147
147
|
});
|
package/test/utils.js
CHANGED
|
@@ -114,12 +114,29 @@ exports.mockSetup = (isDeploy) => {
|
|
|
114
114
|
.reply((config) => resourceFactory.handleRESTRequest(config));
|
|
115
115
|
const fsMockConf = {
|
|
116
116
|
'.prettierrc': fsmock.load(path.resolve(__dirname, '../boilerplate/files/.prettierrc')),
|
|
117
|
+
'.eslintrc': fsmock.load(path.resolve(__dirname, '../boilerplate/files/.eslintrc')),
|
|
118
|
+
'.eslintignore': fsmock.load(path.resolve(__dirname, '../boilerplate/files/.eslintignore')),
|
|
117
119
|
'.mcdevrc.json': fsmock.load(path.resolve(__dirname, 'mockRoot/.mcdevrc.json')),
|
|
118
120
|
'.mcdev-auth.json': fsmock.load(path.resolve(__dirname, 'mockRoot/.mcdev-auth.json')),
|
|
119
121
|
'boilerplate/config.json': fsmock.load(
|
|
120
122
|
path.resolve(__dirname, '../boilerplate/config.json')
|
|
121
123
|
),
|
|
122
124
|
test: fsmock.load(path.resolve(__dirname)),
|
|
125
|
+
// the following node_modules are required for prettier's SQL parser to work
|
|
126
|
+
'node_modules/prettier': fsmock.load(path.resolve(__dirname, '../node_modules/prettier')),
|
|
127
|
+
'node_modules/prettier-plugin-sql': fsmock.load(
|
|
128
|
+
path.resolve(__dirname, '../node_modules/prettier-plugin-sql')
|
|
129
|
+
),
|
|
130
|
+
'node_modules/node-sql-parser': fsmock.load(
|
|
131
|
+
path.resolve(__dirname, '../node_modules/node-sql-parser')
|
|
132
|
+
),
|
|
133
|
+
'node_modules/big-integer': fsmock.load(
|
|
134
|
+
path.resolve(__dirname, '../node_modules/big-integer')
|
|
135
|
+
),
|
|
136
|
+
'node_modules/sql-formatter': fsmock.load(
|
|
137
|
+
path.resolve(__dirname, '../node_modules/sql-formatter')
|
|
138
|
+
),
|
|
139
|
+
'node_modules/nearley': fsmock.load(path.resolve(__dirname, '../node_modules/nearley')),
|
|
123
140
|
};
|
|
124
141
|
if (isDeploy) {
|
|
125
142
|
// load files we manually prepared for a direct test of `deploy` command
|
|
@@ -138,12 +155,45 @@ exports.mockReset = () => {
|
|
|
138
155
|
fsmock.restore();
|
|
139
156
|
apimock.restore();
|
|
140
157
|
};
|
|
158
|
+
/**
|
|
159
|
+
* helper to return amount of api callouts
|
|
160
|
+
*
|
|
161
|
+
* @param {boolean} [includeToken] if true, will include token calls in count
|
|
162
|
+
* @returns {object} of API history
|
|
163
|
+
*/
|
|
164
|
+
exports.getAPIHistoryLength = (includeToken) => {
|
|
165
|
+
const historyArr = Object.values(apimock.history).flat();
|
|
166
|
+
if (includeToken) {
|
|
167
|
+
return historyArr.length;
|
|
168
|
+
}
|
|
169
|
+
return historyArr.filter((item) => item.url !== '/v2/token').length;
|
|
170
|
+
};
|
|
141
171
|
/**
|
|
142
172
|
* helper to return api history
|
|
143
173
|
*
|
|
144
174
|
* @returns {object} of API history
|
|
145
175
|
*/
|
|
146
176
|
exports.getAPIHistory = () => apimock.history;
|
|
177
|
+
/**
|
|
178
|
+
* helper to return most important fields for each api call
|
|
179
|
+
*
|
|
180
|
+
* @returns {object} of API history
|
|
181
|
+
*/
|
|
182
|
+
function getAPIHistoryDebug() {
|
|
183
|
+
const historyArr = Object.values(apimock.history)
|
|
184
|
+
.flat()
|
|
185
|
+
.map((item) => ({ url: item.url, data: item.data }));
|
|
186
|
+
return historyArr;
|
|
187
|
+
}
|
|
188
|
+
exports.getAPIHistoryDebug = getAPIHistoryDebug;
|
|
189
|
+
/**
|
|
190
|
+
* helper to return most important fields for each api call
|
|
191
|
+
*
|
|
192
|
+
* @returns {void} of API history
|
|
193
|
+
*/
|
|
194
|
+
exports.logAPIHistoryDebug = () => {
|
|
195
|
+
console.log(getAPIHistoryDebug()); // eslint-disable-line no-console
|
|
196
|
+
};
|
|
147
197
|
|
|
148
198
|
/**
|
|
149
199
|
* escapes string for regex
|
package/types/mcdev.d.js
CHANGED
|
@@ -24,6 +24,7 @@ const SDK = require('sfmc-sdk');
|
|
|
24
24
|
* @typedef {{metadata:MetadataTypeMap,type:SupportedMetadataTypes}} MetadataTypeMapObj
|
|
25
25
|
* @typedef {{metadata:MetadataTypeItem,type:SupportedMetadataTypes}} MetadataTypeItemObj
|
|
26
26
|
* @typedef {Object.<number, MultiMetadataTypeMap>} Cache key=MID
|
|
27
|
+
* @typedef {{before: TYPE.MetadataTypeItem, after: TYPE.MetadataTypeItem}} MetadataTypeItemDiff used during update
|
|
27
28
|
*/
|
|
28
29
|
|
|
29
30
|
/**
|