mcdev 5.0.2 → 5.1.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.svelte +177 -161
- package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
- package/.github/dependabot.yml +8 -0
- package/.github/workflows/coverage-base-update.yml +6 -2
- package/.github/workflows/coverage-develop-branch.yml +7 -6
- package/.github/workflows/coverage-main-branch.yml +7 -6
- package/.github/workflows/coverage.yml +7 -2
- package/.husky/post-checkout +3 -2
- package/docs/dist/documentation.md +162 -47
- package/lib/Deployer.js +3 -3
- package/lib/cli.js +28 -0
- package/lib/index.js +173 -2
- package/lib/metadataTypes/Automation.js +400 -193
- package/lib/metadataTypes/DataExtension.js +5 -5
- package/lib/metadataTypes/MetadataType.js +42 -15
- package/lib/metadataTypes/Query.js +26 -0
- package/lib/metadataTypes/definitions/Asset.definition.js +1 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +52 -6
- package/lib/metadataTypes/definitions/DataExtension.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtract.definition.js +1 -0
- package/lib/metadataTypes/definitions/EmailSend.definition.js +1 -0
- package/lib/metadataTypes/definitions/Event.definition.js +1 -0
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
- package/lib/metadataTypes/definitions/ImportFile.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +1 -0
- package/lib/metadataTypes/definitions/Query.definition.js +1 -0
- package/lib/metadataTypes/definitions/Role.definition.js +1 -0
- package/lib/metadataTypes/definitions/TriggeredSend.definition.js +1 -0
- package/lib/metadataTypes/definitions/User.definition.js +1 -0
- package/lib/util/devops.js +13 -11
- package/lib/util/util.js +152 -129
- package/package.json +5 -5
- package/test/general.test.js +26 -0
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/automation/testExisting_automation.automation-meta.json +53 -0
- package/test/mockRoot/deploy/testInstance/testBU/automation/testNew_automation.automation-meta.json +46 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/{testExistingQuery.query-meta.json → testExisting_query.query-meta.json} +2 -2
- package/test/mockRoot/deploy/testInstance/testBU/query/{testNewQuery.query-meta.json → testNew_query.query-meta.json} +2 -2
- package/test/resourceFactory.js +64 -21
- package/test/resources/9999999/automation/build-expected.json +58 -0
- package/test/resources/9999999/automation/create-expected.json +46 -0
- package/test/resources/9999999/automation/create-testNew_automation-expected.md +28 -0
- package/test/resources/9999999/automation/delete-response.xml +40 -0
- package/test/resources/9999999/automation/retrieve-expected.json +58 -0
- package/test/resources/9999999/automation/retrieve-testExisting_automation-expected.md +30 -0
- package/test/resources/9999999/automation/template-expected.json +58 -0
- package/test/resources/9999999/automation/update-expected.json +46 -0
- package/test/resources/9999999/automation/update-testExisting_automation-expected.md +28 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-1f7f8788c560/get-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-1f7f8788c560/patch-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/a8afb0e2-b00a-4c88-ad2e-1f7f8788c560/get-response.json +85 -0
- package/test/resources/9999999/automation/v1/automations/post-response.json +85 -0
- package/test/resources/9999999/automation/v1/dataextracts/56c5370a-f988-4f36-b0ee-0f876573f6d7/get-response.json +38 -0
- package/test/resources/9999999/automation/v1/dataextracts/get-response.json +20 -0
- package/test/resources/9999999/automation/v1/filetransfers/72c328ac-f5b0-4e37-91d3-a775666f15a6/get-response.json +18 -0
- package/test/resources/9999999/automation/v1/filetransfers/get-response.json +15 -0
- package/test/resources/9999999/automation/v1/imports/get-response.json +38 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/actions/start/post-response.txt +1 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +2 -2
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +2 -2
- package/test/resources/9999999/automation/v1/queries/get-response.json +4 -4
- package/test/resources/9999999/automation/v1/queries/post-response.json +2 -2
- package/test/resources/9999999/automation/v1/scripts/get-response.json +17 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=automations-response.xml +48 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=queryactivity-response.xml +48 -0
- package/test/resources/9999999/dataFolder/retrieve-response.xml +22 -0
- package/test/resources/9999999/emailSendDefinition/retrieve-response.xml +85 -0
- package/test/resources/9999999/legacy/v1/beta/automations/notifications/RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow/get-response.json +21 -0
- package/test/resources/9999999/legacy/v1/beta/automations/notifications/RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow/post-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/get-response.json +30 -0
- package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation-response.xml +30 -0
- package/test/resources/9999999/program/retrieve-CustomerKey=testNew_automation-response.xml +30 -0
- package/test/resources/9999999/program/retrieve-Name=testExisting_automation-response.xml +31 -0
- package/test/resources/9999999/program/retrieve-response.xml +32 -0
- package/test/resources/9999999/query/build-expected.json +2 -2
- package/test/resources/9999999/query/get-expected.json +2 -2
- package/test/resources/9999999/query/get2-expected.json +2 -2
- package/test/resources/9999999/query/patch-expected.json +2 -2
- package/test/resources/9999999/query/post-expected.json +2 -2
- package/test/resources/9999999/query/template-expected.json +2 -2
- package/test/type.automation.test.js +259 -0
- package/test/type.dataExtension.test.js +3 -0
- package/test/type.query.test.js +39 -26
- package/test/type.user.test.js +17 -3
- package/test/utils.js +7 -6
- package/.coverage-comment-template.md +0 -20
- /package/test/mockRoot/deploy/testInstance/testBU/query/{testExistingQuery.query-meta.sql → testExisting_query.query-meta.sql} +0 -0
- /package/test/mockRoot/deploy/testInstance/testBU/query/{testNewQuery.query-meta.sql → testNew_query.query-meta.sql} +0 -0
|
@@ -186,17 +186,17 @@ Provides default functionality that can be overwritten by child metadata type cl
|
|
|
186
186
|
<dt><a href="#csvToArray">csvToArray(csv)</a> ⇒ <code>Array.<string></code></dt>
|
|
187
187
|
<dd><p>helper to convert CSVs into an array. if only one value was given, it's also returned as an array</p>
|
|
188
188
|
</dd>
|
|
189
|
+
<dt><a href="#Automation.">Automation.(metadataMap, key)</a> ⇒ <code>Promise.<void></code></dt>
|
|
190
|
+
<dd><p>helper for <a href="#Automation.postDeployTasks">postDeployTasks</a></p>
|
|
191
|
+
</dd>
|
|
192
|
+
<dt><a href="#Automation.">Automation.(metadataMap, originalMetadataMap, key)</a></dt>
|
|
193
|
+
<dd><p>helper for <a href="postDeployTasks">postDeployTasks</a></p>
|
|
194
|
+
</dd>
|
|
189
195
|
<dt><a href="#getUserName">getUserName(userList, item, fieldname)</a> ⇒ <code>string</code></dt>
|
|
190
196
|
<dd></dd>
|
|
191
197
|
<dt><a href="#setupSDK">setupSDK(sessionKey, authObject)</a> ⇒ <code><a href="#SDK">SDK</a></code></dt>
|
|
192
198
|
<dd><p>Returns an SDK instance to be used for API calls</p>
|
|
193
199
|
</dd>
|
|
194
|
-
<dt><a href="#createNewLoggerTransport">createNewLoggerTransport()</a> ⇒ <code>object</code></dt>
|
|
195
|
-
<dd><p>wrapper around our standard winston logging to console and logfile</p>
|
|
196
|
-
</dd>
|
|
197
|
-
<dt><a href="#startLogger">startLogger()</a> ⇒ <code>void</code></dt>
|
|
198
|
-
<dd><p>initiate winston logger</p>
|
|
199
|
-
</dd>
|
|
200
200
|
</dl>
|
|
201
201
|
|
|
202
202
|
## Typedefs
|
|
@@ -496,6 +496,8 @@ main class
|
|
|
496
496
|
* [.buildDefinition(businessUnit, selectedType, name, market)](#Mcdev.buildDefinition) ⇒ <code>Promise.<void></code>
|
|
497
497
|
* [.buildDefinitionBulk(listName, type, name)](#Mcdev.buildDefinitionBulk) ⇒ <code>Promise.<void></code>
|
|
498
498
|
* [.getFilesToCommit(businessUnit, selectedType, keyArr)](#Mcdev.getFilesToCommit) ⇒ <code>Promise.<Array.<string>></code>
|
|
499
|
+
* [.execute(businessUnit, [selectedTypesArr], keys)](#Mcdev.execute) ⇒ <code>Promise.<boolean></code>
|
|
500
|
+
* [._executeBU(cred, bu, [selectedTypesArr], keyArr)](#Mcdev._executeBU) ⇒ <code>Promise.<boolean></code>
|
|
499
501
|
|
|
500
502
|
<a name="Mcdev.setSkipInteraction"></a>
|
|
501
503
|
|
|
@@ -748,6 +750,35 @@ Build a specific metadata file based on a template using a list of bu-market com
|
|
|
748
750
|
| selectedType | <code>string</code> | supported metadata type |
|
|
749
751
|
| keyArr | <code>Array.<string></code> | customerkey of the metadata |
|
|
750
752
|
|
|
753
|
+
<a name="Mcdev.execute"></a>
|
|
754
|
+
|
|
755
|
+
### Mcdev.execute(businessUnit, [selectedTypesArr], keys) ⇒ <code>Promise.<boolean></code>
|
|
756
|
+
Start an item (query)
|
|
757
|
+
|
|
758
|
+
**Kind**: static method of [<code>Mcdev</code>](#Mcdev)
|
|
759
|
+
**Returns**: <code>Promise.<boolean></code> - true if all started successfully, false if not
|
|
760
|
+
|
|
761
|
+
| Param | Type | Description |
|
|
762
|
+
| --- | --- | --- |
|
|
763
|
+
| businessUnit | <code>string</code> | name of BU |
|
|
764
|
+
| [selectedTypesArr] | <code>Array.<TYPE.SupportedMetadataTypes></code> | limit to given metadata types |
|
|
765
|
+
| keys | <code>Array.<string></code> | customerkey of the metadata |
|
|
766
|
+
|
|
767
|
+
<a name="Mcdev._executeBU"></a>
|
|
768
|
+
|
|
769
|
+
### Mcdev.\_executeBU(cred, bu, [selectedTypesArr], keyArr) ⇒ <code>Promise.<boolean></code>
|
|
770
|
+
helper for [execute](execute)
|
|
771
|
+
|
|
772
|
+
**Kind**: static method of [<code>Mcdev</code>](#Mcdev)
|
|
773
|
+
**Returns**: <code>Promise.<boolean></code> - true if all items were executed, false otherwise
|
|
774
|
+
|
|
775
|
+
| Param | Type | Description |
|
|
776
|
+
| --- | --- | --- |
|
|
777
|
+
| cred | <code>string</code> | name of Credential |
|
|
778
|
+
| bu | <code>string</code> | name of BU |
|
|
779
|
+
| [selectedTypesArr] | <code>Array.<TYPE.SupportedMetadataTypes></code> | limit execution to given metadata type |
|
|
780
|
+
| keyArr | <code>Array.<string></code> | customerkey of the metadata |
|
|
781
|
+
|
|
751
782
|
<a name="Asset"></a>
|
|
752
783
|
|
|
753
784
|
## Asset ⇐ [<code>MetadataType</code>](#MetadataType)
|
|
@@ -1206,7 +1237,7 @@ Automation MetadataType
|
|
|
1206
1237
|
* [.retrieveChangelog()](#Automation.retrieveChangelog) ⇒ <code>Promise.<TYPE.AutomationMapObj></code>
|
|
1207
1238
|
* [.retrieveForCache()](#Automation.retrieveForCache) ⇒ <code>Promise.<TYPE.AutomationMapObj></code>
|
|
1208
1239
|
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Automation.retrieveAsTemplate) ⇒ <code>Promise.<TYPE.AutomationItemObj></code>
|
|
1209
|
-
* [.postRetrieveTasks(metadata)](#Automation.postRetrieveTasks) ⇒ <code>TYPE.AutomationItem</code>
|
|
1240
|
+
* [.postRetrieveTasks(metadata)](#Automation.postRetrieveTasks) ⇒ <code>TYPE.AutomationItem</code> \| <code>void</code>
|
|
1210
1241
|
* [.deploy(metadata, targetBU, retrieveDir, [isRefresh])](#Automation.deploy) ⇒ <code>Promise.<TYPE.AutomationMap></code>
|
|
1211
1242
|
* [.create(metadata)](#Automation.create) ⇒ <code>Promise</code>
|
|
1212
1243
|
* [.update(metadata, metadataBefore)](#Automation.update) ⇒ <code>Promise</code>
|
|
@@ -1215,7 +1246,6 @@ Automation MetadataType
|
|
|
1215
1246
|
* [.postDeployTasks(metadataMap, originalMetadataMap)](#Automation.postDeployTasks) ⇒ <code>Promise.<void></code>
|
|
1216
1247
|
* [.setFolderPath(metadata)](#Automation.setFolderPath)
|
|
1217
1248
|
* [.setFolderId(metadata)](#Automation.setFolderId)
|
|
1218
|
-
* [.parseMetadata(metadata)](#Automation.parseMetadata) ⇒ <code>TYPE.AutomationItem</code> \| <code>void</code>
|
|
1219
1249
|
* [._buildSchedule(scheduleObject)](#Automation._buildSchedule) ⇒ <code>TYPE.AutomationScheduleSoap</code>
|
|
1220
1250
|
* [._calcTime(offsetServer, dateInput, [offsetInput])](#Automation._calcTime) ⇒ <code>string</code>
|
|
1221
1251
|
* [.document([metadata])](#Automation.document) ⇒ <code>Promise.<void></code>
|
|
@@ -1268,11 +1298,11 @@ Retrieve a specific Automation Definition by Name
|
|
|
1268
1298
|
|
|
1269
1299
|
<a name="Automation.postRetrieveTasks"></a>
|
|
1270
1300
|
|
|
1271
|
-
### Automation.postRetrieveTasks(metadata) ⇒ <code>TYPE.AutomationItem</code>
|
|
1301
|
+
### Automation.postRetrieveTasks(metadata) ⇒ <code>TYPE.AutomationItem</code> \| <code>void</code>
|
|
1272
1302
|
manages post retrieve steps
|
|
1273
1303
|
|
|
1274
1304
|
**Kind**: static method of [<code>Automation</code>](#Automation)
|
|
1275
|
-
**Returns**: <code>TYPE.AutomationItem</code> -
|
|
1305
|
+
**Returns**: <code>TYPE.AutomationItem</code> \| <code>void</code> - parsed item
|
|
1276
1306
|
|
|
1277
1307
|
| Param | Type | Description |
|
|
1278
1308
|
| --- | --- | --- |
|
|
@@ -1378,18 +1408,6 @@ automation-specific script that retrieves the folder ID from cache and updates t
|
|
|
1378
1408
|
| --- | --- | --- |
|
|
1379
1409
|
| metadata | <code>TYPE.MetadataTypeItem</code> | a single item |
|
|
1380
1410
|
|
|
1381
|
-
<a name="Automation.parseMetadata"></a>
|
|
1382
|
-
|
|
1383
|
-
### Automation.parseMetadata(metadata) ⇒ <code>TYPE.AutomationItem</code> \| <code>void</code>
|
|
1384
|
-
parses retrieved Metadata before saving
|
|
1385
|
-
|
|
1386
|
-
**Kind**: static method of [<code>Automation</code>](#Automation)
|
|
1387
|
-
**Returns**: <code>TYPE.AutomationItem</code> \| <code>void</code> - parsed item
|
|
1388
|
-
|
|
1389
|
-
| Param | Type | Description |
|
|
1390
|
-
| --- | --- | --- |
|
|
1391
|
-
| metadata | <code>TYPE.AutomationItem</code> | a single automation definition |
|
|
1392
|
-
|
|
1393
1411
|
<a name="Automation._buildSchedule"></a>
|
|
1394
1412
|
|
|
1395
1413
|
### Automation.\_buildSchedule(scheduleObject) ⇒ <code>TYPE.AutomationScheduleSoap</code>
|
|
@@ -3155,6 +3173,7 @@ Provides default functionality that can be overwritten by child metadata type cl
|
|
|
3155
3173
|
* [.create(metadata, deployDir)](#MetadataType.create) ⇒ <code>void</code>
|
|
3156
3174
|
* [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ <code>void</code>
|
|
3157
3175
|
* [.refresh()](#MetadataType.refresh) ⇒ <code>void</code>
|
|
3176
|
+
* [.execute()](#MetadataType.execute) ⇒ <code>void</code>
|
|
3158
3177
|
* [.hasChanged(cachedVersion, metadata, [fieldName])](#MetadataType.hasChanged) ⇒ <code>boolean</code>
|
|
3159
3178
|
* [.hasChangedGeneric(cachedVersion, metadata, [fieldName], [silent])](#MetadataType.hasChangedGeneric) ⇒ <code>boolean</code>
|
|
3160
3179
|
* [.upsert(metadataMap, deployDir, [isRefresh])](#MetadataType.upsert) ⇒ <code>Promise.<TYPE.MetadataTypeMap></code>
|
|
@@ -3167,6 +3186,7 @@ Provides default functionality that can be overwritten by child metadata type cl
|
|
|
3167
3186
|
* [.getSOAPErrorMsg(ex)](#MetadataType.getSOAPErrorMsg) ⇒ <code>string</code>
|
|
3168
3187
|
* [.retrieveSOAP(retrieveDir, [requestParams], [singleRetrieve], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ <code>Promise.<TYPE.MetadataTypeMapObj></code>
|
|
3169
3188
|
* [.retrieveREST(retrieveDir, uri, [templateVariables], [singleRetrieve])](#MetadataType.retrieveREST) ⇒ <code>Promise.<{metadata: (TYPE.MetadataTypeMap\|TYPE.MetadataTypeItem), type: string}></code>
|
|
3189
|
+
* [.executeREST(uri, key)](#MetadataType.executeREST) ⇒ <code>Promise.<string></code>
|
|
3170
3190
|
* [.runDocumentOnRetrieve([singleRetrieve], metadataMap)](#MetadataType.runDocumentOnRetrieve) ⇒ <code>Promise.<void></code>
|
|
3171
3191
|
* [.parseResponseBody(body, [singleRetrieve])](#MetadataType.parseResponseBody) ⇒ <code>TYPE.MetadataTypeMap</code>
|
|
3172
3192
|
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ <code>void</code>
|
|
@@ -3466,6 +3486,12 @@ Abstract update method that needs to be implemented in child metadata type
|
|
|
3466
3486
|
### MetadataType.refresh() ⇒ <code>void</code>
|
|
3467
3487
|
Abstract refresh method that needs to be implemented in child metadata type
|
|
3468
3488
|
|
|
3489
|
+
**Kind**: static method of [<code>MetadataType</code>](#MetadataType)
|
|
3490
|
+
<a name="MetadataType.execute"></a>
|
|
3491
|
+
|
|
3492
|
+
### MetadataType.execute() ⇒ <code>void</code>
|
|
3493
|
+
Abstract execute method that needs to be implemented in child metadata type
|
|
3494
|
+
|
|
3469
3495
|
**Kind**: static method of [<code>MetadataType</code>](#MetadataType)
|
|
3470
3496
|
<a name="MetadataType.hasChanged"></a>
|
|
3471
3497
|
|
|
@@ -3633,6 +3659,19 @@ Retrieves Metadata for Rest Types
|
|
|
3633
3659
|
| [templateVariables] | <code>TYPE.TemplateMap</code> | variables to be replaced in the metadata |
|
|
3634
3660
|
| [singleRetrieve] | <code>string</code> \| <code>number</code> | key of single item to filter by |
|
|
3635
3661
|
|
|
3662
|
+
<a name="MetadataType.executeREST"></a>
|
|
3663
|
+
|
|
3664
|
+
### MetadataType.executeREST(uri, key) ⇒ <code>Promise.<string></code>
|
|
3665
|
+
Used to execute a query/automation etc.
|
|
3666
|
+
|
|
3667
|
+
**Kind**: static method of [<code>MetadataType</code>](#MetadataType)
|
|
3668
|
+
**Returns**: <code>Promise.<string></code> - 'OK' if started execution successfully, otherwise - 'Error'
|
|
3669
|
+
|
|
3670
|
+
| Param | Type | Description |
|
|
3671
|
+
| --- | --- | --- |
|
|
3672
|
+
| uri | <code>string</code> | REST endpoint where the POST request should be sent |
|
|
3673
|
+
| key | <code>string</code> | item key |
|
|
3674
|
+
|
|
3636
3675
|
<a name="MetadataType.runDocumentOnRetrieve"></a>
|
|
3637
3676
|
|
|
3638
3677
|
### MetadataType.runDocumentOnRetrieve([singleRetrieve], metadataMap) ⇒ <code>Promise.<void></code>
|
|
@@ -4548,6 +4587,7 @@ Query MetadataType
|
|
|
4548
4587
|
|
|
4549
4588
|
* [Query](#Query) ⇐ [<code>MetadataType</code>](#MetadataType)
|
|
4550
4589
|
* [.retrieve(retrieveDir, [_], [__], [key])](#Query.retrieve) ⇒ <code>Promise.<{metadata: TYPE.QueryMap, type: string}></code>
|
|
4590
|
+
* [.execute(keyArr)](#Query.execute) ⇒ <code>Promise.<boolean></code>
|
|
4551
4591
|
* [.retrieveForCache()](#Query.retrieveForCache) ⇒ <code>Promise.<{metadata: TYPE.QueryMap, type: string}></code>
|
|
4552
4592
|
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Query.retrieveAsTemplate) ⇒ <code>Promise.<{metadata: Query, type: string}></code>
|
|
4553
4593
|
* [.postRetrieveTasks(metadata)](#Query.postRetrieveTasks) ⇒ <code>TYPE.CodeExtractItem</code>
|
|
@@ -4577,6 +4617,18 @@ Retrieves Metadata of queries
|
|
|
4577
4617
|
| [__] | <code>void</code> | unused parameter |
|
|
4578
4618
|
| [key] | <code>string</code> | customer key of single item to retrieve |
|
|
4579
4619
|
|
|
4620
|
+
<a name="Query.execute"></a>
|
|
4621
|
+
|
|
4622
|
+
### Query.execute(keyArr) ⇒ <code>Promise.<boolean></code>
|
|
4623
|
+
a function to start query execution via API
|
|
4624
|
+
|
|
4625
|
+
**Kind**: static method of [<code>Query</code>](#Query)
|
|
4626
|
+
**Returns**: <code>Promise.<boolean></code> - Returns true if all items were executed successfully, otherwise false
|
|
4627
|
+
|
|
4628
|
+
| Param | Type | Description |
|
|
4629
|
+
| --- | --- | --- |
|
|
4630
|
+
| keyArr | <code>Array.<string></code> | customerkey of the metadata |
|
|
4631
|
+
|
|
4580
4632
|
<a name="Query.retrieveForCache"></a>
|
|
4581
4633
|
|
|
4582
4634
|
### Query.retrieveForCache() ⇒ <code>Promise.<{metadata: TYPE.QueryMap, type: string}></code>
|
|
@@ -5833,19 +5885,21 @@ CLI entry for SFMC DevTools
|
|
|
5833
5885
|
* [.includesStartsWith(arr, search)](#Util.includesStartsWith) ⇒ <code>boolean</code>
|
|
5834
5886
|
* [.includesStartsWithIndex(arr, search)](#Util.includesStartsWithIndex) ⇒ <code>number</code>
|
|
5835
5887
|
* [.checkMarket(market, properties)](#Util.checkMarket) ⇒ <code>boolean</code>
|
|
5836
|
-
* [.verifyMarketList(mlName, properties)](#Util.verifyMarketList)
|
|
5888
|
+
* [.verifyMarketList(mlName, properties)](#Util.verifyMarketList)
|
|
5837
5889
|
* [.signalFatalError()](#Util.signalFatalError) ⇒ <code>void</code>
|
|
5838
5890
|
* [.isTrue(attrValue)](#Util.isTrue) ⇒ <code>boolean</code>
|
|
5839
5891
|
* [.isFalse(attrValue)](#Util.isFalse) ⇒ <code>boolean</code>
|
|
5840
5892
|
* [._isValidType(selectedType, [handleOutside])](#Util._isValidType) ⇒ <code>boolean</code>
|
|
5841
5893
|
* [.getTypeAndSubType(selectedType)](#Util.getTypeAndSubType) ⇒ <code>Array.<string></code>
|
|
5842
5894
|
* [.getRetrieveTypeChoices()](#Util.getRetrieveTypeChoices) ⇒ <code>Array.<TYPE.SupportedMetadataTypes></code>
|
|
5895
|
+
* [._createNewLoggerTransport([noLogFile])](#Util._createNewLoggerTransport) ⇒ <code>object</code>
|
|
5896
|
+
* [.startLogger([restart], [noLogFile])](#Util.startLogger) ⇒ <code>void</code>
|
|
5843
5897
|
* [.metadataLogger(level, type, method, payload, [source])](#Util.metadataLogger) ⇒ <code>void</code>
|
|
5844
5898
|
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ <code>string</code> \| <code>object</code>
|
|
5845
5899
|
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ <code>string</code>
|
|
5846
5900
|
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ <code>Object.<string, Array.<string>></code>
|
|
5847
5901
|
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ <code>any</code>
|
|
5848
|
-
* [.execSync(cmd, [args], [hideOutput])](#Util.execSync) ⇒ <code>string</code>
|
|
5902
|
+
* [.execSync(cmd, [args], [hideOutput])](#Util.execSync) ⇒ <code>string</code> \| <code>void</code>
|
|
5849
5903
|
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ <code>TYPE.MetadataTypeItem</code>
|
|
5850
5904
|
* [.setLoggingLevel(argv)](#Util.setLoggingLevel) ⇒ <code>void</code>
|
|
5851
5905
|
* [.logBeta(type)](#Util.logBeta)
|
|
@@ -5919,11 +5973,10 @@ check if a market name exists in current mcdev config
|
|
|
5919
5973
|
|
|
5920
5974
|
<a name="Util.verifyMarketList"></a>
|
|
5921
5975
|
|
|
5922
|
-
### Util.verifyMarketList(mlName, properties)
|
|
5976
|
+
### Util.verifyMarketList(mlName, properties)
|
|
5923
5977
|
ensure provided MarketList exists and it's content including markets and BUs checks out
|
|
5924
5978
|
|
|
5925
5979
|
**Kind**: static method of [<code>Util</code>](#Util)
|
|
5926
|
-
**Returns**: <code>void</code> - throws errors if problems were found
|
|
5927
5980
|
|
|
5928
5981
|
| Param | Type | Description |
|
|
5929
5982
|
| --- | --- | --- |
|
|
@@ -5992,6 +6045,30 @@ helper for getDefaultProperties()
|
|
|
5992
6045
|
|
|
5993
6046
|
**Kind**: static method of [<code>Util</code>](#Util)
|
|
5994
6047
|
**Returns**: <code>Array.<TYPE.SupportedMetadataTypes></code> - type choices
|
|
6048
|
+
<a name="Util._createNewLoggerTransport"></a>
|
|
6049
|
+
|
|
6050
|
+
### Util.\_createNewLoggerTransport([noLogFile]) ⇒ <code>object</code>
|
|
6051
|
+
wrapper around our standard winston logging to console and logfile
|
|
6052
|
+
|
|
6053
|
+
**Kind**: static method of [<code>Util</code>](#Util)
|
|
6054
|
+
**Returns**: <code>object</code> - initiated logger for console and file
|
|
6055
|
+
|
|
6056
|
+
| Param | Type | Default | Description |
|
|
6057
|
+
| --- | --- | --- | --- |
|
|
6058
|
+
| [noLogFile] | <code>boolean</code> | <code>false</code> | optional flag to indicate if we should log to file; CLI logs are always on |
|
|
6059
|
+
|
|
6060
|
+
<a name="Util.startLogger"></a>
|
|
6061
|
+
|
|
6062
|
+
### Util.startLogger([restart], [noLogFile]) ⇒ <code>void</code>
|
|
6063
|
+
initiate winston logger
|
|
6064
|
+
|
|
6065
|
+
**Kind**: static method of [<code>Util</code>](#Util)
|
|
6066
|
+
|
|
6067
|
+
| Param | Type | Default | Description |
|
|
6068
|
+
| --- | --- | --- | --- |
|
|
6069
|
+
| [restart] | <code>boolean</code> | <code>false</code> | if true, logger will be restarted; otherwise, an existing logger will be used |
|
|
6070
|
+
| [noLogFile] | <code>boolean</code> | <code>false</code> | if false, logger will log to file; otherwise, only to console |
|
|
6071
|
+
|
|
5995
6072
|
<a name="Util.metadataLogger"></a>
|
|
5996
6073
|
|
|
5997
6074
|
### Util.metadataLogger(level, type, method, payload, [source]) ⇒ <code>void</code>
|
|
@@ -6061,11 +6138,11 @@ let's you dynamically walk down an object and get a value
|
|
|
6061
6138
|
|
|
6062
6139
|
<a name="Util.execSync"></a>
|
|
6063
6140
|
|
|
6064
|
-
### Util.execSync(cmd, [args], [hideOutput]) ⇒ <code>string</code>
|
|
6141
|
+
### Util.execSync(cmd, [args], [hideOutput]) ⇒ <code>string</code> \| <code>void</code>
|
|
6065
6142
|
helper to run other commands as if run manually by user
|
|
6066
6143
|
|
|
6067
6144
|
**Kind**: static method of [<code>Util</code>](#Util)
|
|
6068
|
-
**Returns**: <code>string</code> - output of command if hideOutput is true
|
|
6145
|
+
**Returns**: <code>string</code> \| <code>void</code> - output of command if hideOutput is true
|
|
6069
6146
|
|
|
6070
6147
|
| Param | Type | Description |
|
|
6071
6148
|
| --- | --- | --- |
|
|
@@ -7698,19 +7775,21 @@ Util that contains logger and simple util methods
|
|
|
7698
7775
|
* [.includesStartsWith(arr, search)](#Util.includesStartsWith) ⇒ <code>boolean</code>
|
|
7699
7776
|
* [.includesStartsWithIndex(arr, search)](#Util.includesStartsWithIndex) ⇒ <code>number</code>
|
|
7700
7777
|
* [.checkMarket(market, properties)](#Util.checkMarket) ⇒ <code>boolean</code>
|
|
7701
|
-
* [.verifyMarketList(mlName, properties)](#Util.verifyMarketList)
|
|
7778
|
+
* [.verifyMarketList(mlName, properties)](#Util.verifyMarketList)
|
|
7702
7779
|
* [.signalFatalError()](#Util.signalFatalError) ⇒ <code>void</code>
|
|
7703
7780
|
* [.isTrue(attrValue)](#Util.isTrue) ⇒ <code>boolean</code>
|
|
7704
7781
|
* [.isFalse(attrValue)](#Util.isFalse) ⇒ <code>boolean</code>
|
|
7705
7782
|
* [._isValidType(selectedType, [handleOutside])](#Util._isValidType) ⇒ <code>boolean</code>
|
|
7706
7783
|
* [.getTypeAndSubType(selectedType)](#Util.getTypeAndSubType) ⇒ <code>Array.<string></code>
|
|
7707
7784
|
* [.getRetrieveTypeChoices()](#Util.getRetrieveTypeChoices) ⇒ <code>Array.<TYPE.SupportedMetadataTypes></code>
|
|
7785
|
+
* [._createNewLoggerTransport([noLogFile])](#Util._createNewLoggerTransport) ⇒ <code>object</code>
|
|
7786
|
+
* [.startLogger([restart], [noLogFile])](#Util.startLogger) ⇒ <code>void</code>
|
|
7708
7787
|
* [.metadataLogger(level, type, method, payload, [source])](#Util.metadataLogger) ⇒ <code>void</code>
|
|
7709
7788
|
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ <code>string</code> \| <code>object</code>
|
|
7710
7789
|
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ <code>string</code>
|
|
7711
7790
|
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ <code>Object.<string, Array.<string>></code>
|
|
7712
7791
|
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ <code>any</code>
|
|
7713
|
-
* [.execSync(cmd, [args], [hideOutput])](#Util.execSync) ⇒ <code>string</code>
|
|
7792
|
+
* [.execSync(cmd, [args], [hideOutput])](#Util.execSync) ⇒ <code>string</code> \| <code>void</code>
|
|
7714
7793
|
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ <code>TYPE.MetadataTypeItem</code>
|
|
7715
7794
|
* [.setLoggingLevel(argv)](#Util.setLoggingLevel) ⇒ <code>void</code>
|
|
7716
7795
|
* [.logBeta(type)](#Util.logBeta)
|
|
@@ -7784,11 +7863,10 @@ check if a market name exists in current mcdev config
|
|
|
7784
7863
|
|
|
7785
7864
|
<a name="Util.verifyMarketList"></a>
|
|
7786
7865
|
|
|
7787
|
-
### Util.verifyMarketList(mlName, properties)
|
|
7866
|
+
### Util.verifyMarketList(mlName, properties)
|
|
7788
7867
|
ensure provided MarketList exists and it's content including markets and BUs checks out
|
|
7789
7868
|
|
|
7790
7869
|
**Kind**: static method of [<code>Util</code>](#Util)
|
|
7791
|
-
**Returns**: <code>void</code> - throws errors if problems were found
|
|
7792
7870
|
|
|
7793
7871
|
| Param | Type | Description |
|
|
7794
7872
|
| --- | --- | --- |
|
|
@@ -7857,6 +7935,30 @@ helper for getDefaultProperties()
|
|
|
7857
7935
|
|
|
7858
7936
|
**Kind**: static method of [<code>Util</code>](#Util)
|
|
7859
7937
|
**Returns**: <code>Array.<TYPE.SupportedMetadataTypes></code> - type choices
|
|
7938
|
+
<a name="Util._createNewLoggerTransport"></a>
|
|
7939
|
+
|
|
7940
|
+
### Util.\_createNewLoggerTransport([noLogFile]) ⇒ <code>object</code>
|
|
7941
|
+
wrapper around our standard winston logging to console and logfile
|
|
7942
|
+
|
|
7943
|
+
**Kind**: static method of [<code>Util</code>](#Util)
|
|
7944
|
+
**Returns**: <code>object</code> - initiated logger for console and file
|
|
7945
|
+
|
|
7946
|
+
| Param | Type | Default | Description |
|
|
7947
|
+
| --- | --- | --- | --- |
|
|
7948
|
+
| [noLogFile] | <code>boolean</code> | <code>false</code> | optional flag to indicate if we should log to file; CLI logs are always on |
|
|
7949
|
+
|
|
7950
|
+
<a name="Util.startLogger"></a>
|
|
7951
|
+
|
|
7952
|
+
### Util.startLogger([restart], [noLogFile]) ⇒ <code>void</code>
|
|
7953
|
+
initiate winston logger
|
|
7954
|
+
|
|
7955
|
+
**Kind**: static method of [<code>Util</code>](#Util)
|
|
7956
|
+
|
|
7957
|
+
| Param | Type | Default | Description |
|
|
7958
|
+
| --- | --- | --- | --- |
|
|
7959
|
+
| [restart] | <code>boolean</code> | <code>false</code> | if true, logger will be restarted; otherwise, an existing logger will be used |
|
|
7960
|
+
| [noLogFile] | <code>boolean</code> | <code>false</code> | if false, logger will log to file; otherwise, only to console |
|
|
7961
|
+
|
|
7860
7962
|
<a name="Util.metadataLogger"></a>
|
|
7861
7963
|
|
|
7862
7964
|
### Util.metadataLogger(level, type, method, payload, [source]) ⇒ <code>void</code>
|
|
@@ -7926,11 +8028,11 @@ let's you dynamically walk down an object and get a value
|
|
|
7926
8028
|
|
|
7927
8029
|
<a name="Util.execSync"></a>
|
|
7928
8030
|
|
|
7929
|
-
### Util.execSync(cmd, [args], [hideOutput]) ⇒ <code>string</code>
|
|
8031
|
+
### Util.execSync(cmd, [args], [hideOutput]) ⇒ <code>string</code> \| <code>void</code>
|
|
7930
8032
|
helper to run other commands as if run manually by user
|
|
7931
8033
|
|
|
7932
8034
|
**Kind**: static method of [<code>Util</code>](#Util)
|
|
7933
|
-
**Returns**: <code>string</code> - output of command if hideOutput is true
|
|
8035
|
+
**Returns**: <code>string</code> \| <code>void</code> - output of command if hideOutput is true
|
|
7934
8036
|
|
|
7935
8037
|
| Param | Type | Description |
|
|
7936
8038
|
| --- | --- | --- |
|
|
@@ -8064,6 +8166,32 @@ helper to convert CSVs into an array. if only one value was given, it's also ret
|
|
|
8064
8166
|
| --- | --- | --- |
|
|
8065
8167
|
| csv | <code>string</code> | potentially comma-separated value or null |
|
|
8066
8168
|
|
|
8169
|
+
<a name="Automation."></a>
|
|
8170
|
+
|
|
8171
|
+
## Automation.(metadataMap, key) ⇒ <code>Promise.<void></code>
|
|
8172
|
+
helper for [postDeployTasks](#Automation.postDeployTasks)
|
|
8173
|
+
|
|
8174
|
+
**Kind**: global function
|
|
8175
|
+
**Returns**: <code>Promise.<void></code> - -
|
|
8176
|
+
|
|
8177
|
+
| Param | Type | Description |
|
|
8178
|
+
| --- | --- | --- |
|
|
8179
|
+
| metadataMap | <code>TYPE.AutomationMap</code> | metadata mapped by their keyField |
|
|
8180
|
+
| key | <code>string</code> | current customer key |
|
|
8181
|
+
|
|
8182
|
+
<a name="Automation."></a>
|
|
8183
|
+
|
|
8184
|
+
## Automation.(metadataMap, originalMetadataMap, key)
|
|
8185
|
+
helper for [postDeployTasks](postDeployTasks)
|
|
8186
|
+
|
|
8187
|
+
**Kind**: global function
|
|
8188
|
+
|
|
8189
|
+
| Param | Type | Description |
|
|
8190
|
+
| --- | --- | --- |
|
|
8191
|
+
| metadataMap | <code>TYPE.AutomationMap</code> | metadata mapped by their keyField |
|
|
8192
|
+
| originalMetadataMap | <code>TYPE.AutomationMap</code> | metadata to be updated (contains additioanl fields) |
|
|
8193
|
+
| key | <code>string</code> | current customer key |
|
|
8194
|
+
|
|
8067
8195
|
<a name="getUserName"></a>
|
|
8068
8196
|
|
|
8069
8197
|
## getUserName(userList, item, fieldname) ⇒ <code>string</code>
|
|
@@ -8089,19 +8217,6 @@ Returns an SDK instance to be used for API calls
|
|
|
8089
8217
|
| sessionKey | <code>string</code> | key for specific BU |
|
|
8090
8218
|
| authObject | <code>TYPE.AuthObject</code> | credentials for specific BU |
|
|
8091
8219
|
|
|
8092
|
-
<a name="createNewLoggerTransport"></a>
|
|
8093
|
-
|
|
8094
|
-
## createNewLoggerTransport() ⇒ <code>object</code>
|
|
8095
|
-
wrapper around our standard winston logging to console and logfile
|
|
8096
|
-
|
|
8097
|
-
**Kind**: global function
|
|
8098
|
-
**Returns**: <code>object</code> - initiated logger for console and file
|
|
8099
|
-
<a name="startLogger"></a>
|
|
8100
|
-
|
|
8101
|
-
## startLogger() ⇒ <code>void</code>
|
|
8102
|
-
initiate winston logger
|
|
8103
|
-
|
|
8104
|
-
**Kind**: global function
|
|
8105
8220
|
<a name="TypeKeyCombo"></a>
|
|
8106
8221
|
|
|
8107
8222
|
## TypeKeyCombo : <code>Object.<string, string></code>
|
package/lib/Deployer.js
CHANGED
|
@@ -103,7 +103,7 @@ class Deployer {
|
|
|
103
103
|
buMultiMetadataTypeMap[cred + '/' + bu] = multiMetadataTypeMap;
|
|
104
104
|
counter_credBu++;
|
|
105
105
|
Util.logger.info('');
|
|
106
|
-
Util.
|
|
106
|
+
Util.startLogger(true);
|
|
107
107
|
}
|
|
108
108
|
} else {
|
|
109
109
|
// anything but "*" passed in
|
|
@@ -157,7 +157,7 @@ class Deployer {
|
|
|
157
157
|
buMultiMetadataTypeMap[cred + '/' + buPath] = multiMetadataTypeMap;
|
|
158
158
|
counter_credBu++;
|
|
159
159
|
Util.logger.info('');
|
|
160
|
-
Util.
|
|
160
|
+
Util.startLogger(true);
|
|
161
161
|
}
|
|
162
162
|
Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
|
|
163
163
|
} else {
|
|
@@ -387,7 +387,7 @@ class Deployer {
|
|
|
387
387
|
const allFolders = Object.keys(metadata[metadataType])
|
|
388
388
|
.filter(
|
|
389
389
|
// filter out root folders (which would not have a slash in their path)
|
|
390
|
-
(key) => metadata[metadataType][key].r__folder_Path
|
|
390
|
+
(key) => metadata[metadataType][key].r__folder_Path?.includes('/')
|
|
391
391
|
)
|
|
392
392
|
.filter(
|
|
393
393
|
// filter out dataExtension folders other than standard & shared (--> synchronized / salesforce are not allowed)
|
package/lib/cli.js
CHANGED
|
@@ -389,6 +389,30 @@ yargs
|
|
|
389
389
|
Mcdev.refresh(argv.BU, argv.TYPE, csvToArray(argv.KEY));
|
|
390
390
|
},
|
|
391
391
|
})
|
|
392
|
+
.command({
|
|
393
|
+
command: 'execute <BU> <TYPE> <KEY>',
|
|
394
|
+
aliases: ['exec'],
|
|
395
|
+
desc: 'executes the entity (query/journey/automation etc.)',
|
|
396
|
+
builder: (yargs) => {
|
|
397
|
+
yargs
|
|
398
|
+
.positional('BU', {
|
|
399
|
+
type: 'string',
|
|
400
|
+
describe: 'the business unit where to start an item',
|
|
401
|
+
})
|
|
402
|
+
.positional('TYPE', {
|
|
403
|
+
type: 'string',
|
|
404
|
+
describe: 'metadata type',
|
|
405
|
+
})
|
|
406
|
+
.positional('KEY', {
|
|
407
|
+
type: 'string',
|
|
408
|
+
describe: 'key(s) of the metadata component(s)',
|
|
409
|
+
});
|
|
410
|
+
},
|
|
411
|
+
handler: (argv) => {
|
|
412
|
+
Mcdev.setOptions(argv);
|
|
413
|
+
Mcdev.execute(argv.BU, csvToArray(argv.TYPE), csvToArray(argv.KEY));
|
|
414
|
+
},
|
|
415
|
+
})
|
|
392
416
|
.command({
|
|
393
417
|
command: 'upgrade',
|
|
394
418
|
aliases: ['up'],
|
|
@@ -410,6 +434,10 @@ yargs
|
|
|
410
434
|
type: 'boolean',
|
|
411
435
|
description: 'Only output errors to CLI',
|
|
412
436
|
})
|
|
437
|
+
.option('noLogFile', {
|
|
438
|
+
type: 'boolean',
|
|
439
|
+
description: 'Only output log to CLI but not to files',
|
|
440
|
+
})
|
|
413
441
|
.option('skipInteraction', {
|
|
414
442
|
alias: ['yes', 'y'],
|
|
415
443
|
description: 'Interactive questions where possible and go with defaults instead',
|