mcdev 7.3.1 → 7.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
  2. package/@types/lib/Deployer.d.ts.map +1 -1
  3. package/@types/lib/index.d.ts.map +1 -1
  4. package/@types/lib/metadataTypes/Asset.d.ts +25 -0
  5. package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
  6. package/@types/lib/metadataTypes/DataExtension.d.ts +3 -2
  7. package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
  8. package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
  9. package/@types/lib/metadataTypes/Event.d.ts +39 -7
  10. package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
  11. package/@types/lib/metadataTypes/Journey.d.ts +4 -3
  12. package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
  13. package/@types/lib/metadataTypes/MetadataType.d.ts +22 -3
  14. package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
  15. package/@types/lib/util/init.config.d.ts.map +1 -1
  16. package/@types/lib/util/replaceContentBlockReference.d.ts +4 -5
  17. package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
  18. package/@types/lib/util/util.d.ts +18 -2
  19. package/@types/lib/util/util.d.ts.map +1 -1
  20. package/@types/lib/util/validations.d.ts +9 -0
  21. package/@types/lib/util/validations.d.ts.map +1 -0
  22. package/@types/types/mcdev.d.d.ts +195 -0
  23. package/@types/types/mcdev.d.d.ts.map +1 -1
  24. package/boilerplate/config.json +22 -0
  25. package/boilerplate/files/.gitattributes +1 -1
  26. package/boilerplate/files/README.md +1 -1
  27. package/boilerplate/forcedUpdates.json +8 -0
  28. package/boilerplate/gitignore-template +1 -0
  29. package/lib/Deployer.js +5 -0
  30. package/lib/cli.js +28 -3
  31. package/lib/index.js +3 -2
  32. package/lib/metadataTypes/Asset.js +87 -7
  33. package/lib/metadataTypes/DataExtension.js +74 -17
  34. package/lib/metadataTypes/DataExtensionField.js +11 -3
  35. package/lib/metadataTypes/Event.js +171 -105
  36. package/lib/metadataTypes/Journey.js +207 -89
  37. package/lib/metadataTypes/MetadataType.js +182 -37
  38. package/lib/metadataTypes/definitions/TriggeredSend.definition.js +4 -2
  39. package/lib/util/config.js +4 -4
  40. package/lib/util/init.config.js +10 -6
  41. package/lib/util/replaceContentBlockReference.js +15 -11
  42. package/lib/util/util.js +43 -9
  43. package/lib/util/validations.js +66 -0
  44. package/package.json +8 -8
  45. package/test/general.test.js +4 -4
  46. package/test/mockRoot/.mcdevrc.json +15 -1
  47. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testExisting_triggeredSend.triggeredSend-meta.json +0 -1
  48. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testNew_triggeredSend.triggeredSend-meta.json +0 -1
  49. package/test/resources/9999999/journey/build-expected.json +4 -2
  50. package/test/resources/9999999/journey/get-multistep-expected.json +61 -61
  51. package/test/resources/9999999/journey/get-quicksend-expected.json +4 -2
  52. package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +2 -2
  53. package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +2 -2
  54. package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +6 -2
  55. package/test/resources/9999999/journey/get-transactionalEmail-expected.json +2 -2
  56. package/test/resources/9999999/journey/template-expected.json +4 -2
  57. package/test/resources/9999999/triggeredSend/build-expected.json +0 -1
  58. package/test/resources/9999999/triggeredSend/get-expected.json +0 -1
  59. package/test/resources/9999999/triggeredSend/get-rcb-id-expected.json +0 -1
  60. package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +0 -1
  61. package/test/resources/9999999/triggeredSend/get-rcb-name-expected.json +0 -1
  62. package/test/resources/9999999/triggeredSend/patch-expected.json +0 -1
  63. package/test/resources/9999999/triggeredSend/post-expected.json +0 -1
  64. package/test/resources/9999999/triggeredSend/template-expected.json +0 -1
  65. package/test/resources/9999999/triggeredSendDefinition/create-response.xml +0 -1
  66. package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +0 -2
  67. package/test/resources/9999999/triggeredSendDefinition/update-response.xml +0 -1
  68. package/test/type.dataExtension.test.js +3 -3
  69. package/test/type.journey.test.js +2 -2
  70. package/test/utils.js +1 -0
  71. package/types/mcdev.d.js +66 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcdev",
3
- "version": "7.3.1",
3
+ "version": "7.4.1",
4
4
  "description": "Accenture Salesforce Marketing Cloud DevTools",
5
5
  "author": "Accenture: joern.berkefeld, douglas.midgley, robert.zimmermann, maciej.barnas",
6
6
  "license": "MIT",
@@ -75,7 +75,7 @@
75
75
  "console.table": "0.10.0",
76
76
  "deep-equal": "2.2.3",
77
77
  "fs-extra": "11.2.0",
78
- "inquirer": "10.1.8",
78
+ "inquirer": "10.2.2",
79
79
  "json-to-table": "4.2.1",
80
80
  "mustache": "4.2.0",
81
81
  "p-limit": "6.1.0",
@@ -85,24 +85,24 @@
85
85
  "sfmc-sdk": "2.1.2",
86
86
  "simple-git": "3.25.0",
87
87
  "toposort": "2.0.2",
88
- "update-notifier": "7.2.0",
88
+ "update-notifier": "7.3.1",
89
89
  "winston": "3.14.2",
90
90
  "yargs": "17.7.2",
91
91
  "yocto-spinner": "0.1.0"
92
92
  },
93
93
  "devDependencies": {
94
- "@eslint/js": "9.9.0",
94
+ "@eslint/js": "9.10.0",
95
95
  "@types/fs-extra": "11.0.4",
96
96
  "@types/inquirer": "9.0.7",
97
97
  "@types/mocha": "10.0.7",
98
- "@types/node": "22.4.2",
98
+ "@types/node": "22.5.4",
99
99
  "@types/yargs": "17.0.33",
100
100
  "assert": "2.1.0",
101
101
  "axios-mock-adapter": "2.0.0",
102
102
  "c8": "10.0.0",
103
103
  "chai": "5.1.1",
104
104
  "chai-files": "1.4.0",
105
- "eslint": "9.9.0",
105
+ "eslint": "9.10.0",
106
106
  "eslint-config-prettier": "9.1.0",
107
107
  "eslint-config-ssjs": "2.0.0",
108
108
  "eslint-plugin-jsdoc": "50.2.2",
@@ -112,12 +112,12 @@
112
112
  "fast-xml-parser": "4.4.1",
113
113
  "globals": "15.9.0",
114
114
  "husky": "9.1.5",
115
- "lint-staged": "15.2.9",
115
+ "lint-staged": "15.2.10",
116
116
  "mocha": "10.7.3",
117
117
  "mock-fs": "5.2.0",
118
118
  "npm-run-all": "4.1.5",
119
119
  "prettier-eslint": "16.3.0",
120
- "typescript": "5.5.4"
120
+ "typescript": "5.6.2"
121
121
  },
122
122
  "optionalDependencies": {
123
123
  "fsevents": "*"
@@ -569,7 +569,7 @@ describe('GENERAL', () => {
569
569
  );
570
570
  assert.equal(
571
571
  testUtils.getAPIHistoryLength(),
572
- 14,
572
+ 13,
573
573
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
574
574
  );
575
575
  });
@@ -632,7 +632,7 @@ describe('GENERAL', () => {
632
632
  );
633
633
  assert.equal(
634
634
  testUtils.getAPIHistoryLength(),
635
- 15,
635
+ 14,
636
636
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
637
637
  );
638
638
  });
@@ -697,7 +697,7 @@ describe('GENERAL', () => {
697
697
  );
698
698
  assert.equal(
699
699
  testUtils.getAPIHistoryLength(),
700
- 12,
700
+ 11,
701
701
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
702
702
  );
703
703
  });
@@ -2251,7 +2251,7 @@ describe('GENERAL', () => {
2251
2251
  );
2252
2252
  assert.equal(
2253
2253
  testUtils.getAPIHistoryLength(),
2254
- 14,
2254
+ 13,
2255
2255
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
2256
2256
  );
2257
2257
  });
@@ -19,6 +19,20 @@
19
19
  "master": ["MyProduction/PROD-DE", "MyProduction/PROD-NL"]
20
20
  }
21
21
  },
22
+ "validation": {
23
+ "retrieve": {
24
+ "noGuidKeys": "warn",
25
+ "noRootFolder": "warn"
26
+ },
27
+ "buildDefinition": {
28
+ "noGuidKeys": "warn",
29
+ "noRootFolder": "warn"
30
+ },
31
+ "deploy": {
32
+ "noGuidKeys": "warn",
33
+ "noRootFolder": "warn"
34
+ }
35
+ },
22
36
  "documentType": "md",
23
37
  "exclude": {},
24
38
  "include": {},
@@ -100,5 +114,5 @@
100
114
  "verification"
101
115
  ]
102
116
  },
103
- "version": "7.3.1"
117
+ "version": "7.4.1"
104
118
  }
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testExisting_triggeredSend",
9
8
  "Description": "updated on deploy",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testNew_triggeredSend",
9
8
  "Description": "created on deploy",
@@ -25,8 +25,10 @@
25
25
  "triggeredSend": {
26
26
  "autoAddSubscribers": true,
27
27
  "autoUpdateSubscribers": true,
28
- "bccEmail": "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%",
29
- "ccEmail": "%%= ContentBlockByKey(\"testTemplated_asset_htmlblock\") =%%",
28
+ "bccEmail": [
29
+ "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%"
30
+ ],
31
+ "ccEmail": ["%%= ContentBlockByKey(\"testTemplated_asset_htmlblock\") =%%"],
30
32
  "created": {},
31
33
  "description": "my activity info text",
32
34
  "dynamicEmailSubject": "testTemplated_ dynamic email subject %%= ContentBlockByKey(\"testTemplated_asset_htmlblock\") =%%",
@@ -8,58 +8,6 @@
8
8
  "createdDate": "2024-05-04T05:54:48.027",
9
9
  "modifiedDate": "2024-05-04T17:25:57.9",
10
10
  "activities": [
11
- {
12
- "id": "342dd0aa-a6be-401e-8614-3538800bfd7c",
13
- "key": "MULTICRITERIADECISIONV2-1",
14
- "name": "",
15
- "description": "",
16
- "type": "MULTICRITERIADECISION",
17
- "outcomes": [
18
- {
19
- "key": "default_path_1",
20
- "next": "EMAILV2-1",
21
- "arguments": {},
22
- "metaData": {
23
- "label": "send message",
24
- "skipI18n": true,
25
- "isLabelFromConversion": false,
26
- "criteriaDescription": "Email is not null"
27
- }
28
- },
29
- {
30
- "key": "remainder_path",
31
- "next": "WAITBYDURATION-2",
32
- "arguments": {},
33
- "metaData": { "label": null }
34
- }
35
- ],
36
- "arguments": {},
37
- "configurationArguments": {
38
- "criteria": {
39
- "default_path_1": "<FilterDefinition><ConditionSet Operator=\"AND\" ConditionSetName=\"Individual Filter Grouping\"><Condition IsEphemeralAttribute=\"true\" Key=\"Event.DEAudience-2e3c73b6-48cc-2ec0-5522-48636e1a236e.Email\" Operator=\"IsNotNull\" UiMetaData=\"{}\"><Value><![CDATA[]]></Value></Condition></ConditionSet></FilterDefinition>"
40
- },
41
- "schemaVersionId": "252"
42
- },
43
- "metaData": { "isConfigured": true },
44
- "schema": {
45
- "arguments": {
46
- "actualChoice": {
47
- "dataType": "Number",
48
- "isNullable": false,
49
- "direction": "Out",
50
- "readOnly": false,
51
- "access": "Hidden"
52
- },
53
- "filterResult": {
54
- "dataType": "Text",
55
- "isNullable": false,
56
- "direction": "In",
57
- "readOnly": true,
58
- "access": "Hidden"
59
- }
60
- }
61
- }
62
- },
63
11
  {
64
12
  "id": "7ba1e59a-6be4-46c7-b76f-4c06feb1268a",
65
13
  "key": "EMAILV2-1",
@@ -83,8 +31,8 @@
83
31
  "triggeredSend": {
84
32
  "autoAddSubscribers": false,
85
33
  "autoUpdateSubscribers": false,
86
- "bccEmail": "",
87
- "ccEmail": "",
34
+ "bccEmail": [],
35
+ "ccEmail": [],
88
36
  "created": { "name": "", "date": "" },
89
37
  "description": "my custom description",
90
38
  "domainExclusions": [],
@@ -231,14 +179,66 @@
231
179
  }
232
180
  },
233
181
  {
234
- "id": "70572b1a-e274-4f09-a3fa-6fc0732ec52b",
235
- "key": "WAITBYDURATION-2",
182
+ "id": "342dd0aa-a6be-401e-8614-3538800bfd7c",
183
+ "key": "MULTICRITERIADECISIONV2-1",
236
184
  "name": "",
237
185
  "description": "",
186
+ "type": "MULTICRITERIADECISION",
187
+ "outcomes": [
188
+ {
189
+ "key": "default_path_1",
190
+ "next": "EMAILV2-1",
191
+ "arguments": {},
192
+ "metaData": {
193
+ "label": "send message",
194
+ "skipI18n": true,
195
+ "isLabelFromConversion": false,
196
+ "criteriaDescription": "Email is not null"
197
+ }
198
+ },
199
+ {
200
+ "key": "remainder_path",
201
+ "next": "WAITBYDURATION-2",
202
+ "arguments": {},
203
+ "metaData": { "label": null }
204
+ }
205
+ ],
206
+ "arguments": {},
207
+ "configurationArguments": {
208
+ "criteria": {
209
+ "default_path_1": "<FilterDefinition><ConditionSet Operator=\"AND\" ConditionSetName=\"Individual Filter Grouping\"><Condition IsEphemeralAttribute=\"true\" Key=\"Event.DEAudience-2e3c73b6-48cc-2ec0-5522-48636e1a236e.Email\" Operator=\"IsNotNull\" UiMetaData=\"{}\"><Value><![CDATA[]]></Value></Condition></ConditionSet></FilterDefinition>"
210
+ },
211
+ "schemaVersionId": "252"
212
+ },
213
+ "metaData": { "isConfigured": true },
214
+ "schema": {
215
+ "arguments": {
216
+ "actualChoice": {
217
+ "dataType": "Number",
218
+ "isNullable": false,
219
+ "direction": "Out",
220
+ "readOnly": false,
221
+ "access": "Hidden"
222
+ },
223
+ "filterResult": {
224
+ "dataType": "Text",
225
+ "isNullable": false,
226
+ "direction": "In",
227
+ "readOnly": true,
228
+ "access": "Hidden"
229
+ }
230
+ }
231
+ }
232
+ },
233
+ {
234
+ "id": "e2a486cf-c85f-4543-88a2-d579cac1e0de",
235
+ "key": "WAITBYDURATION-1",
236
+ "name": "1 day",
237
+ "description": "",
238
238
  "type": "WAIT",
239
239
  "outcomes": [
240
240
  {
241
- "key": "a0908f9f-bc3c-47f7-9489-7fef5af25ce3",
241
+ "key": "97af222a-450a-429e-8925-649b72f01ccf",
242
242
  "arguments": {},
243
243
  "metaData": { "invalid": false }
244
244
  }
@@ -301,14 +301,14 @@
301
301
  }
302
302
  },
303
303
  {
304
- "id": "e2a486cf-c85f-4543-88a2-d579cac1e0de",
305
- "key": "WAITBYDURATION-1",
306
- "name": "1 day",
304
+ "id": "70572b1a-e274-4f09-a3fa-6fc0732ec52b",
305
+ "key": "WAITBYDURATION-2",
306
+ "name": "",
307
307
  "description": "",
308
308
  "type": "WAIT",
309
309
  "outcomes": [
310
310
  {
311
- "key": "97af222a-450a-429e-8925-649b72f01ccf",
311
+ "key": "a0908f9f-bc3c-47f7-9489-7fef5af25ce3",
312
312
  "arguments": {},
313
313
  "metaData": { "invalid": false }
314
314
  }
@@ -28,8 +28,10 @@
28
28
  "triggeredSend": {
29
29
  "autoAddSubscribers": true,
30
30
  "autoUpdateSubscribers": true,
31
- "bccEmail": "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%",
32
- "ccEmail": "%%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%",
31
+ "bccEmail": [
32
+ "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%"
33
+ ],
34
+ "ccEmail": ["%%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%"],
33
35
  "created": {},
34
36
  "description": "my activity info text",
35
37
  "dynamicEmailSubject": "testExisting_ dynamic email subject %%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%",
@@ -28,8 +28,8 @@
28
28
  "triggeredSend": {
29
29
  "autoAddSubscribers": true,
30
30
  "autoUpdateSubscribers": true,
31
- "bccEmail": "%%= ContentBlockById(1295064) =%%",
32
- "ccEmail": "%%= ContentBlockById(1295064) =%%",
31
+ "bccEmail": ["%%= ContentBlockById(1295064) =%%"],
32
+ "ccEmail": ["%%= ContentBlockById(1295064) =%%"],
33
33
  "created": {},
34
34
  "description": "my activity info text",
35
35
  "dynamicEmailSubject": "testExisting_ dynamic email subject %%= ContentBlockById(1295064) =%%",
@@ -28,8 +28,8 @@
28
28
  "triggeredSend": {
29
29
  "autoAddSubscribers": true,
30
30
  "autoUpdateSubscribers": true,
31
- "bccEmail": "%%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%",
32
- "ccEmail": "%%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%",
31
+ "bccEmail": ["%%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%"],
32
+ "ccEmail": ["%%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%"],
33
33
  "created": {},
34
34
  "description": "my activity info text",
35
35
  "dynamicEmailSubject": "testExisting_ dynamic email subject %%= ContentBlockByKey(\"testExisting_asset_htmlblock\") =%%",
@@ -28,8 +28,12 @@
28
28
  "triggeredSend": {
29
29
  "autoAddSubscribers": true,
30
30
  "autoUpdateSubscribers": true,
31
- "bccEmail": "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%",
32
- "ccEmail": "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%",
31
+ "bccEmail": [
32
+ "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%"
33
+ ],
34
+ "ccEmail": [
35
+ "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%"
36
+ ],
33
37
  "created": {},
34
38
  "description": "my activity info text",
35
39
  "dynamicEmailSubject": "testExisting_ dynamic email subject %%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%",
@@ -28,8 +28,8 @@
28
28
  "triggeredSend": {
29
29
  "autoAddSubscribers": true,
30
30
  "autoUpdateSubscribers": true,
31
- "bccEmail": "",
32
- "ccEmail": "",
31
+ "bccEmail": [],
32
+ "ccEmail": [],
33
33
  "created": {},
34
34
  "domainExclusions": [],
35
35
  "dynamicEmailSubject": "test email",
@@ -25,8 +25,10 @@
25
25
  "triggeredSend": {
26
26
  "autoAddSubscribers": true,
27
27
  "autoUpdateSubscribers": true,
28
- "bccEmail": "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%",
29
- "ccEmail": "%%= ContentBlockByKey(\"{{{prefix}}}asset_htmlblock\") =%%",
28
+ "bccEmail": [
29
+ "%%= ContentBlockByName(\"Content Builder\\dont strip non ssjs content\") =%%"
30
+ ],
31
+ "ccEmail": ["%%= ContentBlockByKey(\"{{{prefix}}}asset_htmlblock\") =%%"],
30
32
  "created": {},
31
33
  "description": "my activity info text",
32
34
  "dynamicEmailSubject": "{{{prefix}}} dynamic email subject %%= ContentBlockByKey(\"{{{prefix}}}asset_htmlblock\") =%%",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testTemplated_triggeredSend",
9
8
  "Description": "Unsubscribe_Email",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testExisting_triggeredSend",
9
8
  "Description": "Unsubscribe_Email",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testExisting_triggeredSend_rcb",
9
8
  "Description": "Unsubscribe_Email",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testExisting_triggeredSend_rcb",
9
8
  "Description": "Unsubscribe_Email",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testExisting_triggeredSend_rcb",
9
8
  "Description": "Unsubscribe_Email",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testExisting_triggeredSend",
9
8
  "Description": "updated on deploy",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "testNew_triggeredSend",
9
8
  "Description": "created on deploy",
@@ -3,7 +3,6 @@
3
3
  "AutoAddSubscribers": false,
4
4
  "AutoUpdateSubscribers": false,
5
5
  "BatchInterval": 0,
6
- "BccEmail": "",
7
6
  "CreatedDate": "2018-06-25T05:58:00",
8
7
  "CustomerKey": "{{{prefix}}}triggeredSend",
9
8
  "Description": "Unsubscribe_Email",
@@ -63,7 +63,6 @@
63
63
  <AutoAddSubscribers>false</AutoAddSubscribers>
64
64
  <AutoUpdateSubscribers>false</AutoUpdateSubscribers>
65
65
  <BatchInterval>0</BatchInterval>
66
- <BccEmail />
67
66
  <EmailSubject>You are successfully unsubscribed</EmailSubject>
68
67
  <DynamicEmailSubject>You are successfully unsubscribed</DynamicEmailSubject>
69
68
  <IsMultipart>false</IsMultipart>
@@ -59,7 +59,6 @@
59
59
  <AutoAddSubscribers>false</AutoAddSubscribers>
60
60
  <AutoUpdateSubscribers>false</AutoUpdateSubscribers>
61
61
  <BatchInterval>0</BatchInterval>
62
- <BccEmail />
63
62
  <EmailSubject>You are successfully unsubscribed</EmailSubject>
64
63
  <DynamicEmailSubject>You are successfully unsubscribed</DynamicEmailSubject>
65
64
  <IsMultipart>false</IsMultipart>
@@ -106,7 +105,6 @@
106
105
  <AutoAddSubscribers>false</AutoAddSubscribers>
107
106
  <AutoUpdateSubscribers>false</AutoUpdateSubscribers>
108
107
  <BatchInterval>0</BatchInterval>
109
- <BccEmail />
110
108
  <EmailSubject>%%= ContentBlockById(1295064) =%%</EmailSubject>
111
109
  <DynamicEmailSubject>%%= ContentBlockById(1295064) =%%</DynamicEmailSubject>
112
110
  <IsMultipart>false</IsMultipart>
@@ -62,7 +62,6 @@
62
62
  <AutoAddSubscribers>false</AutoAddSubscribers>
63
63
  <AutoUpdateSubscribers>false</AutoUpdateSubscribers>
64
64
  <BatchInterval>0</BatchInterval>
65
- <BccEmail />
66
65
  <EmailSubject>You are successfully unsubscribed</EmailSubject>
67
66
  <DynamicEmailSubject>You are successfully unsubscribed</DynamicEmailSubject>
68
67
  <IsMultipart>false</IsMultipart>
@@ -133,7 +133,7 @@ describe('type: dataExtension', () => {
133
133
  );
134
134
  assert.equal(
135
135
  testUtils.getAPIHistoryLength(),
136
- 11,
136
+ 10,
137
137
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
138
138
  );
139
139
  return;
@@ -182,7 +182,7 @@ describe('type: dataExtension', () => {
182
182
  );
183
183
  assert.equal(
184
184
  testUtils.getAPIHistoryLength(),
185
- 8,
185
+ 7,
186
186
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
187
187
  );
188
188
  return;
@@ -233,7 +233,7 @@ describe('type: dataExtension', () => {
233
233
  );
234
234
  assert.equal(
235
235
  testUtils.getAPIHistoryLength(),
236
- 12,
236
+ 11,
237
237
  'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
238
238
  );
239
239
  return;
@@ -757,7 +757,7 @@ describe('type: journey', () => {
757
757
  // retrieve result
758
758
  assert.deepEqual(
759
759
  publish['testInstance/testBU']?.journey,
760
- ['id:0175b971-71a3-4d8e-98ac-48121f3fbf4f/1'],
760
+ ['testExisting_journey_Multistep'],
761
761
  'should have published the journey'
762
762
  );
763
763
 
@@ -799,7 +799,7 @@ describe('type: journey', () => {
799
799
  // retrieve result
800
800
  assert.deepEqual(
801
801
  publish['testInstance/testBU']?.journey,
802
- ['id:0175b971-71a3-4d8e-98ac-48121f3fbf4f/1'],
802
+ ['testExisting_journey_Multistep'],
803
803
  'should have published the journey'
804
804
  );
805
805
 
package/test/utils.js CHANGED
@@ -215,6 +215,7 @@ export function mockSetup(isDeploy) {
215
215
  skipInteraction: undefined,
216
216
  skipRetrieve: undefined,
217
217
  skipStatusCheck: undefined,
218
+ skipValidation: undefined,
218
219
  _runningTest: undefined,
219
220
  _welcomeMessageShown: undefined,
220
221
  });
package/types/mcdev.d.js CHANGED
@@ -560,4 +560,70 @@ complex
560
560
  * @property {boolean} isnamefield -
561
561
  * @property {SfObjectPicklist[]} [picklist] list of values
562
562
  */
563
+
564
+ /**
565
+ * @typedef {object} configurationArguments
566
+ * @property {string} applicationExtensionKey SalesforceObjectTriggerV2
567
+ * @property {string} version 3.0
568
+ * @property {'Created'|'Updated'|'CreatedUpdated'} salesforceTriggerCriteria what record event in SF triggers this
569
+ * @property {object} eventDataConfig what objects are used by this event
570
+ * @property {eventDataConfigObject[]} eventDataConfig.objects list of sf objects with the fields that are used
571
+ * @property {Conditions} primaryObjectFilterCriteria TODO
572
+ * @property {Conditions} relatedObjectFilterCriteria TODO
573
+ * @property {object} [additionalObjectFilterCriteria] seems to only exist on journey but not on event and also not on every journey
574
+ * @property {object} contactKey defines how this event links to the all contacts list
575
+ * @property {string} contactKey.relationshipIdName Id / the __c field
576
+ * @property {string} contactKey.relationshipName Common / the __r field
577
+ * @property {boolean} contactKey.isPolymorphic false
578
+ * @property {string} contactKey.referenceObjectName Common
579
+ * @property {string} [contactKey.fieldName] if relationshipIdName points to a __c field then this tends to be set to "Id"
580
+ * @property {object} passThroughArgument TODO
581
+ * @property {object} passThroughArgument.fields TODO
582
+ * @property {string} passThroughArgument.fields.ContactKey CampaignMember:Common:Id
583
+ * @property {object} passThroughArgument.fields.Email CampaignMember:Common:Email; not affected by changing which field is to be used for email in the journey
584
+ * @property {string} [passThroughArgument.fields.HasOptedOutOfEmail] Contact:HasOptedOutOfEmail
585
+ * @property {string} primaryObjectFilterSummary primaryObjectFilterCriteria in simplified string-form
586
+ * @property {string} relatedObjectFilterSummary relatedObjectFilterCriteria in simplified string-form
587
+ * @property {string[]} eventDataSummary eventDataConfig in simplified string-form
588
+ * @property {'Created;'|'Updated;'|'Created;Updated;'} evaluationCriteriaSummary salesforceTriggerCriteria plus semi-colon
589
+ * @property {'CampaignMember'|'Contact'} contactPersonType if objectAPIName==CampaignMember then this is also CampaignMember; otherwise it's Contact
590
+ * @property {string} objectAPIName the SF object on which the salesforceTriggerCriteria is listening on
591
+ * @property {string} whoToInject "objectAPIName (Contact / Lead / Contacts and Leads)"
592
+ * @property {string} criteria empty string for SF events
593
+ * @property {number} schemaVersionId set to 0 for SF events
594
+ */
595
+
596
+ /**
597
+ * @typedef {object} eventDataConfigObject part of configurationArguments
598
+ * @property {string} dePrefix CampaignMember:Campaign:
599
+ * @property {boolean} isPolymorphic ?
600
+ * @property {string} referenceObject field on parent object containing the id; ends on __c for custom fields; same as referenceObject for standard fields; can be "Contacts and Leads"
601
+ * @property {string} relationshipName field on parent object acting as lookup; ends on __r for custom fields; same as referenceObject for standard fields; can be "Common"
602
+ * @property {string} [relationshipIdName] ?
603
+ * @property {string[]} fields list of field names that are used by this journey
604
+ */
605
+ /**
606
+ * @typedef {object} Conditions part of configurationArguments
607
+ * @property {'AND'|'OR'} operand -
608
+ * @property {(Conditions | FieldCondition)[]} conditions list of conditions
609
+ */
610
+ /**
611
+ * @typedef {object} FieldCondition part of configurationArguments
612
+ * @property {number} _length is 0 for booleans, otherwise field length
613
+ * @property {'currency'|'string'|'int'|'picklist'|'textarea'|'boolean'|'date'|'datetime'|'email'} datatype type
614
+ * @property {string} fieldName field API name; "TR1__Email__c"
615
+ * @property {string} folderId "CampaignMember-CampaignMember"
616
+ * @property {string} id "CampaignMember-CampaignMember-TR1__Email__c"
617
+ * @property {boolean} isPolymorphic ?
618
+ * @property {string} name likely the field label; "Email"
619
+ * @property {'equals'|'EQUALS'|'WASSET'} operator condition comparator
620
+ * @property {string} [value] value to compare the field with if operator is sth like "equals"; booleans are stored as upper-camel-case string!
621
+ * @property {number} precision ?
622
+ * @property {string} referenceObjectName "Contacts and Leads"
623
+ * @property {string} relationshipIdName "CommonId"; can be an empty string
624
+ * @property {string} relationshipName "Common"; can be an empty string
625
+ * @property {number} scale ?
626
+ * @property {string} text seems to be equal to name-attribute?; "Email"
627
+ */
628
+
563
629
  export default {};