mcdev 7.5.0 → 7.6.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.
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/@types/lib/index.d.ts +12 -8
- package/@types/lib/index.d.ts.map +1 -1
- package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Automation.d.ts +14 -0
- package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtension.d.ts +3 -1
- package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Event.d.ts +2 -2
- package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Journey.d.ts +17 -0
- package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MetadataType.d.ts +8 -4
- package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Query.d.ts +7 -0
- package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts +1 -0
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TriggeredSend.d.ts +0 -8
- package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +1 -0
- package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
- package/@types/lib/util/util.d.ts.map +1 -1
- package/@types/types/mcdev.d.d.ts +20 -8
- package/@types/types/mcdev.d.d.ts.map +1 -1
- package/lib/cli.js +13 -2
- package/lib/index.js +46 -45
- package/lib/metadataTypes/Automation.js +28 -0
- package/lib/metadataTypes/Event.js +4 -1
- package/lib/metadataTypes/Journey.js +472 -94
- package/lib/metadataTypes/MetadataType.js +12 -6
- package/lib/metadataTypes/TriggeredSend.js +46 -15
- package/lib/metadataTypes/definitions/Automation.definition.js +1 -0
- package/lib/metadataTypes/definitions/Journey.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +1 -0
- package/package.json +15 -15
- package/test/general.test.js +5 -5
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINcontextual_suppression_list,hidden,list,mysubs,publication,suppression_list,triggered_send,triggered_send_journeybuilder-response.xml +385 -0
- package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/get-response.json +461 -0
- package/test/resources/9999999/interaction/v1/interactions/dsfdsafdsa-922c-4568-85a5-e5cc77efc3be/delete-response.txt +1 -0
- package/test/resources/9999999/interaction/v1/interactions/transactional/pause/post-response.json +3 -0
- package/test/resources/9999999/interaction/v1/interactions/transactional/resume/post-response.json +3 -0
- package/test/resources/9999999/triggeredSendDefinition/retrieve-CustomerKey=testExisting_triggeredSend-response.xml +72 -0
- package/test/resources/9999999/triggeredSendDefinition/retrieve-CustomerKey=testExisting_triggeredSend_rcb-response.xml +72 -0
- package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +1 -1
- package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINdummy,Active-response.xml +118 -0
- package/test/type.automation.test.js +13 -13
- package/test/type.journey.test.js +79 -5
- package/test/type.query.test.js +2 -2
- package/test/type.triggeredSend.test.js +68 -1
- package/types/mcdev.d.js +2 -1
package/lib/cli.js
CHANGED
|
@@ -734,11 +734,22 @@ yargs(hideBin(process.argv))
|
|
|
734
734
|
.positional('KEY', {
|
|
735
735
|
type: 'string',
|
|
736
736
|
describe: 'key(s) of the metadata component(s)',
|
|
737
|
+
})
|
|
738
|
+
.option('metadata', {
|
|
739
|
+
type: 'string',
|
|
740
|
+
array: true,
|
|
741
|
+
alias: 'm',
|
|
742
|
+
group: 'Options for execute:',
|
|
743
|
+
describe: 'type or type:key or type:i:id or type:n:name to fix',
|
|
737
744
|
}),
|
|
738
|
-
// TODO: add option --metadata
|
|
739
745
|
(argv) => {
|
|
740
746
|
Mcdev.setOptions(argv);
|
|
741
|
-
Mcdev.
|
|
747
|
+
const typeKeyCombo = Mcdev.metadataToTypeKey(argv.metadata);
|
|
748
|
+
if ('undefined' === typeof typeKeyCombo) {
|
|
749
|
+
Mcdev.refresh(argv.BU, csvToArray(argv.TYPE), csvToArray(argv.KEY));
|
|
750
|
+
} else {
|
|
751
|
+
Mcdev.refresh(argv.BU, typeKeyCombo);
|
|
752
|
+
}
|
|
742
753
|
}
|
|
743
754
|
)
|
|
744
755
|
.command(
|
package/lib/index.js
CHANGED
|
@@ -730,38 +730,12 @@ class Mcdev {
|
|
|
730
730
|
* ensures triggered sends are restarted to ensure they pick up on changes of the underlying emails
|
|
731
731
|
*
|
|
732
732
|
* @param {string} businessUnit references credentials from properties.json
|
|
733
|
-
* @param {string}
|
|
734
|
-
* @param {string[]} [
|
|
735
|
-
* @returns {Promise.<
|
|
733
|
+
* @param {string[] | TypeKeyCombo} [selectedTypes] limit to given metadata types
|
|
734
|
+
* @param {string[]} [keys] customerkey of the metadata
|
|
735
|
+
* @returns {Promise.<Object.<string, Object.<string, string[]>>>} key: business unit name, key2: type, value: list of affected item keys
|
|
736
736
|
*/
|
|
737
|
-
static async refresh(businessUnit,
|
|
738
|
-
|
|
739
|
-
Util.logger.info('mcdev:: refresh');
|
|
740
|
-
if (!type || !Util._isValidType(type, true)) {
|
|
741
|
-
type = 'triggeredSend';
|
|
742
|
-
Util.logger.info(' - setting type to ' + type);
|
|
743
|
-
}
|
|
744
|
-
const properties = await config.getProperties();
|
|
745
|
-
if (!(await config.checkProperties(properties))) {
|
|
746
|
-
return null;
|
|
747
|
-
}
|
|
748
|
-
const buObject = await Cli.getCredentialObject(properties, businessUnit);
|
|
749
|
-
if (buObject !== null) {
|
|
750
|
-
try {
|
|
751
|
-
MetadataTypeInfo[type].client = auth.getSDK(buObject);
|
|
752
|
-
} catch (ex) {
|
|
753
|
-
Util.logger.error(ex.message);
|
|
754
|
-
return;
|
|
755
|
-
}
|
|
756
|
-
try {
|
|
757
|
-
cache.initCache(buObject);
|
|
758
|
-
MetadataTypeInfo[type].properties = properties;
|
|
759
|
-
MetadataTypeInfo[type].buObject = buObject;
|
|
760
|
-
await MetadataTypeInfo[type].refresh(keyArr);
|
|
761
|
-
} catch (ex) {
|
|
762
|
-
Util.logger.errorStack(ex, 'mcdev.refresh');
|
|
763
|
-
}
|
|
764
|
-
}
|
|
737
|
+
static async refresh(businessUnit, selectedTypes, keys) {
|
|
738
|
+
return this.#runMethod('refresh', businessUnit, selectedTypes, keys);
|
|
765
739
|
}
|
|
766
740
|
|
|
767
741
|
/**
|
|
@@ -1127,6 +1101,7 @@ class Mcdev {
|
|
|
1127
1101
|
return;
|
|
1128
1102
|
}
|
|
1129
1103
|
if (!Array.isArray(typeKeyCombo[type])) {
|
|
1104
|
+
Util.logger.error('You need to define keys, not just types to run build');
|
|
1130
1105
|
// we need an array of keys here
|
|
1131
1106
|
return;
|
|
1132
1107
|
}
|
|
@@ -1188,6 +1163,7 @@ class Mcdev {
|
|
|
1188
1163
|
return;
|
|
1189
1164
|
}
|
|
1190
1165
|
if (!Array.isArray(selectedTypes[type])) {
|
|
1166
|
+
Util.logger.error('You need to define keys, not just types to run buildTemplate');
|
|
1191
1167
|
// we need an array of keys here
|
|
1192
1168
|
return;
|
|
1193
1169
|
}
|
|
@@ -1326,6 +1302,7 @@ class Mcdev {
|
|
|
1326
1302
|
return;
|
|
1327
1303
|
}
|
|
1328
1304
|
if (!Array.isArray(selectedTypes[type])) {
|
|
1305
|
+
Util.logger.error('You need to define keys, not just types to run buildDefinition');
|
|
1329
1306
|
// we need an array of keys here
|
|
1330
1307
|
return;
|
|
1331
1308
|
}
|
|
@@ -1381,6 +1358,9 @@ class Mcdev {
|
|
|
1381
1358
|
return;
|
|
1382
1359
|
}
|
|
1383
1360
|
if (!Array.isArray(selectedTypes[selectedType])) {
|
|
1361
|
+
Util.logger.error(
|
|
1362
|
+
'You need to define keys, not just types to run buildDefinitionBulk'
|
|
1363
|
+
);
|
|
1384
1364
|
// we need an array of keys here
|
|
1385
1365
|
return;
|
|
1386
1366
|
}
|
|
@@ -1681,7 +1661,7 @@ class Mcdev {
|
|
|
1681
1661
|
/**
|
|
1682
1662
|
* run a method across BUs
|
|
1683
1663
|
*
|
|
1684
|
-
* @param {'execute'|'pause'|'stop'|'publish'|'validate'|'fixKeys'|'replaceCbReference'} methodName what to run
|
|
1664
|
+
* @param {'execute'|'pause'|'stop'|'publish'|'validate'|'fixKeys'|'replaceCbReference'|'refresh'} methodName what to run
|
|
1685
1665
|
* @param {string} businessUnit name of BU
|
|
1686
1666
|
* @param {string[] | TypeKeyCombo} [selectedTypes] limit to given metadata types
|
|
1687
1667
|
* @param {string[]} [keys] customerkey of the metadata
|
|
@@ -1746,6 +1726,13 @@ class Mcdev {
|
|
|
1746
1726
|
checkMetadataSupport = true;
|
|
1747
1727
|
break;
|
|
1748
1728
|
}
|
|
1729
|
+
case 'refresh': {
|
|
1730
|
+
lang_past = 'refreshed';
|
|
1731
|
+
lang_present = 'refreshing';
|
|
1732
|
+
requireKeyOrLike = false;
|
|
1733
|
+
checkMetadataSupport = true;
|
|
1734
|
+
break;
|
|
1735
|
+
}
|
|
1749
1736
|
}
|
|
1750
1737
|
|
|
1751
1738
|
/** @typedef {string[]} */
|
|
@@ -1899,7 +1886,7 @@ class Mcdev {
|
|
|
1899
1886
|
/**
|
|
1900
1887
|
* helper for Mcdev.#runMethod
|
|
1901
1888
|
*
|
|
1902
|
-
* @param {'execute'|'pause'|'stop'|'publish'|'validate'|'fixKeys'|'replaceCbReference'} methodName what to run
|
|
1889
|
+
* @param {'execute'|'pause'|'stop'|'publish'|'validate'|'fixKeys'|'replaceCbReference'|'refresh'} methodName what to run
|
|
1903
1890
|
* @param {string} cred name of Credential
|
|
1904
1891
|
* @param {string} bu name of BU
|
|
1905
1892
|
* @param {string} [type] limit execution to given metadata type
|
|
@@ -1948,9 +1935,6 @@ class Mcdev {
|
|
|
1948
1935
|
if (Util.OPTIONS.like && Object.keys(Util.OPTIONS.like).length) {
|
|
1949
1936
|
keyArr = await this.#retrieveKeysWithLike(type, buObject);
|
|
1950
1937
|
}
|
|
1951
|
-
if (!keyArr || (Array.isArray(keyArr) && !keyArr.length)) {
|
|
1952
|
-
throw new Error('No keys were provided');
|
|
1953
|
-
} // result will be undefined (false) if methodName is not supported for the type
|
|
1954
1938
|
resultArr.push(...(await MetadataTypeInfo[type][methodName](keyArr)));
|
|
1955
1939
|
}
|
|
1956
1940
|
}
|
|
@@ -2215,36 +2199,53 @@ class Mcdev {
|
|
|
2215
2199
|
}
|
|
2216
2200
|
const metadataOptionMap = metadataOption.map((item) => {
|
|
2217
2201
|
const itemArr = item.split(':');
|
|
2202
|
+
const type = itemArr.shift();
|
|
2218
2203
|
switch (itemArr.length) {
|
|
2219
|
-
case
|
|
2220
|
-
|
|
2204
|
+
case 0: {
|
|
2205
|
+
// no ":" found
|
|
2206
|
+
return { type };
|
|
2221
2207
|
}
|
|
2222
|
-
case
|
|
2208
|
+
case 1: {
|
|
2209
|
+
// 1 ":" found
|
|
2223
2210
|
if (allowedIdentifiers.includes('key')) {
|
|
2224
|
-
return { type
|
|
2211
|
+
return { type, key: itemArr[0] };
|
|
2225
2212
|
}
|
|
2226
2213
|
break;
|
|
2227
2214
|
}
|
|
2228
|
-
|
|
2229
|
-
|
|
2215
|
+
default: {
|
|
2216
|
+
// 2 or more ":" found
|
|
2217
|
+
switch (itemArr[0]) {
|
|
2230
2218
|
case 'key':
|
|
2231
2219
|
case 'k': {
|
|
2232
2220
|
if (allowedIdentifiers.includes('key')) {
|
|
2233
|
-
|
|
2221
|
+
// remove k/key
|
|
2222
|
+
itemArr.shift();
|
|
2223
|
+
return { type, key: itemArr.join(':') };
|
|
2234
2224
|
}
|
|
2235
2225
|
break;
|
|
2236
2226
|
}
|
|
2237
2227
|
case 'id':
|
|
2238
2228
|
case 'i': {
|
|
2239
2229
|
if (allowedIdentifiers.includes('id')) {
|
|
2240
|
-
|
|
2230
|
+
// remove i/id
|
|
2231
|
+
itemArr.shift();
|
|
2232
|
+
return { type, id: itemArr.join(':') };
|
|
2241
2233
|
}
|
|
2242
2234
|
break;
|
|
2243
2235
|
}
|
|
2244
2236
|
case 'name':
|
|
2245
2237
|
case 'n': {
|
|
2246
2238
|
if (allowedIdentifiers.includes('name')) {
|
|
2247
|
-
|
|
2239
|
+
// remove n/name
|
|
2240
|
+
itemArr.shift();
|
|
2241
|
+
return { type, name: itemArr.join(':') };
|
|
2242
|
+
}
|
|
2243
|
+
break;
|
|
2244
|
+
}
|
|
2245
|
+
default: {
|
|
2246
|
+
// assume ":" is part of the key (e.g. possible for DE-fields)
|
|
2247
|
+
if (allowedIdentifiers.includes('key')) {
|
|
2248
|
+
return { type, key: itemArr.join(':') };
|
|
2248
2249
|
}
|
|
2249
2250
|
}
|
|
2250
2251
|
}
|
|
@@ -485,6 +485,22 @@ class Automation extends MetadataType {
|
|
|
485
485
|
// folder
|
|
486
486
|
this.setFolderPath(metadata);
|
|
487
487
|
// automations are often skipped due to lack of support.
|
|
488
|
+
if (
|
|
489
|
+
metadata.type == 'automationtriggered' &&
|
|
490
|
+
metadata.automationTrigger?.fileTransferLocationId
|
|
491
|
+
) {
|
|
492
|
+
try {
|
|
493
|
+
metadata.automationTrigger.r__fileLocation_name = cache.searchForField(
|
|
494
|
+
'fileLocation',
|
|
495
|
+
metadata.automationTrigger.fileTransferLocationId,
|
|
496
|
+
'id',
|
|
497
|
+
'name'
|
|
498
|
+
);
|
|
499
|
+
delete metadata.automationTrigger.fileTransferLocationId;
|
|
500
|
+
} catch (ex) {
|
|
501
|
+
Util.logger.warn(` - automation ${metadata.key}: ${ex.message}`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
488
504
|
try {
|
|
489
505
|
if (metadata.type === 'scheduled' && metadata.schedule?.startDate) {
|
|
490
506
|
// Starting Source == 'Schedule'
|
|
@@ -905,6 +921,18 @@ class Automation extends MetadataType {
|
|
|
905
921
|
this.notificationUpdates[metadata.key] = [];
|
|
906
922
|
}
|
|
907
923
|
}
|
|
924
|
+
if (
|
|
925
|
+
metadata.type == 'automationtriggered' &&
|
|
926
|
+
metadata.automationTrigger?.r__fileLocation_name
|
|
927
|
+
) {
|
|
928
|
+
metadata.automationTrigger.fileTransferLocationId = cache.searchForField(
|
|
929
|
+
'fileLocation',
|
|
930
|
+
metadata.automationTrigger.r__fileLocation_name,
|
|
931
|
+
'name',
|
|
932
|
+
'id'
|
|
933
|
+
);
|
|
934
|
+
delete metadata.automationTrigger.r__fileLocation_name;
|
|
935
|
+
}
|
|
908
936
|
if (this.validateDeployMetadata(metadata)) {
|
|
909
937
|
// folder
|
|
910
938
|
this.setFolderId(metadata);
|
|
@@ -828,7 +828,10 @@ class Event extends MetadataType {
|
|
|
828
828
|
if (Util.OPTIONS.ignoreSfFields) {
|
|
829
829
|
warnings.push(` (--ignoreSfFields) ` + msg);
|
|
830
830
|
} else {
|
|
831
|
-
errors.push(
|
|
831
|
+
errors.push(
|
|
832
|
+
msg +
|
|
833
|
+
` (you can use --ignoreSfFields to skip this error in case you are convinced it is a false positive)`
|
|
834
|
+
);
|
|
832
835
|
}
|
|
833
836
|
} else {
|
|
834
837
|
// check if the fields selected in the eventDefinition are actually available
|