mcdev 7.0.3 → 7.0.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 (185) hide show
  1. package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
  2. package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +1 -0
  3. package/.github/workflows/code-test.yml +48 -0
  4. package/.husky/pre-commit +1 -1
  5. package/@types/lib/Builder.d.ts +13 -13
  6. package/@types/lib/Builder.d.ts.map +1 -1
  7. package/@types/lib/Deployer.d.ts +16 -16
  8. package/@types/lib/Deployer.d.ts.map +1 -1
  9. package/@types/lib/Retriever.d.ts +15 -15
  10. package/@types/lib/Retriever.d.ts.map +1 -1
  11. package/@types/lib/cli.d.ts +1 -1
  12. package/@types/lib/cli.d.ts.map +1 -1
  13. package/@types/lib/index.d.ts +34 -34
  14. package/@types/lib/index.d.ts.map +1 -1
  15. package/@types/lib/metadataTypes/Asset.d.ts +18 -43
  16. package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
  17. package/@types/lib/metadataTypes/AttributeGroup.d.ts +3 -8
  18. package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -1
  19. package/@types/lib/metadataTypes/AttributeSet.d.ts +5 -21
  20. package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
  21. package/@types/lib/metadataTypes/Automation.d.ts +36 -49
  22. package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
  23. package/@types/lib/metadataTypes/Campaign.d.ts +11 -18
  24. package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -1
  25. package/@types/lib/metadataTypes/ContentArea.d.ts +12 -31
  26. package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -1
  27. package/@types/lib/metadataTypes/DataExtension.d.ts +23 -31
  28. package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
  29. package/@types/lib/metadataTypes/DataExtensionField.d.ts +12 -18
  30. package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
  31. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +11 -11
  32. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -1
  33. package/@types/lib/metadataTypes/DataExtract.d.ts +12 -28
  34. package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
  35. package/@types/lib/metadataTypes/DataExtractType.d.ts +10 -10
  36. package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -1
  37. package/@types/lib/metadataTypes/DeliveryProfile.d.ts +10 -10
  38. package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -1
  39. package/@types/lib/metadataTypes/Discovery.d.ts +10 -10
  40. package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -1
  41. package/@types/lib/metadataTypes/Email.d.ts +13 -34
  42. package/@types/lib/metadataTypes/Email.d.ts.map +1 -1
  43. package/@types/lib/metadataTypes/EmailSend.d.ts +10 -10
  44. package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -1
  45. package/@types/lib/metadataTypes/Event.d.ts +19 -16
  46. package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
  47. package/@types/lib/metadataTypes/FileLocation.d.ts +10 -10
  48. package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -1
  49. package/@types/lib/metadataTypes/FileTransfer.d.ts +11 -18
  50. package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -1
  51. package/@types/lib/metadataTypes/Filter.d.ts +10 -10
  52. package/@types/lib/metadataTypes/Filter.d.ts.map +1 -1
  53. package/@types/lib/metadataTypes/Folder.d.ts +10 -10
  54. package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
  55. package/@types/lib/metadataTypes/ImportFile.d.ts +11 -15
  56. package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
  57. package/@types/lib/metadataTypes/Journey.d.ts +13 -32
  58. package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
  59. package/@types/lib/metadataTypes/List.d.ts +12 -12
  60. package/@types/lib/metadataTypes/List.d.ts.map +1 -1
  61. package/@types/lib/metadataTypes/MetadataType.d.ts +23 -23
  62. package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
  63. package/@types/lib/metadataTypes/MobileCode.d.ts +11 -20
  64. package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -1
  65. package/@types/lib/metadataTypes/MobileKeyword.d.ts +14 -14
  66. package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
  67. package/@types/lib/metadataTypes/MobileMessage.d.ts +14 -42
  68. package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
  69. package/@types/lib/metadataTypes/Query.d.ts +12 -12
  70. package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
  71. package/@types/lib/metadataTypes/Role.d.ts +11 -11
  72. package/@types/lib/metadataTypes/Role.d.ts.map +1 -1
  73. package/@types/lib/metadataTypes/Script.d.ts +15 -24
  74. package/@types/lib/metadataTypes/Script.d.ts.map +1 -1
  75. package/@types/lib/metadataTypes/SendClassification.d.ts +10 -10
  76. package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
  77. package/@types/lib/metadataTypes/SenderProfile.d.ts +11 -19
  78. package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
  79. package/@types/lib/metadataTypes/TransactionalEmail.d.ts +12 -12
  80. package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
  81. package/@types/lib/metadataTypes/TransactionalMessage.d.ts +11 -32
  82. package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -1
  83. package/@types/lib/metadataTypes/TransactionalPush.d.ts +12 -21
  84. package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -1
  85. package/@types/lib/metadataTypes/TransactionalSMS.d.ts +12 -18
  86. package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -1
  87. package/@types/lib/metadataTypes/TriggeredSend.d.ts +13 -18
  88. package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
  89. package/@types/lib/metadataTypes/User.d.ts +22 -40
  90. package/@types/lib/metadataTypes/User.d.ts.map +1 -1
  91. package/@types/lib/metadataTypes/Verification.d.ts +13 -13
  92. package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
  93. package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +7 -1
  94. package/@types/lib/util/auth.d.ts +19 -18
  95. package/@types/lib/util/auth.d.ts.map +1 -1
  96. package/@types/lib/util/businessUnit.d.ts +17 -17
  97. package/@types/lib/util/businessUnit.d.ts.map +1 -1
  98. package/@types/lib/util/cache.d.ts +24 -32
  99. package/@types/lib/util/cache.d.ts.map +1 -1
  100. package/@types/lib/util/cli.d.ts +27 -27
  101. package/@types/lib/util/cli.d.ts.map +1 -1
  102. package/@types/lib/util/config.d.ts +20 -20
  103. package/@types/lib/util/config.d.ts.map +1 -1
  104. package/@types/lib/util/devops.d.ts +21 -21
  105. package/@types/lib/util/devops.d.ts.map +1 -1
  106. package/@types/lib/util/file.d.ts +179 -18
  107. package/@types/lib/util/file.d.ts.map +1 -1
  108. package/@types/lib/util/init.config.d.ts +19 -19
  109. package/@types/lib/util/init.config.d.ts.map +1 -1
  110. package/@types/lib/util/init.d.ts +20 -20
  111. package/@types/lib/util/init.d.ts.map +1 -1
  112. package/@types/lib/util/init.git.d.ts +2 -2
  113. package/@types/lib/util/init.git.d.ts.map +1 -1
  114. package/@types/lib/util/init.npm.d.ts +2 -2
  115. package/@types/lib/util/init.npm.d.ts.map +1 -1
  116. package/@types/lib/util/replaceContentBlockReference.d.ts +28 -28
  117. package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
  118. package/@types/lib/util/util.d.ts +33 -37
  119. package/@types/lib/util/util.d.ts.map +1 -1
  120. package/@types/types/mcdev.d.d.ts +73 -52
  121. package/@types/types/mcdev.d.d.ts.map +1 -1
  122. package/eslint.config.js +0 -1
  123. package/lib/Deployer.js +1 -1
  124. package/lib/Retriever.js +4 -1
  125. package/lib/cli.js +209 -278
  126. package/lib/index.js +89 -43
  127. package/lib/metadataTypes/Asset.js +1 -0
  128. package/lib/metadataTypes/DataExtension.js +3 -3
  129. package/lib/metadataTypes/DataExtensionField.js +0 -1
  130. package/lib/metadataTypes/Event.js +199 -35
  131. package/lib/metadataTypes/Folder.js +1 -1
  132. package/lib/metadataTypes/Journey.js +10 -2
  133. package/lib/metadataTypes/MetadataType.js +3 -4
  134. package/lib/metadataTypes/Role.js +9 -7
  135. package/lib/metadataTypes/SenderProfile.js +1 -0
  136. package/lib/metadataTypes/TransactionalEmail.js +2 -2
  137. package/lib/metadataTypes/TriggeredSend.js +1 -0
  138. package/lib/metadataTypes/User.js +31 -27
  139. package/lib/metadataTypes/definitions/Event.definition.js +8 -8
  140. package/lib/util/auth.js +0 -1
  141. package/lib/util/cli.js +0 -1
  142. package/lib/util/devops.js +2 -3
  143. package/lib/util/file.js +7 -10
  144. package/lib/util/replaceContentBlockReference.js +3 -1
  145. package/package.json +11 -9
  146. package/test/general.test.js +20 -2
  147. package/test/mockRoot/.mcdevrc.json +1 -1
  148. package/test/mockRoot/deploy/testInstance/testBU/event/testExisting_event.event-meta.json +201 -0
  149. package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withExistingDE.event-meta.json +232 -0
  150. package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withSchema.event-meta.json +193 -0
  151. package/test/resources/9999999/dataExtension/retrieve-CustomerKey=testNew_event_withSchema-response.xml +50 -0
  152. package/test/resources/9999999/dataExtension/retrieve-createdViaEvent-response.xml +50 -0
  153. package/test/resources/9999999/dataExtension/retrieve-response.xml +48 -0
  154. package/test/resources/9999999/dataExtension/retrieve_event_withSchema-expected.json +219 -0
  155. package/test/resources/9999999/dataExtension/update-afterCreatedViaEvent-response.xml +55 -0
  156. package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -0
  157. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_event_withSchema-response.xml +461 -0
  158. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKeyINtestExisting_dataExtension,testNew_dataExtension-response.xml +133 -0
  159. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +870 -0
  160. package/test/resources/9999999/event/build-expected.json +228 -0
  161. package/test/resources/9999999/event/get-expected.json +235 -0
  162. package/test/resources/9999999/event/post_withExistingDE-callout-expected.json +17 -0
  163. package/test/resources/9999999/event/post_withExistingDE-expected.json +21 -0
  164. package/test/resources/9999999/event/post_withSchema-callout-expected.json +196 -0
  165. package/test/resources/9999999/event/post_withSchema-expected.json +232 -0
  166. package/test/resources/9999999/event/put-callout-expected.json +202 -0
  167. package/test/resources/9999999/event/put-expected.json +233 -0
  168. package/test/resources/9999999/event/template-expected.json +228 -0
  169. package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +252 -2
  170. package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/delete-response.txt +0 -0
  171. package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/put-response.json +241 -0
  172. package/test/resources/9999999/interaction/v1/eventDefinitions/post_withExistingDE-response.json +26 -0
  173. package/test/resources/9999999/interaction/v1/eventDefinitions/post_withSchema-response.json +241 -0
  174. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/delete-response.txt +1 -0
  175. package/test/type.asset.test.js +0 -3
  176. package/test/type.automation.test.js +1 -1
  177. package/test/type.dataExtension.test.js +4 -4
  178. package/test/type.event.test.js +287 -6
  179. package/test/type.journey.test.js +13 -0
  180. package/test/type.user.test.js +1 -1
  181. package/test/utils.js +18 -6
  182. package/tsconfig.json +6 -1
  183. package/{jsconfig.json → tsconfig.npmScripts.json} +1 -1
  184. package/tsconfig.precommit.json +26 -0
  185. package/types/mcdev.d.js +12 -13
package/test/utils.js CHANGED
@@ -16,6 +16,17 @@ let apimock;
16
16
  import { handleSOAPRequest, handleRESTRequest, soapUrl, restUrl } from './resourceFactory.js';
17
17
  const authResources = File.readJsonSync(path.join(__dirname, './resources/auth.json'));
18
18
 
19
+ /**
20
+ * gets file from Retrieve folder
21
+ *
22
+ * @param {string} from source path (starting in bu folder)
23
+ * @param {string} to target path (starting in bu folder)
24
+ * @param {string} [mid] used when we need to test on ParentBU
25
+ * @returns {Promise.<{status:'ok'|'skipped'|'failed', statusMessage:string, file:string}>} -
26
+ */
27
+ export async function copyFile(from, to, mid = '9999999') {
28
+ return File.copyFileSimple(`./test/resources/${mid}/${from}`, `./test/resources/${mid}/${to}`);
29
+ }
19
30
  /**
20
31
  * gets file from Retrieve folder
21
32
  *
@@ -168,7 +179,6 @@ export function mockSetup(isDeploy) {
168
179
  skipInteraction: undefined,
169
180
  });
170
181
  }
171
- // @ts-expect-error somehow, MockAdapter does not expect type AxiosInstance
172
182
  apimock = new MockAdapter(axiosInstance, { onNoMatch: 'throwException' });
173
183
  // set access_token to mid to allow for autorouting of mock to correct resources
174
184
  apimock.onPost(authResources.success.url).reply((config) => {
@@ -280,7 +290,7 @@ export function getRestCallout(method, url) {
280
290
  * @param {string} [objectType] optionall filter requests by object
281
291
  * @returns {object[]} json payload of the requests
282
292
  */
283
- export function getSoapCallout(requestAction, objectType) {
293
+ export function getSoapCallouts(requestAction, objectType) {
284
294
  const method = 'post';
285
295
  const url = '/Service.asmx';
286
296
  const subset = apimock.history[method];
@@ -290,10 +300,12 @@ export function getSoapCallout(requestAction, objectType) {
290
300
  // find soap requestst of the correct request type
291
301
  .filter((item) => item.headers.SOAPAction === requestAction)
292
302
  // find soap requestst of the correct request type
293
- .filter(
294
- (item) =>
295
- !objectType ||
296
- item.data.split('<ObjectType>')[1].split('</ObjectType>')[0] === objectType
303
+ .filter((item) =>
304
+ !objectType || item.data.includes('<ObjectType')
305
+ ? item.data.split('<ObjectType>')[1].split('</ObjectType>')[0] === objectType
306
+ : item.data.includes('<Objects xsi:type="')
307
+ ? item.data.split('<Objects xsi:type="')[1].split('">')[0] === objectType
308
+ : false
297
309
  )
298
310
  .map((item) => item.data);
299
311
  return myCallout;
package/tsconfig.json CHANGED
@@ -1,7 +1,12 @@
1
1
  {
2
2
  // Change this to match your project
3
- "include": ["lib/**/*"],
3
+ "include": ["lib/**/*.js", "types/**/*.js", "test/**/*.js"],
4
4
  "compilerOptions": {
5
+ "module": "nodenext",
6
+ "moduleResolution": "nodenext",
7
+ "checkJs": true,
8
+ "skipLibCheck": true,
9
+ "target": "es2022",
5
10
  // Tells TypeScript to read JS files, as
6
11
  // normally they are ignored as source files
7
12
  "allowJs": true,
@@ -2,7 +2,7 @@
2
2
  "include": ["lib/**/*.js", "types/**/*.js", "test/**/*.js"],
3
3
  "exclude": ["node_modules"],
4
4
  "compilerOptions": {
5
- "module": "NodeNext",
5
+ "module": "nodenext",
6
6
  "moduleResolution": "nodenext",
7
7
  "target": "es2022",
8
8
  "checkJs": true,
@@ -0,0 +1,26 @@
1
+ {
2
+ // Change this to match your project
3
+ "include": ["lib/**/*.js"],
4
+ "compilerOptions": {
5
+ "module": "nodenext",
6
+ "moduleResolution": "nodenext",
7
+ "target": "es2022",
8
+ "checkJs": true,
9
+ "skipLibCheck": true,
10
+ // Tells TypeScript to read JS files, as
11
+ // normally they are ignored as source files
12
+ "allowJs": true,
13
+ // Generate d.ts files
14
+ "declaration": true,
15
+ // This compiler run should
16
+ // only output d.ts files
17
+ "emitDeclarationOnly": true,
18
+ // Types should go into this directory.
19
+ // Removing this would place the .d.ts files
20
+ // next to the .js files
21
+ "outDir": "@types",
22
+ // go to js file when using IDE functions like
23
+ // "Go to Definition" in VSCode
24
+ "declarationMap": true
25
+ }
26
+ }
package/types/mcdev.d.js CHANGED
@@ -156,7 +156,7 @@
156
156
  * @property {number} [Client.ID] EID e.g:7281698
157
157
  * @property {number} [Client.ModifiedBy] AccountUserID of user who last modified this user
158
158
  * @property {'User'|'Installed Package'} c__type -
159
- * @property {boolean|string} [IsLocked] (API only)
159
+ * @property {boolean} [IsLocked] (API only)
160
160
  * @property {boolean} [Unlock] used to unlock a user that has IsLocked === true
161
161
  * @property {boolean} c__IsLocked_readOnly copy of IsLocked
162
162
  * @property {string} c__TimeZoneName name of timezone
@@ -175,11 +175,17 @@
175
175
  * @typedef {Object.<string, UserDocument>} UserDocumentMap key=customer key
176
176
  */
177
177
  /**
178
- * @typedef {UserDocument & object} UserDocumentDocument
179
- * @property {boolean | string} ActiveFlag user.ActiveFlag === true ? '✓' : '-'
180
- * @property {boolean | string} IsAPIUser user.IsAPIUser === true ? '✓' : '-'
181
- * @property {boolean | string} MustChangePassword user.MustChangePassword === true ? '✓' : '-'
182
- * @property {number | string} DefaultBusinessUnit default MID; BUName after we resolved it
178
+ * @typedef {object} UserDocumentDocumentHelper
179
+ * @property {string} ActiveFlagDocs docs: user.ActiveFlag === true ? '✓' : '-'
180
+ * @property {string} IsAPIUserDocs docs: user.IsAPIUser === true ? '✓' : '-'
181
+ * @property {string} MustChangePasswordDocs docs: user.MustChangePassword === true ? '✓' : '-'
182
+ * @property {string} DefaultBusinessUnitDocs docs: default MID; BUName after we resolved it
183
+ * @property {string} RolesDocs docs: list of roles as concatenated string
184
+ * @property {string} AssociatedBusDocs docs: list of associated BUs as concatenated string
185
+ * @property {string | number} ModifiedBy docs: user name who last modified this user
186
+ * @property {string} TimeZoneName docs: name of timezone
187
+ * @property {string} IsLockedDocs docs: if the user cannot login
188
+ * @typedef {UserDocument & UserDocumentDocumentHelper} UserDocumentDocument
183
189
  */
184
190
  /**
185
191
  * @typedef {object} AccountUserConfiguration
@@ -326,16 +332,9 @@
326
332
  * @typedef {import('simple-git').DiffResultTextFile & McdevDeltaPkgItem} DeltaPkgItem
327
333
  */
328
334
  /**
329
- * @typedef {import('sfmc-sdk/auth').default} SDKauth
330
- * @typedef {import('sfmc-sdk/rest').default} SDKrest
331
- * @typedef {import('sfmc-sdk/soap').default} SDKsoap
332
335
  * @typedef {import('sfmc-sdk/util').RestError} RestError
333
336
  * @typedef {import('sfmc-sdk/util').SOAPError} SOAPError
334
337
  * @typedef {SOAPError & RestError} SDKError
335
- * @typedef {object} SDK
336
- * @property {SDKauth} auth SDKauth
337
- * @property {SDKrest} rest SDKrest
338
- * @property {SDKsoap} soap SDKsoap
339
338
  */
340
339
 
341
340
  /**