diff --git a/.github/linters/.cspell.json b/.github/linters/.cspell.json index 3dc7ca4a..1292a1ef 100644 --- a/.github/linters/.cspell.json +++ b/.github/linters/.cspell.json @@ -63,6 +63,7 @@ "flowtype", "forceignore", "forceinclude", + "friendlyname", "geodata", "iframe", "ignorewarnings", diff --git a/.github/workflows/on-main-push.yml b/.github/workflows/on-main-push.yml index 6be30697..64fe3565 100644 --- a/.github/workflows/on-main-push.yml +++ b/.github/workflows/on-main-push.yml @@ -54,6 +54,18 @@ jobs: needs: [prepare-release, release] runs-on: ubuntu-latest steps: + - name: Checkout sources + uses: actions/checkout@v3 + with: + ref: 'e2e/head' + fetch-depth: 0 + + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: https://registry.npmjs.org/ + - name: Install sfdx-cli run: npm install -g sfdx-cli @@ -62,3 +74,9 @@ jobs: - name: Test new plugin version run: sfdx sgd:source:delta --help + + - name: E2E Tests + working-directory: ./e2e + run: | + yarn + yarn test:e2e diff --git a/.github/workflows/on-pull-request.yml b/.github/workflows/on-pull-request.yml index 40c07b75..bbfb35ae 100644 --- a/.github/workflows/on-pull-request.yml +++ b/.github/workflows/on-pull-request.yml @@ -61,28 +61,7 @@ jobs: run: yarn audit continue-on-error: true - source-lint: - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v3 - - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: 16 - registry-url: https://registry.npmjs.org/ - - - name: Setup node - uses: ./.github/actions/install - - - name: Lint sources - uses: wearerequired/lint-action@v2 - with: - eslint: true - megalinter: - name: MegaLinter runs-on: ubuntu-latest steps: # Git Checkout @@ -143,7 +122,7 @@ jobs: secrets: inherit e2e-check: - needs: [build, source-lint] + needs: [build, megalinter] strategy: matrix: os: [macos-latest, windows-latest, ubuntu-latest] diff --git a/README.md b/README.md index f88e1f72..619d6e5e 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ OPTIONS this command invocation ``` -_See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v5.13.3/src/commands/sgd/source/delta.ts)_ +_See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/main/src/commands/sgd/source/delta.ts)_ ### Windows users diff --git a/__tests__/integration/delta.test.js b/__tests__/integration/delta.test.js index 9df0a188..9cad972b 100644 --- a/__tests__/integration/delta.test.js +++ b/__tests__/integration/delta.test.js @@ -109,8 +109,8 @@ describe(`test if the appli`, () => { generateDelta: true, }) - expect(work.diffs.package.get('fields')).toContain('Account.changed') - expect(work.diffs.destructiveChanges.get('fields')).not.toContain( + expect(work.diffs.package.get('CustomField')).toContain('Account.changed') + expect(work.diffs.destructiveChanges.get('CustomField')).not.toContain( 'Account.changed' ) }) @@ -133,6 +133,6 @@ describe(`test if the appli`, () => { apiVersion: '46', generateDelta: true, }) - expect(work.diffs.package.get('rules')).toContain('EU.France') + expect(work.diffs.package.get('Territory2Rule')).toContain('EU.France') }) }) diff --git a/__tests__/integration/services.test.js b/__tests__/integration/services.test.js index 799f4ba5..f8659c80 100644 --- a/__tests__/integration/services.test.js +++ b/__tests__/integration/services.test.js @@ -1,15 +1,5 @@ 'use strict' -const BotHandler = require('../../src/service/botHandler') -const CustomObjectHandler = require('../../src/service/customObjectHandler') -const InBundleHandler = require('../../src/service/inBundleHandler') -const InFileHandler = require('../../src/service/inFileHandler') -const InFolderHandler = require('../../src/service/inFolderHandler') -const InTranslationHandler = require('../../src/service/inTranslationHandler') -const InResourceHandler = require('../../src/service/inResourceHandler') -const StandardHandler = require('../../src/service/standardHandler') -const SubCustomObjectHandler = require('../../src/service/subCustomObjectHandler') -const WaveHandler = require('../../src/service/waveHandler') -const { EOL } = require('os') +const HandlerFactory = require('../../src/service/typeHandlerFactory') const { ADDITION, DELETION, @@ -21,513 +11,471 @@ jest.mock('../../src/utils/fsHelper') const testContext = [ [ - BotHandler, - [ - [ - 'bots', - 'force-app/main/default/bots/TestBot/TestBot.bot-meta.xml', - new Set(['TestBot']), - 'Bot', - ], - [ - 'bots', - 'force-app/main/default/bots/TestBot/v1.botVersion-meta.xml', - new Set(['TestBot.v1']), - 'BotVersion', - ], - ], - ], - [ - CustomObjectHandler, - [ - [ - 'objects', - 'force-app/main/default/objects/Account/Account.object-meta.xml', - new Set(['Account']), - ], - [ - 'objects', - 'force-app/main/default/objects/Test/Account/Account.object-meta.xml', - new Set(['Account']), - ], - [ - 'territory2Models', - 'force-app/main/default/territory2Models/EU/EU.territory2Model-meta.xml', - new Set(['EU']), - ], - ], - ], - [ - InFileHandler, - [ - [ - 'workflows', - 'force-app/main/default/workflows/Account.workflow-meta.xml', - new Set(['Account.Test']), - 'workflows.alerts', - `${EOL}${EOL}${EOL}Test${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - [ - 'workflows', - 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', - new Set(['Account.Test']), - 'workflows.fieldUpdates', - `${EOL}${EOL}${EOL}Test${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - [ - 'workflows', - 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', - new Set(['Account.Test']), - 'workflows.outboundMessages', - `${EOL}${EOL}${EOL}Test${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - [ - 'workflows', - 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', - new Set(['Account.Test']), - 'workflows.rules', - `${EOL}${EOL}${EOL}Test${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - [ - 'workflows', - 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', - new Set(['Account.Test']), - 'workflows.flowActions', - `${EOL}${EOL}${EOL}Test${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - [ - 'labels', - 'force-app/main/default/labels/CustomLabels.labels-meta.xml', - new Set(['Label']), - 'labels.labels', - `${EOL}${EOL}${EOL}Label${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - [ - 'sharingRules', - 'force-app/main/default/sharingRules/Account.sharingRules-meta.xml', - new Set(['Account.Criteria']), - 'sharingRules.sharingCriteriaRules', - `${EOL}${EOL}${EOL}Criteria${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - [ - 'sharingRules', - 'force-app/main/default/sharingRules/Test/Account.sharingRules-meta.xml', - new Set(['Account.Criteria']), - 'sharingRules.sharingCriteriaRules', - `${EOL}${EOL}${EOL}Criteria${EOL}${EOL}`, - `${EOL}${EOL}`, - ], - ], - ], - [ - InFolderHandler, - [ - [ - 'dashboards', - 'force-app/main/default/dashboards/folder/file.dashboard-meta.xml', - new Set(['folder/file']), - ], - [ - 'reports', - 'force-app/main/default/reports/folder.reportFolder-meta.xml', - new Set(['folder']), - ], - [ - 'documents', - 'force-app/main/default/documents/folder.documentFolder-meta.xml', - new Set(['folder']), - ], - [ - 'documents', - 'force-app/main/default/documents/folder/document.test.ext', - new Set(['folder/document.test']), - ], - [ - 'documents', - 'force-app/main/default/documents/folder/document.test.document-meta.xml', - new Set(['folder/document.test']), - ], - ], - ], - [ - InTranslationHandler, - [ - [ - 'objectTranslations', - 'force-app/main/default/objectTranslations/Account-es/Account-es.objectTranslation-meta.xml', - new Set(['Account-es']), - ], - [ - 'objectTranslations', - 'force-app/main/default/objectTranslations/Account-es/BillingFloor__c.fieldTranslation-meta.xml', - new Set(['Account-es']), - ], - ], - ], - [ - InResourceHandler, - [ - [ - 'staticresources', - 'force-app/main/default/staticresources/test/content', - new Set(['test']), - ], - [ - 'staticresources', - 'force-app/main/default/staticresources/resource.js', - new Set(['resource']), - ], - [ - 'staticresources', - 'force-app/main/default/staticresources/erase.resource-meta.xml', - new Set(['erase']), - ], - [ - 'waveTemplates', - 'force-app/main/default/waveTemplates/WaveTemplateTest/template-info.json', - new Set(['WaveTemplateTest']), - ], - [ - 'lwc', - 'force-app/main/default/lwc/component/component.js-meta.xml', - new Set(['component']), - ], - [ - 'aura', - 'force-app/main/default/aura/component/component.cmp-meta.xml', - new Set(['component']), - ], - [ - 'experiences', - 'force-app/main/default/experiences/component/subfolder/file.json', - new Set(['component']), - ], - [ - 'experiences', - 'force-app/main/default/experiences/component-meta.xml', - new Set(['component']), - ], - ], - ], - [ - InFolderHandler, - [ - [ - 'dashboards', - 'force-app/main/default/dashboards/folder/file.dashboard-meta.xml', - new Set(['folder/file']), - ], - ], - ], - [ - InBundleHandler, - [ - [ - 'digitalExperiences', - 'force-app/main/default/digitalExperiences/site/component.digitalExperience-meta.xml', - new Set(['site/component']), - ], - [ - 'digitalExperiences', - 'force-app/main/default/digitalExperiences/site/component/workspace/file.json', - new Set(['site/component']), - ], - ], - ], - [ - StandardHandler, - [ - [ - 'quickActions', - 'force-app/main/default/quickActions/Account.New.quickAction-meta.xml', - new Set(['Account.New']), - ], - [ - 'quickActions', - 'force-app/main/default/quickActions/NewGlobal.quickAction-meta.xml', - new Set(['NewGlobal']), - ], - [ - 'customMetadata', - 'force-app/main/default/customMetadata/GraphicsPackImages.md_png.md-meta.xml', - new Set(['GraphicsPackImages.md_png']), - ], - [ - 'weblinks', - 'force-app/main/default/objects/Account/weblinks/ClientStore.weblink-meta.xml', - new Set(['ClientStore']), - ], - [ - 'classes', - 'force-app/main/default/classes/controllers/Controller.cls-meta.xml', - new Set(['Controller']), - ], - [ - 'batchCalcJobDefinitions', - 'force-app/main/default/batchCalcJobDefinitions/Job.batchCalcJobDefinition-meta.xml', - new Set(['Job']), - ], - [ - 'restrictionRules', - 'force-app/main/default/restrictionRules/Account.rule-meta.xml', - new Set(['Account']), - ], - ], - ], - [ - SubCustomObjectHandler, - [ - [ - 'fields', - 'force-app/main/default/objects/Account/fields/awesome.field-meta.xml', - new Set(['Account.awesome']), - ], - [ - 'indexes', - 'force-app/main/default/objects/Account/indexes/awesome.index-meta.xml', - new Set(['Account.awesome']), - ], - [ - 'rules', - 'force-app/main/default/territory2Models/EU/rules/Location.territory2Rule-meta.xml', - new Set(['EU.Location']), - ], - [ - 'territories', - 'force-app/main/default/territory2Models/EU/territories/France.territory2-meta.xml', - new Set(['EU.France']), - ], - [ - 'fields', - 'force-app/main/default/objects/Test/Account/fields/awesome.field-meta.xml', - new Set(['Account.awesome']), - ], - [ - 'rules', - 'force-app/main/default/territory2Models/Test/EU/rules/Location.territory2Rule-meta.xml', - new Set(['EU.Location']), - ], - [ - 'territories', - 'force-app/main/default/territory2Models/Test/EU/territories/France.territory2-meta.xml', - new Set(['EU.France']), - ], - ], - ], - [ - WaveHandler, - [ - [ - 'discovery', - 'force-app/main/default/discovery/DiscoveryAIModelTest.model', - new Set(['DiscoveryAIModelTest']), - 'DiscoveryAIModel', - ], - [ - 'discovery', - 'force-app/main/default/discovery/DiscoveryGoalTest.goal', - new Set(['DiscoveryGoalTest']), - 'DiscoveryGoal', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveApplicationTest.wapp', - new Set(['WaveApplicationTest']), - 'WaveApplication', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveComponentTest.wcomp', - new Set(['WaveComponentTest']), - 'WaveComponent', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveDataflowTest.wdf', - new Set(['WaveDataflowTest']), - 'WaveDataflow', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveDashboardTest.wdash', - new Set(['WaveDashboardTest']), - 'WaveDashboard', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveDatasetTest.wds', - new Set(['WaveDatasetTest']), - 'WaveDataset', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveLensTest.wlens', - new Set(['WaveLensTest']), - 'WaveLens', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveRecipeTest.wdpr', - new Set(['WaveRecipeTest']), - 'WaveRecipe', - ], - [ - 'wave', - 'force-app/main/default/wave/WaveXmdTest.xmd', - new Set(['WaveXmdTest']), - 'WaveXmd', - ], - [ - 'discovery', - 'force-app/main/default/discovery/Test/DiscoveryAIModelTest.model', - new Set(['DiscoveryAIModelTest']), - 'DiscoveryAIModel', - ], - [ - 'discovery', - 'force-app/main/default/discovery/Test/DiscoveryGoalTest.goal', - new Set(['DiscoveryGoalTest']), - 'DiscoveryGoal', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveApplicationTest.wapp', - new Set(['WaveApplicationTest']), - 'WaveApplication', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveComponentTest.wcomp', - new Set(['WaveComponentTest']), - 'WaveComponent', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveDataflowTest.wdf', - new Set(['WaveDataflowTest']), - 'WaveDataflow', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveDashboardTest.wdash', - new Set(['WaveDashboardTest']), - 'WaveDashboard', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveDatasetTest.wds', - new Set(['WaveDatasetTest']), - 'WaveDataset', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveLensTest.wlens', - new Set(['WaveLensTest']), - 'WaveLens', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveRecipeTest.wdpr', - new Set(['WaveRecipeTest']), - 'WaveRecipe', - ], - [ - 'wave', - 'force-app/main/default/wave/Test/WaveXmdTest.xmd', - new Set(['WaveXmdTest']), - 'WaveXmd', - ], - ], + 'force-app/main/default/bots/TestBot/TestBot.bot-meta.xml', + new Set(['TestBot']), + 'Bot', + ], + [ + 'force-app/main/default/bots/TestBot/v1.botVersion-meta.xml', + new Set(['TestBot.v1']), + 'BotVersion', + ], + [ + 'force-app/main/default/objects/Account/Account.object-meta.xml', + new Set(['Account']), + 'CustomObject', + ], + [ + 'force-app/main/default/objects/Test/Account/Account.object-meta.xml', + new Set(['Account']), + 'CustomObject', + ], + [ + 'force-app/main/default/territory2Models/EU/EU.territory2Model-meta.xml', + new Set(['EU']), + 'Territory2Model', + ], + [ + 'force-app/main/default/workflows/Account.workflow-meta.xml', + new Set(['Account.Test']), + 'WorkflowAlert', + `Test`, + ``, + ], + [ + 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', + new Set(['Account.Test']), + 'WorkflowFieldUpdate', + `Test`, + ``, + ], + [ + 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', + new Set(['Account.Test']), + 'WorkflowOutboundMessage', + `Test`, + ``, + ], + [ + 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', + new Set(['Account.Test']), + 'WorkflowRule', + `Test`, + ``, + ], + [ + 'force-app/main/default/workflows/Test/Account.workflow-meta.xml', + new Set(['Account.Test']), + 'WorkflowKnowledgePublish', + `Test`, + ``, + ], + [ + 'force-app/main/default/sharingRules/Account.sharingRules-meta.xml', + new Set(['Account.Criteria']), + 'SharingCriteriaRule', + `Criteria`, + ``, + ], + [ + 'force-app/main/default/sharingRules/Test/Account.sharingRules-meta.xml', + new Set(['Account.Criteria']), + 'SharingCriteriaRule', + `Criteria`, + ``, + ], + [ + 'force-app/main/default/labels/CustomLabels.labels-meta.xml', + new Set(['Label']), + 'CustomLabel', + `Label`, + ``, + ], + [ + 'force-app/main/default/assignmentRules/Account.assignmentRules-meta.xml', + new Set(['Account.AccountRule']), + 'AssignmentRule', + `AccountRule`, + ``, + ], + [ + 'force-app/main/default/autoResponseRules/Account.autoResponseRules-meta.xml', + new Set(['Account.AccountRule']), + 'AutoResponseRule', + `AccountRule`, + ``, + ], + [ + 'force-app/main/default/escalationRules/Account.escalationRules-meta.xml', + new Set(['Account.AccountRule']), + 'EscalationRule', + `AccountRule`, + ``, + ], + [ + 'force-app/main/default/matchingRules/Account.matchingRule-meta.xml', + new Set(['Account.AccountRule']), + 'MatchingRule', + `AccountRule`, + ``, + ], + [ + 'force-app/main/default/globalValueSetTranslations/Numbers-fr.globalValueSetTranslation-meta.xml', + new Set(['Numbers-fr']), + 'GlobalValueSetTranslation', + `ThreeTrois`, + ``, + ], + [ + 'force-app/main/default/standardValueSetTranslations/Numbers-fr.standardValueSetTranslation-meta.xml', + new Set(['Numbers-fr']), + 'StandardValueSetTranslation', + `ThreeTrois`, + ``, + ], + [ + 'force-app/main/default/profiles/Admin.profile-meta.xml', + new Set(['Admin']), + 'Profile', + `MyAppfalsefalse`, + ``, + ], + [ + 'force-app/main/default/translations/fr.translation-meta.xml', + new Set(['fr']), + 'Translations', + `MyApp`, + ``, + ], + [ + 'force-app/main/default/objectTranslations/Account-fr/Account-fr.objectTranslation-meta.xml', + new Set(['Account-fr']), + 'CustomObjectTranslation', + `NewRelationship`, + ``, + ], + [ + 'force-app/main/default/objectTranslations/Account-fr/BillingFloor__c.fieldTranslation-meta.xml', + new Set(['Account-fr']), + 'CustomObjectTranslation', + `NewRelationship`, + ``, + ], + [ + 'force-app/main/default/dashboards/folder/file.dashboard-meta.xml', + new Set(['folder/file']), + 'Dashboard', + ], + [ + 'force-app/main/default/reports/folder.reportFolder-meta.xml', + new Set(['folder']), + 'Report', + ], + [ + 'force-app/main/default/documents/folder.documentFolder-meta.xml', + new Set(['folder']), + 'Document', + ], + [ + 'force-app/main/default/documents/folder/document.test.ext', + new Set(['folder/document.test']), + 'Document', + ], + [ + 'force-app/main/default/documents/folder/document.test.document-meta.xml', + new Set(['folder/document.test']), + 'Document', + ], + [ + 'force-app/main/default/staticresources/test/content', + new Set(['test']), + 'StaticResource', + ], + [ + 'force-app/main/default/staticresources/resource.js', + new Set(['resource']), + 'StaticResource', + ], + [ + 'force-app/main/default/staticresources/erase.resource-meta.xml', + new Set(['erase']), + 'StaticResource', + ], + [ + 'force-app/main/default/waveTemplates/WaveTemplateTest/template-info.json', + new Set(['WaveTemplateTest']), + 'WaveTemplateBundle', + ], + [ + 'force-app/main/default/lwc/component/component.js-meta.xml', + new Set(['component']), + 'LightningComponentBundle', + ], + [ + 'force-app/main/default/aura/component/component.cmp-meta.xml', + new Set(['component']), + 'AuraDefinitionBundle', + ], + [ + 'force-app/main/default/experiences/component/subfolder/file.json', + new Set(['component']), + 'ExperienceBundle', + ], + [ + 'force-app/main/default/experiences/component-meta.xml', + new Set(['component']), + 'ExperienceBundle', + ], + [ + 'force-app/main/default/digitalExperiences/site/component.digitalExperience-meta.xml', + new Set(['site/component']), + 'DigitalExperienceBundle', + ], + [ + 'force-app/main/default/digitalExperiences/site/component/workspace/file.json', + new Set(['site/component']), + 'DigitalExperienceBundle', + ], + [ + 'force-app/main/default/quickActions/Account.New.quickAction-meta.xml', + new Set(['Account.New']), + 'QuickAction', + ], + [ + 'force-app/main/default/quickActions/NewGlobal.quickAction-meta.xml', + new Set(['NewGlobal']), + 'QuickAction', + ], + [ + 'force-app/main/default/customMetadata/GraphicsPackImages.md_png.md-meta.xml', + new Set(['GraphicsPackImages.md_png']), + 'CustomMetadata', + ], + [ + 'force-app/main/default/objects/Account/weblinks/ClientStore.weblink-meta.xml', + new Set(['ClientStore']), + 'CustomPageWebLink', + ], + [ + 'force-app/main/default/classes/controllers/Controller.cls-meta.xml', + new Set(['Controller']), + 'ApexClass', + ], + [ + 'force-app/main/default/batchCalcJobDefinitions/Job.batchCalcJobDefinition-meta.xml', + new Set(['Job']), + 'BatchCalcJobDefinition', + ], + [ + 'force-app/main/default/restrictionRules/Account.rule-meta.xml', + new Set(['Account']), + 'RestrictionRule', + ], + [ + 'force-app/main/default/objects/Account/fields/awesome.field-meta.xml', + new Set(['Account.awesome']), + 'CustomField', + ], + [ + 'force-app/main/default/objects/Account/indexes/awesome.index-meta.xml', + new Set(['Account.awesome']), + 'Index', + ], + [ + 'force-app/main/default/territory2Models/EU/rules/Location.territory2Rule-meta.xml', + new Set(['EU.Location']), + 'Territory2Rule', + ], + [ + 'force-app/main/default/territory2Models/EU/territories/France.territory2-meta.xml', + new Set(['EU.France']), + 'Territory2', + ], + [ + 'force-app/main/default/objects/Test/Account/fields/awesome.field-meta.xml', + new Set(['Account.awesome']), + 'CustomField', + ], + [ + 'force-app/main/default/territory2Models/Test/EU/rules/Location.territory2Rule-meta.xml', + new Set(['EU.Location']), + 'Territory2Rule', + ], + [ + 'force-app/main/default/territory2Models/Test/EU/territories/France.territory2-meta.xml', + new Set(['EU.France']), + 'Territory2', + ], + [ + 'force-app/main/default/discovery/DiscoveryAIModelTest.model', + new Set(['DiscoveryAIModelTest']), + 'DiscoveryAIModel', + ], + [ + 'force-app/main/default/discovery/DiscoveryGoalTest.goal', + new Set(['DiscoveryGoalTest']), + 'DiscoveryGoal', + ], + [ + 'force-app/main/default/wave/WaveApplicationTest.wapp', + new Set(['WaveApplicationTest']), + 'WaveApplication', + ], + [ + 'force-app/main/default/wave/WaveComponentTest.wcomp', + new Set(['WaveComponentTest']), + 'WaveComponent', + ], + [ + 'force-app/main/default/wave/WaveDataflowTest.wdf', + new Set(['WaveDataflowTest']), + 'WaveDataflow', + ], + [ + 'force-app/main/default/wave/WaveDashboardTest.wdash', + new Set(['WaveDashboardTest']), + 'WaveDashboard', + ], + [ + 'force-app/main/default/wave/WaveDatasetTest.wds', + new Set(['WaveDatasetTest']), + 'WaveDataset', + ], + [ + 'force-app/main/default/wave/WaveLensTest.wlens', + new Set(['WaveLensTest']), + 'WaveLens', + ], + [ + 'force-app/main/default/wave/WaveRecipeTest.wdpr', + new Set(['WaveRecipeTest']), + 'WaveRecipe', + ], + [ + 'force-app/main/default/wave/WaveXmdTest.xmd', + new Set(['WaveXmdTest']), + 'WaveXmd', + ], + [ + 'force-app/main/default/discovery/Test/DiscoveryAIModelTest.model', + new Set(['DiscoveryAIModelTest']), + 'DiscoveryAIModel', + ], + [ + 'force-app/main/default/discovery/Test/DiscoveryGoalTest.goal', + new Set(['DiscoveryGoalTest']), + 'DiscoveryGoal', + ], + [ + 'force-app/main/default/wave/Test/WaveApplicationTest.wapp', + new Set(['WaveApplicationTest']), + 'WaveApplication', + ], + [ + 'force-app/main/default/wave/Test/WaveComponentTest.wcomp', + new Set(['WaveComponentTest']), + 'WaveComponent', + ], + [ + 'force-app/main/default/wave/Test/WaveDataflowTest.wdf', + new Set(['WaveDataflowTest']), + 'WaveDataflow', + ], + [ + 'force-app/main/default/wave/Test/WaveDashboardTest.wdash', + new Set(['WaveDashboardTest']), + 'WaveDashboard', + ], + [ + 'force-app/main/default/wave/Test/WaveDatasetTest.wds', + new Set(['WaveDatasetTest']), + 'WaveDataset', + ], + [ + 'force-app/main/default/wave/Test/WaveLensTest.wlens', + new Set(['WaveLensTest']), + 'WaveLens', + ], + [ + 'force-app/main/default/wave/Test/WaveRecipeTest.wdpr', + new Set(['WaveRecipeTest']), + 'WaveRecipe', + ], + [ + 'force-app/main/default/wave/Test/WaveXmdTest.xmd', + new Set(['WaveXmdTest']), + 'WaveXmd', ], ] let globalMetadata +beforeAll(async () => { + // eslint-disable-next-line no-undef + globalMetadata = await getGlobalMetadata() +}) let work +let handlerFactory beforeEach(() => { - jest.clearAllMocks() + jest.resetAllMocks() work = { config: { output: '', source: '', repo: '', generateDelta: true }, diffs: { package: new Map(), destructiveChanges: new Map() }, warnings: [], } + handlerFactory = new HandlerFactory(work, globalMetadata) }) -beforeAll(async () => { - // eslint-disable-next-line no-undef - globalMetadata = await getGlobalMetadata() -}) -describe.each(testContext)('integration domain test', (handler, testData) => { - describe(`${handler.name}`, () => { - describe.each(testData)( - '%s', - (type, changePath, expected, expectedType, xmlTo, xmlFrom) => { - test('addition', async () => { - // Arrange - if (xmlTo && xmlFrom) { - readPathFromGit.mockResolvedValueOnce(xmlTo) - readPathFromGit.mockResolvedValueOnce(xmlFrom) - } - const sut = new handler( - `${ADDITION} ${changePath}`, - type, - work, - globalMetadata - ) +describe.each(testContext)( + `integration test %s`, + (changePath, expected, expectedType, xmlTo, xmlFrom) => { + test(`addition ${expectedType}`, async () => { + // Arrange + if (xmlTo && xmlFrom) { + readPathFromGit.mockResolvedValueOnce(xmlTo) + readPathFromGit.mockResolvedValueOnce(xmlFrom) + } + const sut = handlerFactory.getTypeHandler( + `${ADDITION} ${changePath}` + ) - // Act - await sut.handle() + // Act + await sut.handle() - // Assert - expect(work.diffs.package.get(expectedType ?? type)).toEqual(expected) - }) - test('deletion', async () => { - // Arrange - if (xmlTo && xmlFrom) { - readPathFromGit.mockResolvedValueOnce(xmlFrom) - readPathFromGit.mockResolvedValueOnce(xmlTo) - } + // Assert + expect(work.diffs.package.get(expectedType)).toEqual(expected) + }) + test(`deletion ${expectedType}`, async () => { + // Arrange + if (xmlTo && xmlFrom) { + readPathFromGit.mockResolvedValueOnce(xmlFrom) + readPathFromGit.mockResolvedValueOnce(xmlTo) + } - const sut = new handler( - `${DELETION} ${changePath}`, - type, - work, - globalMetadata - ) + const sut = handlerFactory.getTypeHandler( + `${DELETION} ${changePath}` + ) - // Act - await sut.handle() + // Act + await sut.handle() - // Assert - expect( - work.diffs.destructiveChanges.get(expectedType ?? type) - ).toEqual(expected) - }) - test('modification', async () => { - // Arrange - if (xmlTo && xmlFrom) { - readPathFromGit.mockResolvedValueOnce(xmlTo) - readPathFromGit.mockResolvedValueOnce(xmlFrom) - } - const sut = new handler( - `${MODIFICATION} ${changePath}`, - type, - work, - globalMetadata - ) + // Assert + expect(work.diffs.destructiveChanges.get(expectedType)).toEqual(expected) + }) + test(`modification ${expectedType}`, async () => { + // Arrange + if (xmlTo && xmlFrom) { + readPathFromGit.mockResolvedValueOnce(xmlTo) + readPathFromGit.mockResolvedValueOnce(xmlFrom) + } - // Act - await sut.handle() + const sut = handlerFactory.getTypeHandler( + `${MODIFICATION} ${changePath}` + ) - // Assert - expect(work.diffs.package.get(expectedType ?? type)).toEqual(expected) - }) - } - ) - }) -}) + // Act + await sut.handle() + + // Assert + expect(work.diffs.package.get(expectedType)).toEqual(expected) + }) + } +) diff --git a/__tests__/mocha.opts b/__tests__/mocha.opts deleted file mode 100644 index 73fb8366..00000000 --- a/__tests__/mocha.opts +++ /dev/null @@ -1,5 +0,0 @@ ---require ts-node/register ---watch-extensions ts ---recursive ---reporter spec ---timeout 5000 diff --git a/__tests__/unit/lib/metadata/metadataManager.test.js b/__tests__/unit/lib/metadata/metadataManager.test.js index a8f6f00a..dd3a42ed 100644 --- a/__tests__/unit/lib/metadata/metadataManager.test.js +++ b/__tests__/unit/lib/metadata/metadataManager.test.js @@ -1,7 +1,9 @@ 'use strict' const { getDefinition, + getInFileAttributes, getLatestSupportedVersion, + getWaveMetadata, isVersionSupported, } = require('../../../../src/metadata/metadataManager') @@ -39,4 +41,117 @@ describe(`test if metadata`, () => { expect(result).toEqual(data[1]) } }) + + test('getInFileAttributes', async () => { + // Arrange + const metadata = new Map([ + [ + 'waveTemplates', + { + directoryName: 'waveTemplates', + inFolder: true, + metaFile: false, + xmlName: 'WaveTemplateBundle', + }, + ], + [ + 'alerts', + { + directoryName: 'workflows.alerts', + inFolder: false, + metaFile: false, + parentXmlName: 'Workflow', + xmlName: 'WorkflowAlert', + xmlTag: 'alerts', + key: 'fullName', + }, + ], + [ + 'excluded', + { + directoryName: 'excluded', + inFolder: false, + metaFile: false, + parentXmlName: 'Banished', + xmlName: 'Excluded', + xmlTag: 'excluded', + key: 'other', + excluded: true, + }, + ], + ]) + + // Act + let inFileAttributes = getInFileAttributes(metadata) + + // Assert + expect(inFileAttributes.has('waveTemplates')).toBe(false) + expect(inFileAttributes.has('excluded')).toBe(true) + expect(inFileAttributes.has('alerts')).toBe(true) + expect(inFileAttributes.get('alerts')).toEqual({ + xmlName: 'WorkflowAlert', + key: 'fullName', + excluded: false, + }) + expect(inFileAttributes.get('excluded')).toEqual({ + xmlName: 'Excluded', + key: 'other', + excluded: true, + }) + + // Act + let otherInFileAttributes = getInFileAttributes(metadata) + + // Assert + expect(otherInFileAttributes).toBe(inFileAttributes) + }) + + test('getWaveMetadata', async () => { + // Arrange + const metadata = new Map([ + [ + 'waveTemplates', + { + directoryName: 'waveTemplates', + inFolder: true, + metaFile: false, + xmlName: 'WaveTemplateBundle', + }, + ], + [ + 'discovery', + { + directoryName: 'discovery', + inFolder: false, + metaFile: true, + content: [ + { + suffix: 'model', + xmlName: 'DiscoveryAIModel', + }, + { + suffix: 'goal', + xmlName: 'DiscoveryGoal', + }, + ], + }, + ], + ]) + + // Act + let waveMetadata = getWaveMetadata(metadata) + + // Assert + expect(waveMetadata.has('discovery')).toBe(false) + expect(waveMetadata.has('goal')).toBe(true) + expect(waveMetadata.has('model')).toBe(true) + expect(waveMetadata.get('goal')).toEqual('DiscoveryGoal') + expect(waveMetadata.get('model')).toEqual('DiscoveryAIModel') + + // Act + let otherWaveMetadata = getWaveMetadata(metadata) + + // Assert + expect(otherWaveMetadata).toBe(waveMetadata) + }) }) diff --git a/__tests__/unit/lib/post-processor/flowTranslationProcessor.test.js b/__tests__/unit/lib/post-processor/flowTranslationProcessor.test.js index c1f22baa..4c9f75d1 100644 --- a/__tests__/unit/lib/post-processor/flowTranslationProcessor.test.js +++ b/__tests__/unit/lib/post-processor/flowTranslationProcessor.test.js @@ -2,17 +2,19 @@ const FlowTranslationProcessor = require('../../../../src/post-processor/flowTranslationProcessor') const { parseXmlFileToJson } = require('../../../../src/utils/fxpHelper') const { - FLOW_DIRECTORY_NAME, + FLOW_XML_NAME, METAFILE_SUFFIX, TRANSLATION_EXTENSION, TRANSLATION_TYPE, } = require('../../../../src/utils/metadataConstants') const { - copyFiles, + writeFile, scanExtension, isSubDir, + readFile, } = require('../../../../src/utils/fsHelper') const { forPath } = require('../../../../src/utils/ignoreHelper') +const { pathExists } = require('fs-extra') jest.mock('fs-extra') jest.mock('../../../../src/utils/fsHelper') jest.mock('../../../../src/utils/ignoreHelper') @@ -22,7 +24,6 @@ jest.mock('../../../../src/utils/fxpHelper', () => { return { ...originalModule, parseXmlFileToJson: jest.fn(), - convertJsonToXml: jest.fn(), } }) @@ -74,9 +75,11 @@ describe('FlowTranslationProcessor', () => { describe('when flow have been modified', () => { beforeEach(() => { - work.diffs.package = new Map([ - [FLOW_DIRECTORY_NAME, new Set([flowFullName])], - ]) + // Arrange + work.diffs.package = new Map([[FLOW_XML_NAME, new Set([flowFullName])]]) + parseXmlFileToJson.mockResolvedValue({ + Translations: { flowDefinitions: { fullName: flowFullName } }, + }) }) describe('when there is no translation file', () => { @@ -97,7 +100,7 @@ describe('FlowTranslationProcessor', () => { work.config ) expect(parseXmlFileToJson).not.toHaveBeenCalled() - expect(copyFiles).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() }) }) @@ -119,7 +122,7 @@ describe('FlowTranslationProcessor', () => { work.config ) expect(parseXmlFileToJson).toHaveBeenCalledTimes(1) - expect(copyFiles).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() }) }) @@ -143,40 +146,66 @@ describe('FlowTranslationProcessor', () => { work.config ) expect(parseXmlFileToJson).toHaveBeenCalledTimes(1) - expect(copyFiles).toHaveBeenCalled() + expect(writeFile).toHaveBeenCalled() }) - describe('when the folder is not a git repository', () => { - beforeEach(() => { - // Arrange - copyFiles.mockImplementationOnce(() => - Promise.reject(new Error('fatal: not a git repository')) - ) - }) - it('should throw an exception', async () => { - // Arrange - expect.assertions(2) + }) - // Act - try { - await sut.process() - } catch (error) { - // Assert - expect(error).toBeTruthy() - expect(copyFiles).toHaveBeenCalled() - } - }) + describe('when there is already a translation with flow definition related to a flow', () => { + beforeEach(() => { + // Arrange + work.diffs.package = new Map([ + [TRANSLATION_TYPE, new Set([FR])], + [FLOW_XML_NAME, new Set([flowFullName])], + ]) + pathExists.mockResolvedValue(true) + readFile.mockResolvedValue( + `TestATestB` + ) + }) + it('the flowDefinitions translations should be added to the translation file', async () => { + // Act + await sut.process() + + // Assert + expect(scanExtension).toHaveBeenCalledTimes(1) + expect(scanExtension).toHaveBeenCalledWith( + work.config.source, + EXTENSION, + work.config + ) + expect(parseXmlFileToJson).toHaveBeenCalled() + expect(writeFile).toHaveBeenCalledTimes(1) + expect(writeFile).toHaveBeenCalledWith( + 'fr.translation-meta.xml', + expect.stringContaining('test-flow'), + work.config + ) + expect(writeFile).toHaveBeenCalledWith( + 'fr.translation-meta.xml', + expect.stringContaining('TestB'), + work.config + ) + expect(writeFile).toHaveBeenCalledWith( + 'fr.translation-meta.xml', + expect.stringContaining('TestA'), + work.config + ) }) }) - describe('when there is already a translation related to a flow', () => { + describe('when there is no copied flowTranslation changed already for the flow', () => { beforeEach(() => { // Arrange work.diffs.package = new Map([ - [TRANSLATION_TYPE, new Set([FR])], - [FLOW_DIRECTORY_NAME, new Set([flowFullName])], + //[TRANSLATION_TYPE, new Set([FR])], + [FLOW_XML_NAME, new Set([flowFullName])], ]) + pathExists.mockResolvedValue(true) + readFile.mockResolvedValue( + `` + ) }) - it('should not treat again the translation', async () => { + it('the flowDefinitions translations should be added to the translation file', async () => { // Act await sut.process() @@ -187,8 +216,13 @@ describe('FlowTranslationProcessor', () => { EXTENSION, work.config ) - expect(parseXmlFileToJson).not.toHaveBeenCalled() - expect(copyFiles).not.toHaveBeenCalled() + expect(parseXmlFileToJson).toHaveBeenCalled() + expect(writeFile).toHaveBeenCalledTimes(1) + expect(writeFile).toHaveBeenCalledWith( + 'fr.translation-meta.xml', + expect.stringContaining('test-flow'), + work.config + ) }) }) @@ -231,7 +265,7 @@ describe('FlowTranslationProcessor', () => { work.config ) expect(parseXmlFileToJson).toHaveBeenCalledTimes(2) - expect(copyFiles).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() }) }) @@ -242,11 +276,14 @@ describe('FlowTranslationProcessor', () => { beforeEach(() => { parseXmlFileToJson.mockResolvedValue({ Translations: { - flowDefinitions: [{ fullName: flowFullName }], + flowDefinitions: [ + { fullName: flowFullName }, + { fullName: 'otherFlow' }, + ], }, }) work.diffs.package = new Map([ - [FLOW_DIRECTORY_NAME, new Set([flowFullName])], + [FLOW_XML_NAME, new Set([flowFullName, 'otherFlow'])], ]) work.config.generateDelta = generateDelta }) @@ -265,8 +302,8 @@ describe('FlowTranslationProcessor', () => { work.config ) expect(parseXmlFileToJson).toHaveBeenCalledTimes(2) - if (generateDelta) expect(copyFiles).toHaveBeenCalledTimes(2) - else expect(copyFiles).not.toHaveBeenCalled() + if (generateDelta) expect(writeFile).toHaveBeenCalledTimes(2) + else expect(writeFile).not.toHaveBeenCalled() }) } ) @@ -293,7 +330,7 @@ describe('FlowTranslationProcessor', () => { ) expect(forPath).toHaveBeenCalledTimes(1) expect(parseXmlFileToJson).not.toHaveBeenCalled() - expect(copyFiles).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() }) }) @@ -301,7 +338,7 @@ describe('FlowTranslationProcessor', () => { beforeEach(() => { // Arrange work.diffs.package = new Map([ - [FLOW_DIRECTORY_NAME, new Set([flowFullName])], + [FLOW_XML_NAME, new Set([flowFullName])], ]) work.config.ignore = '.forceignore' forPath.mockResolvedValue({ ignores: () => false }) @@ -320,7 +357,7 @@ describe('FlowTranslationProcessor', () => { ) expect(forPath).toHaveBeenCalledTimes(1) expect(parseXmlFileToJson).toHaveBeenCalledTimes(1) - expect(copyFiles).toHaveBeenCalledTimes(1) + expect(writeFile).toHaveBeenCalledTimes(1) }) }) @@ -353,7 +390,7 @@ describe('FlowTranslationProcessor', () => { work.config ) expect(parseXmlFileToJson).not.toHaveBeenCalled() - expect(copyFiles).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() }) }) }) diff --git a/__tests__/unit/lib/service/inTranslationHandler.test.js b/__tests__/unit/lib/service/ObjectTranslationHandler.test.js similarity index 56% rename from __tests__/unit/lib/service/inTranslationHandler.test.js rename to __tests__/unit/lib/service/ObjectTranslationHandler.test.js index 6c5c5d57..5fdd34ad 100644 --- a/__tests__/unit/lib/service/inTranslationHandler.test.js +++ b/__tests__/unit/lib/service/ObjectTranslationHandler.test.js @@ -1,13 +1,24 @@ 'use strict' -const InTranslation = require('../../../../src/service/inTranslationHandler') -const { copyFiles } = require('../../../../src/utils/fsHelper') +const ObjectTranslation = require('../../../../src/service/ObjectTranslationHandler') +const { writeFile, copyFiles } = require('../../../../src/utils/fsHelper') +const mockCompare = jest.fn() +const mockprune = jest.fn() +jest.mock('../../../../src/utils/metadataDiff', () => { + return jest.fn().mockImplementation(() => { + return { compare: mockCompare, prune: mockprune } + }) +}) jest.mock('../../../../src/utils/fsHelper') const objectType = 'objectTranslations' +const xmlName = 'CustomObjectTranslation' const line = 'A force-app/main/default/objectTranslations/Account-es/Account-es.objectTranslation-meta.xml' +const content = 'content' +mockprune.mockReturnValue(content) + let work beforeEach(() => { jest.clearAllMocks() @@ -17,7 +28,7 @@ beforeEach(() => { } }) -describe('InTranslation', () => { +describe('ObjectTranslation', () => { let globalMetadata beforeAll(async () => { // eslint-disable-next-line no-undef @@ -28,33 +39,34 @@ describe('InTranslation', () => { it('should not copy files', async () => { // Arrange work.config.generateDelta = false - const sut = new InTranslation(line, objectType, work, globalMetadata) + const sut = new ObjectTranslation(line, objectType, work, globalMetadata) // Act await sut.handleAddition() // Assert - expect(copyFiles).not.toBeCalled() - expect(...work.diffs.package.get(objectType)).toEqual('Account-es') + expect(writeFile).not.toBeCalled() + expect(...work.diffs.package.get(xmlName)).toEqual('Account-es') }) }) describe('when called with generateDelta true', () => { it('should copy object translations files', async () => { // Arrange - const sut = new InTranslation(line, objectType, work, globalMetadata) + const sut = new ObjectTranslation(line, objectType, work, globalMetadata) // Act await sut.handleAddition() // Assert - expect(copyFiles).toBeCalledTimes(2) - expect(copyFiles).toHaveBeenCalledWith( - work.config, - expect.stringContaining('Account-es.objectTranslation') + expect(writeFile).toBeCalledTimes(1) + expect(writeFile).toHaveBeenCalledWith( + expect.stringContaining('Account-es.objectTranslation'), + content, + work.config ) - expect(...work.diffs.package.get(objectType)).toEqual('Account-es') + expect(...work.diffs.package.get(xmlName)).toEqual('Account-es') }) describe('when called with fieldTranslation', () => { @@ -62,7 +74,7 @@ describe('InTranslation', () => { 'A force-app/main/default/objectTranslations/Account-es/BillingFloor__c.fieldTranslation-meta.xml' it('should copy object translations files and fieldTranslation', async () => { // Arrange - const sut = new InTranslation( + const sut = new ObjectTranslation( fieldTranslationline, objectType, work, @@ -73,17 +85,18 @@ describe('InTranslation', () => { await sut.handleAddition() // Assert - - expect(copyFiles).toBeCalledTimes(2) + expect(copyFiles).toBeCalledTimes(1) expect(copyFiles).toHaveBeenCalledWith( work.config, expect.stringContaining('BillingFloor__c.fieldTranslation') ) - expect(copyFiles).toHaveBeenCalledWith( - work.config, - expect.stringContaining('Account-es.objectTranslation') + expect(writeFile).toBeCalledTimes(1) + expect(writeFile).toHaveBeenCalledWith( + expect.stringContaining('Account-es.objectTranslation'), + content, + work.config ) - expect(...work.diffs.package.get(objectType)).toEqual('Account-es') + expect(...work.diffs.package.get(xmlName)).toEqual('Account-es') }) }) }) diff --git a/__tests__/unit/lib/service/inFileHandler.test.js b/__tests__/unit/lib/service/inFileHandler.test.js index 2e3b4763..f52ac891 100644 --- a/__tests__/unit/lib/service/inFileHandler.test.js +++ b/__tests__/unit/lib/service/inFileHandler.test.js @@ -4,7 +4,7 @@ const { writeFile } = require('../../../../src/utils/fsHelper') const mockCompare = jest.fn() const mockprune = jest.fn() -jest.mock('../../../../src/utils/fileGitDiff', () => { +jest.mock('../../../../src/utils/metadataDiff', () => { return jest.fn().mockImplementation(() => { return { compare: mockCompare, prune: mockprune } }) @@ -43,7 +43,7 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { globalMetadata ) mockCompare.mockReturnValue({ - added: new Map([['workflows.alerts', new Set(['test'])]]), + added: new Map([['WorkflowAlert', new Set(['test'])]]), deleted: new Map(), }) }) @@ -53,8 +53,8 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { // Assert expect(work.diffs.destructiveChanges.size).toEqual(0) - expect(work.diffs.package.get('workflows')).toEqual(new Set(['Account'])) - expect(work.diffs.package.get('workflows.alerts')).toEqual( + expect(work.diffs.package.get('Workflow')).toEqual(new Set(['Account'])) + expect(work.diffs.package.get('WorkflowAlert')).toEqual( new Set(['Account.test']) ) @@ -66,6 +66,41 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { expect(writeFile).not.toHaveBeenCalled() } }) + + describe('when metadata in file is not packable', () => { + beforeEach(() => { + // Arrange + sut = new InFile( + 'force-app/main/default/globalValueSetTranslations/Numbers-fr.globalValueSetTranslation-meta.xml', + 'globalValueSetTranslations', + work, + globalMetadata + ) + mockCompare.mockReturnValue({ + added: new Map([['ValueTranslation', new Set(['Three'])]]), + deleted: new Map(), + }) + }) + it('should only store file name and not the metadata in file', async () => { + // Act + await sut.handleAddition() + + // Assert + expect(work.diffs.destructiveChanges.size).toEqual(0) + expect(work.diffs.package.get('GlobalValueSetTranslation')).toEqual( + new Set(['Numbers-fr']) + ) + expect(work.diffs.package.size).toEqual(1) + + if (generateDelta) { + expect(mockprune).toHaveBeenCalled() + expect(writeFile).toHaveBeenCalled() + } else { + expect(mockprune).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() + } + }) + }) }) describe('when file is modified', () => { @@ -79,8 +114,8 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { globalMetadata ) mockCompare.mockReturnValue({ - added: new Map([['workflows.alerts', new Set(['test'])]]), - deleted: new Map([['workflows.alerts', new Set(['deleted'])]]), + added: new Map([['WorkflowAlert', new Set(['test'])]]), + deleted: new Map([['WorkflowAlert', new Set(['deleted'])]]), }) }) it('should store the added metadata in the package and deleted in the destructiveChanges', async () => { @@ -88,14 +123,14 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { await sut.handleModification() // Assert - expect(work.diffs.package.get('workflows')).toEqual(new Set(['Account'])) - expect(work.diffs.package.get('workflows.alerts')).toEqual( + expect(work.diffs.package.get('Workflow')).toEqual(new Set(['Account'])) + expect(work.diffs.package.get('WorkflowAlert')).toEqual( new Set(['Account.test']) ) - expect(work.diffs.destructiveChanges.get('workflows.alerts')).toEqual( + expect(work.diffs.destructiveChanges.get('WorkflowAlert')).toEqual( new Set(['Account.deleted']) ) - expect(work.diffs.destructiveChanges.has('workflows')).toBe(false) + expect(work.diffs.destructiveChanges.has('Workflow')).toBe(false) if (generateDelta) { expect(mockprune).toHaveBeenCalled() expect(writeFile).toHaveBeenCalled() @@ -104,6 +139,41 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { expect(writeFile).not.toHaveBeenCalled() } }) + + describe('when metadata in file is not packable', () => { + beforeEach(() => { + // Arrange + sut = new InFile( + 'force-app/main/default/globalValueSetTranslations/Numbers-fr.globalValueSetTranslation-meta.xml', + 'globalValueSetTranslations', + work, + globalMetadata + ) + mockCompare.mockReturnValue({ + added: new Map([['ValueTranslation', new Set(['Three'])]]), + deleted: new Map(), + }) + }) + it('should only store file name and not the metadata in file', async () => { + // Act + await sut.handleModification() + + // Assert + expect(work.diffs.destructiveChanges.size).toEqual(0) + expect(work.diffs.package.get('GlobalValueSetTranslation')).toEqual( + new Set(['Numbers-fr']) + ) + expect(work.diffs.package.size).toEqual(1) + + if (generateDelta) { + expect(mockprune).toHaveBeenCalled() + expect(writeFile).toHaveBeenCalled() + } else { + expect(mockprune).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() + } + }) + }) }) describe('when file is deleted', () => { @@ -118,7 +188,7 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { ) mockCompare.mockReturnValue({ added: new Map(), - deleted: new Map([['workflows.alerts', new Set(['test'])]]), + deleted: new Map([['WorkflowAlert', new Set(['test'])]]), }) }) it('should store the deleted metadata in the destructiveChanges', async () => { @@ -127,12 +197,40 @@ describe.each([true, false])(`inFileHandler`, generateDelta => { // Assert expect(work.diffs.package.size).toEqual(0) - expect(work.diffs.destructiveChanges.has('workflows')).toBe(false) - expect(work.diffs.destructiveChanges.get('workflows.alerts')).toEqual( + expect(work.diffs.destructiveChanges.has('Workflow')).toBe(false) + expect(work.diffs.destructiveChanges.get('WorkflowAlert')).toEqual( new Set(['Account.test']) ) + expect(mockCompare).toHaveBeenCalled() expect(mockprune).not.toHaveBeenCalled() expect(writeFile).not.toHaveBeenCalled() }) + describe('when metadata in file is prune Only', () => { + beforeEach(() => { + // Arrange + sut = new InFile( + 'force-app/main/default/globalValueSetTranslations/Numbers-fr.globalValueSetTranslation-meta.xml', + 'globalValueSetTranslations', + work, + globalMetadata + ) + }) + it('should only store file name and not the metadata in file', async () => { + // Act + await sut.handleDeletion() + + // Assert + expect(work.diffs.package.size).toEqual(0) + expect(work.diffs.destructiveChanges.has('ValueTranslation')).toBe( + false + ) + expect( + work.diffs.destructiveChanges.get('GlobalValueSetTranslation') + ).toEqual(new Set(['Numbers-fr'])) + expect(mockCompare).not.toHaveBeenCalled() + expect(mockprune).not.toHaveBeenCalled() + expect(writeFile).not.toHaveBeenCalled() + }) + }) }) }) diff --git a/__tests__/unit/lib/service/inFolderHandler.test.js b/__tests__/unit/lib/service/inFolderHandler.test.js index 8fbe3836..f31e4d65 100644 --- a/__tests__/unit/lib/service/inFolderHandler.test.js +++ b/__tests__/unit/lib/service/inFolderHandler.test.js @@ -8,6 +8,7 @@ jest.mock('../../../../src/utils/fsHelper') const entity = 'folder/test' const extension = 'document' const objectType = 'documents' +const xmlName = 'Document' const line = `A force-app/main/default/${objectType}/${entity}.${extension}-meta.xml` let work @@ -38,7 +39,7 @@ describe('InFolderHandler', () => { await sut.handleAddition() // Assert - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(copyFiles).not.toHaveBeenCalled() }) }) @@ -57,7 +58,7 @@ describe('InFolderHandler', () => { await sut.handleAddition() // Assert - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(readDir).toHaveBeenCalledTimes(1) expect(copyFiles).toHaveBeenCalledTimes(3) expect(copyFiles).toHaveBeenCalledWith( @@ -79,7 +80,7 @@ describe('InFolderHandler', () => { await sut.handleAddition() // Assert - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(readDir).toHaveBeenCalledTimes(1) expect(copyFiles).toHaveBeenCalledTimes(5) }) diff --git a/__tests__/unit/lib/service/inResourceHandler.test.js b/__tests__/unit/lib/service/inResourceHandler.test.js index f2a7936a..fe7e5b91 100644 --- a/__tests__/unit/lib/service/inResourceHandler.test.js +++ b/__tests__/unit/lib/service/inResourceHandler.test.js @@ -15,6 +15,7 @@ const objectType = 'staticresources' const element = 'myResources' const basePath = 'force-app/main/default/staticresources' const entityPath = `${basePath}/${element}.js` +const xmlName = 'StaticResource' const line = `A ${entityPath}` const type = 'resource' let work @@ -51,7 +52,7 @@ describe('InResourceHandler', () => { await sut.handle() // Assert - expect(...work.diffs.package.get(objectType)).toEqual(element) + expect(...work.diffs.package.get(xmlName)).toEqual(element) expect(copyFiles).not.toBeCalled() }) }) @@ -74,17 +75,18 @@ describe('InResourceHandler', () => { ) }) it.each([ - ['staticresources', 'image', 'image.png', 3], - ['staticresources', 'image', 'image/logo.png', 3], + ['staticresources', 'StaticResource', 'image', 'image.png', 3], + ['staticresources', 'StaticResource', 'image', 'image/logo.png', 3], [ 'experiences', + 'ExperienceBundle', 'my_experience_bundle', 'my_experience_bundle/config/myexperiencebundle.json', 5, ], ])( 'should copy the matching folder resource, matching meta file and subject file', - async (type, entity, path, expectedCount) => { + async (type, xmlName, entity, path, expectedCount) => { // Arrange const base = 'force-app/main/default/' const line = `A ${base}${type}/${path}` @@ -94,7 +96,7 @@ describe('InResourceHandler', () => { await sut.handle() // Assert - expect(...work.diffs.package.get(type)).toEqual(entity) + expect(...work.diffs.package.get(xmlName)).toEqual(entity) expect(copyFiles).toBeCalledTimes(expectedCount) expect(copyFiles).toHaveBeenCalledWith( work.config, @@ -116,6 +118,7 @@ describe('InResourceHandler', () => { it('should copy the matching lwc', async () => { // Arrange const type = 'lwc' + const xmlName = 'LightningComponentBundle' const entity = 'lwcc' const path = 'lwcc/lwcc.js' const base = 'force-app/main/default/' @@ -126,7 +129,7 @@ describe('InResourceHandler', () => { await sut.handle() // Assert - expect(...work.diffs.package.get(type)).toEqual(entity) + expect(...work.diffs.package.get(xmlName)).toEqual(entity) expect(copyFiles).toBeCalledTimes(1) expect(copyFiles).toHaveBeenCalledWith( work.config, @@ -150,7 +153,7 @@ describe('InResourceHandler', () => { await sut.handle() // Assert - expect(...work.diffs.package.get(objectType)).toEqual(element) + expect(...work.diffs.package.get(xmlName)).toEqual(element) expect(copyFiles).toBeCalledTimes(2) expect(copyFiles).toHaveBeenCalledWith(work.config, `${entityPath}`) expect(copyFiles).not.toHaveBeenCalledWith( @@ -183,7 +186,7 @@ describe('InResourceHandler', () => { await sut.handle() // Assert - expect(...work.diffs.package.get(objectType)).toEqual(element) + expect(...work.diffs.package.get(xmlName)).toEqual(element) expect(pathExists).toHaveBeenCalledWith( expect.stringContaining('resource'), work.config @@ -207,10 +210,8 @@ describe('InResourceHandler', () => { await sut.handle() // Assert - expect(work.diffs.package.has(objectType)).toBe(false) - expect(...work.diffs.destructiveChanges.get(objectType)).toEqual( - element - ) + expect(work.diffs.package.has(xmlName)).toBe(false) + expect(...work.diffs.destructiveChanges.get(xmlName)).toEqual(element) expect(pathExists).toHaveBeenCalledWith( expect.stringContaining(element), work.config @@ -218,26 +219,4 @@ describe('InResourceHandler', () => { }) }) }) - - describe('when the line should not be processed', () => { - it.each([`${basePath}/.eslintrc.json`])( - 'does not handle the line', - async entityPath => { - // Arrange - const sut = new InResourceHandler( - `A ${entityPath}`, - objectType, - work, - globalMetadata - ) - - // Act - await sut.handle() - - // Assert - expect(work.diffs.package.size).toBe(0) - expect(copyFiles).not.toHaveBeenCalled() - } - ) - }) }) diff --git a/__tests__/unit/lib/service/lwcHandler.test.js b/__tests__/unit/lib/service/lwcHandler.test.js new file mode 100644 index 00000000..e99fd9b9 --- /dev/null +++ b/__tests__/unit/lib/service/lwcHandler.test.js @@ -0,0 +1,96 @@ +'use strict' +const LwcHandler = require('../../../../src/service/lwcHandler') +const { copyFiles, readDir } = require('../../../../src/utils/fsHelper') +const { + ADDITION, + DELETION, + MODIFICATION, +} = require('../../../../src/utils/gitConstants') + +jest.mock('../../../../src/utils/fsHelper') + +readDir.mockImplementationOnce(() => Promise.resolve([])) + +const objectType = 'lwc' +const element = 'component' +const basePath = `force-app/main/default/${objectType}` +const entityPath = `${basePath}/${element}/${element}.js` +const xmlName = 'LightningComponentBundle' +let work +beforeEach(() => { + jest.clearAllMocks() + work = { + config: { output: '', repo: '', generateDelta: true }, + diffs: { package: new Map(), destructiveChanges: new Map() }, + } +}) + +describe('lwcHandler', () => { + let globalMetadata + beforeAll(async () => { + // eslint-disable-next-line no-undef + globalMetadata = await getGlobalMetadata() + }) + describe('when the line should not be processed', () => { + it.each([`${basePath}/.eslintrc.json`, `${basePath}/jsconfig.json`])( + 'does not handle the line', + async entityPath => { + // Arrange + const sut = new LwcHandler( + `${ADDITION} ${entityPath}`, + objectType, + work, + globalMetadata + ) + + // Act + await sut.handle() + + // Assert + expect(work.diffs.package.size).toBe(0) + expect(copyFiles).not.toHaveBeenCalled() + } + ) + }) + + describe('when the line should be processed', () => { + it.each([ADDITION, MODIFICATION])( + 'handles the line for "%s" type change', + async changeType => { + // Arrange + const sut = new LwcHandler( + `${changeType} ${entityPath}`, + objectType, + work, + globalMetadata + ) + + // Act + await sut.handle() + + // Assert + expect(work.diffs.package.get(xmlName)).toEqual(new Set([element])) + expect(copyFiles).toHaveBeenCalled() + } + ) + + it('handles the line for "D" type change', async () => { + // Arrange + const sut = new LwcHandler( + `${DELETION} ${entityPath}`, + objectType, + work, + globalMetadata + ) + + // Act + await sut.handle() + + // Assert + expect(work.diffs.destructiveChanges.get(xmlName)).toEqual( + new Set([element]) + ) + expect(copyFiles).not.toHaveBeenCalled() + }) + }) +}) diff --git a/__tests__/unit/lib/service/standardHandler.test.js b/__tests__/unit/lib/service/standardHandler.test.js index 0d72d962..b8f2b71e 100644 --- a/__tests__/unit/lib/service/standardHandler.test.js +++ b/__tests__/unit/lib/service/standardHandler.test.js @@ -11,6 +11,7 @@ const { copyFiles } = require('../../../../src/utils/fsHelper') jest.mock('../../../../src/utils/fsHelper') const objectType = 'classes' +const xmlName = 'ApexClass' const entity = 'MyClass' const extension = 'cls' const basePath = 'force-app/main/default/' @@ -54,7 +55,7 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings.length).toEqual(1) - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(work.diffs.destructiveChanges.size).toEqual(0) expect(copyFiles).toBeCalled() }) @@ -100,7 +101,7 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(work.diffs.destructiveChanges.size).toEqual(0) expect(copyFiles).not.toBeCalled() }) @@ -119,7 +120,7 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) expect(work.diffs.package.size).toEqual(0) - expect(work.diffs.destructiveChanges.get(objectType)).toEqual( + expect(work.diffs.destructiveChanges.get(xmlName)).toEqual( new Set([entity]) ) expect(copyFiles).not.toBeCalled() @@ -145,7 +146,7 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(work.diffs.destructiveChanges.size).toEqual(0) expect(copyFiles).toBeCalledWith(work.config, entityPath) expect(copyFiles).toBeCalledWith( @@ -168,7 +169,7 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(work.diffs.destructiveChanges.size).toEqual(0) expect(copyFiles).toBeCalledWith(work.config, entityPath) expect(copyFiles).toBeCalledWith( @@ -194,7 +195,9 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) - expect(work.diffs.package.get('testSuites')).toEqual(new Set(['suite'])) + expect(work.diffs.package.get('ApexTestSuite')).toEqual( + new Set(['suite']) + ) expect(work.diffs.destructiveChanges.size).toEqual(0) expect(copyFiles).toBeCalledTimes(1) expect(copyFiles).toBeCalledWith(work.config, entityPath) @@ -219,7 +222,9 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) - expect(work.diffs.package.get('testSuites')).toEqual(new Set(['suite'])) + expect(work.diffs.package.get('ApexTestSuite')).toEqual( + new Set(['suite']) + ) expect(work.diffs.destructiveChanges.size).toEqual(0) expect(copyFiles).toBeCalledTimes(1) expect(copyFiles).toBeCalledWith(work.config, entityPath) @@ -249,7 +254,7 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) - expect(work.diffs.package.get(objectType)).toEqual(new Set([entity])) + expect(work.diffs.package.get(xmlName)).toEqual(new Set([entity])) expect(work.diffs.destructiveChanges.size).toEqual(0) expect(copyFiles).toBeCalledWith(work.config, entityPath) } @@ -269,7 +274,7 @@ describe(`StandardHandler`, () => { // Assert expect(work.warnings).toEqual([]) expect(work.diffs.package.size).toEqual(0) - expect(work.diffs.destructiveChanges.get(objectType)).toEqual( + expect(work.diffs.destructiveChanges.get(xmlName)).toEqual( new Set([entity]) ) expect(copyFiles).not.toBeCalled() diff --git a/__tests__/unit/lib/service/subCustomObjectHandler.test.js b/__tests__/unit/lib/service/subCustomObjectHandler.test.js index a1f8226f..9c561006 100644 --- a/__tests__/unit/lib/service/subCustomObjectHandler.test.js +++ b/__tests__/unit/lib/service/subCustomObjectHandler.test.js @@ -47,6 +47,7 @@ describe('SubCustomObjectHandler', () => { describe(`when field is not master detail`, () => { it('should not handle master detail exception', async () => { // Arrange + readPathFromGit.mockResolvedValueOnce('') const sut = new SubCustomObjectHandler( line, objectType, @@ -65,7 +66,7 @@ describe('SubCustomObjectHandler', () => { describe(`when field is master detail`, () => { it('should copy the parent object', async () => { // Arrange - readPathFromGit.mockImplementationOnce(() => MASTER_DETAIL_TAG) + readPathFromGit.mockResolvedValueOnce(MASTER_DETAIL_TAG) const sut = new SubCustomObjectHandler( line, objectType, diff --git a/__tests__/unit/lib/utils/fsHelper.test.js b/__tests__/unit/lib/utils/fsHelper.test.js index 5a9968f3..aa7a5034 100644 --- a/__tests__/unit/lib/utils/fsHelper.test.js +++ b/__tests__/unit/lib/utils/fsHelper.test.js @@ -38,6 +38,7 @@ jest.mock('../../../../src/utils/childProcessUtils', () => { let work beforeEach(() => { + jest.clearAllMocks() work = { config: { output: '.', @@ -100,6 +101,21 @@ describe('readPathFromGit', () => { expect(getStreamContent).toBeCalled() }) }) + + describe.each([undefined, null])('when path returned "%s"', value => { + beforeEach(() => { + // Arrange + getStreamContent.mockImplementation(() => Promise.resolve(value)) + }) + + it('should use "config.to" and "normalized path" to get git history', async () => { + // Act + const content = await readPathFromGit('path/file', work.config) + + // Assert + expect(content).toBe('') + }) + }) }) describe('copyFile', () => { @@ -118,6 +134,23 @@ describe('copyFile', () => { }) }) + describe('when file is already written', () => { + it('should not copy file', async () => { + // Arrange + treatPathSep.mockImplementationOnce(() => 'output/file') + await writeFile('source/file', 'content', work.config) + jest.resetAllMocks() + + // Act + await copyFiles(work.config, 'source/file', 'output/file') + + // Assert + expect(spawn).not.toBeCalled() + expect(getStreamContent).not.toBeCalled() + expect(outputFile).not.toBeCalled() + }) + }) + describe('when source location is empty', () => { it('should copy file', async () => { // Arrange @@ -541,5 +574,19 @@ describe('isSubDir', () => { expect(outputFile).toHaveBeenCalledWith('root/folder/file', content) } ) + + it('call only once for the same path', async () => { + // Arrange + const output = 'root' + const content = 'content' + const path = 'other/path/file' + await writeFile(path, content, { output }) + + // Act + await writeFile(path, content, { output }) + + // Assert + expect(outputFile).toBeCalledTimes(1) + }) }) }) diff --git a/__tests__/unit/lib/utils/fxpHelper.test.js b/__tests__/unit/lib/utils/fxpHelper.test.js index 0609c633..ae977990 100644 --- a/__tests__/unit/lib/utils/fxpHelper.test.js +++ b/__tests__/unit/lib/utils/fxpHelper.test.js @@ -3,6 +3,7 @@ const { asArray, parseXmlFileToJson, convertJsonToXml, + xml2Json, } = require('../../../../src/utils/fxpHelper') const { readPathFromGit } = require('../../../../src/utils/fsHelper') @@ -128,4 +129,36 @@ describe('fxpHelper', () => { }) }) }) + + describe('xml2Json', () => { + describe('when called with empty content', () => { + it('returns empty object', () => { + // Act + const jsonResult = xml2Json('') + + // Assert + expect(jsonResult).toStrictEqual({}) + }) + }) + describe('when called with xml content', () => { + it('returns json content', async () => { + // Act + const jsonContent = await xml2Json( + 'wow' + ) + + // Assert + expect(jsonContent).toEqual({ root: { '@_a': 'nice', a: 'wow' } }) + }) + }) + describe('when called with non xml content', () => { + it('returns empty object', async () => { + // Act + const jsonContent = await xml2Json({ attribute: 'value' }) + + // Assert + expect(jsonContent).toStrictEqual({}) + }) + }) + }) }) diff --git a/__tests__/unit/lib/utils/ignoreHelper.test.js b/__tests__/unit/lib/utils/ignoreHelper.test.js index fb3a60b0..ec01b447 100644 --- a/__tests__/unit/lib/utils/ignoreHelper.test.js +++ b/__tests__/unit/lib/utils/ignoreHelper.test.js @@ -92,6 +92,7 @@ describe('ignoreHelper', () => { `${ADDITION} path/to/file.ext`, `${MODIFICATION} path/to/file.ext`, `${DELETION} path/to/file.ext`, + `! path/to/file.ext`, ])('should keep "%s" line', line => { // Act const keep = sut.keep(line) diff --git a/__tests__/unit/lib/utils/fileGitDiff.test.js b/__tests__/unit/lib/utils/metadataDiff.test.js similarity index 77% rename from __tests__/unit/lib/utils/fileGitDiff.test.js rename to __tests__/unit/lib/utils/metadataDiff.test.js index 7fbfd942..0770f1dd 100644 --- a/__tests__/unit/lib/utils/fileGitDiff.test.js +++ b/__tests__/unit/lib/utils/metadataDiff.test.js @@ -1,5 +1,5 @@ 'use strict' -const FileGitDiff = require('../../../../src/utils/fileGitDiff') +const MetadataDiff = require('../../../../src/utils/metadataDiff') const { parseXmlFileToJson, convertJsonToXml, @@ -14,9 +14,12 @@ jest.mock('../../../../src/utils/fxpHelper', () => { convertJsonToXml: jest.fn(), } }) +const workFlowAttributes = new Map([ + ['alerts', { xmlName: 'WorkflowAlert', key: 'fullName' }], +]) -describe(`fileGitDiff`, () => { - let fileGitDiff +describe(`MetadataDiff`, () => { + let metadataDiff let globalMetadata let work let alert, alertOther, alertTest, wfBase, unTracked @@ -35,7 +38,7 @@ describe(`fileGitDiff`, () => { diffs: { package: new Map(), destructiveChanges: new Map() }, warnings: [], } - fileGitDiff = new FileGitDiff('workflows', work, globalMetadata) + metadataDiff = new MetadataDiff(work, globalMetadata, workFlowAttributes) alert = { '?xml': { '@_version': '1.0', '@_encoding': 'UTF-8' }, @@ -117,13 +120,26 @@ describe(`fileGitDiff`, () => { }) describe('compare', () => { + it('does not detect null file content', async () => { + // Arrange + parseXmlFileToJson.mockResolvedValueOnce('') + parseXmlFileToJson.mockResolvedValueOnce('') + + // Act + const { added, deleted } = await metadataDiff.compare('file/path') + + // Assert + expect(deleted.size).toBe(0) + expect(added.size).toBe(0) + }) + it('does not detect not tracked elements', async () => { // Arrange parseXmlFileToJson.mockResolvedValueOnce(unTracked) parseXmlFileToJson.mockResolvedValueOnce(wfBase) // Act - const { added, deleted } = await fileGitDiff.compare('file/path') + const { added, deleted } = await metadataDiff.compare('file/path') // Assert expect(deleted.size).toBe(0) @@ -136,11 +152,11 @@ describe(`fileGitDiff`, () => { parseXmlFileToJson.mockResolvedValueOnce(wfBase) // Act - const { added, deleted } = await fileGitDiff.compare('file/path') + const { added, deleted } = await metadataDiff.compare('file/path') // Assert expect(deleted.size).toBe(0) - expect(added.get('workflows.alerts')).toEqual( + expect(added.get('WorkflowAlert')).toEqual( new Set(['OtherTestEmailAlert', 'TestEmailAlert']) ) }) @@ -150,11 +166,26 @@ describe(`fileGitDiff`, () => { parseXmlFileToJson.mockResolvedValueOnce(alert) // Act - const { added, deleted } = await fileGitDiff.compare('file/path') + const { added, deleted } = await metadataDiff.compare('file/path') // Assert expect(added.size).toBe(0) - expect(deleted.get('workflows.alerts')).toEqual( + expect(deleted.get('WorkflowAlert')).toEqual( + new Set(['OtherTestEmailAlert', 'TestEmailAlert']) + ) + }) + + it('detects deleted file', async () => { + // Arrange + parseXmlFileToJson.mockResolvedValueOnce('') + parseXmlFileToJson.mockResolvedValueOnce(alert) + + // Act + const { added, deleted } = await metadataDiff.compare('file/path') + + // Assert + expect(added.size).toBe(0) + expect(deleted.get('WorkflowAlert')).toEqual( new Set(['OtherTestEmailAlert', 'TestEmailAlert']) ) }) @@ -171,11 +202,11 @@ describe(`fileGitDiff`, () => { }) // Act - const { added, deleted } = await fileGitDiff.compare('file/path') + const { added, deleted } = await metadataDiff.compare('file/path') // Assert expect(deleted.size).toBe(0) - expect(added.get('workflows.alerts')).toEqual(new Set(['TestEmailAlert'])) + expect(added.get('WorkflowAlert')).toEqual(new Set(['TestEmailAlert'])) }) }) describe('prune', () => { @@ -183,23 +214,22 @@ describe(`fileGitDiff`, () => { // Arrange parseXmlFileToJson.mockResolvedValueOnce(alert) parseXmlFileToJson.mockResolvedValueOnce(alertTest) - await fileGitDiff.compare('file/path') + await metadataDiff.compare('file/path') // Act - fileGitDiff.prune() + metadataDiff.prune() // Assert expect(convertJsonToXml).toHaveBeenCalledWith(alertOther) }) it('given zero element added and one element delete, the generated file contains empty declaration', async () => { // Arrange - parseXmlFileToJson.mockResolvedValueOnce(alertTest) parseXmlFileToJson.mockResolvedValueOnce(alert) - await fileGitDiff.compare('file/path') + await metadataDiff.compare('file/path') // Act - fileGitDiff.prune() + metadataDiff.prune() // Assert expect(convertJsonToXml).toHaveBeenCalledWith({ @@ -214,10 +244,10 @@ describe(`fileGitDiff`, () => { // Arrange parseXmlFileToJson.mockResolvedValueOnce(alert) parseXmlFileToJson.mockResolvedValueOnce(wfBase) - await fileGitDiff.compare('file/path') + await metadataDiff.compare('file/path') // Act - fileGitDiff.prune() + metadataDiff.prune() // Assert expect(convertJsonToXml).toHaveBeenCalledWith(alert) @@ -233,10 +263,10 @@ describe(`fileGitDiff`, () => { alerts: { ...alertOther.Workflow.alerts, description: 'amazing' }, }, }) - await fileGitDiff.compare('file/path') + await metadataDiff.compare('file/path') // Act - fileGitDiff.prune() + metadataDiff.prune() // Assert expect(convertJsonToXml).toHaveBeenCalledWith(alertOther) @@ -246,10 +276,10 @@ describe(`fileGitDiff`, () => { // Arrange parseXmlFileToJson.mockResolvedValueOnce(unTracked) parseXmlFileToJson.mockResolvedValueOnce(wfBase) - await fileGitDiff.compare('file/path') + await metadataDiff.compare('file/path') // Act - fileGitDiff.prune() + metadataDiff.prune() // Assert expect(convertJsonToXml).toHaveBeenCalledWith(unTracked) diff --git a/__tests__/unit/lib/utils/packageHelper.test.js b/__tests__/unit/lib/utils/packageHelper.test.js index b93f39aa..b3db1bb4 100644 --- a/__tests__/unit/lib/utils/packageHelper.test.js +++ b/__tests__/unit/lib/utils/packageHelper.test.js @@ -11,7 +11,7 @@ const tests = [ 'Object', new Map( Object.entries({ - objects: new Set([ + CustomObject: new Set([ 'Object', 'YetAnotherObject', 'OtherObject', @@ -45,11 +45,11 @@ const tests = [ 'full', new Map( Object.entries({ - dashboards: new Set(['Dashboard']), - documents: new Set(['Document']), - fields: new Set(['Field']), - lwc: new Set(['Component']), - objects: new Set(['Object', 'YetAnotherObject', 'OtherObject']), + CustomField: new Set(['Field']), + CustomObject: new Set(['Object', 'YetAnotherObject', 'OtherObject']), + Dashboard: new Set(['Dashboard']), + Document: new Set(['Document']), + LightningComponentBundle: new Set(['Component']), WaveLens: new Set(['Lens']), WaveRecipe: new Set(['Recipe']), }) @@ -104,20 +104,14 @@ const tests = [ ] describe(`test if package builder`, () => { - let globalMetadata let packageConstructor beforeAll(async () => { - // eslint-disable-next-line no-undef - globalMetadata = await getGlobalMetadata() - packageConstructor = new PackageBuilder(options, globalMetadata) + packageConstructor = new PackageBuilder(options) }) - test.each(tests)( - 'can build %s destructiveChanges.xml', - (_, diff, expected) => { - expect(packageConstructor.buildPackage(diff)).toBe(expected) - } - ) + test.each(tests)('can build %s manifest', (_, diff, expected) => { + expect(packageConstructor.buildPackage(diff)).toBe(expected) + }) test('can handle null diff', () => { expect(packageConstructor.buildPackage(null)).toBe(undefined) }) diff --git a/package.json b/package.json index d5e63556..3b352864 100644 --- a/package.json +++ b/package.json @@ -25,13 +25,13 @@ }, "author": "Sebastien Colladon ", "dependencies": { - "@oclif/command": "^1.8.22", + "@oclif/command": "^1.8.23", "@oclif/config": "^1.18.8", - "@oclif/core": "^2.8.0", + "@oclif/core": "^2.8.2", "@oclif/errors": "^1.3.6", "@salesforce/command": "^5.3.5", - "@salesforce/core": "^3.34.6", - "fast-xml-parser": "^4.1.3", + "@salesforce/core": "^3.34.7", + "fast-xml-parser": "^4.2.2", "fs-extra": "^11.1.1", "ignore": "^5.2.4", "lodash": "^4.17.21", @@ -70,41 +70,41 @@ "upgrade:dependencies": "yarn yarn-upgrade-all" }, "devDependencies": { - "@commitlint/cli": "^17.5.1", - "@commitlint/config-conventional": "^17.4.4", - "@commitlint/prompt-cli": "^17.5.0", + "@commitlint/cli": "^17.6.1", + "@commitlint/config-conventional": "^17.6.1", + "@commitlint/prompt-cli": "^17.6.1", "@oclif/dev-cli": "^1.26.10", "@oclif/plugin-help": "^5.2.9", - "@oclif/test": "^2.3.14", - "@salesforce/cli-plugins-testkit": "^3.3.2", + "@oclif/test": "^2.3.16", + "@salesforce/cli-plugins-testkit": "^3.3.3", "@salesforce/dev-config": "^3.1.0", "@salesforce/ts-sinon": "^1.4.6", "@stryker-mutator/core": "^6.4.2", "@stryker-mutator/jest-runner": "^6.4.2", - "@swc/core": "^1.3.44", + "@swc/core": "^1.3.52", "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "@types/node": "^18.15.11", - "@typescript-eslint/eslint-plugin": "^5.57.1", - "@typescript-eslint/parser": "^5.57.1", + "@types/node": "^18.15.12", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", "chai": "^4.3.7", - "eslint": "^8.37.0", + "eslint": "^8.38.0", "eslint-config-prettier": "^8.8.0", "eslint-config-salesforce-typescript": "^1.1.1", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsdoc": "^40.1.1", + "eslint-plugin-jsdoc": "^43.0.6", "eslint-plugin-prettier": "^4.2.1", "husky": "^8.0.3", "jest": "^29.5.0", - "lint-staged": "^13.2.0", + "lint-staged": "^13.2.1", "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.8.7", "prettier-eslint": "^15.0.1", "shx": "^0.3.4", - "sinon": "^15.0.3", + "sinon": "^15.0.4", "ts-node": "^10.9.1", - "typescript": "^5.0.3", + "typescript": "^5.0.4", "yarn-upgrade-all": "^0.7.2" }, "oclif": { diff --git a/src/metadata/a48.json b/src/metadata/a48.json index d8ba5696..562bc178 100644 --- a/src/metadata/a48.json +++ b/src/metadata/a48.json @@ -27,14 +27,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -381,47 +373,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -450,34 +401,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -499,13 +422,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -583,14 +499,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1271,13 +1179,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1285,15 +1210,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1301,7 +1230,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1309,23 +1239,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1333,7 +1266,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1341,7 +1275,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1349,7 +1284,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1357,14 +1293,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/metadataManager.js b/src/metadata/metadataManager.js index 554593a4..b7bce054 100644 --- a/src/metadata/metadataManager.js +++ b/src/metadata/metadataManager.js @@ -5,6 +5,8 @@ const { readdir } = require('fs').promises const _apiMap = new Map() let _latestVersion = null const describeMetadata = new Map() +const inFileMetadata = new Map() +const waveMetadata = new Map() const buildAPIMap = async () => { if (_apiMap.size === 0) { @@ -44,6 +46,37 @@ const getDefinition = async (grouping, apiVersion) => { }, new Map()) } +const isPackable = type => + !Array.from(inFileMetadata.values()).find( + inFileDef => inFileDef.xmlName === type + ).excluded + +const getInFileAttributes = metadata => + inFileMetadata.size + ? inFileMetadata + : Array.from(metadata.values()) + .filter(meta => meta.xmlTag) + .reduce( + (acc, meta) => + acc.set(meta.xmlTag, { + xmlName: meta.xmlName, + key: meta.key, + excluded: !!meta.excluded, + }), + inFileMetadata + ) + +const getWaveMetadata = metadata => + waveMetadata.size + ? waveMetadata + : Array.from(metadata.values()) + .filter(meta => meta.content) + .flatMap(elem => elem.content) + .reduce((acc, val) => acc.set(val.suffix, val.xmlName), waveMetadata) + module.exports.getDefinition = getDefinition +module.exports.getInFileAttributes = getInFileAttributes module.exports.getLatestSupportedVersion = getLatestSupportedVersion +module.exports.getWaveMetadata = getWaveMetadata +module.exports.isPackable = isPackable module.exports.isVersionSupported = isVersionSupported diff --git a/src/metadata/v46.json b/src/metadata/v46.json index 7685bf87..006c6b2a 100644 --- a/src/metadata/v46.json +++ b/src/metadata/v46.json @@ -20,14 +20,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -374,46 +366,6 @@ "suffix": "delivery", "xmlName": "EventDelivery" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -442,27 +394,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -484,13 +415,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -533,14 +457,6 @@ "suffix": "cspTrustedSite", "xmlName": "CspTrustedSite" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1017,13 +933,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1031,15 +964,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1047,7 +984,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1055,23 +993,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1079,7 +1020,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1087,7 +1029,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1095,7 +1038,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1103,14 +1047,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v47.json b/src/metadata/v47.json index 5ed52130..7ec5d796 100644 --- a/src/metadata/v47.json +++ b/src/metadata/v47.json @@ -27,14 +27,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -381,47 +373,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -450,34 +401,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -499,13 +422,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -583,14 +499,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1250,13 +1158,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1264,15 +1189,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1280,7 +1209,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1288,23 +1218,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1312,7 +1245,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1320,7 +1254,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1328,7 +1263,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1336,14 +1272,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v49.json b/src/metadata/v49.json index cedde42a..48e15012 100644 --- a/src/metadata/v49.json +++ b/src/metadata/v49.json @@ -27,14 +27,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -381,47 +373,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -450,34 +401,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -499,13 +422,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -583,14 +499,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1264,13 +1172,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1278,15 +1203,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1294,7 +1223,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1302,23 +1232,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1326,7 +1259,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1334,7 +1268,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1342,7 +1277,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1350,14 +1286,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v50.json b/src/metadata/v50.json index cedde42a..48e15012 100644 --- a/src/metadata/v50.json +++ b/src/metadata/v50.json @@ -27,14 +27,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -381,47 +373,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -450,34 +401,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -499,13 +422,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -583,14 +499,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1264,13 +1172,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1278,15 +1203,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1294,7 +1223,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1302,23 +1232,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1326,7 +1259,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1334,7 +1268,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1342,7 +1277,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1350,14 +1286,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v51.json b/src/metadata/v51.json index a610dad2..682499e9 100644 --- a/src/metadata/v51.json +++ b/src/metadata/v51.json @@ -90,14 +90,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -444,47 +436,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -513,34 +464,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -562,13 +485,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -646,14 +562,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1334,13 +1242,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1348,15 +1273,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1364,7 +1293,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1372,23 +1302,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1396,7 +1329,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1404,7 +1338,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1412,7 +1347,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1420,14 +1356,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v52.json b/src/metadata/v52.json index 984a95fe..cc9f7db1 100644 --- a/src/metadata/v52.json +++ b/src/metadata/v52.json @@ -90,14 +90,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -444,47 +436,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -513,34 +464,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -562,13 +485,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -646,14 +562,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1341,13 +1249,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1355,15 +1280,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1371,7 +1300,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1379,23 +1309,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1403,7 +1336,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1411,7 +1345,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1419,7 +1354,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1427,14 +1363,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v53.json b/src/metadata/v53.json index 984a95fe..cc9f7db1 100644 --- a/src/metadata/v53.json +++ b/src/metadata/v53.json @@ -90,14 +90,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -444,47 +436,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -513,34 +464,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -562,13 +485,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -646,14 +562,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1341,13 +1249,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1355,15 +1280,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1371,7 +1300,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1379,23 +1309,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1403,7 +1336,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1411,7 +1345,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1419,7 +1354,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1427,14 +1363,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v54.json b/src/metadata/v54.json index 984a95fe..cc9f7db1 100644 --- a/src/metadata/v54.json +++ b/src/metadata/v54.json @@ -90,14 +90,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -444,47 +436,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -513,34 +464,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -562,13 +485,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -646,14 +562,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1341,13 +1249,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1355,15 +1280,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1371,7 +1300,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1379,23 +1309,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1403,7 +1336,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1411,7 +1345,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1419,7 +1354,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1427,14 +1363,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v55.json b/src/metadata/v55.json index 8451e187..1319766e 100644 --- a/src/metadata/v55.json +++ b/src/metadata/v55.json @@ -167,14 +167,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -528,47 +520,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -597,34 +548,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -646,13 +569,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -730,14 +646,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1425,13 +1333,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1439,15 +1364,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1455,7 +1384,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1463,23 +1393,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1487,7 +1420,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1495,7 +1429,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1503,7 +1438,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1511,14 +1447,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v56.json b/src/metadata/v56.json index bd9c7536..5eb762a2 100644 --- a/src/metadata/v56.json +++ b/src/metadata/v56.json @@ -167,14 +167,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -535,47 +527,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -604,34 +555,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -653,13 +576,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -737,14 +653,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1446,13 +1354,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1460,15 +1385,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1476,7 +1405,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1484,23 +1414,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1508,7 +1441,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1516,7 +1450,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1524,7 +1459,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1532,14 +1468,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/metadata/v57.json b/src/metadata/v57.json index bd9c7536..5eb762a2 100644 --- a/src/metadata/v57.json +++ b/src/metadata/v57.json @@ -167,14 +167,6 @@ "suffix": "installedPackage", "xmlName": "InstalledPackage" }, - { - "childXmlNames": "CustomLabel", - "directoryName": "labels", - "inFolder": false, - "metaFile": false, - "suffix": "labels", - "xmlName": "CustomLabels" - }, { "directoryName": "staticresources", "inFolder": false, @@ -535,47 +527,6 @@ "suffix": "flowDefinition", "xmlName": "FlowDefinition" }, - { - "childXmlNames": [ - "WorkflowFieldUpdate", - "WorkflowKnowledgePublish", - "WorkflowTask", - "WorkflowAlert", - "WorkflowSend", - "WorkflowOutboundMessage", - "WorkflowFlowAction", - "WorkflowRule" - ], - "directoryName": "workflows", - "inFolder": false, - "metaFile": false, - "suffix": "workflow", - "xmlName": "Workflow" - }, - { - "childXmlNames": "AssignmentRule", - "directoryName": "assignmentRules", - "inFolder": false, - "metaFile": false, - "suffix": "assignmentRules", - "xmlName": "AssignmentRules" - }, - { - "childXmlNames": "AutoResponseRule", - "directoryName": "autoResponseRules", - "inFolder": false, - "metaFile": false, - "suffix": "autoResponseRules", - "xmlName": "AutoResponseRules" - }, - { - "childXmlNames": "EscalationRule", - "directoryName": "escalationRules", - "inFolder": false, - "metaFile": false, - "suffix": "escalationRules", - "xmlName": "EscalationRules" - }, { "directoryName": "postTemplates", "inFolder": false, @@ -604,34 +555,6 @@ "suffix": "homePageLayout", "xmlName": "HomePageLayout" }, - { - "directoryName": "objectTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "objectTranslation", - "xmlName": "CustomObjectTranslation" - }, - { - "directoryName": "translations", - "inFolder": false, - "metaFile": false, - "suffix": "translation", - "xmlName": "Translations" - }, - { - "directoryName": "globalValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "globalValueSetTranslation", - "xmlName": "GlobalValueSetTranslation" - }, - { - "directoryName": "standardValueSetTranslations", - "inFolder": false, - "metaFile": false, - "suffix": "standardValueSetTranslation", - "xmlName": "StandardValueSetTranslation" - }, { "directoryName": "classes", "inFolder": false, @@ -653,13 +576,6 @@ "suffix": "testSuite", "xmlName": "ApexTestSuite" }, - { - "directoryName": "profiles", - "inFolder": false, - "metaFile": false, - "suffix": "profile", - "xmlName": "Profile" - }, { "directoryName": "permissionsets", "inFolder": false, @@ -737,14 +653,6 @@ "suffix": "redirectWhitelistUrl", "xmlName": "RedirectWhitelistUrl" }, - { - "childXmlNames": "MatchingRule", - "directoryName": "matchingRules", - "inFolder": false, - "metaFile": false, - "suffix": "matchingRule", - "xmlName": "MatchingRules" - }, { "directoryName": "duplicateRules", "inFolder": false, @@ -1446,13 +1354,30 @@ } ] }, + { + "childXmlNames": [ + "WorkflowFieldUpdate", + "WorkflowKnowledgePublish", + "WorkflowTask", + "WorkflowAlert", + "WorkflowSend", + "WorkflowOutboundMessage", + "WorkflowRule" + ], + "directoryName": "workflows", + "inFolder": false, + "metaFile": false, + "suffix": "workflow", + "xmlName": "Workflow" + }, { "directoryName": "workflows.alerts", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowAlert", - "xmlTag": "alerts" + "xmlTag": "alerts", + "key": "fullName" }, { "directoryName": "workflows.fieldUpdates", @@ -1460,15 +1385,19 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowFieldUpdate", - "xmlTag": "fieldUpdates" + "xmlTag": "fieldUpdates", + "key": "fullName" }, { - "directoryName": "labels.labels", + "directoryName": "labels", "inFolder": false, "metaFile": false, "parentXmlName": "CustomLabels", "xmlName": "CustomLabel", - "xmlTag": "labels" + "childXmlNames": "CustomLabel", + "suffix": "labels", + "xmlTag": "labels", + "key": "fullName" }, { "directoryName": "workflows.outboundMessages", @@ -1476,7 +1405,8 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowOutboundMessage", - "xmlTag": "outboundMessages" + "xmlTag": "outboundMessages", + "key": "fullName" }, { "directoryName": "workflows.rules", @@ -1484,23 +1414,26 @@ "metaFile": false, "parentXmlName": "Workflow", "xmlName": "WorkflowRule", - "xmlTag": "rules" + "xmlTag": "rules", + "key": "fullName" }, { - "directoryName": "workflows.flowActions", + "directoryName": "workflows.knowledgePublishes", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowFlowAction", - "xmlTag": "flowActions" + "xmlName": "WorkflowKnowledgePublish", + "xmlTag": "knowledgePublishes", + "key": "fullName" }, { - "directoryName": "workflows.knowledgePublishes", + "directoryName": "workflows.tasks", "inFolder": false, "metaFile": false, "parentXmlName": "Workflow", - "xmlName": "WorkflowKnowledgePublish", - "xmlTag": "knowledgePublishes" + "xmlName": "WorkflowTask", + "xmlTag": "tasks", + "key": "fullName" }, { "directoryName": "sharingRules.sharingCriteriaRules", @@ -1508,7 +1441,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingCriteriaRule", - "xmlTag": "sharingCriteriaRules" + "xmlTag": "sharingCriteriaRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingGuestRules", @@ -1516,7 +1450,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingGuestRule", - "xmlTag": "sharingGuestRules" + "xmlTag": "sharingGuestRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingOwnerRules", @@ -1524,7 +1459,8 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingOwnerRule", - "xmlTag": "sharingOwnerRules" + "xmlTag": "sharingOwnerRules", + "key": "fullName" }, { "directoryName": "sharingRules.sharingTerritoryRules", @@ -1532,14 +1468,507 @@ "metaFile": false, "parentXmlName": "SharingRules", "xmlName": "SharingTerritoryRule", - "xmlTag": "sharingTerritoryRules" + "xmlTag": "sharingTerritoryRules", + "key": "fullName" }, { - "directoryName": "workflows.tasks", + "childXmlNames": "AssignmentRule", + "directoryName": "assignmentRules", "inFolder": false, "metaFile": false, - "parentXmlName": "Workflow", - "xmlName": "WorkflowTask", - "xmlTag": "tasks" + "suffix": "assignmentRules", + "xmlName": "AssignmentRules" + }, + { + "directoryName": "assignmentRules.assignmentRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AssignmentRules", + "xmlName": "AssignmentRule", + "xmlTag": "assignmentRule", + "key": "fullName" + }, + { + "childXmlNames": "AutoResponseRule", + "directoryName": "autoResponseRules", + "inFolder": false, + "metaFile": false, + "suffix": "autoResponseRules", + "xmlName": "AutoResponseRules" + }, + { + "directoryName": "autoResponseRules.autoResponseRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "AutoResponseRules", + "xmlName": "AutoResponseRule", + "xmlTag": "autoResponseRule", + "key": "fullName" + }, + { + "childXmlNames": "EscalationRule", + "directoryName": "escalationRules", + "inFolder": false, + "metaFile": false, + "suffix": "escalationRules", + "xmlName": "EscalationRules" + }, + { + "directoryName": "escalationRules.escalationRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "EscalationRules", + "xmlName": "EscalationRule", + "xmlTag": "escalationRule", + "key": "fullName" + }, + { + "childXmlNames": "MatchingRule", + "directoryName": "matchingRules", + "inFolder": false, + "metaFile": false, + "suffix": "matchingRule", + "xmlName": "MatchingRules" + }, + { + "directoryName": "matchingRules.matchingRule", + "inFolder": false, + "metaFile": false, + "parentXmlName": "MatchingRules", + "xmlName": "MatchingRule", + "xmlTag": "matchingRules", + "key": "fullName" + }, + { + "directoryName": "globalValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "globalValueSetTranslation", + "xmlName": "GlobalValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "globalValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "GlobalValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "standardValueSetTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "standardValueSetTranslation", + "xmlName": "StandardValueSetTranslation", + "pruneOnly": true + }, + { + "directoryName": "standardValueSetTranslations.valueTranslation", + "inFolder": false, + "metaFile": false, + "parentXmlName": "StandardValueSetTranslation", + "xmlName": "ValueTranslation", + "xmlTag": "valueTranslation", + "key": "masterLabel", + "excluded": true + }, + { + "directoryName": "profiles", + "inFolder": false, + "metaFile": false, + "suffix": "profile", + "xmlName": "Profile", + "pruneOnly": true + }, + { + "directoryName": "profiles.categoryGroupVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApplicationVisibility", + "xmlTag": "categoryGroupVisibilities", + "key": "dataCategoryGroup", + "excluded": true + }, + { + "directoryName": "profiles.applicationVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCategoryGroupVisibility", + "xmlTag": "applicationVisibilities", + "key": "application", + "excluded": true + }, + { + "directoryName": "profiles.classAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexClassAccess", + "xmlTag": "classAccesses", + "key": "apexClass", + "excluded": true + }, + { + "directoryName": "profiles.customMetadataTypeAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomMetadataTypeAccess[", + "xmlTag": "customMetadataTypeAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomPermissions", + "xmlTag": "customPermissions", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.customSettingAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileCustomSettingAccesses", + "xmlTag": "customSettingAccesses", + "key": "name", + "excluded": true + }, + { + "directoryName": "profiles.externalDataSourceAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileExternalDataSourceAccess", + "xmlTag": "externalDataSourceAccesses", + "key": "externalDataSource", + "excluded": true + }, + { + "directoryName": "profiles.fieldPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFieldLevelSecurity", + "xmlTag": "fieldPermissions", + "key": "field", + "excluded": true + }, + { + "directoryName": "profiles.flowAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileFlowAccess", + "xmlTag": "flowAccesses", + "key": "flow", + "excluded": true + }, + { + "directoryName": "profiles.loginFlows", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "LoginFlow", + "xmlTag": "loginFlows", + "key": "friendlyname", + "excluded": true + }, + { + "directoryName": "profiles.objectPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileObjectPermissions", + "xmlTag": "objectPermissions", + "key": "object", + "excluded": true + }, + { + "directoryName": "profiles.pageAccesses", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileApexPageAccess", + "xmlTag": "pageAccesses", + "key": "apexPage", + "excluded": true + }, + { + "directoryName": "profiles.profileActionOverrides", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileActionOverride", + "xmlTag": "profileActionOverrides", + "key": "actionName", + "excluded": true + }, + { + "directoryName": "profiles.recordTypeVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileRecordTypeVisibility", + "xmlTag": "recordTypeVisibilities", + "key": "recordType", + "excluded": true + }, + { + "directoryName": "profiles.tabVisibilities", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileTabVisibility", + "xmlTag": "tabVisibilities", + "key": "tab", + "excluded": true + }, + { + "directoryName": "profiles.userPermissions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Profile", + "xmlName": "ProfileUserPermission", + "xmlTag": "userPermissions", + "key": "name", + "excluded": true + }, + + + { + "directoryName": "translations", + "inFolder": false, + "metaFile": false, + "suffix": "translation", + "xmlName": "Translations", + "pruneOnly": true + }, + { + "directoryName": "translation.bots", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "BotTranslation", + "xmlTag": "bots", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.customApplications", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomApplicationTranslation", + "xmlTag": "customApplications", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customLabels", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomLabelTranslation", + "xmlTag": "customLabels", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customPageWebLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomPageWebLinkTranslation", + "xmlTag": "customPageWebLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.customTabs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "CustomTabTranslation", + "xmlTag": "customTabs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.flowDefinitions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "FlowDefinitionTranslation", + "xmlTag": "flowDefinitions", + "key": "fullName", + "excluded": true + }, + { + "directoryName": "translation.pipelineInspMetricConfigs", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PipelineInspMetricConfigTranslation", + "xmlTag": "pipelineInspMetricConfigs", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.prompts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "PromptTranslation", + "xmlTag": "prompts", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "GlobalQuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.reportTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ReportTypeTranslation", + "xmlTag": "reportTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "translation.scontrols", + "inFolder": false, + "metaFile": false, + "parentXmlName": "Translations", + "xmlName": "ScontrolTranslation", + "xmlTag": "scontrols", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations", + "inFolder": false, + "metaFile": false, + "suffix": "objectTranslation", + "xmlName": "CustomObjectTranslation", + "pruneOnly": true + }, + { + "directoryName": "objectTranslations.fields", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "CustomFieldTranslation", + "xmlTag": "fields", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.fieldSets", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "FieldSetTranslation", + "xmlTag": "fieldSets", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.layouts", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "LayoutTranslation", + "xmlTag": "layouts", + "key": "layout", + "excluded": true + }, + { + "directoryName": "objectTranslations.namedFilters", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "NamedFilterTranslation", + "xmlTag": "namedFilters", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.quickActions", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "QuickActionTranslation", + "xmlTag": "quickActions", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.recordTypes", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "RecordTypeTranslation", + "xmlTag": "recordTypes", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.sharingReasons", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "SharingReasonTranslation", + "xmlTag": "sharingReasons", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.validationRules", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "ValidationRuleTranslation", + "xmlTag": "validationRules", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.webLinks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WebLinkTranslation", + "xmlTag": "webLinks", + "key": "name", + "excluded": true + }, + { + "directoryName": "objectTranslations.workflowTasks", + "inFolder": false, + "metaFile": false, + "parentXmlName": "CustomObjectTranslation", + "xmlName": "WorkflowTaskTranslation", + "xmlTag": "workflowTasks", + "key": "name", + "excluded": true } ] diff --git a/src/post-processor/flowTranslationProcessor.js b/src/post-processor/flowTranslationProcessor.js index 5682d874..72d3b33e 100644 --- a/src/post-processor/flowTranslationProcessor.js +++ b/src/post-processor/flowTranslationProcessor.js @@ -1,28 +1,49 @@ 'use strict' const BaseProcessor = require('./baseProcessor') const { - FLOW_DIRECTORY_NAME, + FLOW_XML_NAME, META_REGEX, METAFILE_SUFFIX, TRANSLATION_EXTENSION, TRANSLATION_TYPE, } = require('../utils/metadataConstants') -const { copyFiles, scanExtension, isSubDir } = require('../utils/fsHelper') -const { parse } = require('path') +const { + writeFile, + scanExtension, + isSubDir, + readFile, +} = require('../utils/fsHelper') +const { pathExists } = require('fs-extra') +const { parse, join } = require('path') const { forPath } = require('../utils/ignoreHelper') -const { asArray, parseXmlFileToJson } = require('../utils/fxpHelper') +const { + asArray, + parseXmlFileToJson, + xml2Json, + convertJsonToXml, +} = require('../utils/fxpHelper') const { fillPackageWithParameter } = require('../utils/packageHelper') +const { treatPathSep } = require('../utils/childProcessUtils') + +const EXTENSION = `${TRANSLATION_EXTENSION}${METAFILE_SUFFIX}` const getTranslationName = translationPath => parse(translationPath.replace(META_REGEX, '')).name -const EXTENSION = `${TRANSLATION_EXTENSION}${METAFILE_SUFFIX}` +const getDefaultTranslation = () => ({ + '?xml': { '@_version': '1.0', '@_encoding': 'UTF-8' }, + Translations: { + '@_xmlns': 'http://soap.sforce.com/2006/04/metadata', + flowDefinitions: [], + }, +}) + class FlowTranslationProcessor extends BaseProcessor { translationPaths constructor(work, metadata) { super(work, metadata) - this.translationPaths = new Set() + this.translationPaths = new Map() } async process() { @@ -44,30 +65,48 @@ class FlowTranslationProcessor extends BaseProcessor { const ign = await this._getIgnoreInstance() for await (const translationPath of translationsIterator) { - const translationName = getTranslationName(translationPath) if ( - !this.work.diffs.package.get(TRANSLATION_TYPE)?.has(translationName) && !ign?.ignores(translationPath) && !isSubDir(this.config.output, translationPath) ) { - this._parseTranslationFile(translationName) + this._parseTranslationFile(translationPath) } } } async _handleFlowTranslation() { - const copyTranslationsPromises = [] for (const translationPath of this.translationPaths.keys()) { fillPackageWithParameter({ store: this.work.diffs.package, type: TRANSLATION_TYPE, - elementName: getTranslationName(translationPath), + member: getTranslationName(translationPath), }) if (this.config.generateDelta) { - copyTranslationsPromises.push(copyFiles(this.config, translationPath)) + const jsonTranslation = await this._getTranslationAsJSON( + translationPath + ) + this._scrapTranslationFile( + jsonTranslation, + this.translationPaths.get(translationPath) + ) + const scrappedTranslation = convertJsonToXml(jsonTranslation) + await writeFile(translationPath, scrappedTranslation, this.config) } } - await Promise.all(copyTranslationsPromises) + } + + _scrapTranslationFile(jsonTranslation, actualFlowDefinition) { + const flowDefinitions = asArray( + jsonTranslation.Translations?.flowDefinitions + ) + const fullNames = new Set(flowDefinitions.map(flowDef => flowDef.fullName)) + const strippedActualFlowDefinition = actualFlowDefinition.filter( + flowDef => !fullNames.has(flowDef.fullName) + ) + + jsonTranslation.Translations.flowDefinitions = flowDefinitions.concat( + strippedActualFlowDefinition + ) } async _parseTranslationFile(translationPath) { @@ -81,20 +120,39 @@ class FlowTranslationProcessor extends BaseProcessor { flowDefinitions.forEach(flowDefinition => this._addFlowPerTranslation({ translationPath, - fullName: flowDefinition.fullName, + flowDefinition, }) ) } - _addFlowPerTranslation({ translationPath, fullName }) { - const packagedElements = this.work.diffs.package.get(FLOW_DIRECTORY_NAME) - if (packagedElements?.has(fullName)) { - this.translationPaths.add(translationPath) + _addFlowPerTranslation({ translationPath, flowDefinition }) { + const packagedElements = this.work.diffs.package.get(FLOW_XML_NAME) + if (packagedElements.has(flowDefinition.fullName)) { + if (!this.translationPaths.has(translationPath)) { + this.translationPaths.set(translationPath, []) + } + this.translationPaths.get(translationPath).push(flowDefinition) + } + } + + async _getTranslationAsJSON(translationPath) { + const translationPathInOutputFolder = join( + this.config.output, + treatPathSep(translationPath) + ) + const translationExist = await pathExists(translationPathInOutputFolder) + + let jsonTranslation = getDefaultTranslation() + if (translationExist) { + const xmlTranslation = await readFile(translationPathInOutputFolder) + jsonTranslation = xml2Json(xmlTranslation) } + + return jsonTranslation } _shouldProcess() { - return this.work.diffs.package.has(FLOW_DIRECTORY_NAME) + return this.work.diffs.package.has(FLOW_XML_NAME) } async _getIgnoreInstance() { diff --git a/src/post-processor/packageGenerator.js b/src/post-processor/packageGenerator.js index e310ca5f..2b9ac208 100644 --- a/src/post-processor/packageGenerator.js +++ b/src/post-processor/packageGenerator.js @@ -35,7 +35,7 @@ class PackageGenerator extends BaseProcessor { } async buildPackages() { - const pc = new PackageBuilder(this.config, this.metadata) + const pc = new PackageBuilder(this.config) await Promise.all( [ { diff --git a/src/service/ObjectTranslationHandler.js b/src/service/ObjectTranslationHandler.js new file mode 100644 index 00000000..3bc46d95 --- /dev/null +++ b/src/service/ObjectTranslationHandler.js @@ -0,0 +1,42 @@ +'use strict' +const ResourceHandler = require('./inResourceHandler') +const StandardHandler = require('./standardHandler') +const { getInFileAttributes } = require('../metadata/metadataManager') +const { + OBJECT_TRANSLATION_META_XML_SUFFIX, +} = require('../utils/metadataConstants') +const { writeFile } = require('../utils/fsHelper') +const { parse, sep } = require('path') +const MetadataDiff = require('../utils/metadataDiff') + +class ObjectTranslationHandler extends ResourceHandler { + async handleAddition() { + await StandardHandler.prototype.handleAddition.apply(this) + if (!this.config.generateDelta) return + + const objectTranslationPath = this.getObjectTranslationPath() + await this._copyObjectTranslation(objectTranslationPath) + } + + async _copyObjectTranslation(path) { + const inFileMetadata = getInFileAttributes(this.metadata) + const metadataDiff = new MetadataDiff( + this.config, + this.metadata, + inFileMetadata + ) + await metadataDiff.compare(path) + const xmlContent = metadataDiff.prune() + await writeFile(path, xmlContent, this.config) + } + + getObjectTranslationPath() { + // Return Object Translation Path for both objectTranslation and fieldTranslation + // QUESTION: Why fieldTranslation element are not deployable when objectTranslation element is not in the deployed sources ? + return `${parse(this.line).dir}${sep}${ + this.splittedLine[this.splittedLine.length - 2] + }.${OBJECT_TRANSLATION_META_XML_SUFFIX}` + } +} + +module.exports = ObjectTranslationHandler diff --git a/src/service/customObjectHandler.js b/src/service/customObjectHandler.js index d376df7f..cb9bdb81 100644 --- a/src/service/customObjectHandler.js +++ b/src/service/customObjectHandler.js @@ -23,6 +23,7 @@ class CustomObjectHandler extends StandardHandler { const exists = await pathExists(fieldsFolder, this.config) if (!exists) return + // QUESTION: Why we need to add parent object for Master Detail field ? https://help.salesforce.com/s/articleView?id=000386883&type=1 const fields = await readDir(fieldsFolder, this.config) const masterDetailsFields = await asyncFilter(fields, async fieldPath => { const content = await readPathFromGit( diff --git a/src/service/inBundleHandler.js b/src/service/inBundleHandler.js index 437027e9..b5ed9205 100644 --- a/src/service/inBundleHandler.js +++ b/src/service/inBundleHandler.js @@ -17,7 +17,7 @@ class BundleHandler extends InResourceHandler { const packageMember = bundlePath .join(sep) .replace(META_REGEX, '') - .replace(new RegExp(`\\.${this.metadata.get(this.type).suffix}$`), '') + .replace(this.suffixRegex, '') return cleanUpPackageMember(packageMember) } diff --git a/src/service/inFileHandler.js b/src/service/inFileHandler.js index 9887216a..f35534c3 100644 --- a/src/service/inFileHandler.js +++ b/src/service/inFileHandler.js @@ -1,12 +1,16 @@ 'use strict' const { LABEL_EXTENSION, - LABEL_DIRECTORY_NAME, + LABEL_XML_NAME, } = require('../utils/metadataConstants') const StandardHandler = require('./standardHandler') const { basename } = require('path') const { writeFile } = require('../utils/fsHelper') -const FileGitDiff = require('../utils/fileGitDiff') +const { + getInFileAttributes, + isPackable, +} = require('../metadata/metadataManager') +const MetadataDiff = require('../utils/metadataDiff') const { cleanUpPackageMember, fillPackageWithParameter, @@ -14,16 +18,13 @@ const { const getRootType = line => basename(line).split('.')[0] const getNamePrefix = ({ subType, line }) => - subType !== LABEL_DIRECTORY_NAME ? `${getRootType(line)}.` : '' + subType !== LABEL_XML_NAME ? `${getRootType(line)}.` : '' class InFileHandler extends StandardHandler { constructor(line, type, work, metadata) { super(line, type, work, metadata) - this.fileGitDiff = new FileGitDiff( - metadata.get(this.type)?.directoryName, - this.config, - metadata - ) + const inFileMetadata = getInFileAttributes(metadata) + this.metadataDiff = new MetadataDiff(this.config, metadata, inFileMetadata) } async handleAddition() { @@ -35,7 +36,11 @@ class InFileHandler extends StandardHandler { } async handleDeletion() { - await this._compareRevision() + if (this.metadata.get(this.type).pruneOnly) { + await super.handleDeletion() + } else { + await this._compareRevision() + } } async handleModification() { @@ -43,27 +48,27 @@ class InFileHandler extends StandardHandler { } async _compareRevision() { - const { added, deleted } = await this.fileGitDiff.compare(this.line) + const { added, deleted } = await this.metadataDiff.compare(this.line) this._storeComparison(this.diffs.destructiveChanges, deleted) this._storeComparison(this.diffs.package, added) } async _writeScopedContent() { - const xmlContent = this.fileGitDiff.prune() + const xmlContent = this.metadataDiff.prune() await writeFile(this.line, xmlContent, this.config) } _storeComparison(store, content) { for (const [type, members] of content) { - for (const fullName of members) { - this._fillPackage(store, type, fullName) + for (const member of members) { + this._fillPackage(store, type, member) } } } - _fillPackage(store, subType, fullName) { + _fillPackage(store, subType, member) { // Call from super.handleAddition to add the Root Type - // InFile element are not deployable when root component is not listed in package.xml... + // QUESTION: Why InFile element are not deployable when root component is not listed in package.xml ? if (arguments.length === 1) { if (this.type !== LABEL_EXTENSION) { super._fillPackage(store) @@ -71,15 +76,17 @@ class InFileHandler extends StandardHandler { return } - const member = cleanUpPackageMember( - `${getNamePrefix({ subType, line: this.line })}${fullName}` - ) + if (isPackable(subType)) { + const cleanedMember = cleanUpPackageMember( + `${getNamePrefix({ subType, line: this.line })}${member}` + ) - fillPackageWithParameter({ - store, - type: subType, - member, - }) + fillPackageWithParameter({ + store, + type: subType, + member: cleanedMember, + }) + } } } diff --git a/src/service/inResourceHandler.js b/src/service/inResourceHandler.js index 74d644ee..1e9525f7 100644 --- a/src/service/inResourceHandler.js +++ b/src/service/inResourceHandler.js @@ -3,7 +3,6 @@ const StandardHandler = require('./standardHandler') const { join, parse } = require('path') const { pathExists, readDir } = require('../utils/fsHelper') const { META_REGEX } = require('../utils/metadataConstants') -const { sep } = require('path') const { cleanUpPackageMember } = require('../utils/packageHelper') const STATICRESOURCE_TYPE = 'staticresources' @@ -77,14 +76,7 @@ class ResourceHandler extends StandardHandler { } _isProcessable() { - const parsedLine = parse(this.line) - const parentFolder = parsedLine.dir.split(sep).pop() - - return ( - super._isProcessable() || - parentFolder !== this.type || - !parsedLine.name.startsWith('.') - ) + return true } } diff --git a/src/service/inTranslationHandler.js b/src/service/inTranslationHandler.js deleted file mode 100644 index fe52d6df..00000000 --- a/src/service/inTranslationHandler.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict' -const ResourceHandler = require('./inResourceHandler') -const StandardHandler = require('./standardHandler') -const { - OBJECT_TRANSLATION_META_XML_SUFFIX, -} = require('../utils/metadataConstants') -const { parse, sep } = require('path') - -class TranslationHandler extends ResourceHandler { - async handleAddition() { - await StandardHandler.prototype.handleAddition.apply(this) - if (!this.config.generateDelta) return - await this._copyObjectTranslation() - } - - async _copyObjectTranslation() { - const objectTranslationName = `${parse(this.line).dir}${sep}${ - this.splittedLine[this.splittedLine.length - 2] - }.${OBJECT_TRANSLATION_META_XML_SUFFIX}` - await this._copyWithMetaFile(objectTranslationName) - } -} - -module.exports = TranslationHandler diff --git a/src/service/lwcHandler.js b/src/service/lwcHandler.js new file mode 100644 index 00000000..961100a0 --- /dev/null +++ b/src/service/lwcHandler.js @@ -0,0 +1,13 @@ +'use strict' +const InResourceHandler = require('./inResourceHandler') +const { parse, sep } = require('path') + +class LwcHandler extends InResourceHandler { + _isProcessable() { + const parentFolder = parse(this.line).dir.split(sep).pop() + + return parentFolder !== this.type + } +} + +module.exports = LwcHandler diff --git a/src/service/standardHandler.js b/src/service/standardHandler.js index 9f86f1a0..8b391ae3 100644 --- a/src/service/standardHandler.js +++ b/src/service/standardHandler.js @@ -28,11 +28,11 @@ class StandardHandler { this.warnings = work.warnings this.splittedLine = this.line.split(sep) - if (this.metadata.get(this.type).metaFile === true) { + if (this.metadata.get(this.type)?.metaFile === true) { this.line = this.line.replace(METAFILE_SUFFIX, '') } - this.suffixRegex = new RegExp(`\\.${this.metadata.get(this.type).suffix}$`) + this.suffixRegex = new RegExp(`\\.${this.metadata.get(this.type)?.suffix}$`) this.handlerMap = { [ADDITION]: this.handleAddition, @@ -93,7 +93,7 @@ class StandardHandler { _fillPackage(store) { fillPackageWithParameter({ store, - type: this.type, + type: this.metadata.get(this.type).xmlName, member: this._getElementName(), }) } diff --git a/src/service/subCustomObjectHandler.js b/src/service/subCustomObjectHandler.js index 7bfb9ea4..4b2d4fb2 100644 --- a/src/service/subCustomObjectHandler.js +++ b/src/service/subCustomObjectHandler.js @@ -12,8 +12,9 @@ class SubCustomObjectHandler extends StandardHandler { await super.handleAddition() if (!this.config.generateDelta) return + // QUESTION: Why we need to add parent object for Master Detail field ? https://help.salesforce.com/s/articleView?id=000386883&type=1 const data = await readPathFromGit(this.line, this.config) - if (!data?.includes(MASTER_DETAIL_TAG)) return + if (!data.includes(MASTER_DETAIL_TAG)) return const customObjectDirPath = this.splittedLine .slice(0, [this.splittedLine.indexOf(this.type)]) diff --git a/src/service/typeHandlerFactory.js b/src/service/typeHandlerFactory.js index 4d3e55b7..8f77e5a4 100644 --- a/src/service/typeHandlerFactory.js +++ b/src/service/typeHandlerFactory.js @@ -5,15 +5,18 @@ const InBundleHandler = require('./inBundleHandler') const InFile = require('./inFileHandler') const InFolder = require('./inFolderHandler') const InResource = require('./inResourceHandler') +const LwcHandler = require('./lwcHandler') const Standard = require('./standardHandler') const SubCustomObject = require('./subCustomObjectHandler') -const InTranslation = require('./inTranslationHandler') +const ObjectTranslation = require('./ObjectTranslationHandler') const Wave = require('./waveHandler') const { getType } = require('../utils/typeUtils') const classes = { - aura: InResource, + assignmentRules: InFile, + autoResponseRules: InFile, + aura: LwcHandler, bots: Bot, businessProcesses: SubCustomObject, compactLayouts: SubCustomObject, @@ -22,23 +25,29 @@ const classes = { discovery: Wave, documents: InFolder, email: InFolder, + escalationRules: InFile, experiences: InResource, fieldSets: SubCustomObject, fields: SubCustomObject, + globalValueSetTranslations: InFile, indexes: SubCustomObject, labels: InFile, listViews: SubCustomObject, - lwc: InResource, + lwc: LwcHandler, + matchingRules: InFile, objects: CustomObject, - objectTranslations: InTranslation, + objectTranslations: ObjectTranslation, + profiles: InFile, recordTypes: SubCustomObject, reports: InFolder, rules: SubCustomObject, sharingReasons: SubCustomObject, sharingRules: InFile, + standardValueSetTranslations: InFile, staticresources: InResource, territories: SubCustomObject, territory2Models: CustomObject, + translations: InFile, validationRules: SubCustomObject, wave: Wave, waveTemplates: InResource, diff --git a/src/service/waveHandler.js b/src/service/waveHandler.js index 0641d5c9..ccd4d2d4 100644 --- a/src/service/waveHandler.js +++ b/src/service/waveHandler.js @@ -1,24 +1,19 @@ 'use strict' const StandardHandler = require('./standardHandler') const { fillPackageWithParameter } = require('../utils/packageHelper') - -const WAVE_SUBTYPE = new Map() +const { getWaveMetadata } = require('../metadata/metadataManager') class WaveHandler extends StandardHandler { + waveMetadata + constructor(line, type, work, metadata) { super(line, type, work, metadata) - - this.metadata - .get(this.type) - .content.reduce( - (acc, val) => acc.set(val.suffix, val.xmlName), - WAVE_SUBTYPE - ) this.suffixRegex = new RegExp(`\\.${this.ext}$`) + this.waveMetadata = getWaveMetadata(this.metadata) } _fillPackage(store) { - const type = WAVE_SUBTYPE.get(this.ext) + const type = this.waveMetadata.get(this.ext) fillPackageWithParameter({ store, type: type, @@ -27,7 +22,7 @@ class WaveHandler extends StandardHandler { } _isProcessable() { - return super._isProcessable() || WAVE_SUBTYPE.has(this.ext) + return super._isProcessable() || this.waveMetadata.has(this.ext) } } diff --git a/src/utils/fileGitDiff.js b/src/utils/fileGitDiff.js deleted file mode 100644 index 47376d6d..00000000 --- a/src/utils/fileGitDiff.js +++ /dev/null @@ -1,136 +0,0 @@ -'use strict' - -const { asArray, parseXmlFileToJson, convertJsonToXml } = require('./fxpHelper') -const { isEqual } = require('lodash') -const { safeAdd } = require('./packageHelper') - -let xmlObjectToPackageType - -// Store functional area -// Side effect on store -const addToStore = - store => - ({ type, member }) => { - safeAdd({ store, type, member }) - return store - } - -const hasMember = store => subType => member => - store.get(getDirectoryNameForSubType(subType))?.has(member) - -// Metadata functional area -const getMetadataByKey = metadata => meta => metadata.get(meta) - -const getXmlTagToTypeDefinitionMap = metadata => { - const extractType = getMetadataByKey(metadata) - return [...metadata.keys()] - .filter(meta => extractType(meta)?.xmlTag) - .reduce((acc, meta) => { - const typeDef = extractType(meta) - acc.set(typeDef.xmlTag, typeDef) - return acc - }, new Map()) -} - -// Metadata JSON structure functional area -const getRootMetadata = fileContent => Object.values(fileContent)?.[1] - -const getDirectoryNameForSubType = subType => - xmlObjectToPackageType.get(subType).directoryName - -const getSubTypeTags = fileContent => - Object.values(fileContent) - .flatMap(tag => Object.keys(tag)) - .filter(tag => xmlObjectToPackageType.has(tag)) - -const extractMetadataForSubtype = fileContent => subType => - asArray(getRootMetadata(fileContent)?.[subType]) - -// Diff processing functional area -const processMetadataForRootType = - dir => (contentAtRef, otherContent, predicat) => - getSubTypeTags(contentAtRef) - .flatMap( - processMetadataForSubType(dir, contentAtRef, otherContent, predicat) - ) - .reduce((store, nameByType) => addToStore(store)(nameByType), new Map()) - -const processMetadataForSubType = - (dir, baseContent, otherContent, predicat) => subType => { - const type = `${dir}.${subType}` - const extractBase = extractMetadataForSubtype(baseContent) - const extractOther = extractMetadataForSubtype(otherContent) - const baseMeta = extractBase(subType) - const otherMeta = extractOther(subType) - const processElement = getElementProcessor(type, predicat, otherMeta) - return baseMeta.map(processElement).filter(x => x !== undefined) - } - -const getElementProcessor = (type, predicat, otherMeta) => elem => { - if (predicat(otherMeta, elem)) { - return { type, member: elem.fullName } - } -} - -// Partial JSON generation functional area -const generatePartialJSON = jsonContent => store => { - const extract = extractMetadataForSubtype(jsonContent) - const storeHasMember = hasMember(store) - return getSubTypeTags(jsonContent).reduce((acc, subType) => { - const meta = extract(subType) - const storeHasMemberForType = storeHasMember(subType) - const rootMetadata = getRootMetadata(acc) - rootMetadata[subType] = meta.filter(elem => - storeHasMemberForType(elem.fullName) - ) - return acc - }, jsonContent) -} - -class FileGitDiff { - constructor(parentDirectoryName, config, metadata) { - this.config = config - this.parentDirectoryName = parentDirectoryName - this.metadata = metadata - this.configTo = { - repo: this.config.repo, - to: this.config.to, - } - this.configFrom = { - repo: this.config.repo, - to: this.config.from, - } - xmlObjectToPackageType = - xmlObjectToPackageType ?? getXmlTagToTypeDefinitionMap(metadata) - } - - async compare(path) { - this.toContent = await parseXmlFileToJson(path, this.configTo) - const fromContent = await parseXmlFileToJson(path, this.configFrom) - - const diff = processMetadataForRootType(this.parentDirectoryName) - - // Added or Modified - this.added = diff(this.toContent, fromContent, (meta, elem) => { - const match = meta.find(el => el.fullName === elem.fullName) - return !match || !isEqual(match, elem) - }) - - // Deleted - const deleted = diff(fromContent, this.toContent, (meta, elem) => { - return !meta.some(el => el.fullName === elem.fullName) - }) - - return { - added: this.added, - deleted, - } - } - - prune() { - const prunedContent = generatePartialJSON(this.toContent)(this.added) - return convertJsonToXml(prunedContent) - } -} - -module.exports = FileGitDiff diff --git a/src/utils/fsHelper.js b/src/utils/fsHelper.js index 468b95d1..5277629a 100644 --- a/src/utils/fsHelper.js +++ b/src/utils/fsHelper.js @@ -15,9 +15,10 @@ const FOLDER = 'tree' const showCmd = ['--no-pager', 'show'] const gitPathSeparatorNormalizer = path => path?.replace(/\\+/g, GIT_PATH_SEP) const copiedFiles = new Set() +const writtenFiles = new Set() const copyFiles = async (config, src) => { - if (copiedFiles.has(src)) return + if (copiedFiles.has(src) || writtenFiles.has(src)) return copiedFiles.add(src) try { @@ -100,6 +101,8 @@ async function* scan(dir, config) { } const writeFile = async (path, content, { output }) => { + if (writtenFiles.has(path)) return + writtenFiles.add(path) await outputFile(join(output, treatPathSep(path)), content) } diff --git a/src/utils/fxpHelper.js b/src/utils/fxpHelper.js index 43c7590d..e91ce1bb 100644 --- a/src/utils/fxpHelper.js +++ b/src/utils/fxpHelper.js @@ -23,12 +23,16 @@ const asArray = node => { return node != null ? (Array.isArray(node) ? node : [node]) : [] } -const parseXmlFileToJson = async (line, config) => { - const xmlContent = await readPathFromGit(line, config) +const xml2Json = xmlContent => { const xmlParser = new XMLParser(XML_PARSER_OPTION) return xmlParser.parse(xmlContent) } +const parseXmlFileToJson = async (line, config) => { + const xmlContent = await readPathFromGit(line, config) + return xml2Json(xmlContent) +} + const convertJsonToXml = jsonContent => { const xmlBuilder = new XMLBuilder(JSON_PARSER_OPTION) return xmlBuilder @@ -39,3 +43,4 @@ const convertJsonToXml = jsonContent => { module.exports.asArray = asArray module.exports.convertJsonToXml = convertJsonToXml module.exports.parseXmlFileToJson = parseXmlFileToJson +module.exports.xml2Json = xml2Json diff --git a/src/utils/metadataConstants.js b/src/utils/metadataConstants.js index ed932089..7e4fb17f 100644 --- a/src/utils/metadataConstants.js +++ b/src/utils/metadataConstants.js @@ -2,12 +2,12 @@ const { MINUS, PLUS } = require('../utils/gitConstants') const FIELD_DIRECTORY_NAME = 'fields' -const FLOW_DIRECTORY_NAME = 'flows' +const FLOW_XML_NAME = 'Flow' const FULLNAME = 'fullName' const FULLNAME_XML_TAG = new RegExp(`<${FULLNAME}>(.*)`) const INFOLDER_SUFFIX = `Folder` const LABEL_EXTENSION = 'labels' -const LABEL_DIRECTORY_NAME = `labels.${LABEL_EXTENSION}` +const LABEL_XML_NAME = 'CustomLabel' const MASTER_DETAIL_TAG = 'MasterDetail' const METAFILE_SUFFIX = '-meta.xml' const META_REGEX = new RegExp(`${METAFILE_SUFFIX}$`) @@ -15,6 +15,7 @@ const OBJECT_META_XML_SUFFIX = `object${METAFILE_SUFFIX}` const OBJECT_TRANSLATION_TYPE = 'objectTranslations' const OBJECT_TRANSLATION_META_XML_SUFFIX = `objectTranslation${METAFILE_SUFFIX}` const OBJECT_TYPE = 'objects' +const OBJECT_XML_NAME = 'CustomObject' const SUB_OBJECT_TYPES = [ 'businessProcesses', 'compactLayouts', @@ -31,17 +32,17 @@ const SUB_OBJECT_TYPES = [ ] const TERRITORY_MODEL_TYPE = 'territory2Models' const TRANSLATION_EXTENSION = 'translation' -const TRANSLATION_TYPE = 'translations' +const TRANSLATION_TYPE = 'Translations' const XML_TAG = new RegExp(`^[${MINUS}${PLUS}]?\\s*<([^(/><.)]+)>\\s*$`) const XML_HEADER_TAG_END = '?>' module.exports.FIELD_DIRECTORY_NAME = FIELD_DIRECTORY_NAME -module.exports.FLOW_DIRECTORY_NAME = FLOW_DIRECTORY_NAME +module.exports.FLOW_XML_NAME = FLOW_XML_NAME module.exports.FULLNAME = FULLNAME module.exports.FULLNAME_XML_TAG = FULLNAME_XML_TAG module.exports.INFOLDER_SUFFIX = INFOLDER_SUFFIX module.exports.LABEL_EXTENSION = LABEL_EXTENSION -module.exports.LABEL_DIRECTORY_NAME = LABEL_DIRECTORY_NAME +module.exports.LABEL_XML_NAME = LABEL_XML_NAME module.exports.MASTER_DETAIL_TAG = MASTER_DETAIL_TAG module.exports.METAFILE_SUFFIX = METAFILE_SUFFIX module.exports.META_REGEX = META_REGEX @@ -50,6 +51,7 @@ module.exports.OBJECT_TRANSLATION_META_XML_SUFFIX = OBJECT_TRANSLATION_META_XML_SUFFIX module.exports.OBJECT_TRANSLATION_TYPE = OBJECT_TRANSLATION_TYPE module.exports.OBJECT_TYPE = OBJECT_TYPE +module.exports.OBJECT_XML_NAME = OBJECT_XML_NAME module.exports.SUB_OBJECT_TYPES = SUB_OBJECT_TYPES module.exports.TERRITORY_MODEL_TYPE = TERRITORY_MODEL_TYPE module.exports.TRANSLATION_EXTENSION = TRANSLATION_EXTENSION diff --git a/src/utils/metadataDiff.js b/src/utils/metadataDiff.js new file mode 100644 index 00000000..a25fee8d --- /dev/null +++ b/src/utils/metadataDiff.js @@ -0,0 +1,132 @@ +'use strict' + +const { asArray, parseXmlFileToJson, convertJsonToXml } = require('./fxpHelper') +const { isEqual } = require('lodash') +const { fillPackageWithParameter } = require('./packageHelper') + +// Store functional area +// Side effect on store +const addToStore = + store => + ({ type, member }) => { + fillPackageWithParameter({ store, type, member }) + return store + } + +const hasMember = store => attributes => subType => member => + store.get(attributes.get(subType)?.xmlName)?.has(member) + +const selectKey = attributes => type => elem => elem[attributes.get(type).key] + +// Metadata JSON structure functional area +const getRootMetadata = fileContent => Object.values(fileContent)?.[1] ?? {} + +const getSubTypeTags = attributes => fileContent => + Object.keys(getRootMetadata(fileContent)).filter(tag => attributes.has(tag)) + +const extractMetadataForSubtype = fileContent => subType => + asArray(getRootMetadata(fileContent)?.[subType]) + +// Diff processing functional area +const compareContent = attributes => (contentAtRef, otherContent, predicat) => + getSubTypeTags(attributes)(contentAtRef) + .flatMap( + processMetadataForSubType( + contentAtRef, + otherContent, + predicat, + attributes + ) + ) + .reduce((store, nameByType) => addToStore(store)(nameByType), new Map()) + +const processMetadataForSubType = + (baseContent, otherContent, predicat, attributes) => subType => { + const baseMeta = extractMetadataForSubtype(baseContent)(subType) + const otherMeta = extractMetadataForSubtype(otherContent)(subType) + const processElement = getElementProcessor( + subType, + predicat, + otherMeta, + attributes + ) + return baseMeta.map(processElement).filter(x => x !== undefined) + } + +const getElementProcessor = (type, predicat, otherMeta, attributes) => elem => { + if (predicat(otherMeta, type, elem)) { + return { + type: attributes.get(type).xmlName, + member: selectKey(attributes)(type)(elem), + } + } +} + +// Partial JSON generation functional are +// Side effect on jsonContent +const generatePartialJSON = attributes => jsonContent => store => { + const extract = extractMetadataForSubtype(jsonContent) + const storeHasMember = hasMember(store)(attributes) + return getSubTypeTags(attributes)(jsonContent).reduce((acc, subType) => { + const meta = extract(subType) + const storeHasMemberForType = storeHasMember(subType) + const key = selectKey(attributes)(subType) + const rootMetadata = getRootMetadata(acc) + rootMetadata[subType] = meta.filter(elem => + storeHasMemberForType(key(elem)) + ) + return acc + }, jsonContent) +} + +class MetadataDiff { + constructor(config, metadata, attributes) { + this.config = config + this.metadata = metadata + this.attributes = attributes + this.configTo = { + repo: this.config.repo, + to: this.config.to, + } + this.configFrom = { + repo: this.config.repo, + to: this.config.from, + } + } + + async compare(path) { + this.toContent = await parseXmlFileToJson(path, this.configTo) + const fromContent = await parseXmlFileToJson(path, this.configFrom) + + const diff = compareContent(this.attributes) + + // Added or Modified + this.add = diff(this.toContent, fromContent, (meta, type, elem) => { + const key = selectKey(this.attributes)(type) + const match = meta.find(el => key(el) === key(elem)) + return !match || !isEqual(match, elem) + }) + + // Will be done when not needed + // Deleted + const del = diff(fromContent, this.toContent, (meta, type, elem) => { + const key = selectKey(this.attributes)(type) + return !meta.some(el => key(el) === key(elem)) + }) + + return { + added: this.add, + deleted: del, + jsonContent: this.toContent, + } + } + + prune(jsonContent = this.toContent, elements = this.add) { + const prunedContent = generatePartialJSON(this.attributes)(jsonContent)( + elements + ) + return convertJsonToXml(prunedContent) + } +} + +module.exports = MetadataDiff diff --git a/src/utils/packageHelper.js b/src/utils/packageHelper.js index 39e227d6..b253a3ff 100644 --- a/src/utils/packageHelper.js +++ b/src/utils/packageHelper.js @@ -2,16 +2,11 @@ const { create } = require('xmlbuilder2') const xmlConf = { indent: ' ', newline: '\n', prettyPrint: true } const frLocale = 'fr' +const { OBJECT_XML_NAME } = require('../utils/metadataConstants') module.exports = class PackageBuilder { - constructor(config, metadata) { + constructor(config) { this.config = config - this.metadata = metadata - this.looseMetadata = [...this.metadata.keys()] - .filter(type => this.metadata.get(type).content) - .flatMap(type => - this.metadata.get(type).content.map(content => content.xmlName) - ) } buildPackage(strucDiffPerType) { @@ -21,9 +16,6 @@ module.exports = class PackageBuilder { xmlns: 'http://soap.sforce.com/2006/04/metadata', }) Array.from(strucDiffPerType.keys()) - .filter( - type => this.metadata.has(type) || this.looseMetadata.includes(type) - ) .sort(this._sortTypesWithMetadata) .forEach(metadataType => [...strucDiffPerType.get(metadataType)] @@ -33,25 +25,20 @@ module.exports = class PackageBuilder { return type }, xml.ele('types')) .ele('name') - .txt(this.metadata.get(metadataType)?.xmlName ?? metadataType) + .txt(metadataType) ) xml.ele('version').txt(`${this.config.apiVersion}.0`) return xml.end(xmlConf) } _sortTypesWithMetadata = (x, y) => { - if (x === 'objects') return -1 // @deprecated To remove when the order will not impact the result of the deployment - const xMeta = this.metadata.get(x)?.xmlName ?? x - const yMeta = this.metadata.get(y)?.xmlName ?? y - return new Intl.Collator(frLocale).compare(xMeta, yMeta) + // QUESTION: Why Object needs to be ordered first in package.xml so it can be deployed ? + if (x === OBJECT_XML_NAME) return -1 // @deprecated To remove when the order will not impact the result of the deployment + return new Intl.Collator(frLocale).compare(x, y) } } const fillPackageWithParameter = ({ store, type, member }) => { - safeAdd({ store, type, member }) -} - -const safeAdd = ({ store, type, member }) => { if (!store.has(type)) { store.set(type, new Set()) } @@ -65,4 +52,3 @@ const cleanUpPackageMember = packageMember => { module.exports.cleanUpPackageMember = cleanUpPackageMember module.exports.fillPackageWithParameter = fillPackageWithParameter -module.exports.safeAdd = safeAdd diff --git a/yarn.lock b/yarn.lock index 83201307..1a3951da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,59 +3,26 @@ "@ampproject/remapping@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: - "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.21.4": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.20.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" - integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== - "@babel/compat-data@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" - integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.0" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.21.0" - "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.0" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/core@~7.21.0": +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@~7.21.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== @@ -76,17 +43,7 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.21.0", "@babel/generator@^7.21.1", "@babel/generator@^7.7.2": - version "7.21.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" - integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== - dependencies: - "@babel/types" "^7.21.0" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.21.4", "@babel/generator@~7.21.0": +"@babel/generator@^7.21.4", "@babel/generator@^7.7.2", "@babel/generator@~7.21.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== @@ -103,17 +60,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" - integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" - "@babel/helper-compilation-targets@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" @@ -167,13 +113,13 @@ "@babel/types" "^7.21.0" "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.21.4" -"@babel/helper-module-transforms@^7.21.0", "@babel/helper-module-transforms@^7.21.2": +"@babel/helper-module-transforms@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== @@ -194,7 +140,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== @@ -242,7 +188,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": +"@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== @@ -265,12 +211,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" - integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== - -"@babel/parser@^7.21.4", "@babel/parser@~7.21.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4", "@babel/parser@~7.21.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== @@ -344,20 +285,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.21.4": +"@babel/plugin-syntax-jsx@^7.21.4", "@babel/plugin-syntax-jsx@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -407,20 +341,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.20.0": +"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-transform-modules-commonjs@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" @@ -475,7 +402,7 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.20.7", "@babel/traverse@^7.21.4": +"@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== @@ -491,32 +418,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.7.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" - integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.1" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.2" - "@babel/types" "^7.21.2" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" - integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@babel/types@^7.20.0", "@babel/types@^7.21.4": +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== @@ -530,13 +432,13 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@commitlint/cli@^17.5.1": - version "17.5.1" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.5.1.tgz#db176538db7b4140c8856c88a46bd15ec705f881" - integrity sha512-pRRgGSzdHQHehxZbGA3qF6wVPyl+EEQgTe/t321rtMLFbuJ7nRj2waS17s/v5oEbyZtiY5S8PGB6XtEIm0I+Sg== +"@commitlint/cli@^17.6.1": + version "17.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.6.1.tgz#571a1272a656cd316f4b601cbb0fcb2ef50bfc7a" + integrity sha512-kCnDD9LE2ySiTnj/VPaxy4/oRayRcdv4aCuVxtoum8SxIU7OADHc0nJPQfheE8bHcs3zZdWzDMWltRosuT13bg== dependencies: "@commitlint/format" "^17.4.4" - "@commitlint/lint" "^17.4.4" + "@commitlint/lint" "^17.6.1" "@commitlint/load" "^17.5.0" "@commitlint/read" "^17.5.1" "@commitlint/types" "^17.4.4" @@ -546,10 +448,10 @@ resolve-global "1.0.0" yargs "^17.0.0" -"@commitlint/config-conventional@^17.4.4": - version "17.4.4" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.4.4.tgz#f30b1e5b2e48ce5799a483c200c52f218a98efcc" - integrity sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ== +"@commitlint/config-conventional@^17.6.1": + version "17.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.6.1.tgz#ab07c82c88f99ffee89ae321f1f49f1798127fbb" + integrity sha512-ng/ybaSLuTCH9F+7uavSOnEQ9EFMl7lHEjfAEgRh1hwmEe8SpLKpQeMo2aT1IWvHaGMuTb+gjfbzoRf2IR23NQ== dependencies: conventional-changelog-conventionalcommits "^5.0.0" @@ -594,14 +496,14 @@ "@commitlint/types" "^17.4.4" semver "7.3.8" -"@commitlint/lint@^17.4.4": - version "17.4.4" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.4.4.tgz#0ecd70b44ec5f4823c2e00e0c4b04ebd41d42856" - integrity sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw== +"@commitlint/lint@^17.6.1": + version "17.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.6.1.tgz#52275acc6b3d92a9ad466535331c5dd8e85b6f42" + integrity sha512-VARJ9kxH64isgwVnC+ABPafCYzqxpsWJIpDaTuI0gh8aX4GQ0i7cn9tvxtFNfJj4ER2BAJeWJ0vURdNYjK2RQQ== dependencies: "@commitlint/is-ignored" "^17.4.4" "@commitlint/parse" "^17.4.4" - "@commitlint/rules" "^17.4.4" + "@commitlint/rules" "^17.6.1" "@commitlint/types" "^17.4.4" "@commitlint/load@^17.5.0": @@ -638,19 +540,19 @@ conventional-changelog-angular "^5.0.11" conventional-commits-parser "^3.2.2" -"@commitlint/prompt-cli@^17.5.0": - version "17.5.0" - resolved "https://registry.yarnpkg.com/@commitlint/prompt-cli/-/prompt-cli-17.5.0.tgz#7e7d37ab99a3e40885c5fdf11ee6fea407cf0926" - integrity sha512-+pjD2TyZ+jngFP26oJsRTk1VBZrfX0fxrvoNjULoRilqD/cH96S1GC+dzLA+1M1bNwKye4Ff/SNLdwj9jaFXxA== +"@commitlint/prompt-cli@^17.6.1": + version "17.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/prompt-cli/-/prompt-cli-17.6.1.tgz#da1d81f22b18d51eafe75b8ee4cb806d8a19cf3c" + integrity sha512-F5DQyBFroz/frDPe81kwe1ZuC9SUXlfiKOpgmz6H9WI4W/9sD3WDgknly14cPTJvWNMxt+yfMvYsUMUkJSkQNQ== dependencies: - "@commitlint/prompt" "^17.5.0" + "@commitlint/prompt" "^17.6.1" execa "^5.0.0" inquirer "^6.5.2" -"@commitlint/prompt@^17.5.0": - version "17.5.0" - resolved "https://registry.yarnpkg.com/@commitlint/prompt/-/prompt-17.5.0.tgz#b135f47aaddbe219754433f2584bfe0e80a74f6c" - integrity sha512-UVgGj5/VYydaLaEGw3GMgBrG+vlS0OKt6hih5vkAu74KMGtUxWT7ACE/VTDuZtMv4u/bew9f6GgOr6LKIhqGng== +"@commitlint/prompt@^17.6.1": + version "17.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/prompt/-/prompt-17.6.1.tgz#777a50cb66a8eadee8386ef44d6d34b0b200598e" + integrity sha512-ZYPWSTC2ypoaBdKr+v4FARBUhCJJpsv87KhKChCzy2GpAjGO+Hw1Ee8CJv5hR26KaNSBL5gmEal3GBdDuABR9g== dependencies: "@commitlint/ensure" "^17.4.4" "@commitlint/load" "^17.5.0" @@ -681,10 +583,10 @@ resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^17.4.4": - version "17.4.4" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.4.4.tgz#9b33f41e5eb529f916396bac7c62e61f0edd6791" - integrity sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ== +"@commitlint/rules@^17.6.1": + version "17.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.6.1.tgz#dff529b8d1e0455808fe7e3e1fa70617e4eb2759" + integrity sha512-lUdHw6lYQ1RywExXDdLOKxhpp6857/4c95Dc/1BikrHgdysVUXz26yV0vp1GL7Gv+avx9WqZWTIVB7pNouxlfw== dependencies: "@commitlint/ensure" "^17.4.4" "@commitlint/message" "^17.4.2" @@ -718,41 +620,26 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@es-joy/jsdoccomment@~0.37.0": - version "0.37.0" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.37.0.tgz#aaafb4bb6c88288aa7899aef0f3b1b851c36f908" - integrity sha512-hjK0wnsPCYLlF+HHB4R/RbUjOWeLW2SlarB67+Do5WsKILOkmIZvvPJFbtWSmbypxcjpoECLAMzoao0D4Bg5ZQ== +"@es-joy/jsdoccomment@~0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz#fa32a41ba12097452693343e09ad4d26d157aedd" + integrity sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg== dependencies: comment-parser "1.3.1" - esquery "^1.4.0" + esquery "^1.5.0" jsdoc-type-pratt-parser "~4.0.0" "@eslint-community/eslint-utils@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz#a831e6e468b4b2b5ae42bf658bea015bf10bc518" - integrity sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.0.tgz#3e61c564fcd6b921cb789838631c5ee44df09403" - integrity sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ== - -"@eslint/eslintrc@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff" - integrity sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" + version "4.5.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" + integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== "@eslint/eslintrc@^2.0.2": version "2.0.2" @@ -769,15 +656,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.35.0": - version "8.35.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7" - integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw== - -"@eslint/js@8.37.0": - version "8.37.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d" - integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== +"@eslint/js@8.38.0": + version "8.38.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892" + integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g== "@humanwhocodes/config-array@^0.11.8": version "0.11.8" @@ -1006,38 +888,40 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -1047,9 +931,9 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" @@ -1075,17 +959,17 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/command@^1.8.14", "@oclif/command@^1.8.15", "@oclif/command@^1.8.22": - version "1.8.22" - resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.22.tgz#b7ea268393277606bb5e0e557c39536ff4e883f2" - integrity sha512-lystv7IKsWRmCv6K68jSvHrO/DILUPBDb5GZ3absTA5XTnNXTaMrcwVzTcMPfTf+gCrgIaPPD1bmbRStwfQxFw== +"@oclif/command@^1.8.14", "@oclif/command@^1.8.15", "@oclif/command@^1.8.23": + version "1.8.23" + resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.23.tgz#b27e6b35b48c692eba53a35db7be736cdf5e4411" + integrity sha512-H78+YbPKw9VankmlFizkHPP81UpoPC2x0MrTdU5/kzy0CCyTBmSGAxaUsiNi9tK7wKxMXOUbCYkk9MHr99zBaw== dependencies: "@oclif/config" "^1.18.2" "@oclif/errors" "^1.3.6" "@oclif/help" "^1.0.1" "@oclif/parser" "^3.8.10" debug "^4.1.1" - semver "^7.3.8" + semver "^7.4.0" "@oclif/config@1.18.2": version "1.18.2" @@ -1157,44 +1041,10 @@ widest-line "^3.1.0" wrap-ansi "^7.0.0" -"@oclif/core@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.3.1.tgz#82d977338c68b3faeda84f780c2f97a3dd322cb2" - integrity sha512-18CkjjF16hwhBd/42z+0CHAwvZlBfpyCmdZxpasN/od8c/hdm0oDEJvVB33/xD0LDYg8glKoQ5zVNVvPM/uJ/Q== - dependencies: - "@types/cli-progress" "^3.11.0" - ansi-escapes "^4.3.2" - ansi-styles "^4.3.0" - cardinal "^2.1.1" - chalk "^4.1.2" - clean-stack "^3.0.1" - cli-progress "^3.12.0" - debug "^4.3.4" - ejs "^3.1.8" - fs-extra "^9.1.0" - get-package-type "^0.1.0" - globby "^11.1.0" - hyperlinker "^1.0.0" - indent-string "^4.0.0" - is-wsl "^2.2.0" - js-yaml "^3.14.1" - natural-orderby "^2.0.3" - object-treeify "^1.1.33" - password-prompt "^1.1.2" - semver "^7.3.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - supports-color "^8.1.1" - supports-hyperlinks "^2.2.0" - tslib "^2.5.0" - widest-line "^3.1.0" - wordwrap "^1.0.0" - wrap-ansi "^7.0.0" - -"@oclif/core@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.8.0.tgz#4948de3168804169fa68895af8ec4853f332b307" - integrity sha512-A2wHItFrD/WOw5bJ6Mtv9MD7If0bsKNR0pwEY0me+fo4HSXlJOtgYGqmzb8t8akX3DUUT7XsjPajsoHLkIJyvg== +"@oclif/core@^2.8.0", "@oclif/core@^2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.8.2.tgz#86fc31f20419dbb3cd25f89f4f1d83760c60f7c0" + integrity sha512-g50NrCdEcFlBfuwZb9RxLmxPNQ9wIaBPOiwbxlGYRkHMnsC6LNHcvVtyDnmndU8qoXrmCOZ6ocSZenOMlG+G1w== dependencies: "@types/cli-progress" "^3.11.0" ansi-escapes "^4.3.2" @@ -1331,21 +1181,13 @@ resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.4.tgz#663db0ecaf23f3184e7f01886ed578060e4a7f1c" integrity sha512-IMsTN1dXEXaOSre27j/ywGbBjrzx0FNd1XmuhCWCB9NTPrhWI1Ifbz+YLSEcstfQfocYsrbrIessxXb2oon4lA== -"@oclif/test@^2.2.21": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@oclif/test/-/test-2.3.8.tgz#ad2fb6375cb9891ebc002258d090075b8621ed0e" - integrity sha512-usE2GeE2S+feOgf8uFLUUVDKt0N3orH+pc1bKkKQtCNAFDvdyAdAMcBS+1PnmCn+cSxaez0bCQ6xOpxA9s7x3A== - dependencies: - "@oclif/core" "^2.3.1" - fancy-test "^2.0.12" - -"@oclif/test@^2.3.14": - version "2.3.14" - resolved "https://registry.yarnpkg.com/@oclif/test/-/test-2.3.14.tgz#71b7c086c33c082669f0a239fc005fa2be1ef14b" - integrity sha512-F7gYNGGb8b46+ZRTpeS0dpShgZpV/ENPWBIkHSw5xc161hhb8ioQ9wwf84dDfhYuNXYfcwxqA+VSRyqyFz/ITQ== +"@oclif/test@^2.2.21", "@oclif/test@^2.3.16": + version "2.3.16" + resolved "https://registry.yarnpkg.com/@oclif/test/-/test-2.3.16.tgz#f6a8898218dcc499e70338f715430788b6ee54c3" + integrity sha512-uL6pTh6700MAkmpXYaerADgcHuTWRhF3IFZhzY/fgSMw1E57BiUojYs+nCnLZRP+KeFsSC0gkqZWJkFYx71dIA== dependencies: - "@oclif/core" "^2.8.0" - fancy-test "^2.0.16" + "@oclif/core" "^2.8.2" + fancy-test "^2.0.18" "@oozcitak/dom@1.15.10": version "1.15.10" @@ -1388,15 +1230,15 @@ mv "~2" safe-json-stringify "~1" -"@salesforce/cli-plugins-testkit@^3.3.2": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@salesforce/cli-plugins-testkit/-/cli-plugins-testkit-3.3.2.tgz#5a5bd6f1c505962b97682463c0a204fb6b67b5bf" - integrity sha512-lXxm9tYNRD34GdcHtYVcFIccG9k5v8Ai/O1ytHE4zOoDowmeyB5l47O7Qo8blmeYbggRJUQIFfao2EPrJlTKCQ== +"@salesforce/cli-plugins-testkit@^3.3.3": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@salesforce/cli-plugins-testkit/-/cli-plugins-testkit-3.3.3.tgz#861853bd97077d888f2b6a4acd56b3cf2f202c95" + integrity sha512-BBEMPFbRd20N79PQbodUJUvzTd4L5DVSS07JfXmMmJgpbyy8fgUzQmuczfMiU7Dfs445+1UX8St1Q1JaPp8z6A== dependencies: "@salesforce/core" "^3.34.6" "@salesforce/kit" "^1.9.2" "@salesforce/ts-types" "^1.7.3" - "@types/shelljs" "^0.8.11" + "@types/shelljs" "^0.8.12" archiver "^5.2.0" debug "^4.3.1" shelljs "^0.8.4" @@ -1415,10 +1257,10 @@ "@salesforce/ts-types" "^1.7.1" chalk "^2.4.2" -"@salesforce/core@^3.34.6": - version "3.34.6" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-3.34.6.tgz#816031d3aab098d56165d876db626a3610d86c6e" - integrity sha512-9Nd+bQRSvCYDiZo97bhseajLhr7d51J9gsPUnfN3nHy1/TBQXjN+upRAPAeldvzU8G3L98WGDMtEpSTOG/PxkQ== +"@salesforce/core@^3.34.6", "@salesforce/core@^3.34.7": + version "3.34.7" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-3.34.7.tgz#445efe5c76fbab53e6c891563aa9b0dc5dd24179" + integrity sha512-C4zyXzLAV5ITMChC8dCP+6Kk3t5vloyP2eXpqBOw96OzF5OaCiN5/TayNN8YJl64pvFFny7FgAQPKk7omFXNSA== dependencies: "@salesforce/bunyan" "^2.0.0" "@salesforce/kit" "^1.9.2" @@ -1434,7 +1276,7 @@ form-data "^4.0.0" graceful-fs "^4.2.11" js2xmlparser "^4.0.1" - jsforce "^2.0.0-beta.20" + jsforce "^2.0.0-beta.21" jsonwebtoken "9.0.0" ts-retry-promise "^0.7.0" @@ -1443,16 +1285,7 @@ resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-3.1.0.tgz#8eb5b35860ff60d1c1dc3fd9329b01a28475d5b9" integrity sha512-cPph7ibj3DeSzWDFLcLtxOh5fmUlDUY2Ezq43n0V6auVP+l8orxRHjCExHS86SB3QKVgXkC8yYhryXiS8KF7Zw== -"@salesforce/kit@^1.8.5": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-1.9.0.tgz#ddc179ff588b68f3e8f5c237ab74ed4b9c8d5274" - integrity sha512-a1DnVf2ZN/fZ4Zq0T6pxrDpwOyWSKt6Es1erpUJLvM13H+Y3C4uxSUy4aS4WSHIJA8zvWvvEiWYOV17TD0Dmug== - dependencies: - "@salesforce/ts-types" "^1.7.3" - shx "^0.3.3" - tslib "^2.5.0" - -"@salesforce/kit@^1.9.2": +"@salesforce/kit@^1.8.5", "@salesforce/kit@^1.9.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-1.9.2.tgz#d232f135428363cdfe2649cb99a94bc2eb0a12fd" integrity sha512-kjZvjFNP6njhAiEa/ErdLXSDWZKafHYJyKCKz1wnSFmDM8TOpKHCCVw5cQo87ZQr8OqxqwUDIAlSBLyMzKi4Lg== @@ -1632,71 +1465,71 @@ dependencies: lodash.flatmap "~4.5.0" -"@swc/core-darwin-arm64@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.44.tgz#e0f5eb9d962c4e6192531c2e3b8c11f55faf1b89" - integrity sha512-Y+oVsCjXUPvr3D9YLuB1gjP84TseM/CRkbPNrf+3JXQhsPEkgxdIdFP1cl/obeqMQrRgPpvSfK+TOvGuOuV22g== - -"@swc/core-darwin-x64@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.44.tgz#a8de4c176a9b12f201fc754a56331113a53ec69c" - integrity sha512-bM0IKBjlSD0yHJbd7bE3il5fTu3oUjUO2zjLkzfIx6tiqbmDyvOX8adaSqse9N+d8Ip9p26b5Vo7pMHq0POGkg== - -"@swc/core-linux-arm-gnueabihf@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.44.tgz#300731367c88bf02b8ae20264d4d402362e444df" - integrity sha512-D4lfVwCbkWscDTb6btb89+bN0kgvjGBPfOmcvih7nY5hxaorwvp+PefkYAhFw8vKmL92lrnWUFNiTemVFN4bxg== - -"@swc/core-linux-arm64-gnu@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.44.tgz#8b52d1cd28f277d47bb45c6791f44da568a62bc4" - integrity sha512-muExPTrN26MFmtO+5uffkH5v4lmd8GdmyWvlC2tL95h7o9genTIQyr7kcSepGZrDe4fM9G6++5YfENhUpXHo+g== - -"@swc/core-linux-arm64-musl@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.44.tgz#7b0e62255ae13c397f09ca5da8bf2266482a28c2" - integrity sha512-MY1wY3kSIosjJKKCfFGniJFFVkt3oPvJLN4Dlj+bMgAt3O7anm8lGbyLqUpJ1Ep4rTsJj7ObO06DQiSWp4Fhcw== - -"@swc/core-linux-x64-gnu@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.44.tgz#0b8b2544c312f247aa5c5f31671a175ad6488309" - integrity sha512-xV4pDxJM06g0yUDTA22ZHgonzGqf/poIlgADRmEkx9cWWm5qLRhmWrrkVX1xZVvdlcXj1ERnia/UkvrDux96lg== - -"@swc/core-linux-x64-musl@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.44.tgz#5b1f76fc1dc75875df59d8c0ff37e99e030f9552" - integrity sha512-NJnnlE8vCkKHoo/wIaoywNN/01vNsvhKUjBgUx865sUM/XWAIanpbV41yfdEkC+Iwd+/zB3ZZnOYql3b+Nn8aQ== - -"@swc/core-win32-arm64-msvc@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.44.tgz#bd4aefcd7734229f780c9bec0502935884935f0f" - integrity sha512-/xOtjZhX25GEOPLN55icjj9E061DDH7G0A9HfUAEilURgBbvm6bIlqK+t8mOKK0tOsDoHftdTBRkYhTAqUtakQ== - -"@swc/core-win32-ia32-msvc@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.44.tgz#0c2ba768f33acb580422e17d4ae816ebfd3dcfe0" - integrity sha512-uKTAWQuMEW1gJnl8F3eiz3kdk8CiaR5dMWWlGbHIq6dRbur2hoKaEnINR4UqkvvAhhY1YB0Xr5DV1H986Xu2EA== - -"@swc/core-win32-x64-msvc@1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.44.tgz#b137abefbeb3b73a47cc398bc5603ea6bf6a3a7b" - integrity sha512-D9fBRhr44cK4YIKFikpktyUDLkZgVj0ISaSl8IjiTvjqTrE/9+E+dzTNHULn5tc3lHVLLxyVwMjJRr2G0D4O6w== - -"@swc/core@^1.3.44": - version "1.3.44" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.44.tgz#2886bdd647942f9670b65c02b6d5484ff3070ddd" - integrity sha512-RC25C8nxOCdfGS//F9Q8aHKx4XoCsxvgO+sSUhvt7zDz1Y2ruVUTu2UOH0VeE0WkA8j6oEZH+xH2SUfDUkxXdA== +"@swc/core-darwin-arm64@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.52.tgz#c82cdcc60e4d84f6745c83e898daaebfb09663ce" + integrity sha512-Y+4YDN7mAhMgqLVMjpIOagFg93uWdQRsJXd3NAXo24CAJXLBuXsiXQdJVdhGavQkF0+NuhFSTGrzB8TknzWQkg== + +"@swc/core-darwin-x64@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.52.tgz#7a89b075b35ea36d7e44328ec9bf451f7fae2393" + integrity sha512-XbvBA+DwTedleh/smYA6E1Z1L1tVnF+ULhpszAAW4YYDzH47R73ucCdcSH/aHs4swv+uyvRquKoDtTTNZFvD4A== + +"@swc/core-linux-arm-gnueabihf@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.52.tgz#71ccbc6125cbcd26bfb97fd5082def19a978cfc4" + integrity sha512-YRTLjZcoGH09q0vjg5s6vxOryzAGlMx2Ly6Hq8+8ruBtG3QTsCN3y7MI8mX254xdFCJiTX5YwQheGjRXS7FF9A== + +"@swc/core-linux-arm64-gnu@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.52.tgz#cd1cc50b04b41b68a0e330a0afefee2d681ade6c" + integrity sha512-B0HKtj0XpqpqflGKMxFlyXyORN0xshF8TVzUBD/2FgF7o8fE2RM1eqtdf1EzmZTT1hwxLpJXrEj+0gSXfWPW4A== + +"@swc/core-linux-arm64-musl@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.52.tgz#3d398472d574494cda0adf3e5aff7607c597f2ac" + integrity sha512-GCxNjTAborAmv4VV1AMZLyejHLGgIzu13tvLUFqybtU4jFxVbE2ZK4ZnPCfDlWN+eBwyRWk1oNFR2hH+66vaUQ== + +"@swc/core-linux-x64-gnu@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.52.tgz#d4952b774be2ff201bf469ffa09caa995a7eae3c" + integrity sha512-mrvDBSkLI3Mza2qcu3uzB5JGwMBYDb1++UQ1VB0RXf2AR21/cCper4P44IpfdeqFz9XyXq18Sh3gblICUCGvig== + +"@swc/core-linux-x64-musl@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.52.tgz#62b3db8b4c6d669933013660b65bbdcb03589d9d" + integrity sha512-r9RIvKUQv7yBkpXz+QxPAucdoj8ymBlgIm5rLE0b5VmU7dlKBnpAmRBYaITdH6IXhF0pwuG+FHAd5elBcrkIwA== + +"@swc/core-win32-arm64-msvc@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.52.tgz#71efd8454edf9ce3752e0c7944f23207635036e6" + integrity sha512-YRtEr7tDo0Wes3M2ZhigF4erUjWBXeFP+O+iz6ELBBmPG7B7m/lrA21eiW9/90YGnzi0iNo46shK6PfXuPhP+Q== + +"@swc/core-win32-ia32-msvc@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.52.tgz#fb13036295f74d9f834491456261732d4561876f" + integrity sha512-t1x6EdYg3nnnmZBkEtmdXwGpVFTnkNCYyTILcn4367tKI6NpcNe75tz6wBUZAWAmol6Bn75je9KHDNC9uBcO2A== + +"@swc/core-win32-x64-msvc@1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.52.tgz#f870ee8c8055a5959f8903d3aa07ca1b1eb51caf" + integrity sha512-ef0KzcHxWgRii0EyUlgzNA0ycqaRRKxSb6QCO9Ev3tib4SSjbPy0MAndU7f82Ndm/pPmXT+7cciRtZ083vzjZA== + +"@swc/core@^1.3.52": + version "1.3.52" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.52.tgz#85fe178110b9f74965dfa09af81b059f417a9935" + integrity sha512-2LOkkl5Ebyzg1e2pu/tqz5zAAiNAtSR99KZDJz4+FTpo6lYwr+SRkeXSNFrYAReHBMb5VJoimrLDLHJ2X1E7Lg== optionalDependencies: - "@swc/core-darwin-arm64" "1.3.44" - "@swc/core-darwin-x64" "1.3.44" - "@swc/core-linux-arm-gnueabihf" "1.3.44" - "@swc/core-linux-arm64-gnu" "1.3.44" - "@swc/core-linux-arm64-musl" "1.3.44" - "@swc/core-linux-x64-gnu" "1.3.44" - "@swc/core-linux-x64-musl" "1.3.44" - "@swc/core-win32-arm64-msvc" "1.3.44" - "@swc/core-win32-ia32-msvc" "1.3.44" - "@swc/core-win32-x64-msvc" "1.3.44" + "@swc/core-darwin-arm64" "1.3.52" + "@swc/core-darwin-x64" "1.3.52" + "@swc/core-linux-arm-gnueabihf" "1.3.52" + "@swc/core-linux-arm64-gnu" "1.3.52" + "@swc/core-linux-arm64-musl" "1.3.52" + "@swc/core-linux-x64-gnu" "1.3.52" + "@swc/core-linux-x64-musl" "1.3.52" + "@swc/core-win32-arm64-msvc" "1.3.52" + "@swc/core-win32-ia32-msvc" "1.3.52" + "@swc/core-win32-x64-msvc" "1.3.52" "@tsconfig/node10@^1.0.7": version "1.0.9" @@ -1764,27 +1597,19 @@ "@types/node" "*" "@types/eslint@^8.4.2": - version "8.21.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.1.tgz#110b441a210d53ab47795124dbc3e9bb993d1e7c" - integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== + version "8.37.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.37.0.tgz#29cebc6c2a3ac7fea7113207bf5a828fdf4d7ef1" + integrity sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== - -"@types/glob@*": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/glob@^7.1.1": +"@types/glob@^7.1.1", "@types/glob@~7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== @@ -1829,11 +1654,11 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@*": - version "4.14.191" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" - integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + version "4.14.194" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" + integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== -"@types/minimatch@*", "@types/minimatch@^5.1.2": +"@types/minimatch@*": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== @@ -1848,21 +1673,16 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== -"@types/node@*": - version "18.14.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.1.tgz#90dad8476f1e42797c49d6f8b69aaf9f876fc69f" - integrity sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ== +"@types/node@*", "@types/node@^18.15.12": + version "18.15.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.12.tgz#833756634e78c829e1254db006468dadbb0c696b" + integrity sha512-Wha1UwsB3CYdqUm2PPzh/1gujGCNtWVUYF0mB00fJFoR4gTyWTDPjSm+zBF787Ahw8vSGgBja90MkgFwvB86Dg== "@types/node@^12.19.9": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^18.15.11": - version "18.15.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" - integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== - "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -1878,18 +1698,18 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== -"@types/shelljs@^0.8.11": - version "0.8.11" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.11.tgz#17a5696c825974e96828e96e89585d685646fcb8" - integrity sha512-x9yaMvEh5BEaZKeVQC4vp3l+QoFj3BXcd4aYfuKSzIIyihjdVARAadYy3SMNIz0WCCdS2vB9JL/U6GQk5PaxQw== +"@types/shelljs@^0.8.12": + version "0.8.12" + resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.12.tgz#79dc9632af7d5ca1b5afb65a6bfc1422d79b5fa0" + integrity sha512-ZA8U81/gldY+rR5zl/7HSHrG2KDfEb3lzG6uCUDhW1DTQE9yC/VBQ45fXnXq8f3CgInfhZmjtdu/WOUlrXRQUg== dependencies: - "@types/glob" "*" + "@types/glob" "~7.2.0" "@types/node" "*" "@types/sinon@*": - version "10.0.13" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" - integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.14.tgz#6bd18b088ea5ef1e5153fa37d0b68e91eff09e22" + integrity sha512-mn72up6cjaMyMuaPaa/AwKf6WtsSRysQC7wxFkCm1XcOKXPM1z+5Y4H5wjIVBz4gdAkjvZxVVfjA6ba1nHr5WQ== dependencies: "@types/sinonjs__fake-timers" "*" @@ -1909,21 +1729,21 @@ integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^17.0.8": - version "17.0.22" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" - integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz#d1ab162a3cd2671b8a1c9ddf6e2db73b14439735" - integrity sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ== +"@typescript-eslint/eslint-plugin@^5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.0.tgz#c0e10eeb936debe5d1c3433cf36206a95befefd0" + integrity sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw== dependencies: "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.57.1" - "@typescript-eslint/type-utils" "5.57.1" - "@typescript-eslint/utils" "5.57.1" + "@typescript-eslint/scope-manager" "5.59.0" + "@typescript-eslint/type-utils" "5.59.0" + "@typescript-eslint/utils" "5.59.0" debug "^4.3.4" grapheme-splitter "^1.0.4" ignore "^5.2.0" @@ -1931,116 +1751,72 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.10.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.53.0.tgz#a1f2b9ae73b83181098747e96683f1b249ecab52" - integrity sha512-MKBw9i0DLYlmdOb3Oq/526+al20AJZpANdT6Ct9ffxcV8nKCHz63t/S0IhlTFNsBIHJv+GY5SFJ0XfqVeydQrQ== +"@typescript-eslint/parser@^5.10.0", "@typescript-eslint/parser@^5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.0.tgz#0ad7cd019346cc5d150363f64869eca10ca9977c" + integrity sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w== dependencies: - "@typescript-eslint/scope-manager" "5.53.0" - "@typescript-eslint/types" "5.53.0" - "@typescript-eslint/typescript-estree" "5.53.0" + "@typescript-eslint/scope-manager" "5.59.0" + "@typescript-eslint/types" "5.59.0" + "@typescript-eslint/typescript-estree" "5.59.0" debug "^4.3.4" -"@typescript-eslint/parser@^5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.57.1.tgz#af911234bd4401d09668c5faf708a0570a17a748" - integrity sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA== +"@typescript-eslint/scope-manager@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.0.tgz#86501d7a17885710b6716a23be2e93fc54a4fe8c" + integrity sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ== dependencies: - "@typescript-eslint/scope-manager" "5.57.1" - "@typescript-eslint/types" "5.57.1" - "@typescript-eslint/typescript-estree" "5.57.1" - debug "^4.3.4" + "@typescript-eslint/types" "5.59.0" + "@typescript-eslint/visitor-keys" "5.59.0" -"@typescript-eslint/scope-manager@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.53.0.tgz#42b54f280e33c82939275a42649701024f3fafef" - integrity sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w== +"@typescript-eslint/type-utils@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.0.tgz#8e8d1420fc2265989fa3a0d897bde37f3851e8c9" + integrity sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA== dependencies: - "@typescript-eslint/types" "5.53.0" - "@typescript-eslint/visitor-keys" "5.53.0" - -"@typescript-eslint/scope-manager@5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz#5d28799c0fc8b501a29ba1749d827800ef22d710" - integrity sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw== - dependencies: - "@typescript-eslint/types" "5.57.1" - "@typescript-eslint/visitor-keys" "5.57.1" - -"@typescript-eslint/type-utils@5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz#235daba621d3f882b8488040597b33777c74bbe9" - integrity sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw== - dependencies: - "@typescript-eslint/typescript-estree" "5.57.1" - "@typescript-eslint/utils" "5.57.1" + "@typescript-eslint/typescript-estree" "5.59.0" + "@typescript-eslint/utils" "5.59.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.53.0.tgz#f79eca62b97e518ee124086a21a24f3be267026f" - integrity sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A== - -"@typescript-eslint/types@5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.57.1.tgz#d9989c7a9025897ea6f0550b7036027f69e8a603" - integrity sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA== +"@typescript-eslint/types@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.0.tgz#3fcdac7dbf923ec5251545acdd9f1d42d7c4fe32" + integrity sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA== -"@typescript-eslint/typescript-estree@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.53.0.tgz#bc651dc28cf18ab248ecd18a4c886c744aebd690" - integrity sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w== +"@typescript-eslint/typescript-estree@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz#8869156ee1dcfc5a95be3ed0e2809969ea28e965" + integrity sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg== dependencies: - "@typescript-eslint/types" "5.53.0" - "@typescript-eslint/visitor-keys" "5.53.0" + "@typescript-eslint/types" "5.59.0" + "@typescript-eslint/visitor-keys" "5.59.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz#10d9643e503afc1ca4f5553d9bbe672ea4050b71" - integrity sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw== - dependencies: - "@typescript-eslint/types" "5.57.1" - "@typescript-eslint/visitor-keys" "5.57.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.57.1.tgz#0f97b0bbd88c2d5e2036869f26466be5f4c69475" - integrity sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg== +"@typescript-eslint/utils@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.0.tgz#063d066b3bc4850c18872649ed0da9ee72d833d5" + integrity sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.57.1" - "@typescript-eslint/types" "5.57.1" - "@typescript-eslint/typescript-estree" "5.57.1" + "@typescript-eslint/scope-manager" "5.59.0" + "@typescript-eslint/types" "5.59.0" + "@typescript-eslint/typescript-estree" "5.59.0" eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.53.0": - version "5.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.53.0.tgz#8a5126623937cdd909c30d8fa72f79fa56cc1a9f" - integrity sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w== - dependencies: - "@typescript-eslint/types" "5.53.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@5.57.1": - version "5.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz#585e5fa42a9bbcd9065f334fd7c8a4ddfa7d905e" - integrity sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA== +"@typescript-eslint/visitor-keys@5.59.0": + version "5.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz#a59913f2bf0baeb61b5cfcb6135d3926c3854365" + integrity sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA== dependencies: - "@typescript-eslint/types" "5.57.1" + "@typescript-eslint/types" "5.59.0" eslint-visitor-keys "^3.3.0" JSONStream@^1.0.4: @@ -2247,6 +2023,11 @@ archy@^1.0.0: resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== +are-docs-informative@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" + integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -2264,6 +2045,14 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-from@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" @@ -2574,9 +2363,9 @@ camelcase@^6.0.0, camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001449: - version "1.0.30001458" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz#871e35866b4654a7d25eccca86864f411825540c" - integrity sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w== + version "1.0.30001480" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001480.tgz#9bbd35ee44c2480a1e3a3b9f4496f5066817164a" + integrity sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ== capital-case@^1.0.4: version "1.0.4" @@ -2745,9 +2534,9 @@ cli-progress@^3.10.0, cli-progress@^3.12.0, cli-progress@^3.4.0: string-width "^4.2.3" cli-spinners@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + version "2.8.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.8.0.tgz#e97a3e2bd00e6d85aa0c13d7f9e3ce236f7787fc" + integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ== cli-truncate@^2.1.0: version "2.1.0" @@ -2879,9 +2668,9 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" @@ -2891,9 +2680,9 @@ combined-stream@^1.0.8: delayed-stream "~1.0.0" commander@^10.0.0, commander@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1" - integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA== + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== commander@^4.0.1: version "4.1.1" @@ -2992,14 +2781,14 @@ convert-source-map@^2.0.0: integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== core-js-pure@^3.25.1: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.28.0.tgz#4ef2888475b6c856ef6f5aeef8b4f618b76ad048" - integrity sha512-DSOVleA9/v3LNj/vFxAPfUHttKTzrB2RXhAPvR5TPXn4vrra3Z2ssytvRyt8eruJwAfwAiFADEbrjcRdcvPLQQ== + version "3.30.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.1.tgz#7d93dc89e7d47b8ef05d7e79f507b0e99ea77eec" + integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== core-js@^3.6.4: - version "3.28.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" - integrity sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw== + version "3.30.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.1.tgz#fc9c5adcc541d8e9fa3e381179433cbf795628ba" + integrity sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ== core-util-is@~1.0.0: version "1.0.3" @@ -3012,9 +2801,9 @@ cosmiconfig-typescript-loader@^4.0.0: integrity sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q== cosmiconfig@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.1.0.tgz#947e174c796483ccf0a48476c24e4fefb7e1aea8" - integrity sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg== + version "8.1.3" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689" + integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== dependencies: import-fresh "^3.2.1" js-yaml "^4.1.0" @@ -3146,9 +2935,9 @@ deep-is@^0.1.3: integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: - version "4.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" - integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== default-require-extensions@^3.0.0: version "3.0.1" @@ -3164,7 +2953,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.3, define-properties@^1.1.4: +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== @@ -3278,16 +3067,16 @@ ecdsa-sig-formatter@1.0.11: safe-buffer "^5.0.1" ejs@^3.1.6, ejs@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" electron-to-chromium@^1.4.284: - version "1.4.311" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.311.tgz#953bc9a4767f5ce8ec125f9a1ad8e00e8f67e479" - integrity sha512-RoDlZufvrtr2Nx3Yx5MB8jX3aHIxm8nRWPJm3yVvyHmyKaRvn90RjzB6hNnt0AkhS3IInJdyRfQb4mWhPvUjVw== + version "1.4.368" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.368.tgz#75901f97d3e23da2e66feb1e61fbb8e70ac96430" + integrity sha512-e2aeCAixCj9M7nJxdB/wDjO6mbYX+lJJxSJCXDzlr5YPGYVofuJwGN9nKg2o6wWInjX6XmxRinn3AeJMK81ltw== emittery@^0.13.1: version "0.13.1" @@ -3324,17 +3113,17 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" - integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: + array-buffer-byte-length "^1.0.0" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" @@ -3342,8 +3131,8 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.4" - is-array-buffer "^3.0.1" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" @@ -3351,11 +3140,12 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: is-string "^1.0.7" is-typed-array "^1.1.10" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" string.prototype.trimend "^1.0.6" string.prototype.trimstart "^1.0.6" typed-array-length "^1.0.4" @@ -3437,9 +3227,9 @@ eslint-import-resolver-node@^0.3.7: resolve "^1.22.1" eslint-module-utils@^2.7.4: - version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" @@ -3464,17 +3254,18 @@ eslint-plugin-import@^2.27.5: semver "^6.3.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsdoc@^40.1.1: - version "40.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-40.1.1.tgz#12ae46e5e64524c19fb7d01471c70015aa0863f0" - integrity sha512-KxrQCq9pPt7LNeDBlLlnuJMpDFZnEQTs4e25NrT4u5cWmPw2P7F03F2qwPz0GMdlRZTyMOofuPAdiWytvPubvA== +eslint-plugin-jsdoc@^43.0.6: + version "43.0.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-43.0.6.tgz#f04e517256b1f2c22295a452dc1dcf11cd4694b2" + integrity sha512-EJyrcIY4e/e51yzLLBpYX7/Ld1+08Bl/XparwHFTmQ8gUfir4wEmY2c/lj91k9+/8auKeNA5ejbyaOl42xX0AQ== dependencies: - "@es-joy/jsdoccomment" "~0.37.0" + "@es-joy/jsdoccomment" "~0.37.1" + are-docs-informative "^0.0.2" comment-parser "1.3.1" debug "^4.3.4" escape-string-regexp "^4.0.0" esquery "^1.5.0" - semver "^7.3.8" + semver "^7.5.0" spdx-expression-parse "^3.0.1" eslint-plugin-prettier@^4.2.1: @@ -3493,44 +3284,27 @@ eslint-scope@^5.1.1: estraverse "^4.1.1" eslint-scope@^7.0.0, eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint-visitor-keys@^3.4.0: +eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== -eslint@^8.37.0: - version "8.37.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412" - integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== +eslint@^8.38.0, eslint@^8.7.0: + version "8.38.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.38.0.tgz#a62c6f36e548a5574dd35728ac3c6209bd1e2f1a" + integrity sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.37.0" + "@eslint/js" "8.38.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -3568,62 +3342,7 @@ eslint@^8.37.0: strip-json-comments "^3.1.0" text-table "^0.2.0" -eslint@^8.7.0: - version "8.35.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323" - integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw== - dependencies: - "@eslint/eslintrc" "^2.0.0" - "@eslint/js" "8.35.0" - "@humanwhocodes/config-array" "^0.11.8" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-sdsl "^4.1.4" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.0.0, espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -espree@^9.5.1: +espree@^9.0.0, espree@^9.5.1: version "9.5.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== @@ -3637,14 +3356,7 @@ esprima@^4.0.0, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0, esquery@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" - integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== - dependencies: - estraverse "^5.1.0" - -esquery@^1.5.0: +esquery@^1.4.0, esquery@^1.4.2, esquery@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -3706,22 +3418,7 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.0.0.tgz#2a44e20e73797f6c2df23889927972386157d7e4" - integrity sha512-tQbH0pH/8LHTnwTrsKWideqi6rFB/QNUawEwrn+WHyz7PX1Tuz2u7wfTvbaNBdP5JD5LVWxNo8/A8CHNZ3bV6g== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -execa@~7.1.0: +execa@^7.0.0, execa@~7.1.0: version "7.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== @@ -3766,24 +3463,10 @@ extract-stack@^2.0.0: resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-2.0.0.tgz#11367bc865bfcd9bc0db3123e5edb57786f11f9b" integrity sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ== -fancy-test@^2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-2.0.12.tgz#a93cd92ffc23f70b069c39f19940d34f64c6ca67" - integrity sha512-S7qVQNaViLTMzn71huZvrUCV59ldq+enQ1EQOkdNbl4q4Om97gwqbYKvZoglsnzCWRRFaFP+qHynpdqaLdiZqg== - dependencies: - "@types/chai" "*" - "@types/lodash" "*" - "@types/node" "*" - "@types/sinon" "*" - lodash "^4.17.13" - mock-stdin "^1.0.0" - nock "^13.3.0" - stdout-stderr "^0.1.9" - -fancy-test@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-2.0.16.tgz#fbeb22f1f6b790b067fc774873093d0ca4fc98c1" - integrity sha512-Bgsd32hr+Ohrh/D4zACMstWjViYR6IHJxzvhLSzbekNIrDWOwSHx7zvKtrN/pFrFVyNBo02kNdz3PyPD5W2ibQ== +fancy-test@^2.0.18: + version "2.0.19" + resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-2.0.19.tgz#f30251ef89ec135df6dffffa7445b5ca4b366a2b" + integrity sha512-Zlj9GadzSXMLT11227FvkPOlM7wtzElRRJnUbwmC4tScbRUZx04PrS30fSuQCGT4hjaT8ZHQrEGea8S3xYrwsg== dependencies: "@types/chai" "*" "@types/lodash" "*" @@ -3825,10 +3508,10 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-xml-parser@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.1.3.tgz#0254ad0d4d27f07e6b48254b068c0c137488dd97" - integrity sha512-LsNDahCiCcJPe8NO7HijcnukHB24tKbfDDA5IILx9dmW3Frb52lhbeX6MPNUSvyGNfav2VTYpJ/OqkRoVLrh2Q== +fast-xml-parser@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.2.tgz#cb7310d1e9cf42d22c687b0fae41f3c926629368" + integrity sha512-DLzIPtQqmvmdq3VUKR7T6omPK/VCRNqgFlGtbESfyhcH2R4I8EzK1/K6E8PkRCK2EabWrUHK32NjYRbEFnnz0Q== dependencies: strnum "^1.0.5" @@ -3997,16 +3680,7 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" - integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^11.1.1: +fs-extra@^11.0.0, fs-extra@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== @@ -4068,7 +3742,7 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" -functions-have-names@^1.2.2: +functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -4198,9 +3872,9 @@ glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: path-is-absolute "^1.0.0" glob@^9.2.0, glob@~9.3.0: - version "9.3.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.4.tgz#e75dee24891a80c25cc7ee1dd327e126b98679af" - integrity sha512-qaSc49hojMOv1EPM4EuyITjDSgSKI0rthoHnvE81tcOi1SCVndHko7auqxdQ14eiQG2NDBJBE86+2xIrbIvrbA== + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== dependencies: fs.realpath "^1.0.0" minimatch "^8.0.2" @@ -4266,12 +3940,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.2.11: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4408,9 +4077,9 @@ human-signals@^2.1.0: integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== human-signals@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.0.tgz#2095c3cd5afae40049403d4b811235b03879db50" - integrity sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ== + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== husky@^8.0.3: version "8.0.3" @@ -4542,7 +4211,7 @@ inquirer@~9.1.0: through "^2.3.6" wrap-ansi "^8.1.0" -internal-slot@^1.0.4: +internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -4556,13 +4225,13 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -is-array-buffer@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" - integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" is-typed-array "^1.1.10" is-arrayish@^0.2.1: @@ -4597,10 +4266,10 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== +is-core-module@^2.11.0, is-core-module@^2.5.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== dependencies: has "^1.0.3" @@ -5249,9 +4918,9 @@ jest@^29.5.0: jest-cli "^29.5.0" js-sdsl@^4.1.4: - version "4.3.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" - integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== js-tokens@^4.0.0: version "4.0.0" @@ -5298,10 +4967,10 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsforce@^2.0.0-beta.20: - version "2.0.0-beta.20" - resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.20.tgz#907630942b2ecd653098caa3f87e7710874cb207" - integrity sha512-5TpdU0MEUN34M0mSKmBwOMKaI8dllTYF8NzpJn0/9akrwqKEERK6K2jGiMWcs85Vx1HCHEcwU2n+5ij6z6zr2g== +jsforce@^2.0.0-beta.21: + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.21.tgz#04c94d762d2536bf1af3062d5cca206656f5b12b" + integrity sha512-74GUF/96vYBNZo3SUccXtt4CmfvZ0iqTSc0Z3OB940Ec7oU6coOAGhlCZ+XprXaHOMMhXMXrZQ1PCd16yjIA7A== dependencies: "@babel/runtime" "^7.12.5" "@babel/runtime-corejs3" "^7.12.5" @@ -5322,7 +4991,7 @@ jsforce@^2.0.0-beta.20: open "^7.0.0" regenerator-runtime "^0.13.3" strip-ansi "^6.0.0" - xml2js "^0.4.22" + xml2js "^0.5.0" json-parse-better-errors@^1.0.1: version "1.0.2" @@ -5459,10 +5128,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^13.2.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.0.tgz#b7abaf79c91cd36d824f17b23a4ce5209206126a" - integrity sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw== +lint-staged@^13.2.1: + version "13.2.1" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.1.tgz#9d30a14e3e42897ef417bc98556fb757f75cae87" + integrity sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw== dependencies: chalk "5.2.0" cli-truncate "^3.1.0" @@ -5701,10 +5370,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.14.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +lru-cache@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.0.tgz#19efafa9d08d1c08eb8efd78876075f0b8b1b07b" + integrity sha512-qFXQEwchrZcMVen2uIDceR8Tii6kCJak5rzDStfEM0qA3YLMswaxIEZO0DhIbJ3aqaJiDjt+3crlplOb0tDtKQ== make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" @@ -5824,16 +5493,16 @@ minimatch@^5.0.1, minimatch@^5.1.0: brace-expansion "^2.0.1" minimatch@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.2.tgz#ba35f8afeb255a4cbad4b6677b46132f3278c469" - integrity sha512-ikHGF67ODxj7vS5NKU2wvTsFLbExee+KXVCnBWh8Cg2hVJfBMQIrlo50qru/09E0EifjnU8dZhJ/iHhyXJM6Mw== + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== dependencies: brace-expansion "^2.0.1" minimatch@~7.4.2: - version "7.4.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.4.tgz#e15a8ab56cc5469eca75a26a1319e5c00900824a" - integrity sha512-T+8B3kNrLP7jDb5eaC4rUIp6DKoeTSb6f9SwF2phcY2gxJUA0GEf1i29/FHxBMEfx0ppWlr434/D0P+6jb8bOQ== + version "7.4.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== dependencies: brace-expansion "^2.0.1" @@ -5851,10 +5520,15 @@ minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass@^4.0.2, minipass@^4.2.4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb" - integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== mkdirp-classic@^0.5.2: version "0.5.3" @@ -6137,7 +5811,7 @@ nyc@^15.1.0: test-exclude "^6.0.0" yargs "^15.0.2" -object-inspect@^1.12.2, object-inspect@^1.12.3, object-inspect@^1.9.0: +object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== @@ -6389,12 +6063,12 @@ path-parse@^1.0.7: integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-scurry@^1.6.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.6.3.tgz#4eba7183d64ef88b63c7d330bddc3ba279dc6c40" - integrity sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g== + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.7.0.tgz#99c741a2cfbce782294a39994d63748b5a24f6db" + integrity sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg== dependencies: - lru-cache "^7.14.1" - minipass "^4.0.2" + lru-cache "^9.0.0" + minipass "^5.0.0" path-to-regexp@^1.7.0: version "1.8.0" @@ -6472,12 +6146,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.5.1: - version "2.8.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" - integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== - -prettier@^2.8.7: +prettier@^2.5.1, prettier@^2.8.7: version "2.8.7" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== @@ -6548,9 +6217,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== pure-rand@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.0.tgz#701996ceefa253507923a0e864c17ab421c04a7c" - integrity sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw== + version "6.0.1" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af" + integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg== q@^1.5.1: version "1.5.1" @@ -6630,9 +6299,9 @@ read-pkg@^5.2.0: type-fest "^0.6.0" readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" - integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -6652,9 +6321,9 @@ readable-stream@^2.0.0, readable-stream@^2.0.5: util-deprecate "~1.0.1" readdir-glob@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" - integrity sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" + integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== dependencies: minimatch "^5.1.0" @@ -6693,18 +6362,13 @@ regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.3: integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + define-properties "^1.2.0" + functions-have-names "^1.2.3" release-zalgo@^1.0.0: version "1.0.0" @@ -6763,16 +6427,16 @@ resolve-global@1.0.0, resolve-global@^1.0.0: global-dirs "^0.1.1" resolve.exports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" - integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@^1.1.6, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.11.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -6908,7 +6572,7 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.3.8, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@~7.3.7: +semver@7.3.8, semver@~7.3.7: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== @@ -6920,6 +6584,13 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.4.0, semver@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + sentence-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" @@ -7001,10 +6672,10 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -sinon@^15.0.3: - version "15.0.3" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-15.0.3.tgz#38005fcd80827177b6aa0245f82401d9ec88994b" - integrity sha512-si3geiRkeovP7Iel2O+qGL4NrO9vbMf3KsrJEi0ghP1l5aBkB5UxARea5j0FUsSqH3HLBh0dQPAyQ8fObRUqHw== +sinon@^15.0.4: + version "15.0.4" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-15.0.4.tgz#bcca6fef19b14feccc96473f0d7adc81e0bc5268" + integrity sha512-uzmfN6zx3GQaria1kwgWGeKiXSSbShBbue6Dcj0SI8fiCNFbiUDqKl57WFlY5lyhxZVUKmXvzgG2pilRQCBwWg== dependencies: "@sinonjs/commons" "^3.0.0" "@sinonjs/fake-timers" "^10.0.2" @@ -7108,9 +6779,9 @@ spawn-wrap@^2.0.0: which "^2.0.1" spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -7129,9 +6800,9 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.12" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" - integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== split2@^3.0.0: version "3.2.2" @@ -7215,6 +6886,15 @@ string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimend@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" @@ -7572,9 +7252,9 @@ type-fest@^0.8.0, type-fest@^0.8.1: integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-fest@^3.0.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.7.2.tgz#08f83ee3229b63077e95c9035034d32905969457" - integrity sha512-f9BHrLjRJ4MYkfOsnC/53PNDzZJcVo14MqLp2+hXE39p5bgwqohxR5hDZztwxlbxmIVuvC2EFAKrAkokq23PLA== + version "3.8.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.8.0.tgz#ce80d1ca7c7d11c5540560999cbd410cb5b3a385" + integrity sha512-FVNSzGQz9Th+/9R6Lvv7WIAkstylfHN2/JYxkyhhmKFYh9At2DST8t6L6Lref9eYO8PXFTfG9Sg1Agg0K3vq3Q== typed-array-length@^1.0.4: version "1.0.4" @@ -7611,15 +7291,10 @@ typescript@^4.5.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -"typescript@^4.6.4 || ^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.2.tgz#891e1a90c5189d8506af64b9ef929fca99ba1ee5" - integrity sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw== - -typescript@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.3.tgz#fe976f0c826a88d0a382007681cbb2da44afdedf" - integrity sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA== +"typescript@^4.6.4 || ^5.0.0", typescript@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== unbox-primitive@^1.0.2: version "1.0.2" @@ -7652,9 +7327,9 @@ universalify@^2.0.0: integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== update-browserslist-db@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -7905,10 +7580,10 @@ write-json-file@^4.1.1: sort-keys "^4.0.0" write-file-atomic "^3.0.0" -xml2js@^0.4.22: - version "0.4.23" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" - integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== +xml2js@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== dependencies: sax ">=0.6.0" xmlbuilder "~11.0.0"