mcdev 4.3.3 → 5.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.
- package/.coverage-comment-template.md +20 -0
- package/.coverage-comment-template.svelte +178 -0
- package/.eslintrc.json +2 -0
- package/.fork/.prettierrc +6 -0
- package/.fork/custom-commands.json +13 -1
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/workflows/code-test.yml +36 -0
- package/.github/workflows/coverage-base-update.yml +57 -0
- package/.github/workflows/coverage-develop-branch.yml +41 -0
- package/.github/workflows/coverage-main-branch.yml +41 -0
- package/.github/workflows/coverage.yml +77 -0
- package/.husky/post-checkout +1 -1
- package/.prettierrc +1 -1
- package/.vscode/extensions.json +0 -4
- package/boilerplate/config.json +1 -1
- package/boilerplate/files/.prettierrc +1 -1
- package/boilerplate/files/.vscode/extensions.json +1 -1
- package/boilerplate/files/.vscode/settings.json +1 -0
- package/boilerplate/forcedUpdates.json +8 -0
- package/docs/dist/documentation.md +1261 -433
- package/lib/Builder.js +6 -1
- package/lib/Deployer.js +34 -10
- package/lib/MetadataTypeDefinitions.js +8 -6
- package/lib/MetadataTypeInfo.js +8 -6
- package/lib/Retriever.js +4 -1
- package/lib/cli.js +54 -42
- package/lib/index.js +82 -8
- package/lib/metadataTypes/Asset.js +185 -31
- package/lib/metadataTypes/AttributeGroup.js +0 -1
- package/lib/metadataTypes/Automation.js +48 -5
- package/lib/metadataTypes/Campaign.js +20 -7
- package/lib/metadataTypes/ContentArea.js +1 -1
- package/lib/metadataTypes/DataExtension.js +221 -184
- package/lib/metadataTypes/DataExtensionField.js +12 -19
- package/lib/metadataTypes/DataExtensionTemplate.js +1 -1
- package/lib/metadataTypes/DataExtract.js +1 -1
- package/lib/metadataTypes/DataExtractType.js +1 -1
- package/lib/metadataTypes/Email.js +1 -1
- package/lib/metadataTypes/{EmailSendDefinition.js → EmailSend.js} +5 -5
- package/lib/metadataTypes/{EventDefinition.js → Event.js} +17 -35
- package/lib/metadataTypes/{FtpLocation.js → FileLocation.js} +2 -2
- package/lib/metadataTypes/FileTransfer.js +8 -7
- package/lib/metadataTypes/Filter.js +1 -1
- package/lib/metadataTypes/Folder.js +8 -3
- package/lib/metadataTypes/ImportFile.js +6 -6
- package/lib/metadataTypes/{Interaction.js → Journey.js} +311 -147
- package/lib/metadataTypes/List.js +2 -2
- package/lib/metadataTypes/MetadataType.js +318 -90
- package/lib/metadataTypes/MobileCode.js +0 -1
- package/lib/metadataTypes/MobileKeyword.js +336 -40
- package/lib/metadataTypes/MobileMessage.js +473 -0
- package/lib/metadataTypes/Query.js +114 -32
- package/lib/metadataTypes/Role.js +60 -21
- package/lib/metadataTypes/Script.js +5 -7
- package/lib/metadataTypes/SendClassification.js +40 -0
- package/lib/metadataTypes/SetDefinition.js +1 -7
- package/lib/metadataTypes/TransactionalEmail.js +2 -3
- package/lib/metadataTypes/TransactionalMessage.js +1 -2
- package/lib/metadataTypes/TransactionalSMS.js +8 -15
- package/lib/metadataTypes/{TriggeredSendDefinition.js → TriggeredSend.js} +35 -27
- package/lib/metadataTypes/User.js +1177 -0
- package/lib/metadataTypes/definitions/Asset.definition.js +2 -4
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +3 -2
- package/lib/metadataTypes/definitions/Campaign.definition.js +79 -4
- package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtension.definition.js +2 -1
- package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtract.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -0
- package/lib/metadataTypes/definitions/Discovery.definition.js +1 -0
- package/lib/metadataTypes/definitions/Email.definition.js +1 -0
- package/lib/metadataTypes/definitions/{EmailSendDefinition.definition.js → EmailSend.definition.js} +4 -2
- package/lib/metadataTypes/definitions/{EventDefinition.definition.js → Event.definition.js} +2 -1
- package/lib/metadataTypes/definitions/{FtpLocation.definition.js → FileLocation.definition.js} +4 -3
- package/lib/metadataTypes/definitions/FileTransfer.definition.js +3 -2
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
- package/lib/metadataTypes/definitions/Folder.definition.js +2 -0
- package/lib/metadataTypes/definitions/ImportFile.definition.js +4 -3
- package/lib/metadataTypes/definitions/{Interaction.definition.js → Journey.definition.js} +11 -2
- package/lib/metadataTypes/definitions/List.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileCode.definition.js +3 -1
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +27 -17
- package/lib/metadataTypes/definitions/MobileMessage.definition.js +743 -0
- package/lib/metadataTypes/definitions/Query.definition.js +3 -2
- package/lib/metadataTypes/definitions/Role.definition.js +5 -0
- package/lib/metadataTypes/definitions/Script.definition.js +1 -0
- package/lib/metadataTypes/definitions/SendClassification.definition.js +114 -0
- package/lib/metadataTypes/definitions/SetDefinition.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -1
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +1 -0
- package/lib/metadataTypes/definitions/{TriggeredSendDefinition.definition.js → TriggeredSend.definition.js} +5 -3
- package/lib/metadataTypes/definitions/User.definition.js +365 -0
- package/lib/retrieveChangelog.js +1 -2
- package/lib/util/auth.js +29 -9
- package/lib/util/businessUnit.js +3 -3
- package/lib/util/cli.js +55 -7
- package/lib/util/devops.js +93 -8
- package/lib/util/file.js +55 -13
- package/lib/util/init.config.js +1 -2
- package/lib/util/init.npm.js +3 -3
- package/lib/util/util.js +68 -14
- package/package.json +16 -15
- package/test/general.test.js +62 -0
- package/test/mockRoot/.mcdevrc.json +7 -5
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testBlocked_user.user-meta.json +23 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testExisting_user.user-meta.json +31 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testNew_user.user-meta.json +27 -0
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{childBU_dataextension_test.dataExtension-meta.json → testExisting_dataExtension.dataExtension-meta.json} +2 -2
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{testDataExtension.dataExtension-meta.json → testNew_dataExtension.dataExtension-meta.json} +2 -2
- package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_interaction.interaction-meta.json +576 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.amp +2 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.json +10 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.amp +2 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.json +10 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.amp +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json +61 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.amp +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.json +60 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.sql +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -1
- package/test/resourceFactory.js +13 -0
- package/test/resources/1111111/accountUser/configure-response.xml +70 -0
- package/test/resources/1111111/accountUser/create-response.xml +97 -0
- package/test/resources/1111111/accountUser/retrieve-response.xml +156 -0
- package/test/resources/1111111/accountUser/update-response.xml +111 -0
- package/test/resources/1111111/accountUserAccount/retrieve-response.xml +77 -0
- package/test/resources/1111111/platform/v1/setup/quickflow/data/get-response.json +455 -0
- package/test/resources/1111111/role/retrieve-response.xml +76 -0
- package/test/resources/1111111/user/build-expected.json +16 -0
- package/test/resources/1111111/user/create-expected.json +21 -0
- package/test/resources/1111111/user/retrieve-expected.json +24 -0
- package/test/resources/1111111/user/template-expected.json +16 -0
- package/test/resources/1111111/user/update-expected.json +21 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/delete-response.json +1 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +17 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +3 -3
- package/test/resources/9999999/automation/v1/queries/get-response.json +21 -4
- package/test/resources/9999999/automation/v1/queries/post-response.json +4 -4
- package/test/resources/9999999/data/v1/customobjectdata/key/{childBU_dataextension_test → testExisting_dataExtension}/rowset/get-response.json +1 -1
- package/test/resources/9999999/dataExtension/build-expected.json +3 -3
- package/test/resources/9999999/dataExtension/create-expected.json +2 -2
- package/test/resources/9999999/dataExtension/create-response.xml +8 -3
- package/test/resources/9999999/dataExtension/retrieve-expected.json +3 -3
- package/test/resources/9999999/dataExtension/retrieve-response.xml +9 -4
- package/test/resources/9999999/dataExtension/template-expected.json +3 -3
- package/test/resources/9999999/dataExtension/update-expected.json +3 -3
- package/test/resources/9999999/dataExtension/update-response.xml +9 -4
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +14 -9
- package/test/resources/9999999/interaction/v1/interactions/get-response.json +312 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +312 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/put-response.json +592 -0
- package/test/resources/9999999/journey/build-expected.json +572 -0
- package/test/resources/9999999/journey/get-expected.json +576 -0
- package/test/resources/9999999/journey/put-expected.json +576 -0
- package/test/resources/9999999/journey/template-expected.json +572 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/NXV4ZFMwTEFwRVczd3RaLUF5X3p5dzo4Njow/get-response.json +42 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/cTVJaG5oSDJPVUNHcUh6Z3pQT2tVdzo4Njow/delete-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/get-response.json +1 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/post-response.json +3 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/delete-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/get-response.json +106 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/post-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTQ3Ojc4OjA/get-response.json +127 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/get-response.json +129 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/post-response.json +3 -0
- package/test/resources/9999999/legacy/v1/beta2/data/campaign/get-response.json +29 -0
- package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +1 -1
- package/test/resources/9999999/mobileKeyword/build-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/build-expected.json +9 -0
- package/test/resources/9999999/mobileKeyword/get-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/get-expected.json +15 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.json +17 -0
- package/test/resources/9999999/mobileKeyword/template-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/template-expected.json +9 -0
- package/test/resources/9999999/mobileMessage/build-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/build-expected.json +60 -0
- package/test/resources/9999999/mobileMessage/get-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/get-expected.json +61 -0
- package/test/resources/9999999/mobileMessage/post-create-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/post-create-expected.json +63 -0
- package/test/resources/9999999/mobileMessage/post-update-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/post-update-expected.json +61 -0
- package/test/resources/9999999/mobileMessage/template-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/template-expected.json +60 -0
- package/test/resources/9999999/query/build-expected.json +1 -1
- package/test/resources/9999999/query/get-expected.json +1 -1
- package/test/resources/9999999/query/get2-expected.json +11 -0
- package/test/resources/9999999/query/patch-expected.json +1 -1
- package/test/resources/9999999/query/post-expected.json +1 -1
- package/test/resources/9999999/query/template-expected.json +1 -1
- package/test/resources/9999999/queryDefinition/retrieve-response.xml +30 -0
- package/test/resources/9999999/transactionalEmail/build-expected.json +5 -5
- package/test/resources/9999999/transactionalEmail/get-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/patch-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/post-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/template-expected.json +5 -5
- package/test/resources/9999999/transactionalPush/build-expected.json +2 -2
- package/test/resources/9999999/transactionalPush/template-expected.json +2 -2
- package/test/resources/9999999/transactionalSMS/build-expected.json +3 -3
- package/test/resources/9999999/transactionalSMS/template-expected.json +3 -3
- package/test/{dataExtension.test.js → type.dataExtension.test.js} +78 -21
- package/test/{interaction.test.js → type.journey.test.js} +64 -30
- package/test/type.mobileKeyword.test.js +250 -0
- package/test/type.mobileMessage.test.js +205 -0
- package/test/{query.test.js → type.query.test.js} +102 -5
- package/test/{transactionalEmail.test.js → type.transactionalEmail.test.js} +40 -2
- package/test/{transactionalPush.test.js → type.transactionalPush.test.js} +41 -2
- package/test/{transactionalSMS.test.js → type.transactionalSMS.test.js} +73 -3
- package/test/type.user.test.js +160 -0
- package/test/utils.js +17 -5
- package/types/mcdev.d.js +48 -15
- package/.github/workflows/code-analysis.yml +0 -57
- package/lib/metadataTypes/AccountUser.js +0 -426
- package/lib/metadataTypes/definitions/AccountUser.definition.js +0 -227
- package/test/mockRoot/deploy/testInstance/testBU/interaction/testExisting_interaction.interaction-meta.json +0 -266
- package/test/resources/9999999/interaction/build-expected.json +0 -260
- package/test/resources/9999999/interaction/get-expected.json +0 -264
- package/test/resources/9999999/interaction/put-expected.json +0 -264
- package/test/resources/9999999/interaction/template-expected.json +0 -260
- package/test/resources/9999999/interaction/v1/interactions/put-response.json +0 -280
- /package/test/mockRoot/deploy/testInstance/testBU/{interaction → journey}/testNew_interaction.interaction-meta.json +0 -0
- /package/test/resources/9999999/{interaction → journey}/post-expected.json +0 -0
|
@@ -18,7 +18,7 @@ class DataExtensionField extends MetadataType {
|
|
|
18
18
|
* @returns {Promise.<{metadata: TYPE.DataExtensionFieldMap, type: string}>} Promise of items
|
|
19
19
|
*/
|
|
20
20
|
static async retrieve(retrieveDir, additionalFields) {
|
|
21
|
-
return super.retrieveSOAP(retrieveDir, null, additionalFields);
|
|
21
|
+
return super.retrieveSOAP(retrieveDir, null, null, additionalFields);
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Retrieves all records for caching
|
|
@@ -28,7 +28,7 @@ class DataExtensionField extends MetadataType {
|
|
|
28
28
|
* @returns {Promise.<{metadata: TYPE.DataExtensionFieldMap, type: string}>} Promise of items
|
|
29
29
|
*/
|
|
30
30
|
static async retrieveForCache(requestParams, additionalFields) {
|
|
31
|
-
return super.retrieveSOAP(null, requestParams, additionalFields);
|
|
31
|
+
return super.retrieveSOAP(null, requestParams, null, additionalFields);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* helper for {@link DataExtension._retrieveFieldsForSingleDe} that sorts the fields into an array
|
|
@@ -96,7 +96,7 @@ class DataExtensionField extends MetadataType {
|
|
|
96
96
|
*
|
|
97
97
|
* @param {TYPE.DataExtensionFieldItem[]} deployColumns Columns of data extension that will be deployed
|
|
98
98
|
* @param {string} deKey external/customer key of Data Extension
|
|
99
|
-
* @returns {Object.<string, TYPE.DataExtensionFieldItem
|
|
99
|
+
* @returns {Promise.<Object.<string, TYPE.DataExtensionFieldItem>>} existing fields by their original name to allow re-adding FieldType after update
|
|
100
100
|
*/
|
|
101
101
|
static async prepareDeployColumnsOnUpdate(deployColumns, deKey) {
|
|
102
102
|
// get row count to know which field restrictions apply
|
|
@@ -258,17 +258,16 @@ class DataExtensionField extends MetadataType {
|
|
|
258
258
|
* @returns {Promise.<boolean>} deletion success status
|
|
259
259
|
*/
|
|
260
260
|
static deleteByKey(customerKey) {
|
|
261
|
-
return this.deleteByKeySOAP(customerKey
|
|
261
|
+
return this.deleteByKeySOAP(customerKey);
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
/**
|
|
265
265
|
* Delete a data extension from the specified business unit
|
|
266
266
|
*
|
|
267
267
|
* @param {string} customerKey Identifier of metadata
|
|
268
|
-
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
|
|
269
268
|
* @returns {boolean} deletion success flag
|
|
270
269
|
*/
|
|
271
|
-
static async deleteByKeySOAP(customerKey
|
|
270
|
+
static async deleteByKeySOAP(customerKey) {
|
|
272
271
|
const [deKey, fieldKey] = customerKey.split('.');
|
|
273
272
|
customerKey = `[${deKey}].[${fieldKey}]`;
|
|
274
273
|
|
|
@@ -305,22 +304,16 @@ class DataExtensionField extends MetadataType {
|
|
|
305
304
|
null
|
|
306
305
|
);
|
|
307
306
|
|
|
308
|
-
|
|
309
|
-
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
|
|
310
|
-
}
|
|
307
|
+
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
|
|
311
308
|
this.postDeleteTasks(customerKey);
|
|
312
309
|
return true;
|
|
313
310
|
} catch (ex) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
Util.logger.error(
|
|
321
|
-
`- error deleting ${this.definition.type} '${customerKey}': ${errorMsg}`
|
|
322
|
-
);
|
|
323
|
-
}
|
|
311
|
+
const errorMsg = ex.results?.length
|
|
312
|
+
? `${ex.results[0].StatusMessage} (Code ${ex.results[0].ErrorCode})`
|
|
313
|
+
: ex.message;
|
|
314
|
+
Util.logger.error(
|
|
315
|
+
`- error deleting ${this.definition.type} '${customerKey}': ${errorMsg}`
|
|
316
|
+
);
|
|
324
317
|
|
|
325
318
|
return false;
|
|
326
319
|
}
|
|
@@ -23,7 +23,7 @@ class DataExtract extends MetadataType {
|
|
|
23
23
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
|
|
24
24
|
*/
|
|
25
25
|
static async retrieve(retrieveDir, _, __, key) {
|
|
26
|
-
return super.retrieveREST(retrieveDir, '/automation/v1/dataextracts/', null,
|
|
26
|
+
return super.retrieveREST(retrieveDir, '/automation/v1/dataextracts/', null, key);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Retrieves Metadata of Data Extract Activity for caching
|
|
@@ -21,7 +21,7 @@ class DataExtractType extends MetadataType {
|
|
|
21
21
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
|
|
22
22
|
*/
|
|
23
23
|
static retrieve(retrieveDir, _, __, key) {
|
|
24
|
-
return super.retrieveREST(retrieveDir, '/automation/v1/dataextracttypes/', null,
|
|
24
|
+
return super.retrieveREST(retrieveDir, '/automation/v1/dataextracttypes/', null, key);
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Retrieves Metadata of Data Extract Type for caching.
|
|
@@ -32,7 +32,7 @@ class Email extends MetadataType {
|
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
// !dont activate `await File.initPrettier('html');` as we only want to retrieve for migration and formatting might mess with the outcome
|
|
35
|
-
return super.retrieveSOAP(retrieveDir, requestParams);
|
|
35
|
+
return super.retrieveSOAP(retrieveDir, requestParams, key);
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Helper for writing Metadata to disk, used for Retrieve and deploy
|
|
@@ -10,7 +10,7 @@ const cache = require('../util/cache');
|
|
|
10
10
|
*
|
|
11
11
|
* @augments MetadataType
|
|
12
12
|
*/
|
|
13
|
-
class
|
|
13
|
+
class EmailSend extends MetadataType {
|
|
14
14
|
/**
|
|
15
15
|
* Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
|
|
16
16
|
*
|
|
@@ -52,7 +52,7 @@ class EmailSendDefinition extends MetadataType {
|
|
|
52
52
|
},
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
return super.retrieveSOAP(retrieveDir, requestParams);
|
|
55
|
+
return super.retrieveSOAP(retrieveDir, requestParams, key);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/**
|
|
@@ -82,7 +82,7 @@ class EmailSendDefinition extends MetadataType {
|
|
|
82
82
|
* @returns {Promise.<boolean>} deletion success status
|
|
83
83
|
*/
|
|
84
84
|
static deleteByKey(customerKey) {
|
|
85
|
-
return super.deleteByKeySOAP(customerKey
|
|
85
|
+
return super.deleteByKeySOAP(customerKey);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
/**
|
|
@@ -292,6 +292,6 @@ class EmailSendDefinition extends MetadataType {
|
|
|
292
292
|
}
|
|
293
293
|
|
|
294
294
|
// Assign definition to static attributes
|
|
295
|
-
|
|
295
|
+
EmailSend.definition = require('../MetadataTypeDefinitions').emailSend;
|
|
296
296
|
|
|
297
|
-
module.exports =
|
|
297
|
+
module.exports = EmailSend;
|
|
@@ -7,11 +7,11 @@ const File = require('../util/file');
|
|
|
7
7
|
const cache = require('../util/cache');
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Event MetadataType
|
|
11
11
|
*
|
|
12
12
|
* @augments MetadataType
|
|
13
13
|
*/
|
|
14
|
-
class
|
|
14
|
+
class Event extends MetadataType {
|
|
15
15
|
/**
|
|
16
16
|
* Retrieves Metadata of Event Definition.
|
|
17
17
|
* Endpoint /interaction/v1/EventDefinitions return all Event Definitions with all details.
|
|
@@ -31,7 +31,6 @@ class EventDefinition extends MetadataType {
|
|
|
31
31
|
key ? '/key:' + encodeURIComponent(key) : ''
|
|
32
32
|
}?extras=all`,
|
|
33
33
|
null,
|
|
34
|
-
null,
|
|
35
34
|
key
|
|
36
35
|
);
|
|
37
36
|
}
|
|
@@ -77,7 +76,7 @@ class EventDefinition extends MetadataType {
|
|
|
77
76
|
);
|
|
78
77
|
if (!eventDef.dataExtensionId) {
|
|
79
78
|
throw new Error(
|
|
80
|
-
`
|
|
79
|
+
`Event.parseMetadata:: ` +
|
|
81
80
|
`No Data Extension found for ` +
|
|
82
81
|
`event: ${eventDef.name}. ` +
|
|
83
82
|
`This cannot be templated`
|
|
@@ -101,7 +100,7 @@ class EventDefinition extends MetadataType {
|
|
|
101
100
|
);
|
|
102
101
|
}
|
|
103
102
|
} catch (ex) {
|
|
104
|
-
Util.logger.error('
|
|
103
|
+
Util.logger.error('Event.retrieveAsTemplate:: ' + ex);
|
|
105
104
|
return null;
|
|
106
105
|
}
|
|
107
106
|
}
|
|
@@ -137,21 +136,22 @@ class EventDefinition extends MetadataType {
|
|
|
137
136
|
* @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
|
|
138
137
|
* @param {string} deployDir directory where deploy metadata are saved
|
|
139
138
|
* @param {string} retrieveDir directory where metadata after deploy should be saved
|
|
139
|
+
* @param {boolean} [isRefresh] optional flag - so far not used by eventDefinition
|
|
140
140
|
* @returns {Promise.<TYPE.MetadataTypeMap>} Promise of keyField => metadata map
|
|
141
141
|
*/
|
|
142
|
-
static async deploy(metadata, deployDir, retrieveDir) {
|
|
142
|
+
static async deploy(metadata, deployDir, retrieveDir, isRefresh) {
|
|
143
143
|
Util.logBeta(this.definition.type);
|
|
144
|
-
return super.deploy(metadata, deployDir, retrieveDir);
|
|
144
|
+
return super.deploy(metadata, deployDir, retrieveDir, isRefresh);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
148
|
* Creates a single Event Definition
|
|
149
149
|
*
|
|
150
|
-
* @param {TYPE.MetadataTypeItem}
|
|
150
|
+
* @param {TYPE.MetadataTypeItem} metadata a single Event Definition
|
|
151
151
|
* @returns {Promise} Promise
|
|
152
152
|
*/
|
|
153
|
-
static create(
|
|
154
|
-
return super.createREST(
|
|
153
|
+
static create(metadata) {
|
|
154
|
+
return super.createREST(metadata, '/interaction/v1/EventDefinitions/');
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
/**
|
|
@@ -161,29 +161,11 @@ class EventDefinition extends MetadataType {
|
|
|
161
161
|
* @returns {Promise} Promise
|
|
162
162
|
*/
|
|
163
163
|
static async update(metadataEntry) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
uri: '/interaction/v1/EventDefinitions/' + metadataEntry.id,
|
|
170
|
-
json: metadataEntry,
|
|
171
|
-
headers: {},
|
|
172
|
-
};
|
|
173
|
-
try {
|
|
174
|
-
const response = await this.client.rest.put(options);
|
|
175
|
-
super.checkForErrors(response);
|
|
176
|
-
return response;
|
|
177
|
-
} catch (ex) {
|
|
178
|
-
Util.metadataLogger(
|
|
179
|
-
'error',
|
|
180
|
-
this.definition.type,
|
|
181
|
-
'updateREST',
|
|
182
|
-
ex,
|
|
183
|
-
metadataEntry.name
|
|
184
|
-
);
|
|
185
|
-
return null;
|
|
186
|
-
}
|
|
164
|
+
return super.updateREST(
|
|
165
|
+
metadataEntry,
|
|
166
|
+
'/interaction/v1/EventDefinitions/' + metadataEntry.id,
|
|
167
|
+
'put'
|
|
168
|
+
);
|
|
187
169
|
}
|
|
188
170
|
|
|
189
171
|
/**
|
|
@@ -232,6 +214,6 @@ class EventDefinition extends MetadataType {
|
|
|
232
214
|
}
|
|
233
215
|
|
|
234
216
|
// Assign definition to static attributes
|
|
235
|
-
|
|
217
|
+
Event.definition = require('../MetadataTypeDefinitions').event;
|
|
236
218
|
|
|
237
|
-
module.exports =
|
|
219
|
+
module.exports = Event;
|
|
@@ -20,7 +20,7 @@ class FtpLocation extends MetadataType {
|
|
|
20
20
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
21
21
|
*/
|
|
22
22
|
static retrieve(retrieveDir, _, __, key) {
|
|
23
|
-
return super.retrieveREST(retrieveDir, '/automation/v1/ftplocations/', null,
|
|
23
|
+
return super.retrieveREST(retrieveDir, '/automation/v1/ftplocations/', null, key);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
@@ -34,6 +34,6 @@ class FtpLocation extends MetadataType {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
// Assign definition to static attributes
|
|
37
|
-
FtpLocation.definition = require('../MetadataTypeDefinitions').
|
|
37
|
+
FtpLocation.definition = require('../MetadataTypeDefinitions').fileLocation;
|
|
38
38
|
|
|
39
39
|
module.exports = FtpLocation;
|
|
@@ -23,7 +23,7 @@ class FileTransfer extends MetadataType {
|
|
|
23
23
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
24
24
|
*/
|
|
25
25
|
static async retrieve(retrieveDir, _, __, key) {
|
|
26
|
-
return super.retrieveREST(retrieveDir, '/automation/v1/filetransfers/', null,
|
|
26
|
+
return super.retrieveREST(retrieveDir, '/automation/v1/filetransfers/', null, key);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Retrieves Metadata of FileTransfer Activity for caching
|
|
@@ -124,16 +124,17 @@ class FileTransfer extends MetadataType {
|
|
|
124
124
|
* @returns {Promise} Promise
|
|
125
125
|
*/
|
|
126
126
|
static async preDeployTasks(metadata) {
|
|
127
|
-
if (metadata.
|
|
127
|
+
if (metadata.r__fileLocation_name) {
|
|
128
128
|
metadata.fileTransferLocationId = cache.searchForField(
|
|
129
|
-
'
|
|
130
|
-
metadata.
|
|
129
|
+
'fileLocation',
|
|
130
|
+
metadata.r__fileLocation_name,
|
|
131
131
|
'name',
|
|
132
132
|
'id'
|
|
133
133
|
);
|
|
134
|
+
delete metadata.r__fileLocation_name;
|
|
134
135
|
} else {
|
|
135
136
|
throw new Error(
|
|
136
|
-
'
|
|
137
|
+
'r__fileLocation_name not set. Please ensure the source is properly set up and re-retrieve it first.'
|
|
137
138
|
);
|
|
138
139
|
}
|
|
139
140
|
return metadata;
|
|
@@ -146,8 +147,8 @@ class FileTransfer extends MetadataType {
|
|
|
146
147
|
*/
|
|
147
148
|
static parseMetadata(metadata) {
|
|
148
149
|
try {
|
|
149
|
-
metadata.
|
|
150
|
-
'
|
|
150
|
+
metadata.r__fileLocation_name = cache.searchForField(
|
|
151
|
+
'fileLocation',
|
|
151
152
|
metadata.fileTransferLocationId,
|
|
152
153
|
'id',
|
|
153
154
|
'name'
|
|
@@ -22,7 +22,7 @@ class Filter extends MetadataType {
|
|
|
22
22
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
23
23
|
*/
|
|
24
24
|
static async retrieve(retrieveDir, _, __, key) {
|
|
25
|
-
return super.retrieveREST(retrieveDir, '/automation/v1/filters/', null,
|
|
25
|
+
return super.retrieveREST(retrieveDir, '/automation/v1/filters/', null, key);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -167,6 +167,7 @@ class Folder extends MetadataType {
|
|
|
167
167
|
* @returns {Promise.<object>} Promise of saved metadata
|
|
168
168
|
*/
|
|
169
169
|
static async upsert(metadata) {
|
|
170
|
+
const orignalMetadata = JSON.parse(JSON.stringify(metadata));
|
|
170
171
|
let updateCount = 0;
|
|
171
172
|
let updateFailedCount = 0;
|
|
172
173
|
let createCount = 0;
|
|
@@ -318,6 +319,10 @@ class Folder extends MetadataType {
|
|
|
318
319
|
` - Folders are recognized for updates based on their CustomerKey or, if that is not given, their folder-path.`
|
|
319
320
|
);
|
|
320
321
|
}
|
|
322
|
+
await this.postDeployTasks(upsertResults, orignalMetadata, {
|
|
323
|
+
created: createCount,
|
|
324
|
+
updated: updateCount,
|
|
325
|
+
});
|
|
321
326
|
return upsertResults;
|
|
322
327
|
}
|
|
323
328
|
|
|
@@ -336,7 +341,7 @@ class Folder extends MetadataType {
|
|
|
336
341
|
}
|
|
337
342
|
const path = metadataEntry.Path;
|
|
338
343
|
try {
|
|
339
|
-
const response = await super.createSOAP(metadataEntry,
|
|
344
|
+
const response = await super.createSOAP(metadataEntry, true);
|
|
340
345
|
if (response) {
|
|
341
346
|
response.Results[0].Object = metadataEntry;
|
|
342
347
|
response.Results[0].Object.ID = response.Results[0].NewID;
|
|
@@ -368,7 +373,7 @@ class Folder extends MetadataType {
|
|
|
368
373
|
static async update(metadataEntry) {
|
|
369
374
|
const path = metadataEntry.Path;
|
|
370
375
|
try {
|
|
371
|
-
const response = await super.updateSOAP(metadataEntry,
|
|
376
|
+
const response = await super.updateSOAP(metadataEntry, true);
|
|
372
377
|
if (response) {
|
|
373
378
|
response.Results[0].Object = metadataEntry;
|
|
374
379
|
response.Results[0].Object.CustomerKey = metadataEntry.CustomerKey;
|
|
@@ -460,7 +465,7 @@ class Folder extends MetadataType {
|
|
|
460
465
|
// should not be in the path for the metadata. In case no split then return empty as this is root
|
|
461
466
|
|
|
462
467
|
const standardSubDir = File.reverseFilterIllegalFilenames(
|
|
463
|
-
subdir.
|
|
468
|
+
subdir.replaceAll('\\', '/').split(/folder\//)[1] || ''
|
|
464
469
|
);
|
|
465
470
|
for (const fileName of File.readdirSync(subdir)) {
|
|
466
471
|
try {
|
|
@@ -24,7 +24,7 @@ class ImportFile extends MetadataType {
|
|
|
24
24
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
25
25
|
*/
|
|
26
26
|
static retrieve(retrieveDir, _, __, key) {
|
|
27
|
-
return super.retrieveREST(retrieveDir, '/automation/v1/imports/', null,
|
|
27
|
+
return super.retrieveREST(retrieveDir, '/automation/v1/imports/', null, key);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
@@ -125,12 +125,12 @@ class ImportFile extends MetadataType {
|
|
|
125
125
|
*/
|
|
126
126
|
static async preDeployTasks(metadata) {
|
|
127
127
|
metadata.fileTransferLocationId = cache.searchForField(
|
|
128
|
-
'
|
|
129
|
-
metadata.
|
|
128
|
+
'fileLocation',
|
|
129
|
+
metadata.r__fileLocation_name,
|
|
130
130
|
'name',
|
|
131
131
|
'id'
|
|
132
132
|
);
|
|
133
|
-
delete metadata.
|
|
133
|
+
delete metadata.r__fileLocation_name;
|
|
134
134
|
|
|
135
135
|
if (metadata.c__destinationType === 'DataExtension') {
|
|
136
136
|
if (metadata.r__dataExtension_CustomerKey) {
|
|
@@ -179,8 +179,8 @@ class ImportFile extends MetadataType {
|
|
|
179
179
|
* @returns {TYPE.MetadataTypeItem} parsed metadata definition
|
|
180
180
|
*/
|
|
181
181
|
static parseMetadata(metadata) {
|
|
182
|
-
metadata.
|
|
183
|
-
'
|
|
182
|
+
metadata.r__fileLocation_name = cache.searchForField(
|
|
183
|
+
'fileLocation',
|
|
184
184
|
metadata.fileTransferLocationId,
|
|
185
185
|
'id',
|
|
186
186
|
'name'
|