mcdev 4.3.4 → 5.0.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 (228) hide show
  1. package/.coverage-comment-template.md +20 -0
  2. package/.coverage-comment-template.svelte +178 -0
  3. package/.eslintrc.json +2 -0
  4. package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
  5. package/.github/workflows/code-test.yml +36 -0
  6. package/.github/workflows/coverage-base-update.yml +57 -0
  7. package/.github/workflows/coverage-develop-branch.yml +41 -0
  8. package/.github/workflows/coverage-main-branch.yml +41 -0
  9. package/.github/workflows/coverage.yml +77 -0
  10. package/.husky/post-checkout +1 -1
  11. package/.prettierrc +1 -1
  12. package/.vscode/extensions.json +0 -4
  13. package/README.md +1 -1
  14. package/boilerplate/config.json +1 -1
  15. package/boilerplate/files/.prettierrc +1 -1
  16. package/boilerplate/files/.vscode/extensions.json +1 -1
  17. package/boilerplate/forcedUpdates.json +4 -0
  18. package/docs/dist/documentation.md +1196 -430
  19. package/lib/Builder.js +6 -1
  20. package/lib/Deployer.js +30 -5
  21. package/lib/MetadataTypeDefinitions.js +8 -6
  22. package/lib/MetadataTypeInfo.js +8 -6
  23. package/lib/cli.js +54 -42
  24. package/lib/index.js +82 -8
  25. package/lib/metadataTypes/Asset.js +73 -1
  26. package/lib/metadataTypes/AttributeGroup.js +0 -1
  27. package/lib/metadataTypes/Automation.js +48 -5
  28. package/lib/metadataTypes/Campaign.js +20 -7
  29. package/lib/metadataTypes/ContentArea.js +1 -1
  30. package/lib/metadataTypes/DataExtension.js +221 -184
  31. package/lib/metadataTypes/DataExtensionField.js +12 -19
  32. package/lib/metadataTypes/DataExtensionTemplate.js +1 -1
  33. package/lib/metadataTypes/DataExtract.js +1 -1
  34. package/lib/metadataTypes/DataExtractType.js +1 -1
  35. package/lib/metadataTypes/Email.js +1 -1
  36. package/lib/metadataTypes/{EmailSendDefinition.js → EmailSend.js} +5 -5
  37. package/lib/metadataTypes/{EventDefinition.js → Event.js} +17 -35
  38. package/lib/metadataTypes/{FtpLocation.js → FileLocation.js} +2 -2
  39. package/lib/metadataTypes/FileTransfer.js +8 -7
  40. package/lib/metadataTypes/Filter.js +1 -1
  41. package/lib/metadataTypes/Folder.js +8 -3
  42. package/lib/metadataTypes/ImportFile.js +6 -6
  43. package/lib/metadataTypes/{Interaction.js → Journey.js} +311 -147
  44. package/lib/metadataTypes/List.js +2 -2
  45. package/lib/metadataTypes/MetadataType.js +318 -90
  46. package/lib/metadataTypes/MobileCode.js +0 -1
  47. package/lib/metadataTypes/MobileKeyword.js +336 -40
  48. package/lib/metadataTypes/MobileMessage.js +473 -0
  49. package/lib/metadataTypes/Query.js +114 -32
  50. package/lib/metadataTypes/Role.js +60 -21
  51. package/lib/metadataTypes/Script.js +2 -3
  52. package/lib/metadataTypes/SendClassification.js +40 -0
  53. package/lib/metadataTypes/SetDefinition.js +1 -7
  54. package/lib/metadataTypes/TransactionalEmail.js +2 -3
  55. package/lib/metadataTypes/TransactionalMessage.js +1 -2
  56. package/lib/metadataTypes/TransactionalSMS.js +8 -15
  57. package/lib/metadataTypes/{TriggeredSendDefinition.js → TriggeredSend.js} +35 -27
  58. package/lib/metadataTypes/User.js +1185 -0
  59. package/lib/metadataTypes/definitions/Asset.definition.js +1 -0
  60. package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
  61. package/lib/metadataTypes/definitions/Automation.definition.js +3 -2
  62. package/lib/metadataTypes/definitions/Campaign.definition.js +79 -4
  63. package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
  64. package/lib/metadataTypes/definitions/DataExtension.definition.js +2 -1
  65. package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -0
  66. package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -0
  67. package/lib/metadataTypes/definitions/DataExtract.definition.js +1 -0
  68. package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -0
  69. package/lib/metadataTypes/definitions/Discovery.definition.js +1 -0
  70. package/lib/metadataTypes/definitions/Email.definition.js +1 -0
  71. package/lib/metadataTypes/definitions/{EmailSendDefinition.definition.js → EmailSend.definition.js} +4 -2
  72. package/lib/metadataTypes/definitions/{EventDefinition.definition.js → Event.definition.js} +2 -1
  73. package/lib/metadataTypes/definitions/{FtpLocation.definition.js → FileLocation.definition.js} +4 -3
  74. package/lib/metadataTypes/definitions/FileTransfer.definition.js +3 -2
  75. package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
  76. package/lib/metadataTypes/definitions/Folder.definition.js +2 -0
  77. package/lib/metadataTypes/definitions/ImportFile.definition.js +4 -3
  78. package/lib/metadataTypes/definitions/{Interaction.definition.js → Journey.definition.js} +11 -2
  79. package/lib/metadataTypes/definitions/List.definition.js +1 -0
  80. package/lib/metadataTypes/definitions/MobileCode.definition.js +3 -1
  81. package/lib/metadataTypes/definitions/MobileKeyword.definition.js +27 -17
  82. package/lib/metadataTypes/definitions/MobileMessage.definition.js +743 -0
  83. package/lib/metadataTypes/definitions/Query.definition.js +3 -2
  84. package/lib/metadataTypes/definitions/Role.definition.js +5 -0
  85. package/lib/metadataTypes/definitions/Script.definition.js +1 -0
  86. package/lib/metadataTypes/definitions/SendClassification.definition.js +114 -0
  87. package/lib/metadataTypes/definitions/SetDefinition.definition.js +1 -0
  88. package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -1
  89. package/lib/metadataTypes/definitions/TransactionalPush.definition.js +1 -0
  90. package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +1 -0
  91. package/lib/metadataTypes/definitions/{TriggeredSendDefinition.definition.js → TriggeredSend.definition.js} +5 -3
  92. package/lib/metadataTypes/definitions/User.definition.js +365 -0
  93. package/lib/retrieveChangelog.js +1 -2
  94. package/lib/util/auth.js +38 -9
  95. package/lib/util/businessUnit.js +3 -3
  96. package/lib/util/cli.js +55 -7
  97. package/lib/util/devops.js +6 -4
  98. package/lib/util/file.js +55 -13
  99. package/lib/util/init.config.js +1 -2
  100. package/lib/util/init.npm.js +3 -3
  101. package/lib/util/util.js +23 -14
  102. package/package.json +16 -15
  103. package/test/general.test.js +62 -0
  104. package/test/mockRoot/.mcdevrc.json +7 -5
  105. package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testBlocked_user.user-meta.json +23 -0
  106. package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testExisting_user.user-meta.json +31 -0
  107. package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testNew_user.user-meta.json +27 -0
  108. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{childBU_dataextension_test.dataExtension-meta.json → testExisting_dataExtension.dataExtension-meta.json} +2 -2
  109. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{testDataExtension.dataExtension-meta.json → testNew_dataExtension.dataExtension-meta.json} +2 -2
  110. package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_interaction.interaction-meta.json +576 -0
  111. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.amp +2 -0
  112. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.json +10 -0
  113. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.amp +2 -0
  114. package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.json +10 -0
  115. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.amp +1 -0
  116. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json +61 -0
  117. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.amp +1 -0
  118. package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.json +60 -0
  119. package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.json +1 -1
  120. package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.json +1 -1
  121. package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.sql +1 -1
  122. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +1 -1
  123. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -1
  124. package/test/resourceFactory.js +13 -0
  125. package/test/resources/1111111/accountUser/configure-response.xml +70 -0
  126. package/test/resources/1111111/accountUser/create-response.xml +97 -0
  127. package/test/resources/1111111/accountUser/retrieve-response.xml +156 -0
  128. package/test/resources/1111111/accountUser/update-response.xml +111 -0
  129. package/test/resources/1111111/accountUserAccount/retrieve-response.xml +77 -0
  130. package/test/resources/1111111/platform/v1/setup/quickflow/data/get-response.json +455 -0
  131. package/test/resources/1111111/role/retrieve-response.xml +76 -0
  132. package/test/resources/1111111/user/build-expected.json +16 -0
  133. package/test/resources/1111111/user/create-expected.json +21 -0
  134. package/test/resources/1111111/user/retrieve-expected.json +24 -0
  135. package/test/resources/1111111/user/template-expected.json +16 -0
  136. package/test/resources/1111111/user/update-expected.json +21 -0
  137. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/delete-response.json +1 -0
  138. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +17 -0
  139. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +3 -3
  140. package/test/resources/9999999/automation/v1/queries/get-response.json +21 -4
  141. package/test/resources/9999999/automation/v1/queries/post-response.json +4 -4
  142. package/test/resources/9999999/data/v1/customobjectdata/key/{childBU_dataextension_test → testExisting_dataExtension}/rowset/get-response.json +1 -1
  143. package/test/resources/9999999/dataExtension/build-expected.json +3 -3
  144. package/test/resources/9999999/dataExtension/create-expected.json +2 -2
  145. package/test/resources/9999999/dataExtension/create-response.xml +8 -3
  146. package/test/resources/9999999/dataExtension/retrieve-expected.json +3 -3
  147. package/test/resources/9999999/dataExtension/retrieve-response.xml +9 -4
  148. package/test/resources/9999999/dataExtension/template-expected.json +3 -3
  149. package/test/resources/9999999/dataExtension/update-expected.json +3 -3
  150. package/test/resources/9999999/dataExtension/update-response.xml +9 -4
  151. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +14 -9
  152. package/test/resources/9999999/interaction/v1/interactions/get-response.json +312 -0
  153. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +312 -0
  154. package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/put-response.json +592 -0
  155. package/test/resources/9999999/journey/build-expected.json +572 -0
  156. package/test/resources/9999999/journey/get-expected.json +576 -0
  157. package/test/resources/9999999/journey/put-expected.json +576 -0
  158. package/test/resources/9999999/journey/template-expected.json +572 -0
  159. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/NXV4ZFMwTEFwRVczd3RaLUF5X3p5dzo4Njow/get-response.json +42 -0
  160. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/cTVJaG5oSDJPVUNHcUh6Z3pQT2tVdzo4Njow/delete-response.json +0 -0
  161. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/get-response.json +1 -0
  162. package/test/resources/9999999/legacy/v1/beta/mobile/keyword/post-response.json +3 -0
  163. package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/delete-response.json +0 -0
  164. package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/get-response.json +106 -0
  165. package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/post-response.json +0 -0
  166. package/test/resources/9999999/legacy/v1/beta/mobile/message/NTQ3Ojc4OjA/get-response.json +127 -0
  167. package/test/resources/9999999/legacy/v1/beta/mobile/message/get-response.json +129 -0
  168. package/test/resources/9999999/legacy/v1/beta/mobile/message/post-response.json +3 -0
  169. package/test/resources/9999999/legacy/v1/beta2/data/campaign/get-response.json +29 -0
  170. package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
  171. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +1 -1
  172. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +1 -1
  173. package/test/resources/9999999/mobileKeyword/build-expected.amp +2 -0
  174. package/test/resources/9999999/mobileKeyword/build-expected.json +9 -0
  175. package/test/resources/9999999/mobileKeyword/get-expected.amp +2 -0
  176. package/test/resources/9999999/mobileKeyword/get-expected.json +15 -0
  177. package/test/resources/9999999/mobileKeyword/post-create-expected.amp +2 -0
  178. package/test/resources/9999999/mobileKeyword/post-create-expected.json +17 -0
  179. package/test/resources/9999999/mobileKeyword/template-expected.amp +2 -0
  180. package/test/resources/9999999/mobileKeyword/template-expected.json +9 -0
  181. package/test/resources/9999999/mobileMessage/build-expected.amp +1 -0
  182. package/test/resources/9999999/mobileMessage/build-expected.json +60 -0
  183. package/test/resources/9999999/mobileMessage/get-expected.amp +1 -0
  184. package/test/resources/9999999/mobileMessage/get-expected.json +61 -0
  185. package/test/resources/9999999/mobileMessage/post-create-expected.amp +1 -0
  186. package/test/resources/9999999/mobileMessage/post-create-expected.json +63 -0
  187. package/test/resources/9999999/mobileMessage/post-update-expected.amp +1 -0
  188. package/test/resources/9999999/mobileMessage/post-update-expected.json +61 -0
  189. package/test/resources/9999999/mobileMessage/template-expected.amp +1 -0
  190. package/test/resources/9999999/mobileMessage/template-expected.json +60 -0
  191. package/test/resources/9999999/query/build-expected.json +1 -1
  192. package/test/resources/9999999/query/get-expected.json +1 -1
  193. package/test/resources/9999999/query/get2-expected.json +11 -0
  194. package/test/resources/9999999/query/patch-expected.json +1 -1
  195. package/test/resources/9999999/query/post-expected.json +1 -1
  196. package/test/resources/9999999/query/template-expected.json +1 -1
  197. package/test/resources/9999999/queryDefinition/retrieve-response.xml +30 -0
  198. package/test/resources/9999999/transactionalEmail/build-expected.json +5 -5
  199. package/test/resources/9999999/transactionalEmail/get-expected.json +1 -1
  200. package/test/resources/9999999/transactionalEmail/patch-expected.json +1 -1
  201. package/test/resources/9999999/transactionalEmail/post-expected.json +1 -1
  202. package/test/resources/9999999/transactionalEmail/template-expected.json +5 -5
  203. package/test/resources/9999999/transactionalPush/build-expected.json +2 -2
  204. package/test/resources/9999999/transactionalPush/template-expected.json +2 -2
  205. package/test/resources/9999999/transactionalSMS/build-expected.json +3 -3
  206. package/test/resources/9999999/transactionalSMS/template-expected.json +3 -3
  207. package/test/{dataExtension.test.js → type.dataExtension.test.js} +78 -21
  208. package/test/{interaction.test.js → type.journey.test.js} +64 -30
  209. package/test/type.mobileKeyword.test.js +250 -0
  210. package/test/type.mobileMessage.test.js +205 -0
  211. package/test/{query.test.js → type.query.test.js} +102 -5
  212. package/test/{transactionalEmail.test.js → type.transactionalEmail.test.js} +40 -2
  213. package/test/{transactionalPush.test.js → type.transactionalPush.test.js} +41 -2
  214. package/test/{transactionalSMS.test.js → type.transactionalSMS.test.js} +73 -3
  215. package/test/type.user.test.js +160 -0
  216. package/test/utils.js +17 -5
  217. package/types/mcdev.d.js +48 -15
  218. package/.github/workflows/code-analysis.yml +0 -57
  219. package/lib/metadataTypes/AccountUser.js +0 -426
  220. package/lib/metadataTypes/definitions/AccountUser.definition.js +0 -227
  221. package/test/mockRoot/deploy/testInstance/testBU/interaction/testExisting_interaction.interaction-meta.json +0 -266
  222. package/test/resources/9999999/interaction/build-expected.json +0 -260
  223. package/test/resources/9999999/interaction/get-expected.json +0 -264
  224. package/test/resources/9999999/interaction/put-expected.json +0 -264
  225. package/test/resources/9999999/interaction/template-expected.json +0 -260
  226. package/test/resources/9999999/interaction/v1/interactions/put-response.json +0 -280
  227. /package/test/mockRoot/deploy/testInstance/testBU/{interaction → journey}/testNew_interaction.interaction-meta.json +0 -0
  228. /package/test/resources/9999999/{interaction → journey}/post-expected.json +0 -0
@@ -0,0 +1,20 @@
1
+ ## Coverage Report
2
+
3
+ Commit: [{{short_commit_sha}}]({{commit_link}})
4
+ Base: [{{base_ref}}@{{base_short_commit_sha}}]({{base_commit_link}})
5
+
6
+ | Type | Base | This PR |
7
+ | ------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------- |
8
+ | Total Statements Coverage | {{base_total_statements_coverage_percent}} | {{total_statements_coverage_percent}} ({{total_statements_coverage_percent_diff}}) |
9
+ | Total Branches Coverage | {{base_total_branches_coverage_percent}} | {{total_branches_coverage_percent}} ({{total_branches_coverage_percent_diff}}) |
10
+ | Total Functions Coverage | {{base_total_functions_coverage_percent}} | {{total_functions_coverage_percent}} ({{total_functions_coverage_percent_diff}}) |
11
+ | Total Lines Coverage | {{base_total_lines_coverage_percent}} | {{total_lines_coverage_percent}} ({{total_lines_coverage_percent_diff}}) |
12
+
13
+ <details>
14
+ <summary>Details (changed files)</summary>
15
+ {{changed_files_coverage_table}}
16
+ </details>
17
+ <details>
18
+ <summary>Details (all files)</summary>
19
+ {{files_coverage_table}}
20
+ </details>
@@ -0,0 +1,178 @@
1
+ <script>
2
+ export let total_statements_coverage_percent_raw;
3
+ export let total_branches_coverage_percent_raw;
4
+ export let total_functions_coverage_percent_raw;
5
+ export let total_lines_coverage_percent_raw;
6
+
7
+ export let base_total_statements_coverage_percent_raw;
8
+ export let base_total_branches_coverage_percent_raw;
9
+ export let base_total_functions_coverage_percent_raw;
10
+ export let base_total_lines_coverage_percent_raw;
11
+
12
+ export let commit_sha;
13
+ export let short_commit_sha;
14
+ export let commit_link;
15
+
16
+ export let base_commit_sha;
17
+ export let base_short_commit_sha;
18
+ export let base_commit_link;
19
+ export let base_ref;
20
+
21
+ export let changed_files_coverage_data;
22
+
23
+ const has_base_data = base_total_branches_coverage_percent_raw !== '?';
24
+ const summary_list = [
25
+ {
26
+ type: 'Total Statements Coverage',
27
+ percent: {
28
+ total: total_statements_coverage_percent_raw,
29
+ base: has_base_data ? base_total_statements_coverage_percent_raw: null,
30
+ diff: has_base_data ? (total_statements_coverage_percent_raw - base_total_statements_coverage_percent_raw) : null,
31
+ }
32
+ },
33
+ {
34
+ type: 'Total Branches Coverage',
35
+ percent: {
36
+ total: total_branches_coverage_percent_raw,
37
+ base: has_base_data ? base_total_branches_coverage_percent_raw: null,
38
+ diff: has_base_data ? (total_branches_coverage_percent_raw - base_total_branches_coverage_percent_raw) : null,
39
+ }
40
+ },
41
+ {
42
+ type: 'Total Functions Coverage',
43
+ percent: {
44
+ total: total_functions_coverage_percent_raw,
45
+ base: has_base_data ? base_total_functions_coverage_percent_raw: null,
46
+ diff: has_base_data ? (total_functions_coverage_percent_raw - base_total_functions_coverage_percent_raw) : null,
47
+ }
48
+ },
49
+ {
50
+ type: 'Total Lines Coverage',
51
+ percent: {
52
+ total: total_lines_coverage_percent_raw,
53
+ base: has_base_data ? base_total_lines_coverage_percent_raw: null,
54
+ diff: has_base_data ? (total_lines_coverage_percent_raw - base_total_lines_coverage_percent_raw) : null,
55
+ }
56
+ }];
57
+
58
+ const LETTER_LABEL = {
59
+ S: 'Statements',
60
+ B: 'Branches',
61
+ F: 'Functions',
62
+ L: 'Lines',
63
+ };
64
+
65
+ const COVERAGE_LEVEL_IMAGE = {
66
+ low: 'https://user-images.githubusercontent.com/11299391/159445221-fe3dc085-8c56-4e03-9642-219784c88fe7.svg',
67
+ medium:
68
+ 'https://user-images.githubusercontent.com/11299391/159445212-f135c6d7-f354-4e8c-9a9f-28bb3ff1b7b5.svg',
69
+ high: 'https://user-images.githubusercontent.com/11299391/159445220-d88b3624-0814-4664-80c8-09f0f2b8e68b.svg',
70
+ };
71
+
72
+ function formatPercentDiff(percent) {
73
+ if (!Number.isFinite(percent)) {
74
+ return '';
75
+ }
76
+
77
+ const roundedPercent = `${Number(percent.toFixed(2))}%`;
78
+
79
+ if (percent >= 0) {
80
+ return '+' + roundedPercent;
81
+ }
82
+
83
+ return roundedPercent;
84
+ }
85
+
86
+ function getCoverageLevelImage(percent) {
87
+ // https://github.com/istanbuljs/istanbuljs/blob/c1559005b3bb318da01f505740adb0e782aaf14e/packages/istanbul-lib-report/lib/watermarks.js
88
+ if (percent >= 80) {
89
+ return COVERAGE_LEVEL_IMAGE.high;
90
+ } else if (percent >= 50) {
91
+ return COVERAGE_LEVEL_IMAGE.medium;
92
+ } else {
93
+ return COVERAGE_LEVEL_IMAGE.low;
94
+ }
95
+ }
96
+
97
+ function getFilePrefix() {
98
+ return `../blob/${commit_sha}/`;
99
+ }
100
+ </script>
101
+
102
+ <h2>Coverage Report</h2>
103
+
104
+ Commit: <a href="{commit_link}">{short_commit_sha}</a><br>
105
+ Base: <a href="{base_commit_link}">{base_ref}@{base_short_commit_sha}</a><br><br>
106
+
107
+ <table>
108
+ <thead>
109
+ <th>Type</th>
110
+ {#if has_base_data}
111
+ <th>Base</th>
112
+ {/if}
113
+ <th>This PR</th>
114
+ </thead>
115
+ <tbody>
116
+ {#each summary_list as {type, percent}}
117
+ <tr>
118
+ <td>{type}</td>
119
+ {#if has_base_data}
120
+ <td>
121
+ {#if Number.isFinite(percent.base)}
122
+ <img src="{getCoverageLevelImage(percent.base)}" alt="">&nbsp;{percent.base}%
123
+ {:else}
124
+ -
125
+ {/if}
126
+ </td>
127
+ {/if}
128
+ <td>
129
+ {#if Number.isFinite(percent.total)}
130
+ <img src="{getCoverageLevelImage(percent.total)}" alt="">&nbsp;{percent.total}%
131
+ {#if has_base_data}
132
+ &nbsp;({formatPercentDiff(percent.diff)})
133
+ {/if}
134
+ {:else}
135
+ -
136
+ {/if}
137
+ </td>
138
+ </tr>
139
+ {/each}
140
+ </tbody>
141
+ </table>
142
+
143
+ <details>
144
+ <summary>Details (changed testable files):</summary><br>
145
+ <table>
146
+ <thead>
147
+ <th>File</th>
148
+ <th>Statements</th>
149
+ <th>Branches</th>
150
+ <th>Functions</th>
151
+ <th>Lines</th>
152
+ </thead>
153
+ <tbody>
154
+ {#each changed_files_coverage_data as [file, data]}
155
+ {@const percents = [
156
+ data.statements.pct,
157
+ data.branches.pct,
158
+ data.functions.pct,
159
+ data.lines.pct
160
+ ]}
161
+ <tr>
162
+ <td>
163
+ <a href="{getFilePrefix()}{file}">{file}</a>
164
+ </td>
165
+ {#each percents as percent}
166
+ <td>
167
+ {#if Number.isFinite(percent)}
168
+ <img src="{getCoverageLevelImage(percent)}" alt="">&nbsp;{percent}%
169
+ {:else}
170
+ -
171
+ {/if}
172
+ </td>
173
+ {/each}
174
+ </tr>
175
+ {/each}
176
+ </tbody>
177
+ </table>
178
+ </details>
package/.eslintrc.json CHANGED
@@ -42,6 +42,7 @@
42
42
  }
43
43
  },
44
44
  "rules": {
45
+ "logical-assignment-operators": ["error", "always"],
45
46
  "unicorn/better-regex": "off",
46
47
  "unicorn/catch-error-name": [
47
48
  "error",
@@ -65,6 +66,7 @@
65
66
  "unicorn/prefer-array-some": "off",
66
67
  "unicorn/prefer-set-has": "off",
67
68
  "unicorn/prefer-spread": "off",
69
+ "unicorn/prefer-string-replace-all": "error",
68
70
  "unicorn/unicorn/no-lonely-if": "off",
69
71
  "arrow-body-style": ["error", "as-needed"],
70
72
  "curly": "error",
@@ -39,6 +39,8 @@ body:
39
39
  label: Version
40
40
  description: What version of our software are you running? (mcdev --version)
41
41
  options:
42
+ - 5.0.1
43
+ - 5.0.0
42
44
  - 4.3.4
43
45
  - 4.3.3
44
46
  - 4.3.2
@@ -0,0 +1,36 @@
1
+ # Custom tests for mcdev
2
+ #
3
+ name: 'Code Testing'
4
+
5
+ on:
6
+ push:
7
+ branches: [main, develop, hotfix]
8
+ pull_request:
9
+ # The branches below must be a subset of the branches above
10
+ branches: [main, develop, hotfix]
11
+
12
+ jobs:
13
+ testAndCoverage:
14
+ name: lint & test
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ actions: read
18
+ contents: read
19
+ security-events: write
20
+
21
+ steps:
22
+ - name: Checkout repository
23
+ uses: actions/checkout@v3
24
+
25
+ - uses: actions/setup-node@v3
26
+ with:
27
+ node-version: 16
28
+ registry-url: https://registry.npmjs.org/
29
+
30
+ - run: npm ci --ignore-scripts
31
+
32
+ - run: npm run lint
33
+
34
+ # Assuming code passes, run tests
35
+ - name: Run mcdev-tests
36
+ run: npm run test
@@ -0,0 +1,57 @@
1
+ name: Update coverage comment
2
+ on:
3
+ pull_request:
4
+ types: [edited]
5
+
6
+ jobs:
7
+ hello_world_job:
8
+ runs-on: ubuntu-latest
9
+ name: Test and report
10
+ steps:
11
+ - name: Checkout
12
+ uses: actions/checkout@v3
13
+ with:
14
+ ref: ${{ github.event.pull_request.head.sha }}
15
+ fetch-depth: 1000
16
+
17
+ - name: Prepare for Report Coverage (without nyc run)
18
+ run: |
19
+ npm i svelte-to-html@1.0.9
20
+ git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
21
+
22
+ - name: Download artifact for base branch
23
+ uses: dawidd6/action-download-artifact@v2
24
+ continue-on-error: true
25
+ with:
26
+ workflow: ${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}
27
+ workflow_conclusion: success
28
+ commit: ${{github.event.pull_request.base.sha}}
29
+ name: 'test-coverage-output'
30
+ path: base-artifacts
31
+ search_artifacts: true
32
+
33
+ - name: Download artifact for to be merged branch
34
+ uses: dawidd6/action-download-artifact@v2
35
+ continue-on-error: true
36
+ with:
37
+ workflow: 'coverage.yml'
38
+ workflow_conclusion: success
39
+ commit: ${{github.event.pull_request.head.sha}}
40
+ name: 'test-coverage-output'
41
+ path: artifacts
42
+ search_artifacts: true
43
+
44
+ - name: Check file existence
45
+ id: check_files
46
+ uses: andstor/file-existence-action@v2
47
+ with:
48
+ files: 'base-artifacts/coverage-summary.json, artifacts/coverage-summary.json'
49
+
50
+ - name: Update Coverage comment
51
+ uses: sidx1024/report-nyc-coverage-github-action@v1.2.6
52
+ if: steps.check_files.outputs.files_exists == 'true'
53
+ # Only runs if all of the files exists
54
+ with:
55
+ coverage_file: 'artifacts/coverage-summary.json'
56
+ base_coverage_file: 'base-artifacts/coverage-summary.json'
57
+ comment_template_file: '.coverage-comment-template.svelte'
@@ -0,0 +1,41 @@
1
+ name: Test coverage for develop branch
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - develop
7
+
8
+ jobs:
9
+ hello_world_job:
10
+ runs-on: ubuntu-latest
11
+ name: Test and report
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v3
15
+ with:
16
+ ref: ${{ github.event.pull_request.head.sha }}
17
+ fetch-depth: 1000
18
+
19
+ - name: Fetch base
20
+ run: git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
21
+
22
+ - uses: actions/setup-node@v3
23
+ with:
24
+ node-version: 16
25
+
26
+ - run: npm ci --ignore-scripts
27
+
28
+ - run: npm run lint
29
+
30
+ - name: Run mcdev-tests with coverage
31
+ run: npm run coverage
32
+
33
+ - name: Prepare for Report Coverage (mini)
34
+ run: |
35
+ npx nyc report --reporter json-summary --exclude-after-remap false
36
+
37
+ - name: Upload coverage artifact
38
+ uses: actions/upload-artifact@v3
39
+ with:
40
+ name: test-coverage-output
41
+ path: coverage
@@ -0,0 +1,41 @@
1
+ name: Test coverage for main branch
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ hello_world_job:
10
+ runs-on: ubuntu-latest
11
+ name: Test and report
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v3
15
+ with:
16
+ ref: ${{ github.event.pull_request.head.sha }}
17
+ fetch-depth: 1000
18
+
19
+ - name: Fetch base
20
+ run: git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
21
+
22
+ - uses: actions/setup-node@v3
23
+ with:
24
+ node-version: 16
25
+
26
+ - run: npm ci --ignore-scripts
27
+
28
+ - run: npm run lint
29
+
30
+ - name: Run mcdev-tests with coverage
31
+ run: npm run coverage
32
+
33
+ - name: Prepare for Report Coverage (mini)
34
+ run: |
35
+ npx nyc report --reporter json-summary --exclude-after-remap false
36
+
37
+ - name: Upload coverage artifact
38
+ uses: actions/upload-artifact@v3
39
+ with:
40
+ name: test-coverage-output
41
+ path: coverage
@@ -0,0 +1,77 @@
1
+ on: [pull_request]
2
+
3
+ name: Test coverage report
4
+ jobs:
5
+ hello_world_job:
6
+ runs-on: ubuntu-latest
7
+ name: Test and report
8
+ steps:
9
+ - name: Checkout
10
+ uses: actions/checkout@v3
11
+ with:
12
+ ref: ${{ github.event.pull_request.head.sha }}
13
+ fetch-depth: 1000
14
+
15
+ - uses: actions/setup-node@v3
16
+ with:
17
+ node-version: 16
18
+
19
+ - run: npm ci --ignore-scripts
20
+
21
+ - run: npm run lint
22
+
23
+ - name: Run mcdev-tests with coverage
24
+ run: npm run coverage
25
+
26
+ - name: Prepare for Report Coverage
27
+ run: |
28
+ npx nyc report --reporter json-summary --exclude-after-remap false
29
+ npm i svelte-to-html@1.0.9
30
+ git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
31
+
32
+ - name: Upload coverage artifact
33
+ uses: actions/upload-artifact@v3
34
+ with:
35
+ name: test-coverage-output
36
+ path: coverage
37
+
38
+ - name: Download coverage artifact
39
+ uses: actions/download-artifact@v3
40
+ with:
41
+ path: artifacts
42
+
43
+ - name: Get Run ID
44
+ id: get_run_id
45
+ run: |
46
+ echo "name=run_id::$(\
47
+ gh run list \
48
+ --workflow "${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}" \
49
+ --json conclusion,headSha,status,databaseId \
50
+ --jq ".[] | select( .conclusion == \"success\" and .headSha == \"${{github.event.pull_request.base.sha}}\") | .databaseId" \
51
+ )" >> $GITHUB_OUTPUT
52
+ env:
53
+ GITHUB_TOKEN: ${{ github.token }}
54
+
55
+ - name: Download artifact for base branch if available, previous
56
+ uses: dawidd6/action-download-artifact@v2
57
+ continue-on-error: true
58
+ with:
59
+ workflow: ${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}
60
+ run_id: ${{steps.get_run_id.outputs.run_id}}
61
+ name: 'test-coverage-output'
62
+ path: base-artifacts
63
+ search_artifacts: true
64
+
65
+ - name: Check file existence
66
+ id: check_files
67
+ uses: andstor/file-existence-action@v2
68
+ with:
69
+ files: 'base-artifacts/coverage-summary.json'
70
+
71
+ - name: Report coverage
72
+ uses: sidx1024/report-nyc-coverage-github-action@v1.2.6
73
+ id: report
74
+ with:
75
+ coverage_file: 'artifacts/test-coverage-output/coverage-summary.json'
76
+ base_coverage_file: ${{steps.check_files.outputs.files_exists == 'true' && 'base-artifacts/coverage-summary.json' || ''}}
77
+ comment_template_file: '.coverage-comment-template.svelte'
@@ -1,5 +1,5 @@
1
1
  #!/bin/sh
2
2
  git config commit.template .git/templatemessage
3
- TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '(?<=[feature|bugfix|task]\/)\d{2,5}'`
3
+ TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '((feature|bug|bugfix|fix|hotfix|task|chore)\/)\K\d{1,7}'`
4
4
  echo "[POST_CHECKOUT] Setting template commit to $TICKETID"
5
5
  echo "#$TICKETID: " > ".git/templatemessage"
package/.prettierrc CHANGED
@@ -27,7 +27,7 @@
27
27
  "options": {
28
28
  "formatter": "sql-formatter",
29
29
  "language": "tsql",
30
- "uppercase": true
30
+ "keywordCase": "upper"
31
31
  }
32
32
  }
33
33
  ]
@@ -5,7 +5,6 @@
5
5
  // List of extensions which should be recommended for users of this workspace.
6
6
  "recommendations": [
7
7
  // collaboration
8
- "gruntfuggly.todo-tree",
9
8
  "aaron-bond.better-comments",
10
9
  "github.vscode-pull-request-github",
11
10
 
@@ -15,11 +14,8 @@
15
14
  // Formatting & colors
16
15
  "editorconfig.editorconfig",
17
16
  "esbenp.prettier-vscode",
18
- "sergey-agadzhanov.ampscript",
19
17
 
20
18
  // Markdown / Readme.md
21
- "yzhang.markdown-all-in-one",
22
- "davidanson.vscode-markdownlint",
23
19
  "joernberkefeld.markdown-preview-bitbucket-innersource"
24
20
  ]
25
21
  }
package/README.md CHANGED
@@ -47,7 +47,7 @@ Find info on the latest releases with a detailed changelog in the [GitHub Releas
47
47
 
48
48
  If you want to enhance Accenture SFMC DevTools you are welcome to fork the repo and create a pull request. Please understand that we will have to conduct a code review before accepting your changes.
49
49
 
50
- More details on how to best do that are described in our [wiki](https://github.com/Accenture/sfmc-devtools/wiki/9.-Contribute).
50
+ More details on how to best do that are described in our [wiki](https://github.com/Accenture/sfmc-devtools/wiki/10.-Contribute).
51
51
 
52
52
  ## Main Contacts
53
53
 
@@ -69,7 +69,7 @@
69
69
  }
70
70
  },
71
71
  "metaDataTypes": {
72
- "documentOnRetrieve": ["accountUser", "automation", "dataExtension", "role"],
72
+ "documentOnRetrieve": ["user", "automation", "dataExtension", "role"],
73
73
  "retrieve": []
74
74
  }
75
75
  }
@@ -17,7 +17,7 @@
17
17
  "options": {
18
18
  "formatter": "sql-formatter",
19
19
  "language": "tsql",
20
- "uppercase": true
20
+ "keywordCase": "upper"
21
21
  }
22
22
  }
23
23
  ]
@@ -14,7 +14,7 @@
14
14
  // Formatting & colors
15
15
  "editorconfig.editorconfig",
16
16
  "esbenp.prettier-vscode",
17
- "sergey-agadzhanov.ampscript",
17
+ "xnerd.ampscript-language",
18
18
  "FiB.beautyAmp",
19
19
 
20
20
  // Markdown / Readme.md
@@ -1,4 +1,8 @@
1
1
  [
2
+ {
3
+ "version": "5.0.0",
4
+ "files": [".vscode/settings.json", ".prettierrc"]
5
+ },
2
6
  {
3
7
  "version": "4.3.4",
4
8
  "files": [".vscode/settings.json"]