mcdev 4.3.4 → 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/.github/ISSUE_TEMPLATE/bug.yml +1 -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/forcedUpdates.json +4 -0
- package/docs/dist/documentation.md +1196 -430
- package/lib/Builder.js +6 -1
- package/lib/Deployer.js +30 -5
- package/lib/MetadataTypeDefinitions.js +8 -6
- package/lib/MetadataTypeInfo.js +8 -6
- package/lib/cli.js +54 -42
- package/lib/index.js +82 -8
- package/lib/metadataTypes/Asset.js +73 -1
- 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 +2 -3
- 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 +1 -0
- 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 +6 -4
- 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 +23 -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
|
@@ -8,7 +8,7 @@ const cache = require('../util/cache');
|
|
|
8
8
|
const File = require('../util/file');
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Journey MetadataType
|
|
12
12
|
* ! BETA RELEASE of journey support (v4.3.0); it so far only resolves a limited amount of dependencies and will likely break during cross-BU deployments!
|
|
13
13
|
* id: A unique id of the journey assigned by the journey’s API during its creation
|
|
14
14
|
* key: A unique id of the journey within the MID. Can be generated by the developer
|
|
@@ -16,9 +16,9 @@ const File = require('../util/file');
|
|
|
16
16
|
*
|
|
17
17
|
* @augments MetadataType
|
|
18
18
|
*/
|
|
19
|
-
class
|
|
19
|
+
class Journey extends MetadataType {
|
|
20
20
|
/**
|
|
21
|
-
* Retrieves Metadata of
|
|
21
|
+
* Retrieves Metadata of Journey
|
|
22
22
|
*
|
|
23
23
|
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
|
|
24
24
|
* @param {void} [_] unused parameter
|
|
@@ -72,7 +72,6 @@ class Interaction extends MetadataType {
|
|
|
72
72
|
retrieveDir,
|
|
73
73
|
`${uri}${singleKey}?extras=${extras}`,
|
|
74
74
|
null,
|
|
75
|
-
null,
|
|
76
75
|
key
|
|
77
76
|
);
|
|
78
77
|
} else {
|
|
@@ -97,11 +96,12 @@ class Interaction extends MetadataType {
|
|
|
97
96
|
results.items.map(async (a) => {
|
|
98
97
|
try {
|
|
99
98
|
return await this.client.rest.get(
|
|
100
|
-
`${uri}key:${a[this.definition.keyField]}?extras=${extras}`
|
|
99
|
+
`${uri}key:${a[this.definition.keyField]}?extras=${extras}` +
|
|
100
|
+
`&versionNumber=${a.version}`
|
|
101
101
|
);
|
|
102
102
|
} catch (ex) {
|
|
103
103
|
// if we do get here, we should log the error and continue instead of failing to download all automations
|
|
104
|
-
Util.logger.
|
|
104
|
+
Util.logger.warn(
|
|
105
105
|
` ☇ skipping ${this.definition.type} ${
|
|
106
106
|
a[this.definition.nameField]
|
|
107
107
|
} (${a[this.definition.keyField]}): ${ex.message} (${
|
|
@@ -139,7 +139,7 @@ class Interaction extends MetadataType {
|
|
|
139
139
|
// if the interaction does not exist, the API returns an error code which would otherwise bring execution to a hold
|
|
140
140
|
if (
|
|
141
141
|
[
|
|
142
|
-
'
|
|
142
|
+
'Journey matching key not found.',
|
|
143
143
|
'Must provide a valid ID or Key parameter',
|
|
144
144
|
].includes(ex.message)
|
|
145
145
|
) {
|
|
@@ -201,7 +201,7 @@ class Interaction extends MetadataType {
|
|
|
201
201
|
);
|
|
202
202
|
}
|
|
203
203
|
Util.logger.warn(
|
|
204
|
-
`Deleting
|
|
204
|
+
`Deleting Journeys via this command breaks following retrieve-by-key/id requests until you've deployed/created a new draft version! You can get still get the latest available version of your journey by retrieving all interactions on this BU.`
|
|
205
205
|
);
|
|
206
206
|
/* eslint-enable unicorn/prefer-ternary */
|
|
207
207
|
return super.deleteByKeyREST(
|
|
@@ -216,11 +216,12 @@ class Interaction extends MetadataType {
|
|
|
216
216
|
* @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
|
|
217
217
|
* @param {string} deployDir directory where deploy metadata are saved
|
|
218
218
|
* @param {string} retrieveDir directory where metadata after deploy should be saved
|
|
219
|
+
* @param {boolean} [isRefresh] optional flag - so far not used by interaction
|
|
219
220
|
* @returns {Promise.<TYPE.MetadataTypeMap>} Promise of keyField => metadata map
|
|
220
221
|
*/
|
|
221
|
-
static async deploy(metadata, deployDir, retrieveDir) {
|
|
222
|
+
static async deploy(metadata, deployDir, retrieveDir, isRefresh) {
|
|
222
223
|
Util.logBeta(this.definition.type);
|
|
223
|
-
return super.deploy(metadata, deployDir, retrieveDir);
|
|
224
|
+
return super.deploy(metadata, deployDir, retrieveDir, isRefresh);
|
|
224
225
|
}
|
|
225
226
|
|
|
226
227
|
/**
|
|
@@ -230,7 +231,11 @@ class Interaction extends MetadataType {
|
|
|
230
231
|
* @returns {Promise} Promise
|
|
231
232
|
*/
|
|
232
233
|
static update(metadata) {
|
|
233
|
-
return super.updateREST(
|
|
234
|
+
return super.updateREST(
|
|
235
|
+
metadata,
|
|
236
|
+
'/interaction/v1/interactions/key:' + metadata.key,
|
|
237
|
+
'put'
|
|
238
|
+
);
|
|
234
239
|
}
|
|
235
240
|
|
|
236
241
|
/**
|
|
@@ -260,7 +265,7 @@ class Interaction extends MetadataType {
|
|
|
260
265
|
}
|
|
261
266
|
|
|
262
267
|
/**
|
|
263
|
-
* helper for
|
|
268
|
+
* helper for Journey's {@link saveResults}. Gets executed after retreive of metadata type and
|
|
264
269
|
*
|
|
265
270
|
* @param {TYPE.MetadataTypeMap} metadataMap key=customer key, value=metadata
|
|
266
271
|
*/
|
|
@@ -287,8 +292,8 @@ class Interaction extends MetadataType {
|
|
|
287
292
|
* manages post retrieve steps
|
|
288
293
|
* ! BETA RELEASE of journey support (v4.3.0); it so far only resolves a limited amount of dependencies and will likely break during cross-BU deployments!
|
|
289
294
|
*
|
|
290
|
-
* @param {TYPE.MetadataTypeItem} metadata a single
|
|
291
|
-
* @returns {TYPE.MetadataTypeItem} Array with one metadata object
|
|
295
|
+
* @param {TYPE.MetadataTypeItem} metadata a single item
|
|
296
|
+
* @returns {TYPE.MetadataTypeItem} Array with one metadata object
|
|
292
297
|
*/
|
|
293
298
|
static postRetrieveTasks(metadata) {
|
|
294
299
|
// folder
|
|
@@ -298,7 +303,7 @@ class Interaction extends MetadataType {
|
|
|
298
303
|
case 'Multistep': {
|
|
299
304
|
// Multi-Step Journey
|
|
300
305
|
// ~~~ TRIGGERS ~~~~
|
|
301
|
-
//
|
|
306
|
+
// event / definitionType==='Multistep' && channel==='' && triggers[].type === 'EmailAudience'|'APIEvent'
|
|
302
307
|
if (
|
|
303
308
|
metadata.triggers?.length > 0 &&
|
|
304
309
|
metadata.triggers[0].metaData?.eventDefinitionKey
|
|
@@ -306,14 +311,14 @@ class Interaction extends MetadataType {
|
|
|
306
311
|
// trigger found; there can only be one entry in this array
|
|
307
312
|
try {
|
|
308
313
|
const edId = cache.searchForField(
|
|
309
|
-
'
|
|
314
|
+
'event',
|
|
310
315
|
metadata.triggers[0].metaData.eventDefinitionKey,
|
|
311
316
|
'eventDefinitionKey',
|
|
312
317
|
'id'
|
|
313
318
|
);
|
|
314
319
|
if (metadata.triggers[0].metaData.eventDefinitionId !== edId) {
|
|
315
320
|
throw new Error(
|
|
316
|
-
`eventDefinitionId not matching Id found on
|
|
321
|
+
`eventDefinitionId not matching Id found on event with key in eventDefinitionKey`
|
|
317
322
|
);
|
|
318
323
|
}
|
|
319
324
|
delete metadata.triggers[0].metaData.eventDefinitionId;
|
|
@@ -328,44 +333,7 @@ class Interaction extends MetadataType {
|
|
|
328
333
|
|
|
329
334
|
// ~~~ ACTIVITIES ~~~~
|
|
330
335
|
|
|
331
|
-
|
|
332
|
-
// TODO email / asset
|
|
333
|
-
for (const item of metadata.activities) {
|
|
334
|
-
// check if all triggeredSends are there
|
|
335
|
-
try {
|
|
336
|
-
if (item.configurationArguments?.triggeredSendKey) {
|
|
337
|
-
// triggeredSendKey is not always set but triggeredSendId is
|
|
338
|
-
cache.searchForField(
|
|
339
|
-
'triggeredSendDefinition',
|
|
340
|
-
item.configurationArguments.triggeredSendKey,
|
|
341
|
-
'CustomerKey',
|
|
342
|
-
'CustomerKey'
|
|
343
|
-
);
|
|
344
|
-
delete item.configurationArguments.triggeredSendId;
|
|
345
|
-
} else if (item.configurationArguments?.triggeredSendId) {
|
|
346
|
-
// triggeredSendKey is not always set but triggeredSendId is
|
|
347
|
-
item.configurationArguments.triggeredSendKey = cache.searchForField(
|
|
348
|
-
'triggeredSendDefinition',
|
|
349
|
-
item.configurationArguments.triggeredSendId,
|
|
350
|
-
'ObjectID',
|
|
351
|
-
'CustomerKey'
|
|
352
|
-
);
|
|
353
|
-
delete item.configurationArguments.triggeredSendId;
|
|
354
|
-
}
|
|
355
|
-
} catch (ex) {
|
|
356
|
-
Util.logger.warn(
|
|
357
|
-
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${
|
|
358
|
-
metadata[this.definition.keyField]
|
|
359
|
-
}): Could not find triggeredSendDefinition (${ex.message})`
|
|
360
|
-
);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
// TODO: Filters / activities[].type === 'MULTICRITERIADECISION'
|
|
365
|
-
// - activities[].arguments.filterResult
|
|
366
|
-
// - activities[].arguments.configurationArguments.criteria
|
|
367
|
-
|
|
368
|
-
// TODO: wait activity / activities[].type === 'WAIT'
|
|
336
|
+
this._postRetrieveTasks_activities(metadata);
|
|
369
337
|
|
|
370
338
|
// TODO: journey template id? / metaData.templateId
|
|
371
339
|
break;
|
|
@@ -378,7 +346,7 @@ class Interaction extends MetadataType {
|
|
|
378
346
|
}): definitionType Quicksend is not fully supported yet.`
|
|
379
347
|
);
|
|
380
348
|
// ~~~ TRIGGERS ~~~~
|
|
381
|
-
//
|
|
349
|
+
// event && triggers[].type === 'ContactAudience'
|
|
382
350
|
if (
|
|
383
351
|
metadata.triggers?.length > 0 &&
|
|
384
352
|
metadata.triggers[0].metaData?.eventDefinitionKey
|
|
@@ -386,7 +354,7 @@ class Interaction extends MetadataType {
|
|
|
386
354
|
// trigger found; there can only be one entry in this array
|
|
387
355
|
try {
|
|
388
356
|
const edId = cache.searchForField(
|
|
389
|
-
'
|
|
357
|
+
'event',
|
|
390
358
|
metadata.triggers[0].metaData.eventDefinitionKey,
|
|
391
359
|
'eventDefinitionKey',
|
|
392
360
|
'id'
|
|
@@ -397,7 +365,7 @@ class Interaction extends MetadataType {
|
|
|
397
365
|
metadata[this.definition.nameField]
|
|
398
366
|
} (${
|
|
399
367
|
metadata[this.definition.keyField]
|
|
400
|
-
}): eventDefinitionId not matching Id found on
|
|
368
|
+
}): eventDefinitionId not matching Id found on event with key in eventDefinitionKey`
|
|
401
369
|
);
|
|
402
370
|
}
|
|
403
371
|
delete metadata.triggers[0].metaData.eventDefinitionId;
|
|
@@ -440,18 +408,16 @@ class Interaction extends MetadataType {
|
|
|
440
408
|
metadata.activities?.length > 0 &&
|
|
441
409
|
metadata.activities[0].configurationArguments?.triggeredSendKey
|
|
442
410
|
) {
|
|
411
|
+
const activity = metadata.activities[0];
|
|
443
412
|
// trigger found; there can only be one entry in this array
|
|
444
413
|
try {
|
|
445
414
|
const tEmailId = cache.searchForField(
|
|
446
415
|
'transactionalEmail',
|
|
447
|
-
|
|
416
|
+
activity.configurationArguments?.triggeredSendKey,
|
|
448
417
|
'definitionKey',
|
|
449
418
|
'definitionId'
|
|
450
419
|
);
|
|
451
|
-
if (
|
|
452
|
-
tEmailId !=
|
|
453
|
-
metadata.activities[0].configurationArguments?.triggeredSendId
|
|
454
|
-
) {
|
|
420
|
+
if (tEmailId != activity.configurationArguments?.triggeredSendId) {
|
|
455
421
|
throw new Error(
|
|
456
422
|
` - ${this.definition.type} ${
|
|
457
423
|
metadata[this.definition.nameField]
|
|
@@ -461,12 +427,9 @@ class Interaction extends MetadataType {
|
|
|
461
427
|
);
|
|
462
428
|
}
|
|
463
429
|
if (
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
?.definitionKey !=
|
|
468
|
-
metadata.activities[0].configurationArguments
|
|
469
|
-
?.triggeredSendKey
|
|
430
|
+
activity.metaData?.highThroughput?.definitionKey &&
|
|
431
|
+
activity.metaData?.highThroughput?.definitionKey !=
|
|
432
|
+
activity.configurationArguments?.triggeredSendKey
|
|
470
433
|
) {
|
|
471
434
|
throw new Error(
|
|
472
435
|
` - ${this.definition.type} ${
|
|
@@ -514,6 +477,165 @@ class Interaction extends MetadataType {
|
|
|
514
477
|
|
|
515
478
|
return metadata;
|
|
516
479
|
}
|
|
480
|
+
/**
|
|
481
|
+
* helper for {@link postRetrieveTasks}
|
|
482
|
+
*
|
|
483
|
+
* @private
|
|
484
|
+
* @param {TYPE.MetadataTypeItem} metadata a single item
|
|
485
|
+
*/
|
|
486
|
+
static _postRetrieveTasks_activities(metadata) {
|
|
487
|
+
for (const activity of metadata.activities) {
|
|
488
|
+
switch (activity.type) {
|
|
489
|
+
case 'EMAILV2': {
|
|
490
|
+
// triggeredSend + email+asset
|
|
491
|
+
// TODO email / asset
|
|
492
|
+
try {
|
|
493
|
+
if (activity.configurationArguments?.triggeredSendKey) {
|
|
494
|
+
// triggeredSendKey is not always set but triggeredSendId is
|
|
495
|
+
cache.searchForField(
|
|
496
|
+
'triggeredSend',
|
|
497
|
+
activity.configurationArguments.triggeredSendKey,
|
|
498
|
+
'CustomerKey',
|
|
499
|
+
'CustomerKey'
|
|
500
|
+
);
|
|
501
|
+
delete activity.configurationArguments.triggeredSendId;
|
|
502
|
+
} else if (activity.configurationArguments?.triggeredSendId) {
|
|
503
|
+
// triggeredSendKey is not always set but triggeredSendId is
|
|
504
|
+
activity.configurationArguments.triggeredSendKey = cache.searchForField(
|
|
505
|
+
'triggeredSend',
|
|
506
|
+
activity.configurationArguments.triggeredSendId,
|
|
507
|
+
'ObjectID',
|
|
508
|
+
'CustomerKey'
|
|
509
|
+
);
|
|
510
|
+
delete activity.configurationArguments.triggeredSendId;
|
|
511
|
+
}
|
|
512
|
+
} catch (ex) {
|
|
513
|
+
Util.logger.warn(
|
|
514
|
+
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${
|
|
515
|
+
metadata[this.definition.keyField]
|
|
516
|
+
}) activity-key=${activity.key}: ${ex.message}`
|
|
517
|
+
);
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
break;
|
|
521
|
+
}
|
|
522
|
+
case 'SMSSYNC': {
|
|
523
|
+
// mobileMessage
|
|
524
|
+
try {
|
|
525
|
+
if (activity.configurationArguments?.messageId) {
|
|
526
|
+
activity.configurationArguments.c__mobileMessage_id =
|
|
527
|
+
cache.searchForField(
|
|
528
|
+
'mobileMessage',
|
|
529
|
+
activity.configurationArguments.messageId,
|
|
530
|
+
'id',
|
|
531
|
+
'id'
|
|
532
|
+
);
|
|
533
|
+
delete activity.configurationArguments.messageId;
|
|
534
|
+
}
|
|
535
|
+
} catch (ex) {
|
|
536
|
+
Util.logger.warn(
|
|
537
|
+
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${
|
|
538
|
+
metadata[this.definition.keyField]
|
|
539
|
+
}) activity-key=${activity.key}: ${ex.message}`
|
|
540
|
+
);
|
|
541
|
+
}
|
|
542
|
+
try {
|
|
543
|
+
// mobileKeyword
|
|
544
|
+
if (activity.configurationArguments?.keywordId) {
|
|
545
|
+
activity.configurationArguments.c__mobileKeyword = cache.searchForField(
|
|
546
|
+
'mobileKeyword',
|
|
547
|
+
activity.configurationArguments.keywordId,
|
|
548
|
+
'id',
|
|
549
|
+
'keyword'
|
|
550
|
+
);
|
|
551
|
+
delete activity.configurationArguments.keywordId;
|
|
552
|
+
}
|
|
553
|
+
} catch (ex) {
|
|
554
|
+
Util.logger.warn(
|
|
555
|
+
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${
|
|
556
|
+
metadata[this.definition.keyField]
|
|
557
|
+
}) activity-key=${activity.key}: ${ex.message}`
|
|
558
|
+
);
|
|
559
|
+
}
|
|
560
|
+
try {
|
|
561
|
+
if (activity.configurationArguments?.nextKeywordId) {
|
|
562
|
+
activity.configurationArguments.c__next_mobileKeyword =
|
|
563
|
+
cache.searchForField(
|
|
564
|
+
'mobileKeyword',
|
|
565
|
+
activity.configurationArguments.nextKeywordId,
|
|
566
|
+
'id',
|
|
567
|
+
'keyword'
|
|
568
|
+
);
|
|
569
|
+
delete activity.configurationArguments.nextKeywordId;
|
|
570
|
+
}
|
|
571
|
+
} catch (ex) {
|
|
572
|
+
Util.logger.warn(
|
|
573
|
+
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${
|
|
574
|
+
metadata[this.definition.keyField]
|
|
575
|
+
}) activity-key=${activity.key}: ${ex.message}`
|
|
576
|
+
);
|
|
577
|
+
}
|
|
578
|
+
try {
|
|
579
|
+
// mobileCode
|
|
580
|
+
if (activity.configurationArguments?.codeId) {
|
|
581
|
+
activity.configurationArguments.c__mobileCode = cache.searchForField(
|
|
582
|
+
'mobileCode',
|
|
583
|
+
activity.configurationArguments.codeId,
|
|
584
|
+
'id',
|
|
585
|
+
'code'
|
|
586
|
+
);
|
|
587
|
+
delete activity.configurationArguments.codeId;
|
|
588
|
+
}
|
|
589
|
+
} catch (ex) {
|
|
590
|
+
Util.logger.warn(
|
|
591
|
+
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${
|
|
592
|
+
metadata[this.definition.keyField]
|
|
593
|
+
}) activity-key=${activity.key}: ${ex.message}`
|
|
594
|
+
);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
try {
|
|
598
|
+
// asset-asset: jsonmessage
|
|
599
|
+
if (activity.configurationArguments?.assetId) {
|
|
600
|
+
activity.configurationArguments.r__assetMessage_Name_readOnly =
|
|
601
|
+
cache.searchForField(
|
|
602
|
+
'asset',
|
|
603
|
+
activity.configurationArguments.assetId,
|
|
604
|
+
'id',
|
|
605
|
+
'name'
|
|
606
|
+
);
|
|
607
|
+
|
|
608
|
+
activity.configurationArguments.r__assetMessage_Key =
|
|
609
|
+
cache.searchForField(
|
|
610
|
+
'asset',
|
|
611
|
+
activity.configurationArguments.assetId,
|
|
612
|
+
'id',
|
|
613
|
+
'customerKey'
|
|
614
|
+
);
|
|
615
|
+
delete activity.configurationArguments.assetId;
|
|
616
|
+
}
|
|
617
|
+
} catch (ex) {
|
|
618
|
+
Util.logger.warn(
|
|
619
|
+
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${
|
|
620
|
+
metadata[this.definition.keyField]
|
|
621
|
+
}) activity-key=${activity.key}: ${ex.message}`
|
|
622
|
+
);
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
// applicationExtensionId always equal "00000000-0000-0000-0000-000000000000"
|
|
626
|
+
delete activity.configurationArguments.applicationExtensionId;
|
|
627
|
+
|
|
628
|
+
break;
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
// TODO: Filters / activities[].type === 'MULTICRITERIADECISION'
|
|
632
|
+
// - activities[].arguments.filterResult
|
|
633
|
+
// - activities[].arguments.configurationArguments.criteria
|
|
634
|
+
|
|
635
|
+
// TODO: wait activity / activities[].type === 'WAIT'
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
|
|
517
639
|
/**
|
|
518
640
|
* prepares a TSD for deployment
|
|
519
641
|
* ! BETA RELEASE of journey support (v4.3.0); it so far only resolves a limited amount of dependencies and will likely break during cross-BU deployments!
|
|
@@ -534,14 +656,14 @@ class Interaction extends MetadataType {
|
|
|
534
656
|
// Multi-Step Journey
|
|
535
657
|
// ~~~ TRIGGERS ~~~~
|
|
536
658
|
|
|
537
|
-
//
|
|
659
|
+
// event / definitionType==='Multistep' && channel==='' && triggers[].type === 'EmailAudience'|'APIEvent'
|
|
538
660
|
if (
|
|
539
661
|
metadata.triggers?.length > 0 &&
|
|
540
662
|
metadata.triggers[0].metaData?.eventDefinitionKey
|
|
541
663
|
) {
|
|
542
664
|
// trigger found; there can only be one entry in this array
|
|
543
665
|
metadata.triggers[0].metaData.eventDefinitionId = cache.searchForField(
|
|
544
|
-
'
|
|
666
|
+
'event',
|
|
545
667
|
metadata.triggers[0].metaData.eventDefinitionKey,
|
|
546
668
|
'eventDefinitionKey',
|
|
547
669
|
'id'
|
|
@@ -552,21 +674,7 @@ class Interaction extends MetadataType {
|
|
|
552
674
|
|
|
553
675
|
// ~~~ ACTIVITIES ~~~~
|
|
554
676
|
|
|
555
|
-
|
|
556
|
-
// TODO email / asset
|
|
557
|
-
for (const item of metadata.activities) {
|
|
558
|
-
// check if all triggeredSends are there
|
|
559
|
-
if (!item.configurationArguments?.triggeredSendKey) {
|
|
560
|
-
continue;
|
|
561
|
-
}
|
|
562
|
-
// triggeredSendKey is not always set but triggeredSendId is
|
|
563
|
-
item.configurationArguments.triggeredSendId = cache.searchForField(
|
|
564
|
-
'triggeredSendDefinition',
|
|
565
|
-
item.configurationArguments.triggeredSendKey,
|
|
566
|
-
'CustomerKey',
|
|
567
|
-
'ObjectID'
|
|
568
|
-
);
|
|
569
|
-
}
|
|
677
|
+
this._preDeployTasks_activities(metadata);
|
|
570
678
|
|
|
571
679
|
// TODO: Filters / activities[].type === 'MULTICRITERIADECISION'
|
|
572
680
|
// - activities[].arguments.filterResult
|
|
@@ -585,7 +693,7 @@ class Interaction extends MetadataType {
|
|
|
585
693
|
}): definitionType Quicksend is not supported yet and might fail to deploy.`
|
|
586
694
|
);
|
|
587
695
|
// ~~~ TRIGGERS ~~~~
|
|
588
|
-
//
|
|
696
|
+
// event && triggers[].type === 'ContactAudience'
|
|
589
697
|
if (
|
|
590
698
|
metadata.triggers?.length > 0 &&
|
|
591
699
|
metadata.triggers[0].metaData?.eventDefinitionKey
|
|
@@ -593,7 +701,7 @@ class Interaction extends MetadataType {
|
|
|
593
701
|
// trigger found; there can only be one entry in this array
|
|
594
702
|
try {
|
|
595
703
|
metadata.triggers[0].metaData.eventDefinitionId = cache.searchForField(
|
|
596
|
-
'
|
|
704
|
+
'event',
|
|
597
705
|
metadata.triggers[0].metaData?.eventDefinitionKey,
|
|
598
706
|
'eventDefinitionKey',
|
|
599
707
|
'id'
|
|
@@ -691,80 +799,136 @@ class Interaction extends MetadataType {
|
|
|
691
799
|
}
|
|
692
800
|
|
|
693
801
|
/**
|
|
802
|
+
* helper for {@link preDeployTasks}
|
|
803
|
+
*
|
|
804
|
+
* @private
|
|
805
|
+
* @param {TYPE.MetadataTypeItem} metadata a single item
|
|
806
|
+
*/
|
|
807
|
+
static _preDeployTasks_activities(metadata) {
|
|
808
|
+
for (const activity of metadata.activities) {
|
|
809
|
+
switch (activity.type) {
|
|
810
|
+
case 'EMAILV2': {
|
|
811
|
+
// triggeredSend + email+asset
|
|
812
|
+
// TODO email / asset
|
|
813
|
+
if (activity.configurationArguments?.triggeredSendKey) {
|
|
814
|
+
// triggeredSendKey is not always set but triggeredSendId is
|
|
815
|
+
activity.configurationArguments.triggeredSendId = cache.searchForField(
|
|
816
|
+
'triggeredSend',
|
|
817
|
+
activity.configurationArguments.triggeredSendKey,
|
|
818
|
+
'CustomerKey',
|
|
819
|
+
'ObjectID'
|
|
820
|
+
);
|
|
821
|
+
}
|
|
822
|
+
break;
|
|
823
|
+
}
|
|
824
|
+
case 'SMSSYNC': {
|
|
825
|
+
// mobileMessage
|
|
826
|
+
if (activity.configurationArguments?.c__mobileMessage_id) {
|
|
827
|
+
activity.configurationArguments.messageId = cache.searchForField(
|
|
828
|
+
'mobileMessage',
|
|
829
|
+
activity.configurationArguments.c__mobileMessage_id,
|
|
830
|
+
'id',
|
|
831
|
+
'id'
|
|
832
|
+
);
|
|
833
|
+
delete activity.configurationArguments.c__mobileMessage_id;
|
|
834
|
+
}
|
|
835
|
+
// mobileKeyword
|
|
836
|
+
if (activity.configurationArguments?.c__mobileKeyword) {
|
|
837
|
+
activity.configurationArguments.keywordId = cache.searchForField(
|
|
838
|
+
'mobileKeyword',
|
|
839
|
+
activity.c__mobileKeyword,
|
|
840
|
+
'keyword',
|
|
841
|
+
'id'
|
|
842
|
+
);
|
|
843
|
+
delete activity.configurationArguments.c__mobileKeyword;
|
|
844
|
+
}
|
|
845
|
+
if (activity.configurationArguments?.c__next_mobileKeyword) {
|
|
846
|
+
activity.configurationArguments.nextKeywordId = cache.searchForField(
|
|
847
|
+
'mobileKeyword',
|
|
848
|
+
activity.configurationArguments.c__next_mobileKeyword,
|
|
849
|
+
'keyword',
|
|
850
|
+
'id'
|
|
851
|
+
);
|
|
852
|
+
delete activity.configurationArguments.c__next_mobileKeyword;
|
|
853
|
+
}
|
|
854
|
+
// mobileCode
|
|
855
|
+
if (activity.configurationArguments?.c__mobileCode) {
|
|
856
|
+
activity.configurationArguments.codeId = cache.searchForField(
|
|
857
|
+
'mobileCode',
|
|
858
|
+
activity.configurationArguments.c__mobileCode,
|
|
859
|
+
'code',
|
|
860
|
+
'id'
|
|
861
|
+
);
|
|
862
|
+
delete activity.configurationArguments.c__mobileCode;
|
|
863
|
+
}
|
|
864
|
+
// asset-asset: jsonmessage
|
|
865
|
+
if (activity.configurationArguments?.r__assetMessage_Key) {
|
|
866
|
+
activity.configurationArguments.assetId = cache.searchForField(
|
|
867
|
+
'asset',
|
|
868
|
+
activity.configurationArguments.r__assetMessage_Key,
|
|
869
|
+
'customerKey',
|
|
870
|
+
'id'
|
|
871
|
+
);
|
|
872
|
+
delete activity.configurationArguments.r__assetMessage_Key;
|
|
873
|
+
delete activity.configurationArguments.r__assetMessage_Name_readOnly;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
// applicationExtensionId always equal "00000000-0000-0000-0000-000000000000"
|
|
877
|
+
activity.configurationArguments.applicationExtensionId =
|
|
878
|
+
'00000000-0000-0000-0000-000000000000';
|
|
879
|
+
break;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
/**
|
|
886
|
+
* helper for {@link MetadataType.upsert}
|
|
694
887
|
*
|
|
695
|
-
* @param {TYPE.
|
|
888
|
+
* @param {TYPE.MetadataTypeMap} metadataMap list of metadata
|
|
696
889
|
* @param {string} metadataKey key of item we are looking at
|
|
697
890
|
* @param {boolean} hasError error flag from previous code
|
|
698
891
|
* @param {TYPE.MetadataTypeItemDiff[]} metadataToUpdate list of items to update
|
|
699
892
|
* @param {TYPE.MetadataTypeItem[]} metadataToCreate list of items to create
|
|
893
|
+
* @returns {'create' | 'update' | 'skip'} action to take
|
|
700
894
|
*/
|
|
701
|
-
static createOrUpdate(
|
|
702
|
-
const
|
|
703
|
-
|
|
895
|
+
static createOrUpdate(metadataMap, metadataKey, hasError, metadataToUpdate, metadataToCreate) {
|
|
896
|
+
const action = super.createOrUpdate(
|
|
897
|
+
metadataMap,
|
|
898
|
+
metadataKey,
|
|
899
|
+
hasError,
|
|
900
|
+
metadataToUpdate,
|
|
901
|
+
metadataToCreate
|
|
704
902
|
);
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
// only used if resource is excluded from cache and we still want to update it
|
|
709
|
-
// needed e.g. to rewire lost folders
|
|
710
|
-
Util.logger.warn(
|
|
711
|
-
' - Hotfix for non-cachable resource found in deploy folder. Trying update:'
|
|
903
|
+
if (action === 'update') {
|
|
904
|
+
const normalizedKey = File.reverseFilterIllegalFilenames(
|
|
905
|
+
metadataMap[metadataKey][this.definition.keyField]
|
|
712
906
|
);
|
|
713
|
-
Util.logger.warn(JSON.stringify(metadata[metadataKey]));
|
|
714
|
-
if (hasError) {
|
|
715
|
-
metadataToUpdate.push(null);
|
|
716
|
-
} else {
|
|
717
|
-
metadataToUpdate.push({
|
|
718
|
-
before: {},
|
|
719
|
-
after: metadata[metadataKey],
|
|
720
|
-
});
|
|
721
|
-
}
|
|
722
|
-
} else {
|
|
723
907
|
const cachedVersion = cache.getByKey(this.definition.type, normalizedKey);
|
|
724
|
-
if (cachedVersion
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
if (hasError) {
|
|
731
|
-
// do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
|
|
732
|
-
metadataToUpdate.push(null);
|
|
908
|
+
if (cachedVersion) {
|
|
909
|
+
if (cachedVersion.status === 'Draft') {
|
|
910
|
+
// add version to ensure we update the correct one
|
|
911
|
+
metadataMap[metadataKey].version = cachedVersion.version;
|
|
733
912
|
} else {
|
|
734
|
-
//
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
} else {
|
|
746
|
-
if (hasError) {
|
|
747
|
-
// do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
|
|
748
|
-
metadataToCreate.push(null);
|
|
749
|
-
} else {
|
|
750
|
-
if (cachedVersion) {
|
|
751
|
-
Util.logger.info(
|
|
752
|
-
` - Found ${this.definition.type} ${
|
|
753
|
-
metadata[metadataKey][this.definition.nameField]
|
|
754
|
-
} (${
|
|
755
|
-
metadata[metadataKey][this.definition.keyField]
|
|
756
|
-
}) on BU, but it is not in Draft status. Will create new version.`
|
|
757
|
-
);
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
metadataToCreate.push(metadata[metadataKey]);
|
|
913
|
+
// remove last entry from metadataToUpdate again
|
|
914
|
+
metadataToUpdate.pop();
|
|
915
|
+
Util.logger.info(
|
|
916
|
+
` - Found ${this.definition.type} ${
|
|
917
|
+
metadataMap[metadataKey][this.definition.nameField]
|
|
918
|
+
} (${
|
|
919
|
+
metadataMap[metadataKey][this.definition.keyField]
|
|
920
|
+
}) on BU, but it is not in Draft status. Will create new version.`
|
|
921
|
+
);
|
|
922
|
+
metadataToCreate.push(metadataMap[metadataKey]);
|
|
923
|
+
return 'create';
|
|
761
924
|
}
|
|
762
925
|
}
|
|
763
926
|
}
|
|
927
|
+
return action;
|
|
764
928
|
}
|
|
765
929
|
}
|
|
766
930
|
|
|
767
931
|
// Assign definition to static attributes
|
|
768
|
-
|
|
932
|
+
Journey.definition = require('../MetadataTypeDefinitions').journey;
|
|
769
933
|
|
|
770
|
-
module.exports =
|
|
934
|
+
module.exports = Journey;
|