mcdev 6.0.2 → 7.0.0
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/.beautyamp.json +13 -0
- package/.eslintrc.json +7 -1
- package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
- package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +10 -3
- package/.github/workflows/close_issues_on_merge.yml +1 -1
- package/.github/workflows/code-test.yml +51 -3
- package/.github/workflows/coverage-base-update.yml +1 -1
- package/.github/workflows/coverage-develop-branch.yml +1 -1
- package/.github/workflows/coverage-main-branch.yml +1 -1
- package/.github/workflows/coverage.yml +2 -2
- package/.github/workflows/npm-publish.yml +3 -2
- package/.github/workflows/pr-labeler.yml +1 -1
- package/.husky/commit-msg +0 -2
- package/.husky/post-checkout +0 -3
- package/.husky/post-merge +2 -7
- package/.husky/pre-commit +5 -5
- package/.prettierrc +0 -8
- package/.vscode/extensions.json +2 -0
- package/.vscode/settings.json +15 -3
- package/@types/lib/Builder.d.ts +97 -0
- package/@types/lib/Builder.d.ts.map +1 -0
- package/@types/lib/Deployer.d.ts +99 -0
- package/@types/lib/Deployer.d.ts.map +1 -0
- package/@types/lib/MetadataTypeDefinitions.d.ts +80 -0
- package/@types/lib/MetadataTypeDefinitions.d.ts.map +1 -0
- package/@types/lib/MetadataTypeInfo.d.ts +78 -0
- package/@types/lib/MetadataTypeInfo.d.ts.map +1 -0
- package/@types/lib/Retriever.d.ts +66 -0
- package/@types/lib/Retriever.d.ts.map +1 -0
- package/@types/lib/cli.d.ts +3 -0
- package/@types/lib/cli.d.ts.map +1 -0
- package/@types/lib/index.d.ts +383 -0
- package/@types/lib/index.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Asset.d.ts +1082 -0
- package/@types/lib/metadataTypes/Asset.d.ts.map +1 -0
- package/@types/lib/metadataTypes/AttributeGroup.d.ts +290 -0
- package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -0
- package/@types/lib/metadataTypes/AttributeSet.d.ts +968 -0
- package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Automation.d.ts +921 -0
- package/@types/lib/metadataTypes/Automation.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Campaign.d.ts +190 -0
- package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -0
- package/@types/lib/metadataTypes/ContentArea.d.ts +250 -0
- package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -0
- package/@types/lib/metadataTypes/DataExtension.d.ts +571 -0
- package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -0
- package/@types/lib/metadataTypes/DataExtensionField.d.ts +236 -0
- package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -0
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +175 -0
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -0
- package/@types/lib/metadataTypes/DataExtract.d.ts +217 -0
- package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -0
- package/@types/lib/metadataTypes/DataExtractType.d.ts +80 -0
- package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -0
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts +102 -0
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Discovery.d.ts +189 -0
- package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Email.d.ts +384 -0
- package/@types/lib/metadataTypes/Email.d.ts.map +1 -0
- package/@types/lib/metadataTypes/EmailSend.d.ts +652 -0
- package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Event.d.ts +958 -0
- package/@types/lib/metadataTypes/Event.d.ts.map +1 -0
- package/@types/lib/metadataTypes/FileLocation.d.ts +101 -0
- package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -0
- package/@types/lib/metadataTypes/FileTransfer.d.ts +228 -0
- package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Filter.d.ts +145 -0
- package/@types/lib/metadataTypes/Filter.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Folder.d.ts +287 -0
- package/@types/lib/metadataTypes/Folder.d.ts.map +1 -0
- package/@types/lib/metadataTypes/ImportFile.d.ts +409 -0
- package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Journey.d.ts +541 -0
- package/@types/lib/metadataTypes/Journey.d.ts.map +1 -0
- package/@types/lib/metadataTypes/List.d.ts +191 -0
- package/@types/lib/metadataTypes/List.d.ts.map +1 -0
- package/@types/lib/metadataTypes/MetadataType.d.ts +680 -0
- package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -0
- package/@types/lib/metadataTypes/MobileCode.d.ts +225 -0
- package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -0
- package/@types/lib/metadataTypes/MobileKeyword.d.ts +432 -0
- package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -0
- package/@types/lib/metadataTypes/MobileMessage.d.ts +931 -0
- package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Query.d.ts +299 -0
- package/@types/lib/metadataTypes/Query.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Role.d.ts +164 -0
- package/@types/lib/metadataTypes/Role.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Script.d.ts +305 -0
- package/@types/lib/metadataTypes/Script.d.ts.map +1 -0
- package/@types/lib/metadataTypes/SendClassification.d.ts +221 -0
- package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -0
- package/@types/lib/metadataTypes/SenderProfile.d.ts +257 -0
- package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -0
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts +230 -0
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -0
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts +163 -0
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -0
- package/@types/lib/metadataTypes/TransactionalPush.d.ts +175 -0
- package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -0
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts +205 -0
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -0
- package/@types/lib/metadataTypes/TriggeredSend.d.ts +671 -0
- package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -0
- package/@types/lib/metadataTypes/User.d.ts +677 -0
- package/@types/lib/metadataTypes/User.d.ts.map +1 -0
- package/@types/lib/metadataTypes/Verification.d.ts +188 -0
- package/@types/lib/metadataTypes/Verification.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts +692 -0
- package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts +246 -0
- package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts +893 -0
- package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts +616 -0
- package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts +126 -0
- package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts +182 -0
- package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts +237 -0
- package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts +121 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts +133 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts +156 -0
- package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts +34 -0
- package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts +80 -0
- package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts +146 -0
- package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Email.definition.d.ts +314 -0
- package/@types/lib/metadataTypes/definitions/Email.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts +582 -0
- package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +867 -0
- package/@types/lib/metadataTypes/definitions/Event.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts +68 -0
- package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts +191 -0
- package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts +147 -0
- package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts +174 -0
- package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts +306 -0
- package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +426 -0
- package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/List.definition.d.ts +118 -0
- package/@types/lib/metadataTypes/definitions/List.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts +167 -0
- package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts +276 -0
- package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts +783 -0
- package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Query.definition.d.ts +203 -0
- package/@types/lib/metadataTypes/definitions/Query.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Role.definition.d.ts +108 -0
- package/@types/lib/metadataTypes/definitions/Role.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Script.definition.d.ts +153 -0
- package/@types/lib/metadataTypes/definitions/Script.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts +151 -0
- package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts +180 -0
- package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +167 -0
- package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts +99 -0
- package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts +119 -0
- package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts +113 -0
- package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts +560 -0
- package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/User.definition.d.ts +423 -0
- package/@types/lib/metadataTypes/definitions/User.definition.d.ts.map +1 -0
- package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts +129 -0
- package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts.map +1 -0
- package/@types/lib/retrieveChangelog.d.ts +3 -0
- package/@types/lib/retrieveChangelog.d.ts.map +1 -0
- package/@types/lib/util/auth.d.ts +41 -0
- package/@types/lib/util/auth.d.ts.map +1 -0
- package/@types/lib/util/businessUnit.d.ts +21 -0
- package/@types/lib/util/businessUnit.d.ts.map +1 -0
- package/@types/lib/util/cache.d.ts +64 -0
- package/@types/lib/util/cache.d.ts.map +1 -0
- package/@types/lib/util/cli.d.ts +125 -0
- package/@types/lib/util/cli.d.ts.map +1 -0
- package/@types/lib/util/config.d.ts +45 -0
- package/@types/lib/util/config.d.ts.map +1 -0
- package/@types/lib/util/devops.d.ts +62 -0
- package/@types/lib/util/devops.d.ts.map +1 -0
- package/@types/lib/util/file.d.ts +20 -0
- package/@types/lib/util/file.d.ts.map +1 -0
- package/@types/lib/util/init.config.d.ts +66 -0
- package/@types/lib/util/init.config.d.ts.map +1 -0
- package/@types/lib/util/init.d.ts +72 -0
- package/@types/lib/util/init.d.ts.map +1 -0
- package/@types/lib/util/init.git.d.ts +40 -0
- package/@types/lib/util/init.git.d.ts.map +1 -0
- package/@types/lib/util/init.npm.d.ts +24 -0
- package/@types/lib/util/init.npm.d.ts.map +1 -0
- package/@types/lib/util/replaceContentBlockReference.d.ts +105 -0
- package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -0
- package/@types/lib/util/util.d.ts +322 -0
- package/@types/lib/util/util.d.ts.map +1 -0
- package/@types/types/mcdev.d.d.ts +1282 -0
- package/@types/types/mcdev.d.d.ts.map +1 -0
- package/LICENSE +1 -1
- package/README.md +7 -3
- package/boilerplate/files/.beautyamp.json +13 -0
- package/boilerplate/files/.prettierrc +3 -0
- package/boilerplate/files/.vscode/extensions.json +6 -1
- package/boilerplate/files/.vscode/settings.json +16 -4
- package/boilerplate/forcedUpdates.json +9 -0
- package/jsconfig.json +7 -2
- package/lib/Builder.js +49 -45
- package/lib/Deployer.js +100 -45
- package/lib/MetadataTypeDefinitions.js +6 -0
- package/lib/MetadataTypeInfo.js +4 -0
- package/lib/Retriever.js +33 -27
- package/lib/cli.js +363 -28
- package/lib/index.js +615 -55
- package/lib/metadataTypes/Asset.js +811 -159
- package/lib/metadataTypes/AttributeGroup.js +17 -12
- package/lib/metadataTypes/AttributeSet.js +20 -15
- package/lib/metadataTypes/Automation.js +125 -93
- package/lib/metadataTypes/Campaign.js +18 -6
- package/lib/metadataTypes/ContentArea.js +21 -18
- package/lib/metadataTypes/DataExtension.js +229 -113
- package/lib/metadataTypes/DataExtensionField.js +52 -53
- package/lib/metadataTypes/DataExtensionTemplate.js +17 -5
- package/lib/metadataTypes/DataExtract.js +62 -27
- package/lib/metadataTypes/DataExtractType.js +17 -5
- package/lib/metadataTypes/DeliveryProfile.js +47 -0
- package/lib/metadataTypes/Discovery.js +15 -4
- package/lib/metadataTypes/Email.js +22 -19
- package/lib/metadataTypes/EmailSend.js +135 -35
- package/lib/metadataTypes/Event.js +95 -60
- package/lib/metadataTypes/FileLocation.js +17 -5
- package/lib/metadataTypes/FileTransfer.js +62 -26
- package/lib/metadataTypes/Filter.js +16 -4
- package/lib/metadataTypes/Folder.js +67 -39
- package/lib/metadataTypes/ImportFile.js +341 -91
- package/lib/metadataTypes/Journey.js +681 -324
- package/lib/metadataTypes/List.js +26 -14
- package/lib/metadataTypes/MetadataType.js +501 -265
- package/lib/metadataTypes/MobileCode.js +17 -5
- package/lib/metadataTypes/MobileKeyword.js +59 -43
- package/lib/metadataTypes/MobileMessage.js +67 -40
- package/lib/metadataTypes/Query.js +46 -38
- package/lib/metadataTypes/Role.js +34 -23
- package/lib/metadataTypes/Script.js +127 -39
- package/lib/metadataTypes/SendClassification.js +120 -5
- package/lib/metadataTypes/SenderProfile.js +179 -0
- package/lib/metadataTypes/TransactionalEmail.js +30 -17
- package/lib/metadataTypes/TransactionalMessage.js +25 -11
- package/lib/metadataTypes/TransactionalPush.js +24 -9
- package/lib/metadataTypes/TransactionalSMS.js +78 -46
- package/lib/metadataTypes/TriggeredSend.js +191 -43
- package/lib/metadataTypes/User.js +90 -62
- package/lib/metadataTypes/Verification.js +39 -21
- package/lib/metadataTypes/definitions/Asset.definition.js +3 -3
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +7 -1
- package/lib/metadataTypes/definitions/AttributeSet.definition.js +2 -2
- package/lib/metadataTypes/definitions/Automation.definition.js +4 -1
- package/lib/metadataTypes/definitions/Campaign.definition.js +1 -1
- package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -1
- package/lib/metadataTypes/definitions/DataExtension.definition.js +17 -1
- package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -1
- package/lib/metadataTypes/definitions/DataExtractType.definition.js +2 -2
- package/lib/metadataTypes/definitions/DeliveryProfile.definition.js +59 -0
- package/lib/metadataTypes/definitions/Discovery.definition.js +1 -1
- package/lib/metadataTypes/definitions/Email.definition.js +1 -1
- package/lib/metadataTypes/definitions/EmailSend.definition.js +19 -4
- package/lib/metadataTypes/definitions/Event.definition.js +140 -128
- package/lib/metadataTypes/definitions/FileLocation.definition.js +1 -1
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -1
- package/lib/metadataTypes/definitions/Folder.definition.js +25 -2
- package/lib/metadataTypes/definitions/ImportFile.definition.js +52 -7
- package/lib/metadataTypes/definitions/Journey.definition.js +12 -0
- package/lib/metadataTypes/definitions/List.definition.js +1 -1
- package/lib/metadataTypes/definitions/MobileCode.definition.js +1 -1
- package/lib/metadataTypes/definitions/MobileMessage.definition.js +11 -5
- package/lib/metadataTypes/definitions/Query.definition.js +6 -0
- package/lib/metadataTypes/definitions/Script.definition.js +14 -14
- package/lib/metadataTypes/definitions/SendClassification.definition.js +60 -20
- package/lib/metadataTypes/definitions/SenderProfile.definition.js +185 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -2
- package/lib/metadataTypes/definitions/TransactionalMessage.definition.js +69 -0
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +6 -0
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +6 -0
- package/lib/metadataTypes/definitions/TriggeredSend.definition.js +15 -4
- package/lib/metadataTypes/definitions/Verification.definition.js +1 -1
- package/lib/retrieveChangelog.js +7 -2
- package/lib/util/auth.js +56 -21
- package/lib/util/businessUnit.js +20 -2
- package/lib/util/cache.js +37 -18
- package/lib/util/cli.js +72 -29
- package/lib/util/config.js +27 -9
- package/lib/util/devops.js +45 -24
- package/lib/util/file.js +58 -33
- package/lib/util/init.config.js +55 -24
- package/lib/util/init.git.js +6 -6
- package/lib/util/init.js +36 -14
- package/lib/util/init.npm.js +2 -2
- package/lib/util/replaceContentBlockReference.js +278 -0
- package/lib/util/util.js +152 -54
- package/package.json +33 -30
- package/test/general.test.js +1327 -4
- package/test/mockRoot/.mcdevrc.json +26 -4
- package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testExisting_dataExtensionShared.dataExtension-meta.json +3 -4
- package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testNew_dataExtensionShared.dataExtension-meta.json +1 -4
- package/test/mockRoot/deploy/testInstance/_ParentBU_/query/testNew_query.query-meta.json +11 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/query/testNew_query.query-meta.sql +4 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset.asset-block-meta.html +12 -0
- package/test/mockRoot/deploy/testInstance/testBU/asset/block/testNew_asset.asset-block-meta.json +39 -0
- package/test/mockRoot/deploy/testInstance/testBU/automation/testExisting_automation.automation-meta.json +6 -6
- package/test/mockRoot/deploy/testInstance/testBU/automation/testNew_automation.automation-meta.json +7 -7
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testExisting_dataExtension.dataExtension-meta.json +3 -4
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testNew_dataExtension.dataExtension-meta.json +1 -4
- package/test/mockRoot/deploy/testInstance/testBU/emailSend/testExisting_emailSend.emailSend-meta.json +36 -0
- package/test/mockRoot/deploy/testInstance/testBU/emailSend/testNew_emailSend.emailSend-meta.json +36 -0
- package/test/mockRoot/deploy/testInstance/testBU/importFile/testExisting_importFile.importFile-meta.json +10 -4
- package/test/mockRoot/deploy/testInstance/testBU/importFile/testNew_importFile.importFile-meta.json +8 -4
- package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_journey_Quicksend.journey-meta.json +232 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json +2 -4
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.json +2 -4
- package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query_fixKeys.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testNew_query.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/sendClassification/testExisting_sendClassification.sendClassification-meta.json +8 -0
- package/test/mockRoot/deploy/testInstance/testBU/sendClassification/testNew_sendClassification.sendClassification-meta.json +8 -0
- package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testExisting_senderProfile.senderProfile-meta.json +14 -0
- package/test/mockRoot/deploy/testInstance/testBU/senderProfile/testNew_senderProfile.senderProfile-meta.json +14 -0
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testExisting_tpush.transactionalPush-meta.json +1 -3
- package/test/mockRoot/deploy/testInstance/testBU/transactionalPush/testNew_tpush.transactionalPush-meta.json +1 -3
- package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testExisting_tsms.transactionalSMS-meta.json +1 -2
- package/test/mockRoot/deploy/testInstance/testBU/transactionalSMS/testNew_tsms.transactionalSMS-meta.json +1 -2
- package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testExisting_triggeredSend.triggeredSend-meta.json +4 -5
- package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testNew_triggeredSend.triggeredSend-meta.json +4 -5
- package/test/mockRoot/deploy/testInstance/testBU/verification/testExisting_39f6a488-20eb-4ba0-b0b9.verification-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/verification/testNew_39f6a488-20eb-4ba0-b0b9.verification-meta.json +1 -1
- package/test/resourceFactory.js +118 -7
- package/test/resources/1111111/automation/v1/queries/get-response.json +6 -0
- package/test/resources/1111111/automation/v1/queries/post-response.json +18 -0
- package/test/resources/1111111/dataExtension/create-expected.json +4 -7
- package/test/resources/1111111/dataExtension/retrieve-expected.json +2 -4
- package/test/resources/1111111/dataExtension/update-expected.json +7 -7
- package/test/resources/1111111/dataExtension/update-response.xml +3 -1
- package/test/resources/1111111/dataFolder/retrieve-ContentType=queryactivity-response.xml +48 -0
- package/test/resources/1111111/query/patch_keySuffix-expected.json +11 -0
- package/test/resources/1111111/query/patch_keySuffix-expected.sql +4 -0
- package/test/resources/9999999/asset/block-1157-retrieve-expected.html +4 -3
- package/test/resources/9999999/asset/build-templatebasedemail-expected.json +81 -0
- package/test/resources/9999999/asset/build-templatebasedemail-html-expected.html +20 -0
- package/test/resources/9999999/asset/build-templatebasedemail-preheader-expected.amp +1 -0
- package/test/resources/9999999/asset/create-expected.json +18 -0
- package/test/resources/9999999/asset/resolveId-1234-notFound-expected.json +1 -0
- package/test/resources/9999999/asset/resolveId-1295064-noPath-expected.json +8 -0
- package/test/resources/9999999/asset/resolveId-1295064-withPath-expected.json +8 -0
- package/test/resources/9999999/asset/retrieve-templatebasedemail-expected.json +84 -0
- package/test/resources/9999999/asset/retrieve-templatebasedemail-html-expected.html +20 -0
- package/test/resources/9999999/asset/retrieve-templatebasedemail-preheader-expected.amp +1 -0
- package/test/resources/9999999/asset/template-templatebasedemail-expected.json +81 -0
- package/test/resources/9999999/asset/template-templatebasedemail-html-expected.html +20 -0
- package/test/resources/9999999/asset/template-templatebasedemail-preheader-expected.amp +1 -0
- package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-id-expected.html +33 -0
- package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-key-expected.html +33 -0
- package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-name-expected.html +35 -0
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-id-expected.amp +4 -0
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-key-expected.amp +4 -0
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-name-expected.amp +4 -0
- package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-id-expected.amp +4 -0
- package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-key-expected.amp +4 -0
- package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-name-expected.amp +4 -0
- package/test/resources/9999999/asset/v1/content/assets/1295064/get-response.json +1 -1
- package/test/resources/9999999/asset/v1/content/assets/5286/get-response.json +48 -0
- package/test/resources/9999999/asset/v1/content/assets/5289/get-response.json +198 -0
- package/test/resources/9999999/asset/v1/content/assets/808714/get-response.json +4 -3
- package/test/resources/9999999/asset/v1/content/assets/950143/delete-response.txt +1 -0
- package/test/resources/9999999/asset/v1/content/assets/get-response-customerKey=testExisting_asset.json +105 -0
- package/test/resources/9999999/asset/v1/content/assets/post-response.json +59 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN193,194,15.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN195,196,197,198,199,200,201,202,203,210,211,212,213,3.json +46 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1.json +32 -0
- package/test/resources/9999999/asset/v1/content/assets/query/{post-response.json → post-response-assetType.idIN207,208,209,5.json} +45 -47
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN214,4.json +35 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN215,216,217,218,219,220,221,222,223,224,225,226,227,228.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-customerKey=mcdev-issue-1157.json +46 -0
- package/test/resources/9999999/attributeGroup/retrieve-expected.json +1 -1
- package/test/resources/9999999/attributeSet/retrieve-expected.json +3 -3
- package/test/resources/9999999/automation/build-expected.json +7 -7
- package/test/resources/9999999/automation/create-expected.json +7 -7
- package/test/resources/9999999/automation/patch_fixKeys-pause-expected.json +6 -6
- package/test/resources/9999999/automation/patch_fixKeys-schedule-expected.json +6 -6
- package/test/resources/9999999/automation/retrieve-expected.json +7 -7
- package/test/resources/9999999/automation/template-expected.json +7 -7
- package/test/resources/9999999/automation/update-expected.json +6 -6
- package/test/resources/9999999/automation/v1/dataextracts/56c5370a-f988-4f36-b0ee-0f876573f6d7/delete-response.txt +1 -0
- package/test/resources/9999999/automation/v1/filetransfers/72c328ac-f5b0-4e37-91d3-a775666f15a6/delete-response.json +1 -0
- package/test/resources/9999999/automation/v1/imports/1ebf557b-372e-eb11-b81b-48df37d1dbd7/get-response.json +78 -0
- package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/delete-response.txt +0 -0
- package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/get-response.json +35 -0
- package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/patch-response.json +14 -10
- package/test/resources/9999999/automation/v1/imports/get-response.json +78 -1
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +1 -1
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeysSuffix/get-response.json +17 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeysSuffix/patch-response.json +18 -0
- package/test/resources/9999999/automation/v1/queries/abcde-607c-4940-afef-437965094dat/get-response.json +17 -0
- package/test/resources/9999999/automation/v1/queries/get-response.json +20 -3
- package/test/resources/9999999/automation/v1/scripts/39f6a488-20eb-4ba0-b0b9-023725b574e4/delete-response.txt +1 -0
- package/test/resources/9999999/automation/v1/scripts/get-response.json +3 -3
- package/test/resources/9999999/dataExtension/build-expected.json +3 -4
- package/test/resources/9999999/dataExtension/create-expected.json +1 -4
- package/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml +4 -4
- package/test/resources/9999999/dataExtension/retrieve-expected.json +3 -4
- package/test/resources/9999999/dataExtension/retrieve-response.xml +96 -1
- package/test/resources/9999999/dataExtension/template-expected.json +3 -4
- package/test/resources/9999999/dataExtension/update-expected.json +4 -3
- package/test/resources/9999999/dataExtension/update-response.xml +5 -3
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +72 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=userinitiatedsends-response.xml +48 -0
- package/test/resources/9999999/deliveryProfile/get-expected.json +7 -0
- package/test/resources/9999999/emailSend/build-expected.json +43 -0
- package/test/resources/9999999/emailSend/get-expected.json +43 -0
- package/test/resources/9999999/emailSend/patch-expected.json +41 -0
- package/test/resources/9999999/emailSend/post-expected.json +41 -0
- package/test/resources/9999999/emailSend/template-expected.json +43 -0
- package/test/resources/9999999/emailSendDefinition/create-response.xml +98 -0
- package/test/resources/9999999/emailSendDefinition/delete-response.xml +36 -0
- package/test/resources/9999999/emailSendDefinition/retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml +18 -8
- package/test/resources/9999999/emailSendDefinition/update-response.xml +97 -0
- package/test/resources/9999999/importDefinition/retrieve-CustomerKey=testExisting_importFile-response.xml +30 -0
- package/test/resources/9999999/importDefinition/retrieve-Name=testExisting_importFile-response.xml +30 -0
- package/test/resources/9999999/importFile/build-expected.json +11 -6
- package/test/resources/9999999/importFile/get-expected.json +13 -7
- package/test/resources/9999999/importFile/get-sms-expected.json +79 -0
- package/test/resources/9999999/importFile/patch-expected.json +12 -7
- package/test/resources/9999999/importFile/post-expected.json +8 -5
- package/test/resources/9999999/importFile/template-expected.json +10 -5
- package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +124 -0
- package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/delete-response.txt +1 -0
- package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/get-response.json +253 -0
- package/test/resources/9999999/interaction/v1/interactions/get-response.json +83 -779
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Multistep/get-response.json +457 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response.json +253 -0
- package/test/resources/9999999/interaction/v1/interactions/{key_0b76dccf-594c-b6dc-1acf-10c4493dcb84 → key_testExisting_temail}/get-response.json +5 -5
- package/test/resources/9999999/journey/build-expected.json +105 -449
- package/test/resources/9999999/journey/get-multistep-expected.json +413 -0
- package/test/resources/9999999/journey/get-quicksend-expected.json +232 -0
- package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +232 -0
- package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +232 -0
- package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +232 -0
- package/test/resources/9999999/journey/get-transactionalEmail-expected.json +211 -0
- package/test/resources/9999999/journey/template-expected.json +105 -449
- package/test/resources/9999999/legacy/v1/beta/messaging/deliverypolicy/get-response.json +15 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/imports/get-response.json +112 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTQ3Ojc4OjA/get-response.json +1 -1
- package/test/resources/9999999/legacy/v1/beta/object/NWQwdnhEU3dFZWVBekJRQzdISWl0QTo0NTow/get-response.json +12 -0
- package/test/resources/9999999/list/retrieve-response.xml +13 -0
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +1 -1
- package/test/resources/9999999/mobileMessage/build-expected.json +2 -5
- package/test/resources/9999999/mobileMessage/get-expected.json +2 -5
- package/test/resources/9999999/mobileMessage/post-create-expected.json +2 -4
- package/test/resources/9999999/mobileMessage/post-update-expected.json +2 -5
- package/test/resources/9999999/mobileMessage/template-expected.json +2 -5
- package/test/resources/9999999/query/build-expected.json +1 -1
- package/test/resources/9999999/query/build-expected.sql +2 -1
- package/test/resources/9999999/query/get-expected.json +1 -1
- package/test/resources/9999999/query/get-expected.sql +2 -1
- package/test/resources/9999999/query/get2-expected.json +1 -1
- package/test/resources/9999999/query/patch-expected.json +1 -1
- package/test/resources/9999999/query/patch_fixKeys-expected.json +1 -1
- package/test/resources/9999999/query/patch_fixKeysSuffix-expected.json +11 -0
- package/test/resources/9999999/query/patch_fixKeysSuffix-expected.sql +6 -0
- package/test/resources/9999999/query/post-expected.json +1 -1
- package/test/resources/9999999/query/template-expected.json +1 -1
- package/test/resources/9999999/query/template-expected.sql +2 -1
- package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query2ANDStatus=Active-response.xml +30 -0
- package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysSuffixANDStatus=Active-response.xml +30 -0
- package/test/resources/9999999/script/get_ampincluded-expected.html +5 -0
- package/test/resources/9999999/script/get_ampincluded-rcb-id-expected.html +5 -0
- package/test/resources/9999999/script/get_ampincluded-rcb-key-expected.html +5 -0
- package/test/resources/9999999/script/get_ampincluded-rcb-name-expected.html +5 -0
- package/test/resources/9999999/script/get_ampscript-expected.html +6 -1
- package/test/resources/9999999/script/get_ampscript-rcb-id-expected.html +8 -0
- package/test/resources/9999999/script/get_ampscript-rcb-key-expected.html +8 -0
- package/test/resources/9999999/script/get_ampscript-rcb-name-expected.html +10 -0
- package/test/resources/9999999/script/get_mixed-expected.html +5 -2
- package/test/resources/9999999/script/get_mixed-rcb-id-expected.html +12 -0
- package/test/resources/9999999/script/get_mixed-rcb-key-expected.html +12 -0
- package/test/resources/9999999/script/get_mixed-rcb-name-expected.html +14 -0
- package/test/resources/9999999/sendClassification/build-expected.json +8 -0
- package/test/resources/9999999/sendClassification/create-response.xml +51 -0
- package/test/resources/9999999/sendClassification/delete-response.xml +36 -0
- package/test/resources/9999999/sendClassification/get-expected.json +10 -0
- package/test/resources/9999999/sendClassification/patch-expected.json +8 -0
- package/test/resources/9999999/sendClassification/post-expected.json +8 -0
- package/test/resources/9999999/sendClassification/retrieve-response.xml +86 -0
- package/test/resources/9999999/sendClassification/template-expected.json +8 -0
- package/test/resources/9999999/sendClassification/update-response.xml +49 -0
- package/test/resources/9999999/senderProfile/build-expected.json +14 -0
- package/test/resources/9999999/senderProfile/create-response.xml +49 -0
- package/test/resources/9999999/senderProfile/delete-response.xml +36 -0
- package/test/resources/9999999/senderProfile/get-expected.json +16 -0
- package/test/resources/9999999/senderProfile/get-rcb-id-expected.json +16 -0
- package/test/resources/9999999/senderProfile/get-rcb-key-expected.json +16 -0
- package/test/resources/9999999/senderProfile/get-rcb-name-expected.json +16 -0
- package/test/resources/9999999/senderProfile/patch-expected.json +14 -0
- package/test/resources/9999999/senderProfile/post-expected.json +14 -0
- package/test/resources/9999999/senderProfile/retrieve-CustomerKey=Default-response.xml +44 -0
- package/test/resources/9999999/senderProfile/retrieve-CustomerKey=wrong-key-response.xml +26 -0
- package/test/resources/9999999/senderProfile/retrieve-response.xml +80 -0
- package/test/resources/9999999/senderProfile/template-expected.json +14 -0
- package/test/resources/9999999/senderProfile/update-response.xml +47 -0
- package/test/resources/9999999/transactionalEmail/build-expected.json +3 -3
- package/test/resources/9999999/transactionalEmail/get-expected.json +3 -3
- package/test/resources/9999999/transactionalEmail/patch-expected.json +3 -3
- package/test/resources/9999999/transactionalEmail/post-expected.json +2 -2
- package/test/resources/9999999/transactionalEmail/template-expected.json +3 -3
- package/test/resources/9999999/transactionalPush/build-expected.json +1 -1
- package/test/resources/9999999/transactionalPush/get-expected.json +1 -1
- package/test/resources/9999999/transactionalPush/patch-expected.json +1 -3
- package/test/resources/9999999/transactionalPush/post-expected.json +1 -3
- package/test/resources/9999999/transactionalPush/template-expected.json +1 -1
- package/test/resources/9999999/transactionalSMS/build-expected.amp +1 -1
- package/test/resources/9999999/transactionalSMS/build-expected.json +1 -2
- package/test/resources/9999999/transactionalSMS/get-expected.amp +1 -1
- package/test/resources/9999999/transactionalSMS/get-expected.json +1 -2
- package/test/resources/9999999/transactionalSMS/patch-expected.amp +1 -1
- package/test/resources/9999999/transactionalSMS/patch-expected.json +1 -2
- package/test/resources/9999999/transactionalSMS/post-expected.amp +1 -1
- package/test/resources/9999999/transactionalSMS/post-expected.json +1 -2
- package/test/resources/9999999/transactionalSMS/template-expected.amp +1 -1
- package/test/resources/9999999/transactionalSMS/template-expected.json +1 -2
- package/test/resources/9999999/triggeredSend/build-expected.json +5 -6
- package/test/resources/9999999/triggeredSend/get-expected.json +5 -6
- package/test/resources/9999999/triggeredSend/get-rcb-id-expected.json +29 -0
- package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +29 -0
- package/test/resources/9999999/triggeredSend/get-rcb-name-expected.json +29 -0
- package/test/resources/9999999/triggeredSend/patch-expected.json +5 -6
- package/test/resources/9999999/triggeredSend/post-expected.json +5 -6
- package/test/resources/9999999/triggeredSend/template-expected.json +5 -6
- package/test/resources/9999999/triggeredSendDefinition/create-response.xml +6 -1
- package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +53 -1
- package/test/resources/9999999/triggeredSendDefinition/update-response.xml +6 -1
- package/test/resources/9999999/verification/build-expected.json +1 -1
- package/test/resources/9999999/verification/get-expected.json +1 -1
- package/test/resources/9999999/verification/patch-expected.json +1 -1
- package/test/resources/9999999/verification/post-expected.json +1 -1
- package/test/resources/9999999/verification/template-expected.json +1 -1
- package/test/type.asset.test.js +733 -17
- package/test/type.attributeGroup.test.js +6 -2
- package/test/type.attributeSet.test.js +6 -2
- package/test/type.automation.test.js +174 -162
- package/test/type.dataExtension.test.js +41 -45
- package/test/type.dataExtract.test.js +22 -29
- package/test/type.deliveryProfile.test.js +45 -0
- package/test/type.emailSend.test.js +144 -0
- package/test/type.event.test.js +62 -0
- package/test/type.fileTransfer.test.js +21 -29
- package/test/type.importFile.test.js +61 -35
- package/test/type.journey.test.js +251 -45
- package/test/type.mobileKeyword.test.js +46 -54
- package/test/type.mobileMessage.test.js +28 -27
- package/test/type.query.test.js +303 -124
- package/test/type.script.test.js +288 -69
- package/test/type.sendClassification.test.js +156 -0
- package/test/type.senderProfile.test.js +254 -0
- package/test/type.transactionalEmail.test.js +15 -11
- package/test/type.transactionalPush.test.js +15 -11
- package/test/type.transactionalSMS.test.js +30 -23
- package/test/type.triggeredSend.test.js +130 -17
- package/test/type.user.test.js +22 -14
- package/test/type.verification.test.js +13 -10
- package/test/utils.js +76 -21
- package/tsconfig.json +21 -0
- package/types/mcdev.d.js +190 -66
- package/docs/dist/documentation.md +0 -8878
- package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_interaction.interaction-meta.json +0 -576
- package/test/mockRoot/deploy/testInstance/testBU/journey/testNew_interaction.interaction-meta.json +0 -266
- package/test/resources/9999999/interaction/v1/EventDefinitions/get-response.json +0 -43
- package/test/resources/9999999/interaction/v1/interactions/233d4413-922c-4568-85a5-e5cc77efc3be/delete-response.json +0 -1
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +0 -592
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/put-response.json +0 -592
- package/test/resources/9999999/interaction/v1/interactions/post-response.json +0 -280
- package/test/resources/9999999/journey/get-expected.json +0 -576
- package/test/resources/9999999/script/get_ampincluded-expected.ssjs +0 -5
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import auth from './auth.js';
|
|
4
|
+
import cache from './cache.js';
|
|
5
|
+
import { Util } from '../util/util.js';
|
|
6
|
+
|
|
7
|
+
import Folder from '../metadataTypes/Folder.js';
|
|
8
|
+
import Asset from '../metadataTypes/Asset.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {import('../../types/mcdev.d.js').AuthObject} AuthObject
|
|
12
|
+
* @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
|
|
13
|
+
* @typedef {import('../../types/mcdev.d.js').Cache} Cache
|
|
14
|
+
* @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
|
|
15
|
+
* @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
|
|
16
|
+
* @typedef {import('../../types/mcdev.d.js').DeltaPkgItem} DeltaPkgItem
|
|
17
|
+
* @typedef {import('../../types/mcdev.d.js').McdevLogger} McdevLogger
|
|
18
|
+
* @typedef {import('../../types/mcdev.d.js').Logger} Logger
|
|
19
|
+
* @typedef {import('../../types/mcdev.d.js').Mcdevrc} Mcdevrc
|
|
20
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
|
|
21
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
|
|
22
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
|
|
23
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
|
|
24
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
|
|
25
|
+
* @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeList} MultiMetadataTypeList
|
|
26
|
+
* @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeMap} MultiMetadataTypeMap
|
|
27
|
+
* @typedef {import('../../types/mcdev.d.js').SkipInteraction} SkipInteraction
|
|
28
|
+
* @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
|
|
29
|
+
* @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
|
|
30
|
+
* @typedef {import('../../types/mcdev.d.js').TypeKeyCombo} TypeKeyCombo
|
|
31
|
+
* @typedef {import('../../types/mcdev.d.js').SDKError} SDKError
|
|
32
|
+
* @typedef {import('../../types/mcdev.d.js').AssetItemSimple} AssetItemSimple
|
|
33
|
+
* @typedef {import('../../types/mcdev.d.js').AssetItemSimpleMap} AssetItemSimpleMap
|
|
34
|
+
* @typedef {import('../../types/mcdev.d.js').AssetItemIdSimpleMap} AssetItemIdSimpleMap
|
|
35
|
+
* @typedef {import('../../types/mcdev.d.js').ContentBlockConversionTypes} ContentBlockConversionTypes
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Util that contains logger and simple util methods
|
|
40
|
+
*/
|
|
41
|
+
export default class ReplaceContentBlockReference {
|
|
42
|
+
/** @type {{id: AssetItemIdSimpleMap, key: AssetItemSimpleMap, name: AssetItemSimpleMap}} */
|
|
43
|
+
static assetCacheMap = {
|
|
44
|
+
id: {},
|
|
45
|
+
key: {},
|
|
46
|
+
name: {},
|
|
47
|
+
};
|
|
48
|
+
/** @type {{id: RegExp[], key: RegExp[], name: RegExp[]}} */
|
|
49
|
+
static #regexBy = {
|
|
50
|
+
// TODO: handle cases in which variables or functions are passed into ContentBlockByX
|
|
51
|
+
|
|
52
|
+
amp: {
|
|
53
|
+
id: [
|
|
54
|
+
/ContentBlockById\(\s*"([0-9]+)"\s*\)/gim,
|
|
55
|
+
/ContentBlockById\(\s*'([0-9]+)'\s*\)/gim,
|
|
56
|
+
/ContentBlockById\(\s*([0-9]+)\s*\)/gim,
|
|
57
|
+
],
|
|
58
|
+
key: [
|
|
59
|
+
/ContentBlockByKey\(\s*"([a-z0-9-/._]+)"\s*\)/gim,
|
|
60
|
+
/ContentBlockByKey\(\s*'([a-z0-9-/._]+)'\s*\)/gim,
|
|
61
|
+
],
|
|
62
|
+
name: [
|
|
63
|
+
/ContentBlockByName\(\s*"([ a-z0-9-\\._)(]+)"\s*\)/gim,
|
|
64
|
+
/ContentBlockByName\(\s*'([ a-z0-9-\\._)(]+)'\s*\)/gim,
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
ssjs: {
|
|
68
|
+
id: [
|
|
69
|
+
/Platform.Function.ContentBlockById\(\s*"([0-9]+)"\s*\)/gim,
|
|
70
|
+
/Platform.Function.ContentBlockById\(\s*'([0-9]+)'\s*\)/gim,
|
|
71
|
+
/Platform.Function.ContentBlockById\(\s*([0-9]+)\s*\)/gim,
|
|
72
|
+
],
|
|
73
|
+
key: [
|
|
74
|
+
/Platform.Function.ContentBlockByKey\(\s*"([a-z0-9-/._]+)"\s*\)/gim,
|
|
75
|
+
/Platform.Function.ContentBlockByKey\(\s*'([a-z0-9-/._]+)'\s*\)/gim,
|
|
76
|
+
],
|
|
77
|
+
name: [
|
|
78
|
+
/Platform.Function.ContentBlockByName\(\s*"([ a-z0-9-\\._)(]+)"\s*\)/gim,
|
|
79
|
+
/Platform.Function.ContentBlockByName\(\s*'([ a-z0-9-\\._)(]+)'\s*\)/gim,
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* used to equalize the reference in the code to whatever is set in the "to" field
|
|
86
|
+
*
|
|
87
|
+
* @param {string} str full code string
|
|
88
|
+
* @param {string} parentName name of the object that was passed in; used in error message only
|
|
89
|
+
* @param {ContentBlockConversionTypes[]} [fromList] what to replace
|
|
90
|
+
* @param {ContentBlockConversionTypes} [to] what to replace with
|
|
91
|
+
* @returns {string} replaced string
|
|
92
|
+
*/
|
|
93
|
+
static replaceReference(str, parentName, fromList, to) {
|
|
94
|
+
if (!str) {
|
|
95
|
+
const ex = new Error('No string provided');
|
|
96
|
+
ex.code = 200;
|
|
97
|
+
throw ex;
|
|
98
|
+
}
|
|
99
|
+
fromList ||= Util.OPTIONS.referenceFrom;
|
|
100
|
+
to ||= Util.OPTIONS.referenceTo;
|
|
101
|
+
let result = str;
|
|
102
|
+
let changes = 0;
|
|
103
|
+
const languages = [
|
|
104
|
+
{ name: 'ssjs', isSsjs: true },
|
|
105
|
+
{ name: 'amp', isSsjs: false },
|
|
106
|
+
];
|
|
107
|
+
for (const from of fromList) {
|
|
108
|
+
for (const lang of languages) {
|
|
109
|
+
for (const regex of this.#regexBy[lang.name][from]) {
|
|
110
|
+
result = result.replaceAll(regex, (match, identifier) => {
|
|
111
|
+
const referencedAsset = this.#getAssetBy(
|
|
112
|
+
from,
|
|
113
|
+
identifier,
|
|
114
|
+
parentName,
|
|
115
|
+
lang.isSsjs
|
|
116
|
+
);
|
|
117
|
+
if (referencedAsset && referencedAsset[to]) {
|
|
118
|
+
// make sure we not only found the asset but also have a replacement for it (folder issue could block swap to ContentBlockByName)
|
|
119
|
+
changes++;
|
|
120
|
+
return this.#replaceWith(referencedAsset, to, lang.isSsjs);
|
|
121
|
+
} else {
|
|
122
|
+
if (referencedAsset && !referencedAsset[to]) {
|
|
123
|
+
// this is expected to only happen if to=="name"
|
|
124
|
+
Util.logger.error(
|
|
125
|
+
` - ${parentName}: Asset ${from} ${identifier} has no valid ${to} reference`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
return match;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (!changes) {
|
|
135
|
+
const ex = new Error('No changes made to the code.');
|
|
136
|
+
ex.code = 200;
|
|
137
|
+
throw ex;
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
*
|
|
143
|
+
* @private
|
|
144
|
+
* @param {ContentBlockConversionTypes} from replace with
|
|
145
|
+
* @param {string|number} identifier id, key or name of asset
|
|
146
|
+
* @param {string} parentName name of the object that was passed in; used in error message only
|
|
147
|
+
* @param {boolean} [isSsjs] replaces backslashes with double backslashes in name if true
|
|
148
|
+
* @returns {AssetItemSimple} asset object
|
|
149
|
+
*/
|
|
150
|
+
static #getAssetBy(from, identifier, parentName, isSsjs = false) {
|
|
151
|
+
let reference;
|
|
152
|
+
switch (from) {
|
|
153
|
+
case 'id': {
|
|
154
|
+
reference = ReplaceContentBlockReference.assetCacheMap.id[identifier];
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case 'key': {
|
|
158
|
+
reference = ReplaceContentBlockReference.assetCacheMap.key[identifier];
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case 'name': {
|
|
162
|
+
if (isSsjs) {
|
|
163
|
+
identifier = identifier.replaceAll('\\\\', '\\');
|
|
164
|
+
}
|
|
165
|
+
reference = ReplaceContentBlockReference.assetCacheMap.name[identifier];
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (!reference) {
|
|
170
|
+
Util.logger.error(` - ${parentName}: Asset not found for ${from} ${identifier}`);
|
|
171
|
+
}
|
|
172
|
+
return reference;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
*
|
|
177
|
+
* @param {AssetItemSimple} asset asset object
|
|
178
|
+
* @param {ContentBlockConversionTypes} to replace with
|
|
179
|
+
* @param {boolean} [isSsjs] replaces backslashes with double backslashes in name if true
|
|
180
|
+
* @returns {string} replaced string
|
|
181
|
+
*/
|
|
182
|
+
static #replaceWith(asset, to, isSsjs = false) {
|
|
183
|
+
switch (to) {
|
|
184
|
+
case 'id': {
|
|
185
|
+
return `${isSsjs ? 'Platform.Function.' : ''}ContentBlockById(${asset.id})`;
|
|
186
|
+
}
|
|
187
|
+
case 'key': {
|
|
188
|
+
return `${isSsjs ? 'Platform.Function.' : ''}ContentBlockByKey("${asset.key}")`;
|
|
189
|
+
}
|
|
190
|
+
case 'name': {
|
|
191
|
+
return `${isSsjs ? 'Platform.Function.' : ''}ContentBlockByName("${isSsjs ? asset.name.replaceAll('\\', '\\\\') : asset.name}")`;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
*
|
|
198
|
+
* @param {Mcdevrc} properties properties for auth
|
|
199
|
+
saved
|
|
200
|
+
* @param {BuObject} buObject properties for auth
|
|
201
|
+
*/
|
|
202
|
+
static async createCacheMap(properties, buObject) {
|
|
203
|
+
const client = auth.getSDK(buObject);
|
|
204
|
+
|
|
205
|
+
if (!cache.getCache()) {
|
|
206
|
+
cache.initCache(buObject);
|
|
207
|
+
}
|
|
208
|
+
Util.logger.info('Caching folders');
|
|
209
|
+
Folder.buObject = buObject;
|
|
210
|
+
Folder.properties = properties;
|
|
211
|
+
Folder.client = client;
|
|
212
|
+
const resultFolder = await Folder.retrieveForCache(null, ['asset', 'asset-shared']);
|
|
213
|
+
cache.setMetadata('folder', resultFolder.metadata);
|
|
214
|
+
|
|
215
|
+
Util.logger.info('Caching assets');
|
|
216
|
+
Asset.buObject = buObject;
|
|
217
|
+
Asset.properties = properties;
|
|
218
|
+
Asset.client = client;
|
|
219
|
+
const resultAsset = await Asset.retrieveForCache(undefined, [
|
|
220
|
+
'asset',
|
|
221
|
+
'code',
|
|
222
|
+
'textfile',
|
|
223
|
+
'block',
|
|
224
|
+
'other',
|
|
225
|
+
]);
|
|
226
|
+
for (const element of Object.values(resultAsset.metadata)) {
|
|
227
|
+
// ensure we got the folder-path in our cache
|
|
228
|
+
Asset.setFolderPath(element);
|
|
229
|
+
|
|
230
|
+
// create actual cache map
|
|
231
|
+
const simpleAsset = {
|
|
232
|
+
id: element.id,
|
|
233
|
+
key: element.customerKey,
|
|
234
|
+
name: element.r__folder_Path
|
|
235
|
+
? element.r__folder_Path.replaceAll('/', '\\') + '\\' + element.name
|
|
236
|
+
: null,
|
|
237
|
+
};
|
|
238
|
+
// ! note that ContentBlockByName expects backslashes between folders and file name, not forward slashes
|
|
239
|
+
ReplaceContentBlockReference.assetCacheMap.id[simpleAsset.id] = simpleAsset;
|
|
240
|
+
ReplaceContentBlockReference.assetCacheMap.key[simpleAsset.key] = simpleAsset;
|
|
241
|
+
if (simpleAsset.name) {
|
|
242
|
+
// while asset without path could still be found via search, it would no longer referencable via ContentBlockByName
|
|
243
|
+
ReplaceContentBlockReference.assetCacheMap.name[simpleAsset.name] = simpleAsset;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
cache.setMetadata('asset', resultAsset.metadata);
|
|
248
|
+
|
|
249
|
+
Util.logger.info('Caching shared assets');
|
|
250
|
+
const resultAssetShared = await Asset.retrieveForCache(
|
|
251
|
+
undefined,
|
|
252
|
+
['asset', 'code', 'textfile', 'block', 'other'],
|
|
253
|
+
true
|
|
254
|
+
);
|
|
255
|
+
for (const element of Object.values(resultAssetShared.metadata)) {
|
|
256
|
+
// ensure we got the folder-path in our cache
|
|
257
|
+
Asset.setFolderPath(element);
|
|
258
|
+
|
|
259
|
+
// create actual cache map
|
|
260
|
+
const simpleAsset = {
|
|
261
|
+
id: element.id,
|
|
262
|
+
key: element.customerKey,
|
|
263
|
+
name: element.r__folder_Path
|
|
264
|
+
? element.r__folder_Path.replaceAll('/', '\\') + '\\' + element.name
|
|
265
|
+
: null,
|
|
266
|
+
};
|
|
267
|
+
// ! note that ContentBlockByName expects backslashes between folders and file name, not forward slashes
|
|
268
|
+
ReplaceContentBlockReference.assetCacheMap.id[simpleAsset.id] = simpleAsset;
|
|
269
|
+
ReplaceContentBlockReference.assetCacheMap.key[simpleAsset.key] = simpleAsset;
|
|
270
|
+
if (simpleAsset.name) {
|
|
271
|
+
// while asset without path could still be found via search, it would no longer referencable via ContentBlockByName
|
|
272
|
+
ReplaceContentBlockReference.assetCacheMap.name[simpleAsset.name] = simpleAsset;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// lets not put the shared assets into our cache to avoid confusing the system...
|
|
277
|
+
}
|
|
278
|
+
}
|
package/lib/util/util.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
import TYPE from '../../types/mcdev.d.js';
|
|
4
3
|
import MetadataDefinitions from './../MetadataTypeDefinitions.js';
|
|
5
4
|
import process from 'node:process';
|
|
6
5
|
import toposort from 'toposort';
|
|
@@ -12,17 +11,45 @@ import { readJsonSync } from 'fs-extra/esm';
|
|
|
12
11
|
import { fileURLToPath } from 'node:url';
|
|
13
12
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
14
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {import('../../types/mcdev.d.js').AuthObject} AuthObject
|
|
16
|
+
* @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
|
|
17
|
+
* @typedef {import('../../types/mcdev.d.js').Cache} Cache
|
|
18
|
+
* @typedef {import('../../types/mcdev.d.js').CodeExtract} CodeExtract
|
|
19
|
+
* @typedef {import('../../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
|
|
20
|
+
* @typedef {import('../../types/mcdev.d.js').DeltaPkgItem} DeltaPkgItem
|
|
21
|
+
* @typedef {import('../../types/mcdev.d.js').McdevLogger} McdevLogger
|
|
22
|
+
* @typedef {import('../../types/mcdev.d.js').Logger} Logger
|
|
23
|
+
* @typedef {import('../../types/mcdev.d.js').Mcdevrc} Mcdevrc
|
|
24
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
|
|
25
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
|
|
26
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
|
|
27
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
|
|
28
|
+
* @typedef {import('../../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
|
|
29
|
+
* @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeList} MultiMetadataTypeList
|
|
30
|
+
* @typedef {import('../../types/mcdev.d.js').MultiMetadataTypeMap} MultiMetadataTypeMap
|
|
31
|
+
* @typedef {import('../../types/mcdev.d.js').SkipInteraction} SkipInteraction
|
|
32
|
+
* @typedef {import('../../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
|
|
33
|
+
* @typedef {import('../../types/mcdev.d.js').TemplateMap} TemplateMap
|
|
34
|
+
* @typedef {import('../../types/mcdev.d.js').TypeKeyCombo} TypeKeyCombo
|
|
35
|
+
* @typedef {import('../../types/mcdev.d.js').SDKError} SDKError
|
|
36
|
+
*/
|
|
37
|
+
|
|
15
38
|
/**
|
|
16
39
|
* Util that contains logger and simple util methods
|
|
17
40
|
*/
|
|
18
41
|
export const Util = {
|
|
42
|
+
isRunViaVSCodeExtension:
|
|
43
|
+
process.env.VSCODE_AMD_ENTRYPOINT === 'vs/workbench/api/node/extensionHostProcess' || // run via VSCode extension
|
|
44
|
+
process.env.VSCODE_CRASH_REPORTER_PROCESS_TYPE === 'extensionHost',
|
|
19
45
|
authFileName: '.mcdev-auth.json',
|
|
20
46
|
boilerplateDirectory: '../../boilerplate',
|
|
21
47
|
configFileName: '.mcdevrc.json',
|
|
48
|
+
defaultGitBranch: 'main',
|
|
22
49
|
parentBuName: '_ParentBU_',
|
|
23
50
|
standardizedSplitChar: '/',
|
|
24
|
-
/** @type {
|
|
25
|
-
skipInteraction:
|
|
51
|
+
/** @type {SkipInteraction} */
|
|
52
|
+
skipInteraction: null,
|
|
26
53
|
packageJsonMcdev: readJsonSync(path.join(__dirname, '../../package.json')),
|
|
27
54
|
OPTIONS: {},
|
|
28
55
|
changedKeysMap: {},
|
|
@@ -68,7 +95,7 @@ export const Util = {
|
|
|
68
95
|
* check if a market name exists in current mcdev config
|
|
69
96
|
*
|
|
70
97
|
* @param {string} market market localizations
|
|
71
|
-
* @param {
|
|
98
|
+
* @param {Mcdevrc} properties local mcdev config
|
|
72
99
|
* @returns {boolean} found market or not
|
|
73
100
|
*/
|
|
74
101
|
checkMarket(market, properties) {
|
|
@@ -89,7 +116,7 @@ export const Util = {
|
|
|
89
116
|
* ensure provided MarketList exists and it's content including markets and BUs checks out
|
|
90
117
|
*
|
|
91
118
|
* @param {string} mlName name of marketList
|
|
92
|
-
* @param {
|
|
119
|
+
* @param {Mcdevrc} properties General configuration to be used in retrieve
|
|
93
120
|
*/
|
|
94
121
|
verifyMarketList(mlName, properties) {
|
|
95
122
|
if (properties.marketList[mlName]) {
|
|
@@ -135,7 +162,7 @@ export const Util = {
|
|
|
135
162
|
* @returns {void}
|
|
136
163
|
*/
|
|
137
164
|
signalFatalError() {
|
|
138
|
-
Util.logger.debug('Util.signalFataError() sets process.exitCode = 1 unless already set');
|
|
165
|
+
// Util.logger.debug('Util.signalFataError() sets process.exitCode = 1 unless already set');
|
|
139
166
|
process.exitCode ||= 1;
|
|
140
167
|
},
|
|
141
168
|
/**
|
|
@@ -162,12 +189,12 @@ export const Util = {
|
|
|
162
189
|
/**
|
|
163
190
|
* helper for Mcdev.retrieve, Mcdev.retrieveAsTemplate and Mcdev.deploy
|
|
164
191
|
*
|
|
165
|
-
* @param {
|
|
192
|
+
* @param {string} selectedType type or type-subtype
|
|
166
193
|
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
|
|
167
194
|
* @returns {boolean} type ok or not
|
|
168
195
|
*/
|
|
169
196
|
_isValidType(selectedType, handleOutside) {
|
|
170
|
-
const
|
|
197
|
+
const { type, subType } = Util.getTypeAndSubType(selectedType);
|
|
171
198
|
if (type && !MetadataDefinitions[type]) {
|
|
172
199
|
if (!handleOutside) {
|
|
173
200
|
Util.logger.error(`:: '${type}' is not a valid metadata type`);
|
|
@@ -186,27 +213,51 @@ export const Util = {
|
|
|
186
213
|
return true;
|
|
187
214
|
},
|
|
188
215
|
|
|
216
|
+
/**
|
|
217
|
+
* helper for Mcdev.retrieve, Mcdev.retrieveAsTemplate and Mcdev.deploy
|
|
218
|
+
*
|
|
219
|
+
* @param {Mcdevrc} properties javascript object in .mcdevrc.json
|
|
220
|
+
* @param {string} businessUnit name of BU
|
|
221
|
+
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
|
|
222
|
+
* @returns {boolean} bu found or not
|
|
223
|
+
*/
|
|
224
|
+
_isValidBU(properties, businessUnit, handleOutside) {
|
|
225
|
+
const [cred, bu] = businessUnit ? businessUnit.split('/') : [null, null];
|
|
226
|
+
if (!properties.credentials[cred]) {
|
|
227
|
+
if (!handleOutside) {
|
|
228
|
+
Util.logger.error(`Credential not found`);
|
|
229
|
+
}
|
|
230
|
+
return false;
|
|
231
|
+
} else if (!properties.credentials[cred].businessUnits[bu]) {
|
|
232
|
+
if (!handleOutside) {
|
|
233
|
+
Util.logger.error(`BU not found in credential`);
|
|
234
|
+
}
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
return true;
|
|
238
|
+
},
|
|
239
|
+
|
|
189
240
|
/**
|
|
190
241
|
* helper that deals with extracting type and subtype
|
|
191
242
|
*
|
|
192
243
|
* @param {string} selectedType "type" or "type-subtype"
|
|
193
|
-
* @returns {string
|
|
244
|
+
* @returns {{type:string, subType:string}} first elem is type, second elem is subType
|
|
194
245
|
*/
|
|
195
246
|
getTypeAndSubType(selectedType) {
|
|
196
247
|
if (selectedType) {
|
|
197
248
|
const temp = selectedType.split('-');
|
|
198
249
|
const type = temp.shift(); // remove first item which is the main typ
|
|
199
250
|
const subType = temp.join('-'); // subType can include "-"
|
|
200
|
-
return
|
|
251
|
+
return { type, subType };
|
|
201
252
|
} else {
|
|
202
|
-
return
|
|
253
|
+
return { type: null, subType: null };
|
|
203
254
|
}
|
|
204
255
|
},
|
|
205
256
|
|
|
206
257
|
/**
|
|
207
258
|
* helper for getDefaultProperties()
|
|
208
259
|
*
|
|
209
|
-
* @returns {
|
|
260
|
+
* @returns {string[]} type choices
|
|
210
261
|
*/
|
|
211
262
|
getRetrieveTypeChoices() {
|
|
212
263
|
const typeChoices = [];
|
|
@@ -251,8 +302,9 @@ export const Util = {
|
|
|
251
302
|
// silly: 6
|
|
252
303
|
// }
|
|
253
304
|
if (
|
|
254
|
-
|
|
255
|
-
process.env.
|
|
305
|
+
this.isRunViaVSCodeExtension || // run via VSCode extension
|
|
306
|
+
process.env.FORK_PROCESS_ID || // run via Git-Fork
|
|
307
|
+
process.env.PATH.toLowerCase().includes('sourcetree') // run via Atlassian SourceTree
|
|
256
308
|
) {
|
|
257
309
|
Util.OPTIONS.noLogColors = true;
|
|
258
310
|
}
|
|
@@ -287,20 +339,23 @@ export const Util = {
|
|
|
287
339
|
)
|
|
288
340
|
),
|
|
289
341
|
});
|
|
290
|
-
|
|
291
|
-
//
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
winston.format.
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
342
|
+
if (Util.OPTIONS.errorLog) {
|
|
343
|
+
// used by CI/CD solutions like Copado to quickly show the error message to admins/users
|
|
344
|
+
transports.fileError = new winston.transports.File({
|
|
345
|
+
// Write logs to additional error-logfile for better visibility of errors
|
|
346
|
+
filename: 'logs/' + logFileName + '-errors.log',
|
|
347
|
+
level: 'error', // only log errors
|
|
348
|
+
lazy: true, // if true, log files will be created on demand, not at the initialization time.
|
|
349
|
+
format: winston.format.combine(
|
|
350
|
+
winston.format.uncolorize(),
|
|
351
|
+
winston.format.timestamp({ format: 'HH:mm:ss.SSS' }),
|
|
352
|
+
winston.format.simple(),
|
|
353
|
+
winston.format.printf(
|
|
354
|
+
(info) => `${info.timestamp} ${info.level}: ${info.message}`
|
|
355
|
+
)
|
|
356
|
+
),
|
|
357
|
+
});
|
|
358
|
+
}
|
|
304
359
|
}
|
|
305
360
|
return transports;
|
|
306
361
|
},
|
|
@@ -309,7 +364,7 @@ export const Util = {
|
|
|
309
364
|
/**
|
|
310
365
|
* Logger that creates timestamped log file in 'logs/' directory
|
|
311
366
|
*
|
|
312
|
-
* @type {
|
|
367
|
+
* @type {Logger}
|
|
313
368
|
*/
|
|
314
369
|
logger: null,
|
|
315
370
|
/**
|
|
@@ -339,11 +394,12 @@ export const Util = {
|
|
|
339
394
|
transports: Object.values(Util.loggerTransports),
|
|
340
395
|
});
|
|
341
396
|
const winstonError = myWinston.error;
|
|
397
|
+
/** @type {McdevLogger} */
|
|
342
398
|
const winstonExtension = {
|
|
343
399
|
/**
|
|
344
400
|
* helper that prints better stack trace for errors
|
|
345
401
|
*
|
|
346
|
-
* @param {
|
|
402
|
+
* @param {SDKError} ex the error
|
|
347
403
|
* @param {string} [message] optional custom message to be printed as error together with the exception's message
|
|
348
404
|
* @returns {void}
|
|
349
405
|
*/
|
|
@@ -428,7 +484,7 @@ export const Util = {
|
|
|
428
484
|
* key-value pairs (obj)
|
|
429
485
|
*
|
|
430
486
|
* @param {string | object} str JSON object or its stringified version, which has values to be replaced
|
|
431
|
-
* @param {
|
|
487
|
+
* @param {TemplateMap} obj key value object which contains keys to be replaced and values to be replaced with
|
|
432
488
|
* @returns {string | object} replaced version of str
|
|
433
489
|
*/
|
|
434
490
|
replaceByObject: function (str, obj) {
|
|
@@ -448,7 +504,7 @@ export const Util = {
|
|
|
448
504
|
|
|
449
505
|
sortable.sort((a, b) => b[1].length - a[1].length);
|
|
450
506
|
for (const pair of sortable) {
|
|
451
|
-
const escVal = pair[1].toString().replaceAll(/[-/\\^$*+?.()|[\]{}]/g,
|
|
507
|
+
const escVal = pair[1].toString().replaceAll(/[-/\\^$*+?.()|[\]{}]/g, String.raw`\$&`);
|
|
452
508
|
const regString = new RegExp(escVal, 'g');
|
|
453
509
|
str = str.replace(regString, '{{{' + pair[0] + '}}}');
|
|
454
510
|
}
|
|
@@ -462,7 +518,7 @@ export const Util = {
|
|
|
462
518
|
* get key of an object based on the first matching value
|
|
463
519
|
*
|
|
464
520
|
* @param {object} objs object of objects to be searched
|
|
465
|
-
* @param {string} val value to be searched for
|
|
521
|
+
* @param {string | number} val value to be searched for
|
|
466
522
|
* @returns {string} key
|
|
467
523
|
*/
|
|
468
524
|
inverseGet: function (objs, val) {
|
|
@@ -548,40 +604,45 @@ export const Util = {
|
|
|
548
604
|
|
|
549
605
|
// sort list & remove the undefined dependencies
|
|
550
606
|
const flatList = toposort(dependencies).filter((a) => !!a);
|
|
551
|
-
|
|
607
|
+
/** @type {Object.<string, null | Set.<string>>} */
|
|
608
|
+
const setList = {};
|
|
552
609
|
// group subtypes per type
|
|
553
|
-
for (const
|
|
554
|
-
if (
|
|
555
|
-
const
|
|
556
|
-
if (
|
|
610
|
+
for (const flatType of flatList) {
|
|
611
|
+
if (flatType.includes('-')) {
|
|
612
|
+
const { type, subType } = Util.getTypeAndSubType(flatType);
|
|
613
|
+
if (setList[type] === null) {
|
|
557
614
|
// if main type is already required, then don't filter by subtypes
|
|
558
615
|
continue;
|
|
559
|
-
} else if (
|
|
616
|
+
} else if (setList[type] && subType) {
|
|
560
617
|
// add another subtype to the set
|
|
561
|
-
|
|
618
|
+
setList[type].add(subType);
|
|
562
619
|
continue;
|
|
563
620
|
} else {
|
|
564
621
|
// create a new set with the first subtype; subKey will be always set here
|
|
565
|
-
|
|
622
|
+
setList[type] = new Set([subType]);
|
|
566
623
|
}
|
|
567
|
-
if (subTypeDeps[
|
|
624
|
+
if (subTypeDeps[type]) {
|
|
568
625
|
// check if there are depndent subtypes that need to be added
|
|
569
|
-
|
|
626
|
+
/** @type {string[]} */
|
|
627
|
+
const temp = [...subTypeDeps[type]].map((a) => {
|
|
570
628
|
const temp = a.split('-');
|
|
571
629
|
temp.shift(); // remove first item which is the main type
|
|
572
630
|
return temp.join('-'); // subType can include "-"
|
|
573
631
|
});
|
|
574
|
-
|
|
632
|
+
for (const item of temp) {
|
|
633
|
+
setList[type].add(item);
|
|
634
|
+
}
|
|
575
635
|
}
|
|
576
636
|
} else {
|
|
577
|
-
|
|
637
|
+
setList[flatType] = null;
|
|
578
638
|
}
|
|
579
639
|
}
|
|
580
640
|
// convert sets into arrays
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
641
|
+
/** @type {Object.<string, string[]>} */
|
|
642
|
+
const finalList = {};
|
|
643
|
+
|
|
644
|
+
for (const type of Object.keys(setList)) {
|
|
645
|
+
finalList[type] = setList[type] instanceof Set ? [...setList[type]] : null;
|
|
585
646
|
}
|
|
586
647
|
|
|
587
648
|
return finalList;
|
|
@@ -630,10 +691,10 @@ export const Util = {
|
|
|
630
691
|
/**
|
|
631
692
|
* standardize check to ensure only one result is returned from template search
|
|
632
693
|
*
|
|
633
|
-
* @param {
|
|
694
|
+
* @param {MetadataTypeItem[]} results array of metadata
|
|
634
695
|
* @param {string} keyToSearch the field which contains the searched value
|
|
635
696
|
* @param {string} searchValue the value which is being looked for
|
|
636
|
-
* @returns {
|
|
697
|
+
* @returns {MetadataTypeItem} metadata to be used in building template
|
|
637
698
|
*/
|
|
638
699
|
templateSearchResult(results, keyToSearch, searchValue) {
|
|
639
700
|
const matching = results.filter((item) => item[keyToSearch] === searchValue);
|
|
@@ -838,8 +899,8 @@ export const Util = {
|
|
|
838
899
|
}
|
|
839
900
|
// Remove special chars
|
|
840
901
|
search = search.replaceAll(
|
|
841
|
-
new RegExp(
|
|
842
|
-
|
|
902
|
+
new RegExp(String.raw`([\.\\\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:\-])`, 'g'),
|
|
903
|
+
String.raw`\$1`
|
|
843
904
|
);
|
|
844
905
|
// Replace % and _ with equivalent regex
|
|
845
906
|
search = search.replaceAll('%', '.*').replaceAll('_', '.');
|
|
@@ -849,7 +910,7 @@ export const Util = {
|
|
|
849
910
|
/**
|
|
850
911
|
* returns true if no LIKE filter is defined or if all filters match
|
|
851
912
|
*
|
|
852
|
-
* @param {
|
|
913
|
+
* @param {MetadataTypeItem} metadata a single metadata item
|
|
853
914
|
* @param {object} [filters] only used in recursive calls
|
|
854
915
|
* @returns {boolean} true if no LIKE filter is defined or if all filters match
|
|
855
916
|
*/
|
|
@@ -892,6 +953,43 @@ export const Util = {
|
|
|
892
953
|
capitalizeFirstLetter(str) {
|
|
893
954
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
894
955
|
},
|
|
956
|
+
/**
|
|
957
|
+
* helper for Retriever and Deployer class
|
|
958
|
+
*
|
|
959
|
+
* @param {string[]} typeArr -
|
|
960
|
+
* @param {string[]} keyArr -
|
|
961
|
+
* @param {boolean} [returnEmpty] returns array with null element if false/not set; Retriever needs this to be false; Deployer needs it to be true
|
|
962
|
+
* @returns {TypeKeyCombo} -
|
|
963
|
+
*/
|
|
964
|
+
createTypeKeyCombo(typeArr, keyArr, returnEmpty = false) {
|
|
965
|
+
if (!keyArr || (Array.isArray(keyArr) && !keyArr.length)) {
|
|
966
|
+
// no keys were provided, ensure we retrieve all
|
|
967
|
+
keyArr = returnEmpty ? null : [null];
|
|
968
|
+
}
|
|
969
|
+
/** @type {TypeKeyCombo} */
|
|
970
|
+
const typeKeyMap = {};
|
|
971
|
+
// no keys or array of keys was provided (likely called via CLI or to retrieve all)
|
|
972
|
+
// transform into TypeKeyCombo to iterate over it
|
|
973
|
+
for (const type of typeArr) {
|
|
974
|
+
typeKeyMap[type] = keyArr;
|
|
975
|
+
}
|
|
976
|
+
return typeKeyMap;
|
|
977
|
+
},
|
|
978
|
+
/**
|
|
979
|
+
* async version of Array.find()
|
|
980
|
+
* returns the first element in the provided array that satisfies the provided testin function
|
|
981
|
+
*
|
|
982
|
+
* @param {Array} arr your test array
|
|
983
|
+
* @param {Function} asyncCallback callback
|
|
984
|
+
* @returns {Promise.<any | undefined>} first element that passed the test
|
|
985
|
+
*/
|
|
986
|
+
async findAsync(arr, asyncCallback) {
|
|
987
|
+
for (const element of arr) {
|
|
988
|
+
if (await asyncCallback(element)) {
|
|
989
|
+
return element;
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
},
|
|
895
993
|
};
|
|
896
994
|
|
|
897
995
|
Util.startLogger(false, true);
|