mcdev 7.6.3 → 7.7.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.
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/ISSUE_TEMPLATE/task.md +1 -1
- package/.github/workflows/coverage-base-update.yml +2 -2
- package/.github/workflows/coverage-develop-branch.yml +3 -1
- package/.github/workflows/coverage-main-branch.yml +3 -1
- package/.github/workflows/coverage.yml +5 -3
- package/.mcdev-validations.js +0 -0
- package/@types/lib/Builder.d.ts +14 -0
- package/@types/lib/Builder.d.ts.map +1 -1
- package/@types/lib/MetadataTypeDefinitions.d.ts +2 -0
- package/@types/lib/MetadataTypeDefinitions.d.ts.map +1 -1
- package/@types/lib/MetadataTypeInfo.d.ts +2 -0
- package/@types/lib/MetadataTypeInfo.d.ts.map +1 -1
- package/@types/lib/index.d.ts +17 -8
- package/@types/lib/index.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Asset.d.ts +11 -3
- package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DomainVerification.d.ts +180 -0
- package/@types/lib/metadataTypes/DomainVerification.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Journey.d.ts +7 -4
- package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MetadataType.d.ts +15 -7
- package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileKeyword.d.ts +2 -10
- package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileMessage.d.ts +2 -10
- package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SenderProfile.d.ts +7 -0
- package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts +2 -2
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TriggeredSend.d.ts +8 -0
- package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Verification.d.ts +0 -9
- package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/definitions/DomainVerification.definition.d.ts +100 -0
- package/@types/lib/metadataTypes/definitions/DomainVerification.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +1 -1
- package/@types/lib/util/devops.d.ts.map +1 -1
- package/@types/lib/util/replaceContentBlockReference.d.ts +2 -1
- package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
- package/@types/lib/util/util.d.ts +42 -1
- package/@types/lib/util/util.d.ts.map +1 -1
- package/@types/lib/util/validations.d.ts.map +1 -1
- package/@types/types/mcdev.d.d.ts +34 -0
- package/@types/types/mcdev.d.d.ts.map +1 -1
- package/boilerplate/config.json +11 -0
- package/boilerplate/files/eslint.config.js +98 -3
- package/boilerplate/forcedUpdates.json +4 -0
- package/boilerplate/gitignore-template +1 -1
- package/boilerplate/npm-dependencies.json +1 -0
- package/eslint.config.js +4 -3
- package/lib/Builder.js +114 -54
- package/lib/Deployer.js +2 -2
- package/lib/MetadataTypeDefinitions.js +2 -0
- package/lib/MetadataTypeInfo.js +2 -0
- package/lib/cli.js +127 -3
- package/lib/index.js +217 -164
- package/lib/metadataTypes/Asset.js +76 -22
- package/lib/metadataTypes/DataExtension.js +10 -2
- package/lib/metadataTypes/DomainVerification.js +246 -0
- package/lib/metadataTypes/Event.js +21 -9
- package/lib/metadataTypes/Journey.js +339 -223
- package/lib/metadataTypes/MetadataType.js +153 -106
- package/lib/metadataTypes/MobileKeyword.js +5 -2
- package/lib/metadataTypes/MobileMessage.js +5 -2
- package/lib/metadataTypes/SendClassification.js +5 -0
- package/lib/metadataTypes/SenderProfile.js +102 -3
- package/lib/metadataTypes/TransactionalEmail.js +3 -1
- package/lib/metadataTypes/Verification.js +3 -1
- package/lib/metadataTypes/definitions/DomainVerification.definition.js +71 -0
- package/lib/metadataTypes/definitions/Journey.definition.js +7 -1
- package/lib/metadataTypes/definitions/SendClassification.definition.js +2 -2
- package/lib/metadataTypes/definitions/SenderProfile.definition.js +1 -1
- package/lib/util/config.js +6 -0
- package/lib/util/devops.js +130 -154
- package/lib/util/file.js +3 -3
- package/lib/util/replaceContentBlockReference.js +10 -3
- package/lib/util/util.js +96 -14
- package/lib/util/validations.js +34 -14
- package/package.json +10 -10
- package/test/general.test.js +339 -96
- package/test/mockRoot/.mcdev-validations.js +66 -0
- package/test/mockRoot/.mcdevrc.json +30 -2
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset_htmlblock.asset-block-meta.html +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset_htmlblock.asset-block-meta.json +39 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset_withCBBK_notexisting.asset-block-meta.html +4 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset_withCBBK_notexisting.asset-block-meta.json +39 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset_withCBBK_preexisting.asset-block-meta.html +4 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset_withCBBK_preexisting.asset-block-meta.json +39 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/message/testNew_assetMessage/testNew_assetMessage.asset-message-meta.json +435 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/message/testNew_assetMessage/views.html.content.asset-message-meta.html +150 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/message/testNew_asset_templatebasedemail/testNew_asset_templatebasedemail.asset-message-meta.json +305 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/message/testNew_asset_templatebasedemail/views.html.content.asset-message-meta.html +150 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/template/testNew_asset_template/content.asset-template-meta.html +150 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/template/testNew_asset_template/testNew_asset_template.asset-template-meta.json +116 -0
- package/test/mockRoot/deploy/testInstance/testBU/domainVerification/joern.berkefeld.New@accenture.com.domainVerification-meta.json +6 -0
- package/test/mockRoot/deploy/testInstance/testBU/domainVerification/joern.berkefeld@accenture.com.domainVerification-meta.json +6 -0
- package/test/mockRoot/deploy/testInstance/testBU/domainVerification/mcdev.accenture.com.domainVerification-meta.json +6 -0
- package/test/mockRoot/deploy/testInstance/testBU/journey/testNew_temail_notPublished.journey-meta.json +213 -0
- package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testExisting_senderProfile.senderProfile-meta.json +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testNew_senderProfile.senderProfile-meta.json +1 -0
- package/test/resourceFactory.js +7 -24
- package/test/resources/9999999/asset/v1/content/assets/post-response-key=testNew_assetMessage.json +441 -0
- package/test/resources/9999999/asset/v1/content/assets/post-response-key=testNew_asset_htmlblock.json +59 -0
- package/test/resources/9999999/asset/v1/content/assets/post-response-key=testNew_asset_template.json +147 -0
- package/test/resources/9999999/asset/v1/content/assets/post-response-key=testNew_asset_templatebasedemail.json +322 -0
- package/test/resources/9999999/asset/v1/content/assets/post-response-key=testNew_asset_withCBBK_notexisting.json +59 -0
- package/test/resources/9999999/asset/v1/content/assets/post-response-key=testNew_asset_withCBBK_preexisting.json +59 -0
- package/test/resources/9999999/asset-deploy2/block/testBlacklist_asset_htmlblock.asset-block-meta.html +1 -0
- package/test/resources/9999999/asset-deploy2/block/testBlacklist_asset_htmlblock.asset-block-meta.json +39 -0
- package/test/resources/9999999/automation/clone-expected.json +61 -0
- package/test/resources/9999999/dataExtension/retrieve-CustomerKey=testExisting_dataExtension-response.xml +52 -0
- package/test/resources/9999999/dataExtension-deploy/testBlacklist_dataExtension.dataExtension-meta.json +20 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,dataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +137 -0
- package/test/resources/9999999/domainVerification/create-expected.json +3 -0
- package/test/resources/9999999/domainVerification/get-sap-expected.json +6 -0
- package/test/resources/9999999/domainVerification/update-expected.json +6 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_temail/put-response-paused.json +219 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testNew_temail_notPublished/get-response.json +218 -0
- package/test/resources/9999999/interaction/v1/interactions/post-response.json +216 -0
- package/test/resources/9999999/journey/create-transactionaEmail-publish-expected.json +217 -0
- package/test/resources/9999999/messaging/v1/domainverification/delete/post-response.txt +1 -0
- package/test/resources/9999999/messaging/v1/domainverification/get-response.json +43 -0
- package/test/resources/9999999/messaging/v1/domainverification/post-response.txt +1 -0
- package/test/resources/9999999/messaging/v1/domainverification/update/post-response.txt +1 -0
- package/test/resources/9999999/messaging/v1/email/definitions/get-response.json +7 -0
- package/test/resources/9999999/messaging/v1/email/definitions/testNew_temail_notPublished/get-response.json +26 -0
- package/test/resources/9999999/query/clone-expected.json +8 -0
- package/test/resources/9999999/query/clone-expected.sql +7 -0
- package/test/resources/9999999/senderProfile/create-response.xml +1 -1
- package/test/resources/9999999/senderProfile/post-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/create-publish-expected.json +20 -0
- package/test/type.asset.test.js +216 -9
- package/test/type.automation.test.js +1 -1
- package/test/type.domainVerification.test.js +169 -0
- package/test/type.journey.test.js +107 -21
- package/test/type.script.test.js +1 -1
- package/test/type.sendClassification.test.js +3 -3
- package/test/type.senderProfile.test.js +26 -6
- package/test/type.transactionalEmail.test.js +5 -5
- package/test/type.triggeredSend.test.js +1 -1
- package/test/utils.js +8 -0
- package/types/mcdev.d.js +12 -0
package/lib/cli.js
CHANGED
|
@@ -207,6 +207,10 @@ yargs(hideBin(process.argv))
|
|
|
207
207
|
group: 'Options for deploy:',
|
|
208
208
|
describe:
|
|
209
209
|
'relevant for Salesforce triggered journeys and events; allows ignoring errors on missing Salesforce fields in case the API returns other info than the GUI. CAUTION!',
|
|
210
|
+
})
|
|
211
|
+
.option('fix', {
|
|
212
|
+
group: 'Options for deploy:',
|
|
213
|
+
describe: 'auto-fix validation issues if the rule is able to do it',
|
|
210
214
|
}),
|
|
211
215
|
|
|
212
216
|
(argv) => {
|
|
@@ -379,6 +383,65 @@ yargs(hideBin(process.argv))
|
|
|
379
383
|
[],
|
|
380
384
|
isDeprecated
|
|
381
385
|
)
|
|
386
|
+
.command(
|
|
387
|
+
['clone'],
|
|
388
|
+
'clones items across BUs. Alias for: mcdev build --mf __clone__ --mt __clone__',
|
|
389
|
+
(yargs) =>
|
|
390
|
+
yargs
|
|
391
|
+
.option('metadata', {
|
|
392
|
+
type: 'string',
|
|
393
|
+
array: true,
|
|
394
|
+
alias: 'm',
|
|
395
|
+
group: 'Required parameters for clone:',
|
|
396
|
+
describe: 'type:key combos to clone',
|
|
397
|
+
demandOption: true,
|
|
398
|
+
})
|
|
399
|
+
.option('buFrom', {
|
|
400
|
+
type: 'string',
|
|
401
|
+
alias: 'bf',
|
|
402
|
+
group: 'Required parameters for clone:',
|
|
403
|
+
describe:
|
|
404
|
+
'the business unit to create the templates from (in format "credential name/BU name")',
|
|
405
|
+
demandOption: true,
|
|
406
|
+
})
|
|
407
|
+
.option('buTo', {
|
|
408
|
+
type: 'string',
|
|
409
|
+
alias: 'bt',
|
|
410
|
+
group: 'Required parameters for clone:',
|
|
411
|
+
describe: 'the business unit to deploy to; required unless --bulk is set',
|
|
412
|
+
})
|
|
413
|
+
.option('dependencies', {
|
|
414
|
+
type: 'boolean',
|
|
415
|
+
alias: 'D',
|
|
416
|
+
group: 'Options for clone:',
|
|
417
|
+
describe: 'create templates for all dependencies of the metadata component',
|
|
418
|
+
})
|
|
419
|
+
.option('retrieve', {
|
|
420
|
+
type: 'boolean',
|
|
421
|
+
alias: 'r',
|
|
422
|
+
group: 'Options for clone:',
|
|
423
|
+
describe:
|
|
424
|
+
're-retrieves potentially relevant metadata before running buildTemplate (all if --dependencies is used)',
|
|
425
|
+
})
|
|
426
|
+
.option('skipValidation', {
|
|
427
|
+
alias: 'sv',
|
|
428
|
+
group: 'Options for clone:',
|
|
429
|
+
describe:
|
|
430
|
+
'allows reducing validation rules from error to warn to handle edge cases',
|
|
431
|
+
})
|
|
432
|
+
.option('purge', {
|
|
433
|
+
group: 'Options for clone:',
|
|
434
|
+
describe:
|
|
435
|
+
'deletes the relevant deploy folder before building the definition. Add "--no-purge" to skip the question and not delete anything',
|
|
436
|
+
}),
|
|
437
|
+
(argv) => {
|
|
438
|
+
Mcdev.setOptions(argv);
|
|
439
|
+
const typeKeyCombo = Mcdev.metadataToTypeKey(argv.metadata);
|
|
440
|
+
if ('undefined' !== typeof typeKeyCombo) {
|
|
441
|
+
Mcdev.clone(argv.buFrom, argv.buTo, typeKeyCombo);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
)
|
|
382
445
|
.command(
|
|
383
446
|
['build'],
|
|
384
447
|
'runs buildTemplate followed by buildDefinition',
|
|
@@ -446,6 +509,15 @@ yargs(hideBin(process.argv))
|
|
|
446
509
|
group: 'Options for build:',
|
|
447
510
|
describe:
|
|
448
511
|
'allows reducing validation rules from error to warn to handle edge cases',
|
|
512
|
+
})
|
|
513
|
+
.option('purge', {
|
|
514
|
+
group: 'Options for build:',
|
|
515
|
+
describe:
|
|
516
|
+
'deletes the relevant deploy folder before building the definition. Add "--no-purge" to skip the question and not delete anything',
|
|
517
|
+
})
|
|
518
|
+
.option('fix', {
|
|
519
|
+
group: 'Options for build:',
|
|
520
|
+
describe: 'auto-fix validation issues if the rule is able to do it',
|
|
449
521
|
}),
|
|
450
522
|
(argv) => {
|
|
451
523
|
Mcdev.setOptions(argv);
|
|
@@ -578,6 +650,15 @@ yargs(hideBin(process.argv))
|
|
|
578
650
|
describe:
|
|
579
651
|
'allows reducing validation rules from error to warn to handle edge cases',
|
|
580
652
|
})
|
|
653
|
+
.option('purge', {
|
|
654
|
+
group: 'Options for buildDefinition:',
|
|
655
|
+
describe:
|
|
656
|
+
'deletes the relevant deploy folder before building the definition. Add "--no-purge" to skip the question and not delete anything',
|
|
657
|
+
})
|
|
658
|
+
.option('fix', {
|
|
659
|
+
group: 'Options for buildDefinition:',
|
|
660
|
+
describe: 'auto-fix validation issues if the rule is able to do it',
|
|
661
|
+
})
|
|
581
662
|
.check((argv) => {
|
|
582
663
|
if (!argv.MARKET && !argv.market) {
|
|
583
664
|
throw new Error(
|
|
@@ -635,6 +716,15 @@ yargs(hideBin(process.argv))
|
|
|
635
716
|
group: 'Options for buildDefinitionBulk:',
|
|
636
717
|
describe:
|
|
637
718
|
'allows reducing validation rules from error to warn to handle edge cases',
|
|
719
|
+
})
|
|
720
|
+
.option('purge', {
|
|
721
|
+
group: 'Options for buildDefinitionBulk:',
|
|
722
|
+
describe:
|
|
723
|
+
'deletes the relevant deploy folder before building the definition. Add "--no-purge" to skip the question and not delete anything',
|
|
724
|
+
})
|
|
725
|
+
.option('fix', {
|
|
726
|
+
group: 'Options for buildDefinitionBulk:',
|
|
727
|
+
describe: 'auto-fix validation issues if the rule is able to do it',
|
|
638
728
|
}),
|
|
639
729
|
(argv) => {
|
|
640
730
|
Mcdev.setOptions(argv);
|
|
@@ -670,14 +760,20 @@ yargs(hideBin(process.argv))
|
|
|
670
760
|
}
|
|
671
761
|
)
|
|
672
762
|
.command(
|
|
673
|
-
['createDeltaPkg [
|
|
763
|
+
['createDeltaPkg [commitrange]', 'cdp'],
|
|
674
764
|
'Copies commit-based file delta into deploy folder',
|
|
675
765
|
(yargs) =>
|
|
676
766
|
yargs
|
|
677
|
-
.positional('
|
|
767
|
+
.positional('commitrange', {
|
|
678
768
|
type: 'string',
|
|
679
769
|
describe: 'Pull Request target branch or git commit range',
|
|
680
770
|
})
|
|
771
|
+
.option('range', {
|
|
772
|
+
type: 'string',
|
|
773
|
+
alias: ['branch', 'commit', 'R'],
|
|
774
|
+
group: 'Options for createDeltaPkg:',
|
|
775
|
+
describe: 'Pull Request target branch or git commit range',
|
|
776
|
+
})
|
|
681
777
|
.option('filter', {
|
|
682
778
|
type: 'string',
|
|
683
779
|
group: 'Options for createDeltaPkg:',
|
|
@@ -688,6 +784,34 @@ yargs(hideBin(process.argv))
|
|
|
688
784
|
type: 'number',
|
|
689
785
|
group: 'Options for createDeltaPkg:',
|
|
690
786
|
describe: 'Number of commits to look back for changes (supersedes config)',
|
|
787
|
+
})
|
|
788
|
+
.option('dependencies', {
|
|
789
|
+
type: 'boolean',
|
|
790
|
+
alias: 'D',
|
|
791
|
+
group: 'Options for build (run via createDeltaPkg):',
|
|
792
|
+
describe: 'create templates for all dependencies of the metadata component',
|
|
793
|
+
})
|
|
794
|
+
.option('retrieve', {
|
|
795
|
+
type: 'boolean',
|
|
796
|
+
alias: 'r',
|
|
797
|
+
group: 'Options for build (run via createDeltaPkg):',
|
|
798
|
+
describe:
|
|
799
|
+
're-retrieves potentially relevant metadata before running buildTemplate (all if --dependencies is used)',
|
|
800
|
+
})
|
|
801
|
+
.option('skipValidation', {
|
|
802
|
+
alias: 'sv',
|
|
803
|
+
group: 'Options for build (run via createDeltaPkg):',
|
|
804
|
+
describe:
|
|
805
|
+
'allows reducing validation rules from error to warn to handle edge cases',
|
|
806
|
+
})
|
|
807
|
+
.option('purge', {
|
|
808
|
+
group: 'Options for build (run via createDeltaPkg):',
|
|
809
|
+
describe:
|
|
810
|
+
'deletes the relevant deploy folder before building the definition. Add "--no-purge" to skip the question and not delete anything',
|
|
811
|
+
})
|
|
812
|
+
.option('fix', {
|
|
813
|
+
group: 'Options for build (run via createDeltaPkg)',
|
|
814
|
+
describe: 'auto-fix validation issues if the rule is able to do it',
|
|
691
815
|
}),
|
|
692
816
|
(argv) => {
|
|
693
817
|
Mcdev.setOptions(argv);
|
|
@@ -1248,7 +1372,7 @@ yargs(hideBin(process.argv))
|
|
|
1248
1372
|
.recommendCommands()
|
|
1249
1373
|
.wrap(yargs(hideBin(process.argv)).terminalWidth())
|
|
1250
1374
|
.epilog(
|
|
1251
|
-
'Copyright
|
|
1375
|
+
'Copyright 2025. Accenture. Get support at https://github.com/Accenture/sfmc-devtools/issues'
|
|
1252
1376
|
)
|
|
1253
1377
|
.help().argv;
|
|
1254
1378
|
|