mcdev 7.1.3 → 7.1.4

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.
Files changed (126) hide show
  1. package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
  2. package/@types/lib/Builder.d.ts.map +1 -1
  3. package/@types/lib/Deployer.d.ts.map +1 -1
  4. package/@types/lib/cli.d.ts.map +1 -1
  5. package/@types/lib/index.d.ts.map +1 -1
  6. package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
  7. package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -1
  8. package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
  9. package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
  10. package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -1
  11. package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -1
  12. package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
  13. package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
  14. package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
  15. package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -1
  16. package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -1
  17. package/@types/lib/metadataTypes/Email.d.ts.map +1 -1
  18. package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
  19. package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -1
  20. package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
  21. package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
  22. package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
  23. package/@types/lib/metadataTypes/List.d.ts.map +1 -1
  24. package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
  25. package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
  26. package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
  27. package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
  28. package/@types/lib/metadataTypes/Role.d.ts.map +1 -1
  29. package/@types/lib/metadataTypes/Script.d.ts.map +1 -1
  30. package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
  31. package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
  32. package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
  33. package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -1
  34. package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -1
  35. package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -1
  36. package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
  37. package/@types/lib/metadataTypes/User.d.ts.map +1 -1
  38. package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
  39. package/@types/lib/util/auth.d.ts.map +1 -1
  40. package/@types/lib/util/cache.d.ts.map +1 -1
  41. package/@types/lib/util/cli.d.ts.map +1 -1
  42. package/@types/lib/util/config.d.ts.map +1 -1
  43. package/@types/lib/util/devops.d.ts.map +1 -1
  44. package/@types/lib/util/file.d.ts.map +1 -1
  45. package/@types/lib/util/init.config.d.ts.map +1 -1
  46. package/@types/lib/util/init.d.ts.map +1 -1
  47. package/@types/lib/util/init.git.d.ts.map +1 -1
  48. package/@types/lib/util/init.npm.d.ts.map +1 -1
  49. package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
  50. package/@types/lib/util/util.d.ts.map +1 -1
  51. package/@types/types/mcdev.d.d.ts.map +1 -1
  52. package/lib/Builder.js +4 -0
  53. package/lib/Deployer.js +2 -0
  54. package/lib/cli.js +1 -0
  55. package/lib/index.js +31 -0
  56. package/lib/metadataTypes/Asset.js +30 -0
  57. package/lib/metadataTypes/AttributeGroup.js +2 -0
  58. package/lib/metadataTypes/AttributeSet.js +3 -0
  59. package/lib/metadataTypes/Automation.js +15 -0
  60. package/lib/metadataTypes/Campaign.js +1 -0
  61. package/lib/metadataTypes/ContentArea.js +2 -0
  62. package/lib/metadataTypes/DataExtension.js +12 -0
  63. package/lib/metadataTypes/DataExtensionField.js +8 -0
  64. package/lib/metadataTypes/DataExtract.js +3 -0
  65. package/lib/metadataTypes/DataExtractType.js +1 -0
  66. package/lib/metadataTypes/Discovery.js +1 -0
  67. package/lib/metadataTypes/Email.js +2 -0
  68. package/lib/metadataTypes/Event.js +4 -0
  69. package/lib/metadataTypes/FileTransfer.js +1 -0
  70. package/lib/metadataTypes/Folder.js +14 -2
  71. package/lib/metadataTypes/ImportFile.js +2 -0
  72. package/lib/metadataTypes/Journey.js +8 -0
  73. package/lib/metadataTypes/List.js +2 -0
  74. package/lib/metadataTypes/MetadataType.js +34 -0
  75. package/lib/metadataTypes/MobileKeyword.js +8 -0
  76. package/lib/metadataTypes/MobileMessage.js +7 -0
  77. package/lib/metadataTypes/Query.js +9 -0
  78. package/lib/metadataTypes/Role.js +1 -0
  79. package/lib/metadataTypes/Script.js +7 -0
  80. package/lib/metadataTypes/SendClassification.js +2 -0
  81. package/lib/metadataTypes/SenderProfile.js +2 -0
  82. package/lib/metadataTypes/TransactionalEmail.js +3 -0
  83. package/lib/metadataTypes/TransactionalMessage.js +3 -0
  84. package/lib/metadataTypes/TransactionalPush.js +1 -0
  85. package/lib/metadataTypes/TransactionalSMS.js +8 -0
  86. package/lib/metadataTypes/TriggeredSend.js +4 -0
  87. package/lib/metadataTypes/User.js +10 -0
  88. package/lib/metadataTypes/Verification.js +3 -0
  89. package/lib/retrieveChangelog.js +1 -0
  90. package/lib/util/auth.js +3 -0
  91. package/lib/util/cache.js +8 -0
  92. package/lib/util/cli.js +8 -0
  93. package/lib/util/config.js +2 -0
  94. package/lib/util/devops.js +2 -0
  95. package/lib/util/file.js +12 -0
  96. package/lib/util/init.config.js +5 -0
  97. package/lib/util/init.git.js +4 -0
  98. package/lib/util/init.js +4 -0
  99. package/lib/util/init.npm.js +1 -0
  100. package/lib/util/replaceContentBlockReference.js +1 -0
  101. package/lib/util/util.js +29 -0
  102. package/package.json +6 -6
  103. package/test/mockRoot/.mcdevrc.json +1 -1
  104. package/test/resourceFactory.js +15 -1
  105. package/test/resources/9999999/dataFolder/+retrieve-QAA-response.xml +387 -0
  106. package/test/resources/9999999/dataFolder/create-ContentType=dataextension,Name=my,ParentFolderID=2-response.xml +33 -0
  107. package/test/resources/9999999/dataFolder/create-ContentType=dataextension,Name=path,ParentFolderID=862002-response.xml +33 -0
  108. package/test/resources/9999999/dataFolder/create-ContentType=dataextension,Name=sub,ParentFolderID=862001-response.xml +33 -0
  109. package/test/resources/9999999/dataFolder/create-ContentType=dataextension,Name=subpath,ParentFolderID=862003-response.xml +33 -0
  110. package/test/resources/9999999/email/v1/category/post-response-parentCatId=290937,name=my,catType=automations.json +7 -0
  111. package/test/resources/9999999/email/v1/category/post-response-parentCatId=862100,name=sub,catType=automations.json +7 -0
  112. package/test/resources/9999999/email/v1/category/post-response-parentCatId=862101,name=path,catType=automations.json +7 -0
  113. package/test/resources/9999999/email/v1/category/post-response-parentCatId=862102,name=subpath,catType=automations.json +7 -0
  114. package/test/resources/9999999/folder-deploy/Data Extensions/my/sub/path/subpath.folder-meta.json +9 -0
  115. package/test/resources/9999999/folder-deploy/Data Extensions/my/sub/path.folder-meta.json +9 -0
  116. package/test/resources/9999999/folder-deploy/Data Extensions/my/sub.folder-meta.json +9 -0
  117. package/test/resources/9999999/folder-deploy/Data Extensions/my.folder-meta.json +9 -0
  118. package/test/resources/9999999/folder-deploy/my automations/my/sub/path/subpath.folder-meta.json +9 -0
  119. package/test/resources/9999999/folder-deploy/my automations/my/sub/path.folder-meta.json +9 -0
  120. package/test/resources/9999999/folder-deploy/my automations/my/sub.folder-meta.json +9 -0
  121. package/test/resources/9999999/folder-deploy/my automations/my.folder-meta.json +9 -0
  122. package/test/type.asset.test.js +4 -0
  123. package/test/type.folder.test.js +97 -0
  124. package/test/utils.js +44 -5
  125. package/types/mcdev.d.js +27 -0
  126. /package/test/resources/9999999/dataFolder/{retrieve-response-.xml → +retrieve-response.xml} +0 -0
@@ -21,6 +21,7 @@ import pLimit from 'p-limit';
21
21
  * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
22
22
  * @typedef {import('../../types/mcdev.d.js').TypeKeyCombo} TypeKeyCombo
23
23
  */
24
+
24
25
  /**
25
26
  * @typedef {import('../../types/mcdev.d.js').AutomationItem} AutomationItem
26
27
  * @typedef {import('../../types/mcdev.d.js').AutomationItemObj} AutomationItemObj
@@ -41,6 +42,7 @@ class Automation extends MetadataType {
41
42
  static _skipNotificationRetrieve = false;
42
43
  /** @type {AutomationMap} */
43
44
  static _cachedMetadataMap;
45
+
44
46
  /**
45
47
  * Retrieves Metadata of Automation
46
48
  *
@@ -376,6 +378,7 @@ class Automation extends MetadataType {
376
378
  throw new Error(JSON.stringify(results));
377
379
  }
378
380
  }
381
+
379
382
  /**
380
383
  * helper for {@link Automation.postRetrieveTasks} and {@link Automation.execute}
381
384
  *
@@ -399,6 +402,7 @@ class Automation extends MetadataType {
399
402
  return false;
400
403
  }
401
404
  }
405
+
402
406
  /**
403
407
  * manages post retrieve steps
404
408
  *
@@ -521,6 +525,7 @@ class Automation extends MetadataType {
521
525
  return null;
522
526
  }
523
527
  }
528
+
524
529
  /**
525
530
  * a function to start query execution via API
526
531
  *
@@ -583,6 +588,7 @@ class Automation extends MetadataType {
583
588
  Util.logger.info(`Executed ${executedKeyArr.length} of ${keyArr.length} items`);
584
589
  return executedKeyArr;
585
590
  }
591
+
586
592
  /**
587
593
  * helper for {@link Automation.execute}
588
594
  *
@@ -900,6 +906,7 @@ class Automation extends MetadataType {
900
906
  return null;
901
907
  }
902
908
  }
909
+
903
910
  /**
904
911
  * Validates the automation to be sure it can be deployed.
905
912
  * Whitelisted Activites are deployed but require configuration
@@ -946,6 +953,7 @@ class Automation extends MetadataType {
946
953
  }
947
954
  return deployable;
948
955
  }
956
+
949
957
  /**
950
958
  * helper for {@link MetadataType.updateREST} and {@link MetadataType.updateSOAP} that removes old files after the key was changed
951
959
  *
@@ -1013,6 +1021,7 @@ class Automation extends MetadataType {
1013
1021
  await this.execute(Object.keys(metadataMap));
1014
1022
  }
1015
1023
  }
1024
+
1016
1025
  /**
1017
1026
  * helper for {@link Automation.postDeployTasks}
1018
1027
  *
@@ -1344,6 +1353,7 @@ class Automation extends MetadataType {
1344
1353
  // return time as a string without trailing "Z" and without miliseconds (separated by .)
1345
1354
  return dateServer.toISOString().slice(0, -1).split('.')[0];
1346
1355
  }
1356
+
1347
1357
  /**
1348
1358
  * Experimental: Only working for DataExtensions:
1349
1359
  * Saves json content to a html table in the local file system. Will create the parent directory if it does not exist.
@@ -1461,6 +1471,7 @@ class Automation extends MetadataType {
1461
1471
  }
1462
1472
  return output;
1463
1473
  }
1474
+
1464
1475
  /**
1465
1476
  * Saves json content to a html table in the local file system. Will create the parent directory if it does not exist.
1466
1477
  * The json's first level of keys must represent the rows and the secend level the columns
@@ -1514,6 +1525,7 @@ class Automation extends MetadataType {
1514
1525
  }
1515
1526
  }
1516
1527
  }
1528
+
1517
1529
  /**
1518
1530
  * Parses metadata into a readable Markdown/HTML format then saves it
1519
1531
  *
@@ -1551,6 +1563,7 @@ class Automation extends MetadataType {
1551
1563
  );
1552
1564
  }
1553
1565
  }
1566
+
1554
1567
  /**
1555
1568
  * should return only the json for all but asset, query and script that are saved as multiple files
1556
1569
  * additionally, the documentation for dataExtension and automation should be returned
@@ -1578,6 +1591,7 @@ class Automation extends MetadataType {
1578
1591
  return super.getFilesToCommit(keyArr);
1579
1592
  }
1580
1593
  }
1594
+
1581
1595
  /**
1582
1596
  * helper to allow us to select single metadata entries via REST
1583
1597
  *
@@ -1610,6 +1624,7 @@ class Automation extends MetadataType {
1610
1624
  }
1611
1625
  return super.deleteByKeySOAP(customerKey, 'CustomerKey');
1612
1626
  }
1627
+
1613
1628
  /**
1614
1629
  * clean up after deleting a metadata item
1615
1630
  *
@@ -52,6 +52,7 @@ class Campaign extends MetadataType {
52
52
 
53
53
  return res;
54
54
  }
55
+
55
56
  /**
56
57
  * Retrieves event definition metadata for caching
57
58
  *
@@ -50,6 +50,7 @@ class ContentArea extends MetadataType {
50
50
  // !dont activate `await File.initPrettier('html');` as we only want to retrieve for migration and formatting might mess with the outcome
51
51
  return super.retrieveSOAP(retrieveDir, requestParams, key);
52
52
  }
53
+
53
54
  /**
54
55
  * generic script that retrieves the folder path from cache and updates the given metadata with it after retrieve
55
56
  *
@@ -76,6 +77,7 @@ class ContentArea extends MetadataType {
76
77
  metadata.r__folder_Path = 'my contents';
77
78
  }
78
79
  }
80
+
79
81
  /**
80
82
  * parses retrieved Metadata before saving
81
83
  *
@@ -20,6 +20,7 @@ import { checkbox } from '@inquirer/prompts';
20
20
  * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
21
21
  * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
22
22
  */
23
+
23
24
  /**
24
25
  * @typedef {import('../../types/mcdev.d.js').DataExtensionFieldItem} DataExtensionFieldItem
25
26
  * @typedef {import('../../types/mcdev.d.js').DataExtensionFieldMap} DataExtensionFieldMap
@@ -35,6 +36,7 @@ import { checkbox } from '@inquirer/prompts';
35
36
  class DataExtension extends MetadataType {
36
37
  /** @type {Object.<string, DataExtensionFieldMap>} key: deKey, value: deFieldMap */
37
38
  static oldFields;
39
+
38
40
  /**
39
41
  * Upserts dataExtensions after retrieving them from source and target to compare
40
42
  * if create or update operation is needed.
@@ -221,6 +223,7 @@ class DataExtension extends MetadataType {
221
223
  }
222
224
  return action;
223
225
  }
226
+
224
227
  /**
225
228
  * helper for {@link DataExtension.upsert}
226
229
  *
@@ -283,6 +286,7 @@ class DataExtension extends MetadataType {
283
286
  );
284
287
  }
285
288
  }
289
+
286
290
  /**
287
291
  * Updates a single dataExtension. Also updates their columns in 'dataExtension.columns'
288
292
  *
@@ -293,6 +297,7 @@ class DataExtension extends MetadataType {
293
297
  static async update(metadata, handleOutside) {
294
298
  return super.updateSOAP(metadata, handleOutside);
295
299
  }
300
+
296
301
  /**
297
302
  * Gets executed after deployment of metadata type
298
303
  *
@@ -914,6 +919,7 @@ class DataExtension extends MetadataType {
914
919
  const metadata = await this._retrieveAll(additionalFields);
915
920
  return { metadata: metadata, type: 'dataExtension' };
916
921
  }
922
+
917
923
  /**
918
924
  * manages post retrieve steps
919
925
  *
@@ -1023,6 +1029,7 @@ class DataExtension extends MetadataType {
1023
1029
  const response = await DataExtensionField.retrieveForCacheDE(options, additionalFields);
1024
1030
  return response.metadata;
1025
1031
  }
1032
+
1026
1033
  /**
1027
1034
  * helps retrieving fields during templating and deploy where we dont want the full list
1028
1035
  *
@@ -1054,6 +1061,7 @@ class DataExtension extends MetadataType {
1054
1061
 
1055
1062
  metadata[customerKey].Fields = fieldArr;
1056
1063
  }
1064
+
1057
1065
  /**
1058
1066
  * helper for {@link MetadataType.updateREST} and {@link MetadataType.updateSOAP} that removes old files after the key was changed
1059
1067
  *
@@ -1349,6 +1357,7 @@ class DataExtension extends MetadataType {
1349
1357
  Util.logger.error(`DataExtension.writeDeToX(${mode}):: error | ` + ex.message);
1350
1358
  }
1351
1359
  }
1360
+
1352
1361
  /**
1353
1362
  * Parses metadata into a readable Markdown/HTML format then saves it
1354
1363
  *
@@ -1459,6 +1468,7 @@ class DataExtension extends MetadataType {
1459
1468
  static async retrieveForCache() {
1460
1469
  return this.retrieve(null, ['ObjectID', 'CustomerKey', 'Name']);
1461
1470
  }
1471
+
1462
1472
  /**
1463
1473
  * Retrieves dataExtension metadata in template format.
1464
1474
  *
@@ -1514,6 +1524,7 @@ class DataExtension extends MetadataType {
1514
1524
 
1515
1525
  return { metadata: metadata[customerKey], type: 'dataExtension' };
1516
1526
  }
1527
+
1517
1528
  /**
1518
1529
  * dataExtension logic that retrieves the folder path from cache and updates the given metadata with it after retrieve
1519
1530
  * it also sets the content type which is basically the subtype
@@ -1593,6 +1604,7 @@ class DataExtension extends MetadataType {
1593
1604
  }
1594
1605
  return metadata;
1595
1606
  }
1607
+
1596
1608
  /**
1597
1609
  * should return only the json for all but asset, query and script that are saved as multiple files
1598
1610
  * additionally, the documentation for dataExtension and automation should be returned
@@ -15,10 +15,12 @@ import { Util } from '../util/util.js';
15
15
  * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
16
16
  * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
17
17
  */
18
+
18
19
  /**
19
20
  * @typedef {import('../../types/mcdev.d.js').DataExtensionFieldMap} DataExtensionFieldMap
20
21
  * @typedef {import('../../types/mcdev.d.js').DataExtensionFieldItem} DataExtensionFieldItem
21
22
  */
23
+
22
24
  /**
23
25
  * DataExtensionField MetadataType
24
26
  *
@@ -26,6 +28,7 @@ import { Util } from '../util/util.js';
26
28
  */
27
29
  class DataExtensionField extends MetadataType {
28
30
  static fixShared_fields;
31
+
29
32
  /**
30
33
  * Retrieves all records and saves it to disk
31
34
  *
@@ -36,6 +39,7 @@ class DataExtensionField extends MetadataType {
36
39
  static async retrieve(retrieveDir, additionalFields) {
37
40
  return super.retrieveSOAP(retrieveDir, null, null, additionalFields);
38
41
  }
42
+
39
43
  /**
40
44
  * Retrieves all records for caching
41
45
  *
@@ -46,6 +50,7 @@ class DataExtensionField extends MetadataType {
46
50
  static async retrieveForCacheDE(requestParams, additionalFields) {
47
51
  return super.retrieveSOAP(null, requestParams, null, additionalFields);
48
52
  }
53
+
49
54
  /**
50
55
  * helper for DataExtension.retrieveFieldsForSingleDe that sorts the fields into an array
51
56
  *
@@ -71,6 +76,7 @@ class DataExtensionField extends MetadataType {
71
76
  static sortDeFields(a, b) {
72
77
  return a.Ordinal - b.Ordinal;
73
78
  }
79
+
74
80
  /**
75
81
  * manages post retrieve steps; only used by DataExtension class
76
82
  *
@@ -91,6 +97,7 @@ class DataExtensionField extends MetadataType {
91
97
  }
92
98
  return metadata;
93
99
  }
100
+
94
101
  /**
95
102
  * Mofifies passed deployColumns for update by mapping ObjectID to their target column's values.
96
103
  * Removes FieldType field if its the same in deploy and target column, because it results in an error even if its of the same type
@@ -333,6 +340,7 @@ class DataExtensionField extends MetadataType {
333
340
  return false;
334
341
  }
335
342
  }
343
+
336
344
  /**
337
345
  * clean up after deleting a metadata item
338
346
  *
@@ -37,6 +37,7 @@ class DataExtract extends MetadataType {
37
37
  static async retrieve(retrieveDir, _, __, key) {
38
38
  return super.retrieveREST(retrieveDir, '/automation/v1/dataextracts/', null, key);
39
39
  }
40
+
40
41
  /**
41
42
  * Retrieves Metadata of Data Extract Activity for caching
42
43
  *
@@ -137,6 +138,7 @@ class DataExtract extends MetadataType {
137
138
  delete metadata.r__dataExtractType_name;
138
139
  return metadata;
139
140
  }
141
+
140
142
  /**
141
143
  * manages post retrieve steps
142
144
  *
@@ -159,6 +161,7 @@ class DataExtract extends MetadataType {
159
161
  }
160
162
  return structuredClone(metadata);
161
163
  }
164
+
162
165
  /**
163
166
  * helper to allow us to select single metadata entries via REST
164
167
  *
@@ -35,6 +35,7 @@ class DataExtractType extends MetadataType {
35
35
  static retrieve(retrieveDir, _, __, key) {
36
36
  return super.retrieveREST(retrieveDir, '/automation/v1/dataextracttypes/', null, key);
37
37
  }
38
+
38
39
  /**
39
40
  * Retrieves Metadata of Data Extract Type for caching.
40
41
  *
@@ -15,6 +15,7 @@ import { Util } from '../util/util.js';
15
15
  * @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
16
16
  * @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
17
17
  */
18
+
18
19
  /**
19
20
  * ImportFile MetadataType
20
21
  *
@@ -46,6 +46,7 @@ class Email extends MetadataType {
46
46
  // !dont activate `await File.initPrettier('html');` as we only want to retrieve for migration and formatting might mess with the outcome
47
47
  return super.retrieveSOAP(retrieveDir, requestParams, key);
48
48
  }
49
+
49
50
  /**
50
51
  * Helper for writing Metadata to disk, used for Retrieve and deploy
51
52
  *
@@ -64,6 +65,7 @@ class Email extends MetadataType {
64
65
  }
65
66
  return super.saveResults(results, retrieveDir, overrideType, templateVariables);
66
67
  }
68
+
67
69
  /**
68
70
  * manages post retrieve steps
69
71
  *
@@ -26,6 +26,7 @@ import deepEqual from 'deep-equal';
26
26
  */
27
27
  class Event extends MetadataType {
28
28
  static reCacheDataExtensions = [];
29
+
29
30
  /**
30
31
  * Retrieves Metadata of Event Definition.
31
32
  * Endpoint /interaction/v1/eventDefinitions return all Event Definitions with all details.
@@ -141,6 +142,7 @@ class Event extends MetadataType {
141
142
  false
142
143
  );
143
144
  }
145
+
144
146
  /**
145
147
  * Deploys metadata - merely kept here to be able to print {@link Util.logBeta} once per deploy
146
148
  *
@@ -215,6 +217,7 @@ class Event extends MetadataType {
215
217
 
216
218
  return metadata;
217
219
  }
220
+
218
221
  /**
219
222
  * helper for {@link MetadataType.upsert}
220
223
  *
@@ -320,6 +323,7 @@ class Event extends MetadataType {
320
323
  }
321
324
  return createOrUpdateAction;
322
325
  }
326
+
323
327
  /**
324
328
  * Gets executed after deployment of metadata type
325
329
  *
@@ -37,6 +37,7 @@ class FileTransfer extends MetadataType {
37
37
  static async retrieve(retrieveDir, _, __, key) {
38
38
  return super.retrieveREST(retrieveDir, '/automation/v1/filetransfers/', null, key);
39
39
  }
40
+
40
41
  /**
41
42
  * Retrieves Metadata of FileTransfer Activity for caching
42
43
  *
@@ -381,7 +381,13 @@ class Folder extends MetadataType {
381
381
  const response = await super.createREST(restPayload, '/email/v1/category', true);
382
382
  if (response?.objectId) {
383
383
  // convert the response to the same format as the SOAP response
384
+
385
+ // set the new folder ID
384
386
  metadataEntry.ID = response.categoryId;
387
+ // set the client ID to ensure we can find the newly created folders as parents for folders created afterwards inside of it
388
+ metadataEntry.Client = {
389
+ ID: metadataEntry.Client?.ID || this.buObject.mid,
390
+ };
385
391
  // the following is a bit of a hack to make the response look like the SOAP response; not sure if we actually need that anywhere like this --> future developers feel free to double check
386
392
  const returnObject = {
387
393
  Results: [
@@ -399,9 +405,13 @@ class Folder extends MetadataType {
399
405
  } else {
400
406
  const response = await super.createSOAP(metadataEntry, true);
401
407
  if (response) {
408
+ // set the client ID to ensure we can find the newly created folders as parents for folders created afterwards inside of it
409
+ metadataEntry.Client = {
410
+ ID: metadataEntry.Client?.ID || this.buObject.mid,
411
+ };
412
+ // set the new folder ID
413
+ metadataEntry.ID = response.Results[0].NewID;
402
414
  response.Results[0].Object = metadataEntry;
403
- response.Results[0].Object.ID = response.Results[0].NewID;
404
- response.Results[0].Object.CustomerKey = metadataEntry.CustomerKey;
405
415
  delete response.Results[0].Object.$;
406
416
 
407
417
  Util.logger.info(` - created folder: ${path}`);
@@ -618,6 +628,7 @@ class Folder extends MetadataType {
618
628
  );
619
629
  return response.Results;
620
630
  }
631
+
621
632
  /**
622
633
  * Gets executed after retreive of metadata type
623
634
  *
@@ -627,6 +638,7 @@ class Folder extends MetadataType {
627
638
  static postRetrieveTasks(metadata) {
628
639
  return structuredClone(metadata);
629
640
  }
641
+
630
642
  /**
631
643
  * Helper for writing Metadata to disk, used for Retrieve and deploy
632
644
  *
@@ -142,6 +142,7 @@ class ImportFile extends MetadataType {
142
142
  );
143
143
  }
144
144
  }
145
+
145
146
  /**
146
147
  * helper to allow us to select single metadata entries via REST
147
148
  *
@@ -188,6 +189,7 @@ class ImportFile extends MetadataType {
188
189
  '/automation/v1/imports/' + importFile.importDefinitionId
189
190
  );
190
191
  }
192
+
191
193
  /**
192
194
  * Deploys metadata
193
195
  *
@@ -196,6 +196,7 @@ class Journey extends MetadataType {
196
196
  }
197
197
  }
198
198
  }
199
+
199
200
  /**
200
201
  * Delete a metadata item from the specified business unit
201
202
  *
@@ -259,6 +260,7 @@ class Journey extends MetadataType {
259
260
  false
260
261
  );
261
262
  }
263
+
262
264
  /**
263
265
  * Deploys metadata - merely kept here to be able to print {@link Util.logBeta} once per deploy
264
266
  *
@@ -295,6 +297,7 @@ class Journey extends MetadataType {
295
297
  static create(metadata) {
296
298
  return super.createREST(metadata, '/interaction/v1/interactions/');
297
299
  }
300
+
298
301
  /**
299
302
  * Helper for writing Metadata to disk, used for Retrieve and deploy
300
303
  *
@@ -518,6 +521,7 @@ class Journey extends MetadataType {
518
521
 
519
522
  return metadata;
520
523
  }
524
+
521
525
  /**
522
526
  * helper for {@link Journey.postRetrieveTasks}
523
527
  *
@@ -1347,6 +1351,7 @@ class Journey extends MetadataType {
1347
1351
  }
1348
1352
  return action;
1349
1353
  }
1354
+
1350
1355
  /**
1351
1356
  *
1352
1357
  * @param {MetadataTypeItem} item single metadata item
@@ -1479,6 +1484,7 @@ class Journey extends MetadataType {
1479
1484
  // no error means we have a new item to deploy and need to update the item in our retrieve folder
1480
1485
  return item;
1481
1486
  }
1487
+
1482
1488
  /**
1483
1489
  * Gets executed after deployment of metadata type
1484
1490
  *
@@ -1494,6 +1500,7 @@ class Journey extends MetadataType {
1494
1500
  await this.publish(idArr);
1495
1501
  }
1496
1502
  }
1503
+
1497
1504
  /**
1498
1505
  * a function to publish the journey via API
1499
1506
  *
@@ -1614,6 +1621,7 @@ class Journey extends MetadataType {
1614
1621
  );
1615
1622
  return executedKeyArr.filter(Boolean);
1616
1623
  }
1624
+
1617
1625
  /**
1618
1626
  * helper for {@link Journey.publish}
1619
1627
  *
@@ -58,6 +58,7 @@ class List extends MetadataType {
58
58
  const results = await super.retrieveSOAP(retrieveDir, requestParams, key);
59
59
  return await this._retrieveParentAllSubs(results);
60
60
  }
61
+
61
62
  /**
62
63
  * Gets metadata cache with limited fields and does not store value to disk
63
64
  *
@@ -187,6 +188,7 @@ class List extends MetadataType {
187
188
  static postRetrieveTasks(list) {
188
189
  return this.parseMetadata(list);
189
190
  }
191
+
190
192
  /**
191
193
  * parses retrieved Metadata before saving
192
194
  *