{"_id":"sfdx-decomposer","_rev":"53-40a63abfeb1b0789354901642666f4ba","name":"sfdx-decomposer","dist-tags":{"latest":"3.3.10","beta":"3.3.8-beta.1"},"versions":{"0.1.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"0.1.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","fast-xml-parser":"^4.3.3"},"devDependencies":{"@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","eslint-plugin-sf-plugin":"^1.17.2","oclif":"^4.3.4","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"topics":{"hello":{"description":"Commands to say hello."},"decomposer":{"description":"description for decomposer"}},"flexibleTaxonomy":true},"scripts":{"build":"wireit","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"wireit","docs":"sf-docs","format":"wireit","lint":"wireit","postinstall":"yarn husky install","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@0.1.0","dist":{"shasum":"ed7a3f0cc425a37f56ac10ca45f3b0c8acc4ac95","integrity":"sha512-dPVhePQjFveTxfmUN26trFVwXoixlGDxuiURTemETp3zshNPGCaHJK6z/rhRMoUe11o7knqOpA5LID8vXI2hJA==","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-0.1.0.tgz","fileCount":28,"unpackedSize":420315,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiEVQ1gixTZsh300AVbQwhWmVHAuKex2WDn96UFLWL1gIgN6E8VlbgfLCIx9FAQ8l0B57g9PR78yB8RCvJyj0j7yE="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_0.1.0_1706464626425_0.21844269417292028"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"0.1.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"0.1.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","fast-xml-parser":"^4.3.3"},"devDependencies":{"@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","eslint-plugin-sf-plugin":"^1.17.2","oclif":"^4.3.4","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"topics":{"hello":{"description":"Commands to say hello."},"decomposer":{"description":"description for decomposer"}},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@0.1.1","dist":{"shasum":"02643c70dcd1406f81ceba611b1d09b9cb43dad0","integrity":"sha512-FgHIi0qylz/jGBdQHGF62j0AeNPpDeF5Qs4uV/n7EkRAqlL7MVlXuT4qS+UH/SSCsKuH2P3YUFB7pHfLKzAp5g==","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-0.1.1.tgz","fileCount":28,"unpackedSize":420317,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD23AhaAg7SEke4NVrNZu1WPQupMVBHAjqax0xA+INpQAIhAK2ZF+IiQYmPeTvrp3o++BAjePBi2PtCCu6JheoGhal6"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_0.1.1_1706478003302_0.6328128946225151"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.0.0-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","fast-xml-parser":"^4.3.3"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","eslint-plugin-sf-plugin":"^1.17.2","husky":"^9.0.6","oclif":"^4.3.4","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.0.0-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/salesforcecli/sfdx-decomposer/main/LICENSE.txt)\n\nThe `sfdx-decomposer` is a simple plugin to read the original metadata files for certain metadata types and create smaller, more manageable files for version control. When it's time to deploy decomposed metadata to an org, the inverse function (`compose`) will re-create metadata files for CLI deployments.\n\n**DISCLAIMERS:**\nIt is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for. Do not change your production/QA pipelines until you have tested this and are happy with the results. Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\n`sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer compose`\n\nThe same arguments are used for both commands.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n- force-app/main/default/workflows\n  - Case\n    - alerts\n    - fieldUpdates\n    - outboundMessages\n    - rules\n    - tasks\n      - User_task_was_completed.tasks-meta.xml\n\nCustom Labels will be decomposed directly in the root labels folder and will have a different extension compared to the original labels file:\n\n- force-app/main/default/labels\n  - quoteAuto.label-meta.xml\n  - quoteManual.label-meta.xml\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to decompose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into multiple XML files by elements and field names.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer compose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer compose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to compose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to compile files before you deploy the metadata to your org.\n\nEXAMPLES\n  Compose all flows:\n\n    $ sf decomposer compose -m \"flow\"\n```\n\n## Supported Metadata\n\nThe following metadata types are supported:\n\n- Custom Labels (`-t \"labels\"`)\n- Workflows (`-t \"workflow\"`)\n- Profiles (`-t \"profile\"`)\n- Permission Sets (`-t \"permissionset\"`)\n- Flows (`-t \"flow\"`)\n- Matching Rules (`-t \"matchingRule\"`)\n- Assignment Rules (`-t \"assignmentRules\"`)\n- Escalation Rules (`-t \"escalationRules\"`)\n- Sharing Rules (`-t \"sharingRules\"`)\n- Auto Response Rules (`-t \"autoResponseRules\"`)\n- Global Value Set Translation (`-t \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`-t \"standardValueSetTranslation\"`)\n- Translations (`-t \"translation\"`)\n- Standard Value Sets (`-t \"standardValueSet\"`)\n- Global Value Sets (`-t \"globalValueSet\"`)\n- AI Scoring Model Definition (`-t \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`-t \"decisionMatrixDefinition\"`)\n\n**NOTE**:\nPer Salesforce documentation for **Standard/Global Value Set Translations**, when a value isn't translated, its translation becomes a comment that's paired with its label.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation><!-- Warm --></translation>\n    </valueTranslation>\n```\n\nThe `decompose` function will not process these comments correctly (see example below). Ensure all meta files have proper translations before decomposing them.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation>\n            <#comment> Warm </#comment>\n        </translation>\n    </valueTranslation>\n```\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nSalesforce CLI version 2.10.2 correctly handles opt-in style with directories on the `.forceignore` file. Ensure you're using a version of the CLI which supports opt-in style with directories.\n\n### `.gitignore` updates\n\n```\n# Ignore the original files created by retrievals\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n```\n\n### `.forceignore` updates\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n\n# Allow the meta files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n```\n","readmeFilename":"README.md","gitHead":"346316e2d0a8d4cea5a16f3a4a7830ac00cf9813","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-XKJsSo5Yy0Vo1hn9G8qlW6hqQUZFCKpporOXxqH91svQ+BwGToKfuFkQvOOGe1QZNAbehOG2YNFgmUr1MAfbZA==","shasum":"49f2de8f369b36de55d06034ee919892ddefd658","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.0.0-beta.1.tgz","fileCount":54,"unpackedSize":549651,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1jxlMana9Q8KKaOI9xOYmB2wbYGL8L79Vec/a6Hru3gIgHjjsuiTAllD5LvQRqFh+4yE9JWvtxTE5ETuk/l0eUUM="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.0.0-beta.1_1706658447532_0.3808191874230522"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0-beta.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.0.0-beta.2","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","fast-xml-parser":"^4.3.3"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","eslint-plugin-sf-plugin":"^1.17.2","husky":"^9.0.6","oclif":"^4.3.4","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.0.0-beta.2","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/salesforcecli/sfdx-decomposer/main/LICENSE.txt)\n\nThe `sfdx-decomposer` is a simple plugin to read the original metadata files for certain metadata types and create smaller, more manageable files for version control. When it's time to deploy decomposed metadata to an org, the inverse function (`compose`) will re-create metadata files for CLI deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer compose`\n\nThe same arguments are used for both commands.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n- force-app/main/default/workflows\n  - Case\n    - alerts\n    - fieldUpdates\n    - outboundMessages\n    - rules\n    - tasks\n      - User_task_was_completed.tasks-meta.xml\n\nCustom Labels will be decomposed directly in the root labels folder and will have a different extension compared to the original labels file:\n\n- force-app/main/default/labels\n  - quoteAuto.label-meta.xml\n  - quoteManual.label-meta.xml\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to decompose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into multiple XML files by elements and field names.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer compose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer compose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to compose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to compile files before you deploy the metadata to your org.\n\nEXAMPLES\n  Compose all flows:\n\n    $ sf decomposer compose -m \"flow\"\n```\n\n## Supported Metadata\n\nThe following metadata types are supported:\n\n- Custom Labels (`-m \"labels\"`)\n- Workflows (`-m \"workflow\"`)\n- Profiles (`-m \"profile\"`)\n- Permission Sets (`-m \"permissionset\"`)\n- Flows (`-m \"flow\"`)\n- Matching Rules (`-m \"matchingRule\"`)\n- Assignment Rules (`-m \"assignmentRules\"`)\n- Escalation Rules (`-m \"escalationRules\"`)\n- Sharing Rules (`-m \"sharingRules\"`)\n- Auto Response Rules (`-m \"autoResponseRules\"`)\n- Global Value Set Translation (`-m \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`-m \"standardValueSetTranslation\"`)\n- Translations (`-m \"translation\"`)\n- Standard Value Sets (`-m \"standardValueSet\"`)\n- Global Value Sets (`-m \"globalValueSet\"`)\n- AI Scoring Model Definition (`-m \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`-m \"decisionMatrixDefinition\"`)\n- Bot (`-m \"bot\"`)\n- Bot Version (`-m \"botVersion\"`)\n\n**NOTE**:\nPer Salesforce documentation for **Standard/Global Value Set Translations**, when a value isn't translated, its translation becomes a comment that's paired with its label.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation><!-- Warm --></translation>\n    </valueTranslation>\n```\n\nThe `decompose` function will not process these comments correctly (see example below). Ensure all meta files have proper translations before decomposing them.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation>\n            <#comment> Warm </#comment>\n        </translation>\n    </valueTranslation>\n```\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nSalesforce CLI version 2.10.2 correctly handles opt-in style with directories on the `.forceignore` file. Ensure you're using a version of the CLI which supports opt-in style with directories.\n\n### `.gitignore` updates\n\n```\n# Ignore the original files created by retrievals\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n```\n\n### `.forceignore` updates\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n\n# Allow the meta files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n```\n","readmeFilename":"README.md","gitHead":"12ef66cd59ba810dbc2463ae70f62a0ba3ddca50","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-YL48KmGEEJKqUEAo4RUlUjSulsRwVGABgf672onEcpofluvcvzPRICrIqCG3MhBP4sfJvDrFzXHqiAITTIzDeA==","shasum":"a210ea385e752e91b5bf61c95f8f0af746dd8c43","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.0.0-beta.2.tgz","fileCount":54,"unpackedSize":555393,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDP/PwSFOrTFjHdN2tEafGvfWggb8hTChCfhERaPop/cAIhAKLI5yn/UaCHLIk5Yr28mXWGfUOC0nPbHL2PchdV4LI5"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.0.0-beta.2_1706725641810_0.09505007846059077"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.0.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","fast-xml-parser":"^4.3.3"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","eslint-plugin-sf-plugin":"^1.17.2","husky":"^9.0.6","oclif":"^4.3.4","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.0.0","gitHead":"a9304d7b169d4c069e93c1794d8ae181ea084993","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-yzuhwNzxmf591iDLrhQUQxX3GADSS2ZaVkGr1dklXGWtNavOA2UmNPNR4pEqdQC+Gt1Qb4BKfhwAzkssU/6I+g==","shasum":"633f173fad8a5528973c43ed0f3f4e799482f463","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.0.0.tgz","fileCount":54,"unpackedSize":555379,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH9sORRHkh1KM0Ak75tGlWOptFuXm9x1HhF/fQPxYp8CAiEAgpvvgpHWYVOSQ/4yitZA+FnHM3ndwRkYIiQCFCxbbwg="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.0.0_1706731627019_0.8314094637458982"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.1.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.3"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","eslint-plugin-sf-plugin":"^1.17.2","husky":"^9.0.6","oclif":"^4.3.4","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.1.0","gitHead":"ab54c139849e1000ddb0a5caf29421b8026c6456","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-o3w34yYCMyGxeLfuYAv/Bq20YTTnnuOAx2O8iyzx2hCMwtgcryV/c44spuIzU1sjJE6heDXCoOcgWIexI1nvJw==","shasum":"77d4fb386d92b6c0569ebaca7ba75a1bcd138ba1","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.1.0.tgz","fileCount":48,"unpackedSize":543998,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwrn5nXXGzwKCk6ZnkS3FYt0Zt07Jovdw60fCHwamyAAiEA1vrfgf9Ohzl0EWHg9r9xC8+ldwH99gkdBL4wcwfGfzk="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.1.0_1706843664532_0.22487641457854224"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.1-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.1.1-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.3"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.2","husky":"^9.0.6","oclif":"^4.3.4","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.1.1-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/salesforcecli/sfdx-decomposer/main/LICENSE.txt)\n\nThe `sfdx-decomposer` is a simple plugin to read the original metadata files for certain metadata types and create smaller, more manageable files for version control. When it's time to deploy decomposed metadata to an org, the inverse function (`compose`) will re-create metadata files for CLI deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer compose`\n\nThe same arguments are used for both commands.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n- force-app/main/default/workflows\n  - Case\n    - alerts\n    - fieldUpdates\n    - outboundMessages\n    - rules\n    - tasks\n      - User_task_was_completed.tasks-meta.xml\n\nCustom Labels will be decomposed directly in the root labels folder and will have a different extension compared to the original labels file:\n\n- force-app/main/default/labels\n  - quoteAuto.label-meta.xml\n  - quoteManual.label-meta.xml\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to decompose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into multiple XML files by elements and field names.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer compose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer compose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to compose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to compile files before you deploy the metadata to your org.\n\nEXAMPLES\n  Compose all flows:\n\n    $ sf decomposer compose -m \"flow\"\n```\n\n## Supported Metadata\n\nThe following metadata types are supported:\n\n- Custom Labels (`-m \"labels\"`)\n- Workflows (`-m \"workflow\"`)\n- Profiles (`-m \"profile\"`)\n- Permission Sets (`-m \"permissionset\"`)\n- Flows (`-m \"flow\"`)\n- Matching Rules (`-m \"matchingRule\"`)\n- Assignment Rules (`-m \"assignmentRules\"`)\n- Escalation Rules (`-m \"escalationRules\"`)\n- Sharing Rules (`-m \"sharingRules\"`)\n- Auto Response Rules (`-m \"autoResponseRules\"`)\n- Global Value Set Translation (`-m \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`-m \"standardValueSetTranslation\"`)\n- Translations (`-m \"translation\"`)\n- Standard Value Sets (`-m \"standardValueSet\"`)\n- Global Value Sets (`-m \"globalValueSet\"`)\n- AI Scoring Model Definition (`-m \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`-m \"decisionMatrixDefinition\"`)\n- Bot (`-m \"bot\"`)\n- Bot Version (`-m \"botVersion\"`)\n\n**NOTE**:\nPer Salesforce documentation for **Standard/Global Value Set Translations**, when a value isn't translated, its translation becomes a comment that's paired with its label.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation><!-- Warm --></translation>\n    </valueTranslation>\n```\n\nThe `decompose` function will not process these comments correctly (see example below). Ensure all meta files have proper translations before decomposing them.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation>\n            <#comment> Warm </#comment>\n        </translation>\n    </valueTranslation>\n```\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nSalesforce CLI version 2.10.2 correctly handles opt-in style with directories on the `.forceignore` file. Ensure you're using a version of the CLI which supports opt-in style with directories.\n\n### `.gitignore` updates\n\n```\n# Ignore the original files created by retrievals\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n```\n\n### `.forceignore` updates\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n\n# Allow the meta files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"95c999f13292cdbd943ffb3d0b7c9cd67f0d2c1e","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-LwlEOB4BcTEq/B4tpmk3mleAb6gzpcsthH5FILQoTw54BNqNvhhWSSkSLiW0Hm9rCy/uOgdQTqDiyrVSANHjNQ==","shasum":"7a0efa3edf4de159cf8cb89f50234f9e32d0c0be","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.1.1-beta.1.tgz","fileCount":48,"unpackedSize":545734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHh4XMgAjaoG9YzDjpudq0FpSDx+vjJi0XceoU1Jv3aQIgB/lzHbNIzGzlf+yb/tIFhjThtV2jRpG5YwcBaM9QoWU="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.1.1-beta.1_1707253120476_0.24529917773062682"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.1.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.3"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.2","husky":"^9.0.6","oclif":"^4.3.4","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.1.1","gitHead":"ec0951522955021246cf1d7257c905576cb4a055","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-LnHtbiKVv97sMWMgJ20jcLWupX24UudXtbMPFLHGU8PovqzDXwfJUeoky1W2/fDNqkRVVuNvBGcGUctAys6z0A==","shasum":"ea38850e4767c74b1873ae47454364a35b574f91","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.1.1.tgz","fileCount":48,"unpackedSize":545720,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH74tD54zfT3x/qh/pZ/Z34wjmapUhFcHAQcAY9TzNlfAiEAov29LVQKSLyolh2hT/rk0g2DtsFyWuMK0MdLA/F15y8="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.1.1_1707253794352_0.30870393272249363"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.2-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.1.2-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.4.7","@salesforce/sf-plugins-core":"^7.1.3","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.2","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.2","husky":"^9.0.6","oclif":"^4.3.4","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.1.2-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/salesforcecli/sfdx-decomposer/main/LICENSE.txt)\n\nThe `sfdx-decomposer` is a simple plugin to read the original metadata files for certain metadata types and create smaller, more manageable files for version control. When it's time to deploy decomposed metadata to an org, the inverse function (`compose`) will re-create metadata files for CLI deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer compose`\n\nThe same arguments are used for both commands.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n- force-app/main/default/workflows\n  - Case\n    - alerts\n    - fieldUpdates\n    - outboundMessages\n    - rules\n    - tasks\n      - User_task_was_completed.tasks-meta.xml\n\nCustom Labels will be decomposed directly in the root labels folder and will have a different extension compared to the original labels file:\n\n- force-app/main/default/labels\n  - quoteAuto.label-meta.xml\n  - quoteManual.label-meta.xml\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to decompose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into multiple XML files by elements and field names.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer compose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer compose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to compose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to compile files before you deploy the metadata to your org.\n\nEXAMPLES\n  Compose all flows:\n\n    $ sf decomposer compose -m \"flow\"\n```\n\n## Supported Metadata\n\nThe following metadata types are supported:\n\n- Custom Labels (`-m \"labels\"`)\n- Workflows (`-m \"workflow\"`)\n- Profiles (`-m \"profile\"`)\n- Permission Sets (`-m \"permissionset\"`)\n- Flows (`-m \"flow\"`)\n- Matching Rules (`-m \"matchingRule\"`)\n- Assignment Rules (`-m \"assignmentRules\"`)\n- Escalation Rules (`-m \"escalationRules\"`)\n- Sharing Rules (`-m \"sharingRules\"`)\n- Auto Response Rules (`-m \"autoResponseRules\"`)\n- Global Value Set Translation (`-m \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`-m \"standardValueSetTranslation\"`)\n- Translations (`-m \"translation\"`)\n- Standard Value Sets (`-m \"standardValueSet\"`)\n- Global Value Sets (`-m \"globalValueSet\"`)\n- AI Scoring Model Definition (`-m \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`-m \"decisionMatrixDefinition\"`)\n- Bot (`-m \"bot\"`)\n- Bot Version (`-m \"botVersion\"`)\n\n**NOTE**:\nPer Salesforce documentation for **Standard/Global Value Set Translations**, when a value isn't translated, its translation becomes a comment that's paired with its label.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation><!-- Warm --></translation>\n    </valueTranslation>\n```\n\nThe `decompose` function will not process these comments correctly (see example below). Ensure all meta files have proper translations before decomposing them.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation>\n            <#comment> Warm </#comment>\n        </translation>\n    </valueTranslation>\n```\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nSalesforce CLI version 2.10.2 correctly handles opt-in style with directories on the `.forceignore` file. Ensure you're using a version of the CLI which supports opt-in style with directories.\n\n### `.gitignore` updates\n\n```\n# Ignore the original files created by retrievals\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n```\n\n### `.forceignore` updates\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n\n# Allow the meta files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"c4945901a662ee4cdc9250ed41d19b381f2d7278","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-AbqHHOGBpLh88pNsyfJVW6zMvYhER3wX/BZOFaE1RIttjhIWJS0eQdmQB2FUl+INkbG0P4siD5LWcx9iaPOUkw==","shasum":"18d6a4b37f40e977671a03a52f0fae321934f688","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.1.2-beta.1.tgz","fileCount":48,"unpackedSize":545777,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGn5gEs0m+EKdPucirEcfEcy15Bz9coDUoGIC/YM8wcAIhAOBPupcSWql0mKaRQBfKpED/qoO3uiryK1tIX5rG6brS"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.1.2-beta.1_1707685654404_0.19170427300562598"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.2-beta.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"1.1.2-beta.2","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.3","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@1.1.2-beta.2","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/salesforcecli/sfdx-decomposer/main/LICENSE.txt)\n\nThe `sfdx-decomposer` is a simple plugin to read the original metadata files for certain metadata types and create smaller, more manageable files for version control. When it's time to deploy decomposed metadata to an org, the inverse function (`compose`) will re-create metadata files for CLI deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer compose`\n\nThe same arguments are used for both commands.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n- force-app/main/default/workflows\n  - Case\n    - alerts\n    - fieldUpdates\n    - outboundMessages\n    - rules\n    - tasks\n      - User_task_was_completed.tasks-meta.xml\n\nCustom Labels will be decomposed directly in the root labels folder and will have a different extension compared to the original labels file:\n\n- force-app/main/default/labels\n  - quoteAuto.label-meta.xml\n  - quoteManual.label-meta.xml\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to decompose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into multiple XML files by elements and field names.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer compose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer compose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to compose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to compile files before you deploy the metadata to your org.\n\nEXAMPLES\n  Compose all flows:\n\n    $ sf decomposer compose -m \"flow\"\n```\n\n## Supported Metadata\n\nThe following metadata types are supported:\n\n- Custom Labels (`-m \"labels\"`)\n- Workflows (`-m \"workflow\"`)\n- Profiles (`-m \"profile\"`)\n- Permission Sets (`-m \"permissionset\"`)\n- Flows (`-m \"flow\"`)\n- Matching Rules (`-m \"matchingRule\"`)\n- Assignment Rules (`-m \"assignmentRules\"`)\n- Escalation Rules (`-m \"escalationRules\"`)\n- Sharing Rules (`-m \"sharingRules\"`)\n- Auto Response Rules (`-m \"autoResponseRules\"`)\n- Global Value Set Translation (`-m \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`-m \"standardValueSetTranslation\"`)\n- Translations (`-m \"translation\"`)\n- Standard Value Sets (`-m \"standardValueSet\"`)\n- Global Value Sets (`-m \"globalValueSet\"`)\n- AI Scoring Model Definition (`-m \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`-m \"decisionMatrixDefinition\"`)\n- Bot (`-m \"bot\"`)\n- Bot Version (`-m \"botVersion\"`)\n\n**NOTE**:\nPer Salesforce documentation for **Standard/Global Value Set Translations**, when a value isn't translated, its translation becomes a comment that's paired with its label.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation><!-- Warm --></translation>\n    </valueTranslation>\n```\n\nThe `decompose` function will not process these comments correctly (see example below). Ensure all meta files have proper translations before decomposing them.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation>\n            <#comment> Warm </#comment>\n        </translation>\n    </valueTranslation>\n```\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nSalesforce CLI version 2.10.2 correctly handles opt-in style with directories on the `.forceignore` file. Ensure you're using a version of the CLI which supports opt-in style with directories.\n\n### `.gitignore` updates\n\n```\n# Ignore the original files created by retrievals\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n```\n\n### `.forceignore` updates\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n\n# Allow the meta files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"72ee3d162cb7b766f97f158fe8cfe71305d90302","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-zOa2MJjrHXzvZQ7IYWOWosQHzndr0AtyPrrrBN4xJmpJksK5upzPdvhzdzrXMi+2ps8DkYnzC78uGZJ8oFILVg==","shasum":"e2358775361911993b42dd6811e109e86987ade5","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-1.1.2-beta.2.tgz","fileCount":48,"unpackedSize":550661,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE7tk8BMrjlHjZP8fLqtK4rsbtFRT9FigIHhaS+zVGkbAiB6LXULrjBlGP4NosrDPECPIeGj7PqoFAW/kCPZpvo1HA=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_1.1.2-beta.2_1707686476135_0.1285659450841199"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.0.0-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.3","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"BSD-3-Clause","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.0.0-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/salesforcecli/sfdx-decomposer/main/LICENSE.txt)\n\nThe `sfdx-decomposer` is a simple plugin to read the original metadata files for certain metadata types and create smaller, more manageable files for version control. When it's time to deploy decomposed metadata to an org, the inverse function (`recompose`) will re-create metadata files for CLI deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\nThe same arguments are used for both commands.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n- force-app/main/default/workflows\n  - Case\n    - alerts\n    - fieldUpdates\n    - outboundMessages\n    - rules\n    - tasks\n      - User_task_was_completed.tasks-meta.xml\n\nCustom Labels will be decomposed directly in the root labels folder and will have a different extension compared to the original labels file:\n\n- force-app/main/default/labels\n  - quoteAuto.label-meta.xml\n  - quoteManual.label-meta.xml\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to decompose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into multiple XML files by elements and field names.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--json]\n\nFLAGS\n  -m, --metadata-type=<value> The type of metadata to recompose.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to your org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nThe following metadata types are supported:\n\n- Custom Labels (`-m \"labels\"`)\n- Workflows (`-m \"workflow\"`)\n- Profiles (`-m \"profile\"`)\n- Permission Sets (`-m \"permissionset\"`)\n- Flows (`-m \"flow\"`)\n- Matching Rules (`-m \"matchingRule\"`)\n- Assignment Rules (`-m \"assignmentRules\"`)\n- Escalation Rules (`-m \"escalationRules\"`)\n- Sharing Rules (`-m \"sharingRules\"`)\n- Auto Response Rules (`-m \"autoResponseRules\"`)\n- Global Value Set Translation (`-m \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`-m \"standardValueSetTranslation\"`)\n- Translations (`-m \"translation\"`)\n- Standard Value Sets (`-m \"standardValueSet\"`)\n- Global Value Sets (`-m \"globalValueSet\"`)\n- AI Scoring Model Definition (`-m \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`-m \"decisionMatrixDefinition\"`)\n- Bot (`-m \"bot\"`)\n- Bot Version (`-m \"botVersion\"`)\n\n**NOTE**:\nPer Salesforce documentation for **Standard/Global Value Set Translations**, when a value isn't translated, its translation becomes a comment that's paired with its label.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation><!-- Warm --></translation>\n    </valueTranslation>\n```\n\nThe `decompose` function will not process these comments correctly (see example below). Ensure all meta files have proper translations before decomposing them.\n\n```xml\n    <valueTranslation>\n        <masterLabel>Warm</masterLabel>\n        <translation>\n            <#comment> Warm </#comment>\n        </translation>\n    </valueTranslation>\n```\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nSalesforce CLI version 2.10.2 correctly handles opt-in style with directories on the `.forceignore` file. Ensure you're using a version of the CLI which supports opt-in style with directories.\n\n### `.gitignore` updates\n\n```\n# Ignore the original files created by retrievals\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n```\n\n### `.forceignore` updates\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n\n# Allow the meta files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"48db64ad6719462163728b836c7f945f50ae211c","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-LVvZb0v5aRMYeYa/IZl00F23aQMFl1Sw8c+4d2zSGsVE3UeYtNfcg1x6mEx7o/afbshfDEwHNqxvsEMfOIlIVg==","shasum":"e02db77be98c433ac81418719e59631220c8a176","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.0.0-beta.1.tgz","fileCount":42,"unpackedSize":550199,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8ZstrZcjYD7Py9gc+w04biY4ybjdsP1jBr4nScLe5UAIhAJt6df1XwT15Qoui4N0t7u+7kxn3ov+W892T7rSKN7ES"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.0.0-beta.1_1707693491132_0.1947021937638429"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.0.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.3","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.0","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.0.0","gitHead":"038d2378f50a606d71b8a7627e8f8fecec4802fc","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-BlWO4TQKFCPqVTOiDeUpfa/ZoLtT0ZgxbPryWw9/AL8RZ3RocKHeoD/P1pyCS6q6sU/U0XToyrDd6VpnyYU4wg==","shasum":"ff524d94f137c85103fed479cb3227c4e3f877e8","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.0.0.tgz","fileCount":43,"unpackedSize":551240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICQiP74OS6TL6gatpbfeIE086ouQZAW6sRZk2Oo/0ybUAiAPEW57rPj+mAIvm2iIDvvcPWM6bn1piaaI3BEzryH27Q=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.0.0_1707695067365_0.8435618308747874"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.0.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.0.1","gitHead":"d6aac5ea17bc18d3087936e6dc1e66aa27df0fd7","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-YIxU1FwvCGvRDPloxImG5EvfoYU+MH2uXKuAtDDgnTrivD3P0TouTpPJ/fNJFGlUcXtod/qFTfxJqVnujGHF/g==","shasum":"a9c2d205f79409362a5ed71fdb98e1052c8ed76c","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.0.1.tgz","fileCount":43,"unpackedSize":554760,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtqTSB2cudtAmdrRuFxENq4B1ty3OPpowB28H6V7OIzQIgO2oYpCjOQe3cBzZ2/NyywVlexx3xJPrSLcOrlmQ5gtE="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.0.1_1707941130816_0.07654201985915732"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.0.2","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.0.2","gitHead":"0fba0b25f28e5c83a95780ee28289bd8adffaeea","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-C9BQWBV//79N5Pvz867Dkbck9G1Bt1qDced8nHFovaRX/SGZQQICM1CnNd7jZOpgGkTxiDXS0JYsF3omyHfALg==","shasum":"fa42b2475a25852ca1e26012365e8a6decaf869f","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.0.2.tgz","fileCount":43,"unpackedSize":554898,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGcb3MGkyghceCb3OAgcOaKsiOVtSRnngPGyIKeUURFaAiEA+Ef/5hgMVbJ7/kozWldtbK8+zQb0GcpGALkeUggZnWU="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.0.2_1707941866840_0.35570616903393804"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.1.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.1.0","gitHead":"3c56721bd5fad59c5258310433030fd2ca6a2615","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-KHaJ3h7frRGlXYYTyIJOOl15iSdeXVlmRalHZdgAL/Z0xNKOP/bRtF6A0EOVbniNfUsTyzLp4Gvef7PIhksGkw==","shasum":"285ecc087754484c87a083cba9b31615f616adf5","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.1.0.tgz","fileCount":43,"unpackedSize":556261,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDM754L0ADTiypTtukVdEK9s/2BAq0pKC3l8z149BwIYwIhALUyyzwXU8XsCqA4YJEX+z/97zpDJmfVwEndNnUVVKY1"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.1.0_1707945050658_0.06971651752423158"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.1.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.1.1","gitHead":"f37767d45b4eac8291178457836589f4591e33fc","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-Da31pKbZMQh0eVxIN1C62u9hDjIMhz6erPCQNTqO4iNkwIX2P+X36ZlIY7eKuMs8IrNnXNjLQwk6wKHolHJdOA==","shasum":"58acb69ba0855a68219a7677385246a45ecebc77","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.1.1.tgz","fileCount":43,"unpackedSize":556152,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEuOudpBMRN0Pp1o9dPBLEvQhU7w5iQqtgLWVqEkMU7iAiEAtbTiPNq1B6xvi7DGfpt/Lo2/s4fmPcXRH9DhiO0vaVE="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.1.1_1707945988589_0.5367888148327467"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.1.2","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.1.2","gitHead":"9f6ee7e49aaa27e35970469844c6618a97e0d1a5","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-TPUhVElYx5EUWKR5c8j3qtK/5kghfXG+pntkJ9R3WGepBLX5qQRoFeSTTWUrmnxXlLGAgzbdGh2NuYyQfYFZRw==","shasum":"985d6eb950978015c1add6076e7b43f1d1bbe557","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.1.2.tgz","fileCount":43,"unpackedSize":556147,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDufl8ExrYDMwAZHVMmxcxZTtd6vevXoCyaOY03ThnGUAiEAyZLIOAmIDN4IB4Uu5lsSHQwr2PdKmmgzQDtzFXSuY+Q="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.1.2_1707947344614_0.5318074401112065"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.3":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.1.3","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.1.3","gitHead":"974ffa7c292de39085edabfa3961fc3d51466d15","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-prUbQ4e059bFVe82+CR4F/LUg4JDdhxRPc/szJuin528rCOwajG4Od764FCogr+bTi5XoMt0jHS+HLNt1iNQtA==","shasum":"d153ade67d2742646969f90e01b3466a4a0dfab1","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.1.3.tgz","fileCount":43,"unpackedSize":556793,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKr7C7YeBOPS5EBl6NcwaaHdu5zMsAcwU8gXuK9dtyCAiEAxKurx+avdMGlVvCEl5sY1rmlUtlo/Cgis+mwK+Vhez4="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.1.3_1708011081870_0.5359565992580906"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.4":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.1.4","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.1.4","gitHead":"5598bc009a0b9b95a0cdf7ca878db2e14e1ac5a8","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-Fah5fjQHPgqq7CzDIcaQeBOGt6MR8qthz90qrFyduQilMrfSgTkx7e/yM1aqwrEeFG11djTNE9gI+WrZxVTXKQ==","shasum":"45f43bfce79d56cc7652381679c4685631b83b8a","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.1.4.tgz","fileCount":43,"unpackedSize":555566,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8PKgovfPLZG+j+ZXJKCEpIFOAv2G7zP+q477+dHwfNgIgG9JqMKdIsXkZcCtleO74GxWdk98thi74bZCYMICx3ds="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.1.4_1708117005420_0.18989284471304013"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.5":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.1.5","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.1.5","gitHead":"ebcc307f67946e7cde3eaecb4cae6256eba7eedf","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-G39M8Dul6YyR5AhFrI9//dT26M76X7uZmrpGPfm02ldQI3o7EvpNmRNzYrUIRKonQaHi4ffhXqmY5Mdd0ytRjQ==","shasum":"bd09aaf14546069b209bfdf282855b7a671ecf9b","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.1.5.tgz","fileCount":43,"unpackedSize":556087,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFaLSnDr/A2W9uFQ5kj4+3+wgDjDsFkILQ3tMYrasY+8AiARYCtRLwETiY6O18iUG8sHDMsTLCjy8Ecelk11kpj7wg=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.1.5_1708196575138_0.06846071262235931"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.2.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"2.2.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fast-xml-parser":"^4.3.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@2.2.0","gitHead":"bcc095036f7a20beab9ad9356a3b971c15058b9b","_nodeVersion":"18.19.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-0Eu2oyB4RVTfc1HR+a9g1Rg/34tHAltzpmg6emrVLNgA+0DEUKiuDcimvq5nKcQQS4jO5rji+ta8nzxKu1URfA==","shasum":"a75be8a1e195f2608336c106f8853f8638fa3925","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-2.2.0.tgz","fileCount":43,"unpackedSize":558533,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE9YU9CHxv7eom07HhLWcUvdlap/XSrpvuLcUeQ+PHJmAiAURT1MUkg0UaCaTJKIPpJG2HRnXcgL6BCY7bfBhUVpSA=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_2.2.0_1708288988611_0.8005910032015939"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.0.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fs-extra":"^11.2.0","xml-disassembler":"^1.0.6"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","fast-xml-parser":"^4.3.4","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@3.0.0","gitHead":"7bf471f31fb7ef01002ec1eec2e8acb5141c800f","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-+WPElFqOrmfp+ckYUu7bps6gpttCFex44CL9Sg/l9qZoojAm3R6tRlpFxVdcmaPrYkPdPMS86a+68qYI8LALXA==","shasum":"a78b1fbb46ed70aff4c622556f437a17c9d9bda1","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.0.0.tgz","fileCount":31,"unpackedSize":541874,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQjFjF9aSdZzHcQ5u3IQhLnB8P/7c+KuwrDAV0HoJ/qAIhAK403/VwZuCGgF3fxOWZ30gLv4DXclhfbP5OyhNc/lFu"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.0.0_1708739695119_0.42961510961013616"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.0.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fs-extra":"^11.2.0","xml-disassembler":"^1.0.6"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","fast-xml-parser":"^4.3.4","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"_id":"sfdx-decomposer@3.0.1","gitHead":"fb54e2620c6bc5f65fff15b506620d1d9846c5d9","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-n6sKUMmkqhf/n+y8JS80jmRvCeuI23ls1EpjIU6XLwzxljG9AKHJzJ4uGIukA4fMWRvZAXtzEfPeUgoYOod+xg==","shasum":"f4a59fc0b2efe2d6b68f5970ce446b3f7932fb9c","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.0.1.tgz","fileCount":31,"unpackedSize":541854,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4uI5ioXKl980wW6yWc6/SlNVP0/06YnqMGy+T9m/oUAiEA9qDFQ1YQCp9WULnUgs8Svxp4YWLjKgTyvngm3RD5S/U="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.0.1_1708818728269_0.2828163180347911"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.2-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.0.2-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fs-extra":"^11.2.0","xml-disassembler":"^1.0.10"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.0.2-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recompose metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID element for all metadata types is `<fullName>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf `<fullName>` isn't found in the nested element, the plugin will look for any other potential unique ID elements for the provided metadata suffixes (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> -p [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  -p, --purge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"dcbb3a5bc1778cb9aa091e41e6f01865f4c0acab","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-7OiCNazCPurUvwTd0ywppT9LpfRwZN1Bp8po9w/EuoISAlSaAMj822nBj70exL61Ft02hDaha6X3GFR4hEvbEQ==","shasum":"b6663b365d313c50a0e61d32c55f3025960e1f67","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.0.2-beta.1.tgz","fileCount":34,"unpackedSize":542105,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJ7QH42yTuyUFO4A0jEezU9jd/TKF7oVd4h6jljeq2RgIgMiAVSyFPQOGgG9jnlGhNPOir8DV7ZZvroA9CUCU+ReQ="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.0.2-beta.1_1709842311864_0.39506878881984164"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.0.2","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fs-extra":"^11.2.0","xml-disassembler":"^1.0.10"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.0.2","gitHead":"6031bae78a7a12e313b6195e9af3e381eaa2223b","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-qjX8WYM4EfvQicCgkh7ujvTZnEQvizYpHNNuyAdoEBrkjTnJKXla64XEeQw1wO+sGax+MnHTdGQHuNaqRAVXwg==","shasum":"a3574467939bbd8281ad7f477b492966b5f679b7","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.0.2.tgz","fileCount":34,"unpackedSize":542091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQDOjDascqbD2qjXF/usa8KqBHUCYVr9DyVrV8yAzLVAIgEZgEGbfUbgtbuoNqzEzqz+CI7rNzJHDDvvd2hPQAVqg="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.0.2_1709842778621_0.8563155331316308"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.0-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fs-extra":"^11.2.0","xml-disassembler":"^1.1.5-beta.1"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.0","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.3","husky":"^9.0.6","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.0-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recompose metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID element for all metadata types is `<fullName>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf `<fullName>` isn't found in the nested element, the plugin will look for any other potential unique ID elements for the provided metadata suffixes (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"28daf7b2092b6cc014f806a1baaf3dcb4e740246","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-lRfdmx+9HNFs5BbWGSXE3KBGvc6YF7LOBNkMtD7RUv1h7Ygs3Xb+3ybxQQyQHYH7NaA6ercpmtR+lR0lttnLAQ==","shasum":"5b40f33fb5d4f14921db55c8ff46242cded08ca2","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.0-beta.1.tgz","fileCount":34,"unpackedSize":540112,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAVdwdZvQuEoauGAF++3e4VoY+I/NUFiJ45IZiLc/IsjAiEA6/NQeihepfQsPdbBOhjJjCb79+DDeG+mdlNYF5sjCaI="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.0-beta.1_1710259931423_0.5610896270087948"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.0","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.3.1","fs-extra":"^11.2.0","xml-disassembler":"^1.1.5"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.4","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.0","gitHead":"f70916ebe99193864247540f50d7ced57fbcd601","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-Qd5GhBYPDd8tSDpiT6MsBLuUO/KKZfiL8JElIJYnnViBs4Q7A0wRvV8NacdupqTNJm+MMnTo7hoXEgL8YOgFWg==","shasum":"0a02a1c0266517fcc876fb9bd23c6c9338ebf330","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.0.tgz","fileCount":34,"unpackedSize":540794,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAJwgXCVPFdMwhrSwbeYqfTp3y5PKPCFNY58udJd+JosAiAwWMnCSz8cGAwSsHGPOJQI2tyG+b879/iSipjluL/tKg=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.0_1710262050281_0.8256639533191212"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.1-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.1-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.5.2","fs-extra":"^11.2.0","xml-disassembler":"^1.1.5"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.4","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.1-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recompose metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID element for all metadata types is `<fullName>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf `<fullName>` isn't found in the nested element, the plugin will look for any other potential unique ID elements for the provided metadata suffixes (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"2d2fbf64f9e8f28de307fa61c2f9c529394dd299","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-VzfOWTO+yH1eX7imYEfUwW0fXfbiyBbIdPvA3DXNClLN461r9JHGCuGlosQFak5XAXQbGSjmDlvkFRwHpcYoNw==","shasum":"d721690702fd4b4dda6d3148a581822f22e92ef5","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.1-beta.1.tgz","fileCount":38,"unpackedSize":539476,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLbPXL/K4JFuOvJPvYyYgnLMHrruWePKuvLN8ZGLtI6wIhAKCIAz+t1EyakREcbSMn/Fek1dOQ5D7ci2yeyJqqrkgl"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.1-beta.1_1710449767007_0.2830996308946372"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.1-beta.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.1-beta.2","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.5.2","fs-extra":"^11.2.0","xml-disassembler":"^1.1.5"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.4","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.1-beta.2","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recompose metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID element for all metadata types is `<fullName>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf `<fullName>` isn't found in the nested element, the plugin will look for any other potential unique ID elements for the provided metadata suffixes (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"db4b144c8f8d5eb11eedae98e76a359c48e89848","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-Zn2amcMxSaI5YMe8XGoYzJ8vXbLvkZBjLjapz0Ki+r2U/UdKTFkMvF4CcV3Mx54syCmo1zElva2ChBgQ+UywFQ==","shasum":"e23884c9a7257eface46df212042efafe968d389","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.1-beta.2.tgz","fileCount":37,"unpackedSize":537467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvsdUYoxqE3Zihr16MRIjhBaqkGG/SB+m+3x8IisbBqAIhAMq153raxQ/NEagrSBvn8+whiOeK9Cj0HTHd5ce1PwMf"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.1-beta.2_1710465933342_0.12707428177294577"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.1-beta.3":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.1-beta.3","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.5.2","fs-extra":"^11.2.0","xml-disassembler":"^1.1.5"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.4","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.1-beta.3","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recompose metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID element for all metadata types is `<fullName>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf `<fullName>` isn't found in the nested element, the plugin will look for any other potential unique ID elements for the provided metadata suffixes (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"5008bd3a37680a351764df19c6ad8444e02e80d3","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-rE1LcTWiI6+y6P6TntR1SQF3lYHfD/oTj5TRFknxLyzbumhWs3Ne9RxYVl4IOVMdm4hQH719Jgcp66jZeDtK4A==","shasum":"5b347957c2aae599ff85df0d682d4b1442af4a6c","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.1-beta.3.tgz","fileCount":38,"unpackedSize":539767,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt90SdIPhFCD+4P+aiNKEDeA4UPGcE2vUwdIdjvXFjtQIhAKujJMUAm7FOcKXuTwFz87LfjZs+j7TDVWp8luhi9Z9V"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.1-beta.3_1710466412378_0.5891667063868189"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.5.2","fs-extra":"^11.2.0","xml-disassembler":"^1.1.5"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.7","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.4","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.1","gitHead":"abe4581a13c3e336fb45287e927eb31e4565fdde","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-Gr24Sfmms+o5mvKPcvsWGc8+2+pzMwAo7pt+JGrd5NzZP7dltzeTSVwbDwAIavdmes1+/cJOJTpgxAq7XQtlLA==","shasum":"75d5800b6b20606714843fab70c90f7436c3367d","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.1.tgz","fileCount":38,"unpackedSize":539696,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN3KnpwslF/undP1NgrcCeVOPzrwCnGfyW36joNvCUOwIgSKAIJMHLTyEkWaWP4Z8aYwPx0CioSMgK357hYoLIqbY="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.1_1710468390209_0.003943032622646392"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.2-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.2-beta.1","dependencies":{"@oclif/core":"^3.18.1","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.2-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recompose metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"2988419c5007ef10c8fdba63186b380e247cfb63","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-+uPI19YgUfY+3i1vQk+3sn+SDgw+GU6FrAqQ+mEL1lMBJ0G1tpUF0if5S+h8z/YJ776V2aKeUM+y5+YBA9JcVQ==","shasum":"d37ec7d33c9d5741c45293ad6970201c4c5210eb","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.2-beta.1.tgz","fileCount":38,"unpackedSize":541639,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5VU+t6YETSF4Mv47POZ7E1DwlWx/FpbJlZCiNCd3FFAIhAKXXq1RmtJYysyyrpYYXxMH9qWXFHBHFn9U017Qzpd6b"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.2-beta.1_1712009351688_0.23399591587047586"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.2-beta.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.1.2-beta.2","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.1.2-beta.2","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recompose metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -d <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files.\n\n  You should use this to create files for version control after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and re-creates the original meta files suitable for CLI deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -d <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -d, --dx-directory=<value>  [default: force-app/main/default] The root directory containing your Salesforce metadata.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and re-create the original meta files in the original locations.\n\n  You should use this to recompose files before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"e49a6cd5787ca5e837504134442fbc4d1db0b3d6","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-N/+5eD10FHySngplBMZ6Enh2NKQG83qCBJCktFi8oWmroPpSKHoETwf0kh3GzxU6D5PGZ+Cd8hOF8pUZGUVuww==","shasum":"af3da42929588d50873012ba91a185ef2453920f","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.1.2-beta.2.tgz","fileCount":38,"unpackedSize":540890,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcvXJqldZQKLE+s9we7XzNpCTR+W7fULCx48pBjOvRdgIgYMwWZDtlS8+sKuvZ6YcX4KQSGQEkau27nLQQPtu3F+w="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.1.2-beta.2_1712068959591_0.3028130655213219"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.2.0-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.2.0-beta.1","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.2.0-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recreate metadata files for deployments.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\nEach command will process all applicable metadata files found in all package directories listed in your `sfdx-project.json` file.\n\nRecommend running both commands in your project's root directory.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--purge`/`-p` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -c <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -c, --sfdx-configuration=<value> [default: 'sfdx-project.json' in the current working directory] The path to your Salesforce DX configuration file, 'sfdx-project.json'.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller XML files in each package directory.\n\n  You should run this after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\"\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and recreates metadata files suitable for deployments.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -c <value> [--debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> This flag allows users to specify a metadata type for processing, such as 'flow', 'labels', etc. The provided input should be the metadata's suffix value.\n  -c, --sfdx-configuration=<value> [default: 'sfdx-project.json' in the current working directory] The path to your Salesforce DX configuration file, 'sfdx-project.json'.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and recreate deployment compatible metadata files in each package directory.\n\n  You should run this before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\"\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package.\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files.\n\n```\n# Ignore all XMLs by default\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\n## Contributing\n\nAny contributions you would like to make are appreciated. Please see [CONTRIBUTING](https://github.com/mcarvin8/sfdx-decomposer-plugin/blob/main/CONTRIBUTING.md).\n","readmeFilename":"README.md","gitHead":"d6004763817fde25588aaae82adedfa7419d947e","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-m7OU0vllEE9puk3XOtSWaTccfPgVcU2AoF66q/Wift5a7gMrLNlFUZ3vImEYtdEsXv80Zj9ocfGteO1v43oQig==","shasum":"2935c80486cc70440581e41c155b131c8be408d5","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.2.0-beta.1.tgz","fileCount":41,"unpackedSize":545857,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICaeDZoDB7mOK/hlq80juhA/ulSeGtJz/nnKRqBNOfbDAiBMtYWA9IEtXFUutei/zoHbyoXpThpyGxwWVjF0TxSsLg=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.2.0-beta.1_1712086120888_0.46341952156621846"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.2.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.2.0","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.4"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.2.0","gitHead":"42fe03fc26bc7ee845588a9606ae8502f85c0cdb","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.19.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-3rLZixwQgaZM+TP+LqT3LbockU76xcIv0yKZdQadq6OwiSktHBUENmuKOUmEK9nQP2QmTJ0XyqdvkxhpzxHLeg==","shasum":"683da4ca672cd91a89af1b4b22559357a373d83c","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.2.0.tgz","fileCount":41,"unpackedSize":545843,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxdgHdglxi5SFvYZvpidSbRhBVwwdCO05Q3OnWS5+dbAiEApxrPGJQo+jNUkldol18clG8m4taLC6yQXKKC8Q3EuYE="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.2.0_1712086980161_0.14447726042864817"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.2.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.2.1","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.5"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.2.1","gitHead":"bb081c1f06f9e7225e947ffa67da768fc833220a","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-PvVvk5w1WAq2u8PLZxHmjq5zD6i02LmgPlsNg7tN7Z0bNbvp6Hmu2ziGoQ1yCSGqlTOhcI7Ah4A4drP+iY834A==","shasum":"a3ca13917f8bad67c16964cd7b89f80fa5ea4480","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.2.1.tgz","fileCount":41,"unpackedSize":546864,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjMLfUYa+sgo267EwRcymkHIUcvTo7CIT4pq8cGU6adgIhAJ+Mn5D7bdLeOhnqm2Qpxu68ZBeIKWSBYt2yNu3qPaxH"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.2.1_1712523409956_0.00776319567652517"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.2.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.2.2","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.8"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.2.2","gitHead":"85a8434f12748c1883f2fa92e93dbdbd238575d1","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.0","_npmVersion":"10.4.0","dist":{"integrity":"sha512-XZ20CSvWZUpqOwtoCrpnaydo+mly/vNWaYsjQRLXVdVrq3BgCLIsFGeBKODy68GfYnWR3cy8R2zGstLXP1M9xQ==","shasum":"5d0454ccd421436940a07cdf4a074f135875ff8d","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.2.2.tgz","fileCount":41,"unpackedSize":548541,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbqeF9u9W9hTbuIUmQLXExcp6NZM2ctWL1yKVWJNXXiAiAE5RmPEJQDWkLv7bKfy+oK9V6RIXKEBZ0iuNi0LwPzcA=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.2.2_1712610371317_0.8682943511310912"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.2.3":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.2.3","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.8"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.2.3","gitHead":"c58e7ce524c0db6bf65983945724beadb141aff4","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.1","_npmVersion":"10.4.0","dist":{"integrity":"sha512-tMj2a0L39OPImSKNqvmDmGdmSQhZ0QjqAlGAKq3PFnRTY6qvpOfg/QbgOEWKoe1KWPJe24Rey4gR7SPFDdA4Sg==","shasum":"876b8e437da24145d1982d28887a9f46937aac52","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.2.3.tgz","fileCount":44,"unpackedSize":553507,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfo5o9Pfk3DY2fdBNzrL7651WiKecUL/yKIW5H67W83wIgAvtxcafrrgF+ppQRnBTzSU/SJ8fn59YruubVYuXNZB8="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.2.3_1712620013271_0.40022036459159716"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.0":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.0","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","xml-disassembler":"^1.2.8","xml2json-disassembler":"^1.0.2","xml2yaml-disassembler":"^1.0.0"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.0","gitHead":"64bf5a31ffc9337a1af548c01a5a058cf4009105","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-i4ALYuFVTJTpRQHy3ATRPDyUitu0xPFoloydFI57Td+Udsoj+XQ8VrV69R/kOPJ/Z4YaHH7dUJnA65iitHOjDg==","shasum":"d397b6b32eb4e0414e7c3236fbcd45e622f9e08e","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.0.tgz","fileCount":44,"unpackedSize":562033,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBx/ap/l0az+QFVV/T1aKquKke57LR3g2O2Wqk2dDi5dAiAS901x3qn/R0spyEInveGMQzrpEmNxllPIW9bivU5VTA=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.0_1713390205248_0.5864426913278018"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.1","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.8","xml2json-disassembler":"^1.0.2","xml2yaml-disassembler":"^1.0.0"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.1","gitHead":"fc2bfb4b27caaa68c415ee704ba63c13773dca87","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-56TWoCRdRQV+6tryd5fAckR64f7UJBi9SCOAh2Ar0NiWAJDdQ4Ad9k2fj/qIT79rxB0OPhngvD4bul1EaoSHgg==","shasum":"0dc20e1f020bf467122efcaafc03ee1290f9079b","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.1.tgz","fileCount":44,"unpackedSize":561204,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDbLW66kbSs0MiM69S3410h4nlsQVdNvzm/KxjJzcN9YAiEAz5/MtQ8m6QrrH2Doda4bd7adpFjcyWMecKRAl9GV0jE="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.1_1713894308897_0.5707852824868329"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.2","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.9","xml2json-disassembler":"^1.0.3","xml2yaml-disassembler":"^1.0.1"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.2","gitHead":"39e82af581547db49af2db32d8b1fafb22e872a7","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-LXQ3kBf1CCUOzbFManfat9SKEoMrsftPd1x8AdTFOQ2hqvTyL7AdAY6cXYM8VmjzbeL5b7vOKNaxc91Aym1zdw==","shasum":"ec1a36e950e16ea3233dceaf1ac6e542b145fb68","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.2.tgz","fileCount":44,"unpackedSize":560585,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9l7FmX/SttCcBZmNBmD10me9YPUfwIqmsPdmZLE0jKQIgDAW+8krDS3hVtS39dAOuHom4lhUYsMCHoKIqLi1+Wcw="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.2_1713920576999_0.1792038799529898"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.3":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.3","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.3","gitHead":"9b946038718948aeef7db6a4525274580d0b09e0","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-Nlz8R7v+rAuPKpVHXDMHfOm1VtdQNLW83WYnG4xiG6DUQve26GTXyhjxcgWXUQ+bfmaCzj7mRv6z9eYIIYmstw==","shasum":"cf9cf7b83a507cd4c985d59ddc20b4d6e9cf5315","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.3.tgz","fileCount":44,"unpackedSize":561525,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkBu52QmlmEQTsVwZSvZV1PJh1hr9uMB7QJSisRMcm6AiAjLFXxYc2XaHx2Hu17nz+fYmu5T3AtDcU5txRQa0UtDA=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.3_1713969797844_0.9121095640364412"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.4":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.4","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.4","gitHead":"f3b74d8d981036d5ead7bc8dbe4aea0ce5c0ac5e","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-CRgxuNLYcnqR0mJFWQf7L+PcsD9csG2tgw0izFDrMtiI4vijQa/mfN91pqA/87aYSlt5oKKdrvTr6Fjm0bSp5A==","shasum":"54b797eb0bd7d140080db6793e1c64f4a5b8130b","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.4.tgz","fileCount":44,"unpackedSize":561485,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBQlywaPfF7P5cpAuGTpp/zo1XlbEqbmdf/ROccnE1fRAiEAqUnsgfPdYaWvcc+0TCwiwi+hW7SFa8sEtOhsQlmVUgs="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.4_1713972667749_0.8841424098808828"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.5-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.5-beta.1","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.5-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a Salesforce plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recreate metadata files for deployments.\n\nThis plugin requires [git](https://git-scm.com/downloads) to be installed and that it can be called using the command `git`.\n\nThis will parse and retain the following in the original XMLs:\n\n- Character Data (CDATA)\n- Comments\n- Attributes\n\nThe decomposed file format can be XML, JSON, or YAML. Based on testing, XML and YAML handles CDATA formatting nicer than JSON.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\nBoth commands need to be ran somewhere inside your Salesforce DX git repository, whether in the root folder (recommended) or in a subfolder. This plugin will determine the root folder of this repository and read the `sfdx-project.json` file in the root folder. All package directories listed in the `sfdx-project.json` file will be processed when running this plugin.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--prepurge` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\nUsing the `--format` flag, you can set the desired file type for the decomposed files to XML (default), YAML, or JSON. **Note**: The `--format` flag for the recompose command must match what you selected for the decompose `--format`.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -f <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file type for the decomposed files.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller files in each package directory.\n\n  These smaller decomposed files can be XMLs, YAMLs, or JSONs.\n\n  You should run this after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\" -f \"xml\" --prepurge --postpurge --debug\n\n  Decompose all flows and custom labels:\n\n    $ sf decomposer decompose -m \"flow\" -m \"labels\" -f \"xml\" --prepurge --postpurge --debug\n\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and recreates metadata files suitable for deployments.\n\nEnsure the `--format` flag of the recompose command matches the file format selected for the `--format` flag in the decompose command. File formats for the decomposed files can be XML (default), YAML, or JSON.\n\nThis command will always create XMLs as its output format.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -f <value> [--postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file format for the decomposed files.\n  --postpurge  [default: false] If provided, purge the decomposed files after recomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and recreate deployment compatible metadata files in each package directory.\n\n  You should run this before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\" -f \"xml\" --postpurge --debug\n\n  Recompose all flows and custom labels:\n\n    $ sf decomposer recompose -m \"flow\" -m \"labels\" -f \"xml\" --postpurge --debug\n\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type`/`-m` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Warnings and Logging\n\nThe package used to decompose and recompose XMLs, `xml-disassembler`, will log errors, and optionally debugging statements, to a log file, `disassemble.log`. This log will be created in the working directory and will be created when runnign this plugin at all times. If there were no XML decomposing/recomposing errors, this log will simply be empty.\n\nBy default, this package will only log errors to the file. This plugin will print `xml-disassembler` errors as warnings in the command terminal to allow all other files to be processed.\n\nThese warnings when running `decompose` and `recompose` commands will look as such:\n\n```\nWarning: [2024-04-08T19:27:43.622] [ERROR] default - C:\\Users\\matth\\Documents\\sfdx-decomposer-plugin\\test\\baselines\\flows\\Get_Info\\actionCalls\\Get_Info.actionCalls-meta.xml was unabled to be parsed and will not be processed. Confirm formatting and try again.\n```\n\nTo add additional debugging statements to the log file, provide the `--debug` flag to either command to generate additional logging statements to `disassemble.log`.\n\nGeneral debugging statements in the log file will look like:\n\n```\n[2024-03-30T14:28:37.959] [DEBUG] default - Created disassembled file: mock\\no-nested-elements\\HR_Admin\\HR_Admin.permissionset-meta.xml\n```\n\nRecommend adding the `disassemble.log` to your `.gitignore` file.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package (see previous section).\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files. Update based on the decomposed file format you are using (`.xml`, `.json`, or `.yaml`).\n\n```\n# Ignore decomposed files\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n","readmeFilename":"README.md","gitHead":"4398ae3556198d2867642dc1246b6aa3a744c752","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-BUw68r6YPfMj9XHHgcWop0LQ2yZI6qRydDf4hKmXYnOTvKCqOEXcLDRgZxcrkx9TfHg1fT0n01YxOCSnDutw2Q==","shasum":"0b664f4a3b63891f10dfefbc3656d77d99daa49d","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.5-beta.1.tgz","fileCount":47,"unpackedSize":563992,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBFx5AzeGoutzOVVuwUpWLmydg2iA+y04BwcI5AsUrQwIhANu81IZScw0hY5zcU8VLRmB15HIdSaOCoRwmyqYgRZii"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.5-beta.1_1714400078378_0.2600369379923251"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.5-beta.2":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.5-beta.2","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.5-beta.2","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a Salesforce plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recreate metadata files for deployments.\n\nThis plugin requires [git](https://git-scm.com/downloads) to be installed and that it can be called using the command `git`.\n\nThis will parse and retain the following in the original XMLs:\n\n- Character Data (CDATA)\n- Comments\n- Attributes\n\nThe decomposed file format can be XML, JSON, or YAML. Based on testing, XML and YAML handles CDATA formatting nicer than JSON.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\nBoth commands need to be ran somewhere inside your Salesforce DX git repository, whether in the root folder (recommended) or in a subfolder. This plugin will determine the root folder of this repository and read the `sfdx-project.json` file in the root folder. All package directories listed in the `sfdx-project.json` file will be processed when running this plugin.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--prepurge` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\nUsing the `--format` flag, you can set the desired file type for the decomposed files to XML (default), YAML, or JSON. **Note**: The `--format` flag for the recompose command must match what you selected for the decompose `--format`.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -f <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file type for the decomposed files.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller files in each package directory.\n\n  These smaller decomposed files can be XMLs, YAMLs, or JSONs.\n\n  You should run this after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\" -f \"xml\" --prepurge --postpurge --debug\n\n  Decompose all flows and custom labels:\n\n    $ sf decomposer decompose -m \"flow\" -m \"labels\" -f \"xml\" --prepurge --postpurge --debug\n\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and recreates metadata files suitable for deployments.\n\nEnsure the `--format` flag of the recompose command matches the file format selected for the `--format` flag in the decompose command. File formats for the decomposed files can be XML (default), YAML, or JSON.\n\nThis command will always create XMLs as its output format.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -f <value> [--postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file format for the decomposed files.\n  --postpurge  [default: false] If provided, purge the decomposed files after recomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and recreate deployment compatible metadata files in each package directory.\n\n  You should run this before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\" -f \"xml\" --postpurge --debug\n\n  Recompose all flows and custom labels:\n\n    $ sf decomposer recompose -m \"flow\" -m \"labels\" -f \"xml\" --postpurge --debug\n\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type`/`-m` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Warnings and Logging\n\nThe package used to decompose and recompose XMLs, `xml-disassembler`, will log errors, and optionally debugging statements, to a log file, `disassemble.log`. This log will be created in the working directory and will be created when runnign this plugin at all times. If there were no XML decomposing/recomposing errors, this log will simply be empty.\n\nBy default, this package will only log errors to the file. This plugin will print `xml-disassembler` errors as warnings in the command terminal to allow all other files to be processed.\n\nThese warnings when running `decompose` and `recompose` commands will look as such:\n\n```\nWarning: [2024-04-08T19:27:43.622] [ERROR] default - C:\\Users\\matth\\Documents\\sfdx-decomposer-plugin\\test\\baselines\\flows\\Get_Info\\actionCalls\\Get_Info.actionCalls-meta.xml was unabled to be parsed and will not be processed. Confirm formatting and try again.\n```\n\nTo add additional debugging statements to the log file, provide the `--debug` flag to either command to generate additional logging statements to `disassemble.log`.\n\nGeneral debugging statements in the log file will look like:\n\n```\n[2024-03-30T14:28:37.959] [DEBUG] default - Created disassembled file: mock\\no-nested-elements\\HR_Admin\\HR_Admin.permissionset-meta.xml\n```\n\nRecommend adding the `disassemble.log` to your `.gitignore` file.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package (see previous section).\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files. Update based on the decomposed file format you are using (`.xml`, `.json`, or `.yaml`).\n\n```\n# Ignore decomposed files\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n","readmeFilename":"README.md","gitHead":"e47573948f835f8901dc6cb8acf49ee2df92c444","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-DfAv2J6iHefjll3CuDJ9WOJptPFUNsF7S5WGX8yGTGW7HUQCxD0JgGjC1vbJ8DDLWYFDUhxqB/+7e2uXJpwWEA==","shasum":"e36d6ef22f55779a05d7e440002da3ef14455720","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.5-beta.2.tgz","fileCount":47,"unpackedSize":564196,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDeu69d1qJM0901KXBxT7aIMCT6lQfoNBYtLDYV+kXtMAiEAwKg5/24g1zRRHjuAxcrxpD7RUd3iRsMfX0X1cpgwITs="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.5-beta.2_1714401327536_0.9517543531530113"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.5-beta.3":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.5-beta.3","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.5-beta.3","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a Salesforce plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recreate metadata files for deployments.\n\nThis plugin requires [git](https://git-scm.com/downloads) to be installed and that it can be called using the command `git`.\n\nThis will parse and retain the following in the original XMLs:\n\n- Character Data (CDATA)\n- Comments\n- Attributes\n\nThe decomposed file format can be XML, JSON, or YAML. Based on testing, XML and YAML handles CDATA formatting nicer than JSON.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\nBoth commands need to be ran somewhere inside your Salesforce DX git repository, whether in the root folder (recommended) or in a subfolder. This plugin will determine the root folder of this repository and read the `sfdx-project.json` file in the root folder. All package directories listed in the `sfdx-project.json` file will be processed when running this plugin.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--prepurge` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\nUsing the `--format` flag, you can set the desired file type for the decomposed files to XML (default), YAML, or JSON. **Note**: The `--format` flag for the recompose command must match what you selected for the decompose `--format`.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -f <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file type for the decomposed files.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller files in each package directory.\n\n  These smaller decomposed files can be XMLs, YAMLs, or JSONs.\n\n  You should run this after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\" -f \"xml\" --prepurge --postpurge --debug\n\n  Decompose all flows and custom labels:\n\n    $ sf decomposer decompose -m \"flow\" -m \"labels\" -f \"xml\" --prepurge --postpurge --debug\n\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and recreates metadata files suitable for deployments.\n\nEnsure the `--format` flag of the recompose command matches the file format selected for the `--format` flag in the decompose command. File formats for the decomposed files can be XML (default), YAML, or JSON.\n\nThis command will always create XMLs as its output format.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -f <value> [--postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file format for the decomposed files.\n  --postpurge  [default: false] If provided, purge the decomposed files after recomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and recreate deployment compatible metadata files in each package directory.\n\n  You should run this before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\" -f \"xml\" --postpurge --debug\n\n  Recompose all flows and custom labels:\n\n    $ sf decomposer recompose -m \"flow\" -m \"labels\" -f \"xml\" --postpurge --debug\n\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type`/`-m` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Warnings and Logging\n\nThe package used to decompose and recompose XMLs, `xml-disassembler`, will log errors, and optionally debugging statements, to a log file, `disassemble.log`. This log will be created in the working directory and will be created when runnign this plugin at all times. If there were no XML decomposing/recomposing errors, this log will simply be empty.\n\nBy default, this package will only log errors to the file. This plugin will print `xml-disassembler` errors as warnings in the command terminal to allow all other files to be processed.\n\nThese warnings when running `decompose` and `recompose` commands will look as such:\n\n```\nWarning: [2024-04-08T19:27:43.622] [ERROR] default - C:\\Users\\matth\\Documents\\sfdx-decomposer-plugin\\test\\baselines\\flows\\Get_Info\\actionCalls\\Get_Info.actionCalls-meta.xml was unabled to be parsed and will not be processed. Confirm formatting and try again.\n```\n\nTo add additional debugging statements to the log file, provide the `--debug` flag to either command to generate additional logging statements to `disassemble.log`.\n\nGeneral debugging statements in the log file will look like:\n\n```\n[2024-03-30T14:28:37.959] [DEBUG] default - Created disassembled file: mock\\no-nested-elements\\HR_Admin\\HR_Admin.permissionset-meta.xml\n```\n\nRecommend adding the `disassemble.log` to your `.gitignore` file.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package (see previous section).\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files. Update based on the decomposed file format you are using (`.xml`, `.json`, or `.yaml`).\n\n```\n# Ignore decomposed files\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n","readmeFilename":"README.md","gitHead":"ec3cec472b0a5db8d45065324c1329d140a927be","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-/a/EZQ2chtJUKRYRi/uiMUuC5J4KSSsrsJZch9n2JdCOXlgS73QYQ6LEX8DlNTH6Cwy1oAmDc0eAC/JpgXr9qg==","shasum":"9b9fdbf2a255f32c5a1019ea7fb1979e29dc1983","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.5-beta.3.tgz","fileCount":47,"unpackedSize":564290,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEGkTEVk/+U3GX9/bqWniVxtg6NFiSrdmsXz8YkejXkGAiBmR6cw0Vyd0aZZQ4F7ApQwRgJARbQiTM/dtGVkc6Mz1w=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.5-beta.3_1714403153023_0.7863554128455317"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.5":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.5","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.5","gitHead":"3f11f28d46e5db0a34b6754d7b0c5d562fc80c10","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-JkB3g4tCCfHUTgyAFhn88ONnh7p0dY/+tjRxtNLUGjWDnMA01G6pR7GnK93IcYZQROwiCOJtiumEBmjkXThlig==","shasum":"7ead4a59ec67643d53a5e4b8b594c620a0b33d36","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.5.tgz","fileCount":47,"unpackedSize":565476,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAqPAv0T8zg93/GghH6hwcdDxr4A577gzrw86Gi3lXR3AiEAmWUYXfTTA+9id1w/WFF/C+dFO7CegdtHTAElMpJFry0="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.5_1714405006147_0.541988224956873"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.6":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.6","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.6","gitHead":"e736da3da10a5877f937b5e1f824b31ea6a6ebcc","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-waWq+PtX1+BmS74iY2xuWf8pP3GfSN0GZCEQTx9etkfmF9SUFooLmMhGHb8vDsfwTBNH25GIXT9vdViBAEIGeg==","shasum":"dc299a44ee552984458e047ec179619c07fbe103","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.6.tgz","fileCount":47,"unpackedSize":565477,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYSKVtIIdWtmqCtRREOVHxnC7+v/++b7l5I47WKDwi6gIgL26b39z3p+efVahPqu9pASS9M2CSlkQXog9d7c7hefc="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.6_1714406236374_0.257440869200783"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.7":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.7","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.7","gitHead":"45cb3773b936cb755222c00f64f6e46e537af382","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-qcL5c7rpN6mb+f3uY4JdSiUIiiO4GdvlnKLVMNsbwkpO1rcsDDb7032vTz7H7D3pL4IDZyVirVbbmPneE2Wfog==","shasum":"c415a051ab6038867b029ec733f0c35ce25a44ed","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.7.tgz","fileCount":47,"unpackedSize":566158,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDMbQesSWIZfv5IVYU+7L6UZR762nUflsZBEkrUux5CXAiBoMX9hP+wPE+J8e6AiHvsx+rivQa5ogc3JmZObxVcnpw=="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.7_1714417487812_0.5880044430258571"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.8-beta.1":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.8-beta.1","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve","scopedPreDeploy":"./lib/hooks/scopedPreDeploy"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.8-beta.1","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\nThe `sfdx-decomposer` is a Salesforce plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recreate metadata files for deployments.\n\nThis plugin requires [git](https://git-scm.com/downloads) to be installed and that it can be called using the command `git`.\n\nThis will parse and retain the following in the original XMLs:\n\n- Character Data (CDATA)\n- Comments\n- Attributes\n\nThe decomposed file format can be XML, JSON, or YAML. Based on testing, XML and YAML handles CDATA formatting nicer than JSON.\n\n**DISCLAIMERS:**\n\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\nBoth commands need to be ran somewhere inside your Salesforce DX git repository, whether in the root folder (recommended) or in a subfolder. This plugin will determine the root folder of this repository and read the `sfdx-project.json` file in the root folder. All package directories listed in the `sfdx-project.json` file will be processed when running this plugin.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--prepurge` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\nUsing the `--format` flag, you can set the desired file type for the decomposed files to XML (default), YAML, or JSON. **Note**: The `--format` flag for the recompose command must match what you selected for the decompose `--format`.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -f <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file type for the decomposed files.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller files in each package directory.\n\n  These smaller decomposed files can be XMLs, YAMLs, or JSONs.\n\n  You should run this after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\" -f \"xml\" --prepurge --postpurge --debug\n\n  Decompose all flows and custom labels:\n\n    $ sf decomposer decompose -m \"flow\" -m \"labels\" -f \"xml\" --prepurge --postpurge --debug\n\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and recreates metadata files suitable for deployments.\n\nEnsure the `--format` flag of the recompose command matches the file format selected for the `--format` flag in the decompose command. File formats for the decomposed files can be XML (default), YAML, or JSON.\n\nThis command will always create XMLs as its output format.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -f <value> [--postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file format for the decomposed files.\n  --postpurge  [default: false] If provided, purge the decomposed files after recomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and recreate deployment compatible metadata files in each package directory.\n\n  You should run this before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\" -f \"xml\" --postpurge --debug\n\n  Recompose all flows and custom labels:\n\n    $ sf decomposer recompose -m \"flow\" -m \"labels\" -f \"xml\" --postpurge --debug\n\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type`/`-m` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Warnings and Logging\n\nThe package used to decompose and recompose XMLs, `xml-disassembler`, will log errors, and optionally debugging statements, to a log file, `disassemble.log`. This log will be created in the working directory and will be created when runnign this plugin at all times. If there were no XML decomposing/recomposing errors, this log will simply be empty.\n\nBy default, this package will only log errors to the file. This plugin will print `xml-disassembler` errors as warnings in the command terminal to allow all other files to be processed.\n\nThese warnings when running `decompose` and `recompose` commands will look as such:\n\n```\nWarning: [2024-04-08T19:27:43.622] [ERROR] default - C:\\Users\\matth\\Documents\\sfdx-decomposer-plugin\\test\\baselines\\flows\\Get_Info\\actionCalls\\Get_Info.actionCalls-meta.xml was unabled to be parsed and will not be processed. Confirm formatting and try again.\n```\n\nTo add additional debugging statements to the log file, provide the `--debug` flag to either command to generate additional logging statements to `disassemble.log`.\n\nGeneral debugging statements in the log file will look like:\n\n```\n[2024-03-30T14:28:37.959] [DEBUG] default - Created disassembled file: mock\\no-nested-elements\\HR_Admin\\HR_Admin.permissionset-meta.xml\n```\n\nRecommend adding the `disassemble.log` to your `.gitignore` file.\n\n## Hook\n\nA post-retrieve hook has been configured if you elect to use it. The post-retrieve hook will automatically decompose the desired metadata types after every Salesforce CLI retrieval if you set this environment variable: `SFDX_DECOMPOSER_METADATA_TYPES`\n\nThe value for the `SFDX_DECOMPOSER_METADATA_TYPES` variable should look like:\n\n```\n# To decompose 1 type of metadata, just provide the metadata's suffix\nSFDX_DECOMPOSER_METADATA_TYPES=labels\n\n# To decompose multiple metadata types, provide a comma-separated list of metadata suffixes\nSFDX_DECOMPOSER_METADATA_TYPES=labels,workflow,profile\n```\n\nIf you do not want to use the hook, do not set the `SFDX_DECOMPOSER_METADATA_TYPES` variable. The hook will be skipped if this variable isn't found.\n\nAnother environment variable that you can set is `SFDX_DECOMPOSER_METADATA_FORMAT`. This should be a string and it should be either `xml`, `yaml`, or `json` depending on which file format you would like the decomposed files to be created as. If you do not provide this environment variable, the decomposed file format will be `xml` by default.\n\n```\nSFDX_DECOMPOSER_METADATA_FORMAT=json\n```\n\nOptionally, you can set these boolean environment variables for the `--prepurge` and `--postpurge` flags. If these variables aren't set, the decompose command will not prepurge or postpurge files.\n\n```\nSFDX_DECOMPOSER_PREPURGE=true\nSFDX_DECOMPOSER_POSTPURGE=true\n```\n\n**NOTE:** In order to avoid errors during the retrieval, you must configure your `.forceignore` file to have the Salesforce CLI ignore the decomposed files. See section below.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package (see previous section).\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files. Update based on the decomposed file format you are using (`.xml`, `.json`, or `.yaml`).\n\n```\n# Ignore decomposed files\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n","readmeFilename":"README.md","gitHead":"88aa0dec45a541132abc0d4e5bb8c9f47ee8ee3f","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-TlN71gJQi3XxeufjkvNh3em3sT3jBtGvZnpmOapESnqIpZ6wkDEqVtM4F+WqIwlJPs1Ixcxo0gDVGp5mgPb0Yg==","shasum":"3d5d10670bb54680f130feb76a36327d867ee6ec","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.8-beta.1.tgz","fileCount":50,"unpackedSize":568584,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5Pk2pjqdXij2DzII+ObR7kRDxjtiD0P6wsfkTMy+SkgIhAMXP/1f6bwwgQ1Oqwym6yjXJN7mcCGbZqlNqAlCVJk73"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.8-beta.1_1714421917192_0.4623324995247948"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.8":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.8","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.8","gitHead":"345d3c8d825c9d65befac0f0e26b708af540e229","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-5HotXeqIXJVeZnaM/btyhWN5Zp+srmBFNugGgZBsHmrPWPc+4JCi0ioedsa+9lKwdJCmWlLHGLluBnhV/41UcQ==","shasum":"9c86b6fa2df2101ac3dabf16d0f1d66a656957c7","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.8.tgz","fileCount":47,"unpackedSize":567242,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnSeSM1xltnmR24UHkVBjnqO85apuGQp23X/+vBVj9FAIhAM+Zk9xFhEwH7072kKbFJLUSL727D+8DHgcN0hIjVi7d"}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.8_1714426044742_0.8808624519416801"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.9":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.9","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.9","gitHead":"d4295209d279eb9d0eec6b005463261eaf4e8743","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-X2xUoE2AXivzuL/1SLKtgtgONhxa2bTcxPnuqPxt4N8vw9OsfZW0pL10+Q+WTXTibndI39FfPeiVOHkAgK5r2Q==","shasum":"d76cc2eb894b5427af68f6a23bb093dac83d4b32","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.9.tgz","fileCount":47,"unpackedSize":567262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMQ6C8THBweKa49H6XZF7pH0to8VVJ/FkJkY6LJ2fyMgIgPmdZm0CETRJ/5sVFRU+tepHzux5gq1EN2ytFmXJt694="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.9_1714426787808_0.663190704299538"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.10":{"name":"sfdx-decomposer","description":"Decomposes Salesforce metadata into more manageable files.","version":"3.3.10","dependencies":{"@oclif/core":"^3.26.0","@salesforce/core":"^6.5.3","@salesforce/sf-plugins-core":"^7.1.9","@salesforce/source-deploy-retrieve":"^10.7.1","fs-extra":"^11.2.0","simple-git":"^3.24.0","xml-disassembler":"^1.2.10","xml2json-disassembler":"^1.0.4","xml2yaml-disassembler":"^1.0.2"},"devDependencies":{"@commitlint/cli":"^18.6.1","@commitlint/config-conventional":"^18.6.3","@oclif/plugin-command-snapshot":"^5.0.8","@salesforce/cli-plugins-testkit":"^5.1.13","@salesforce/dev-scripts":"^8.3.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^11.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^11.0.2","@semantic-release/release-notes-generator":"^12.1.0","@types/fs-extra":"^11.0.4","eslint-plugin-sf-plugin":"^1.17.5","husky":"^9.0.11","oclif":"^4.4.10","semantic-release":"^17.4.7","shx":"0.3.4","ts-node":"^10.9.2","typescript":"^5.4.2"},"engines":{"node":">=18.0.0"},"keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"license":"MIT","oclif":{"commands":"./lib/commands","bin":"sf","topicSeparator":" ","devPlugins":["@oclif/plugin-help"],"hooks":{"scopedPostRetrieve":"./lib/hooks/scopedPostRetrieve"},"flexibleTaxonomy":true},"scripts":{"command-docs":"oclif readme","build":"tsc -b","clean":"sf-clean","clean-all":"sf-clean all","clean:lib":"shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock","compile":"sf-compile","docs":"sf-docs","format":"sf-format","lint":"wireit","postpack":"shx rm -f oclif.manifest.json oclif.lock","prepack":"sf-prepack","prepare":"husky install","test":"wireit","test:nuts":"nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel","test:only":"wireit","version":"oclif readme"},"publishConfig":{"access":"public"},"wireit":{"build":{"dependencies":["compile","lint"]},"compile":{"command":"tsc -p . --pretty --incremental","files":["src/**/*.ts","**/tsconfig.json","messages/**"],"output":["lib/**","*.tsbuildinfo"],"clean":"if-file-deleted"},"format":{"command":"prettier --write \"+(src|test|schemas)/**/*.+(ts|js|json)|command-snapshot.json\"","files":["src/**/*.ts","test/**/*.ts","schemas/**/*.json","command-snapshot.json",".prettier*"],"output":[]},"lint":{"command":"eslint src test --color --cache --cache-location .eslintcache","files":["src/**/*.ts","test/**/*.ts","messages/**","**/.eslint*","**/tsconfig.json"],"output":[]},"test:compile":{"command":"tsc -p \"./test\" --pretty","files":["test/**/*.ts","**/tsconfig.json"],"output":[]},"test":{"dependencies":["test:compile","test:only","lint"]},"test:only":{"command":"nyc mocha \"test/**/*.test.ts\"","env":{"FORCE_COLOR":"2"},"files":["test/**/*.ts","src/**/*.ts","**/tsconfig.json",".mocha*","!*.nut.ts",".nycrc"],"output":[]},"test:command-reference":{"command":"\"./bin/dev\" commandreference:generate --erroronwarnings","files":["src/**/*.ts","messages/**","package.json"],"output":["tmp/root"]},"test:deprecation-policy":{"command":"\"./bin/dev\" snapshot:compare","files":["src/**/*.ts"],"output":[],"dependencies":["compile"]},"test:json-schema":{"command":"\"./bin/dev\" schema:compare","files":["src/**/*.ts","schemas"],"output":[]}},"exports":"./lib/index.js","type":"module","author":{"name":"Matt Carvin"},"repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"},"_id":"sfdx-decomposer@3.3.10","gitHead":"959908d11a51182d0037a6e465532eae704c4942","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","_nodeVersion":"18.20.2","_npmVersion":"10.4.0","dist":{"integrity":"sha512-KSYIek/Kj9uxT6paqNx0nl3nBEobod2uZhn7defCrJqhQZDN373P/XmQQTUSVDMJ8wZvFnEG3yh/OkpEFZgyCQ==","shasum":"ff64b523416645112630295dc275112e86fb1111","tarball":"https://registry.npmjs.org/sfdx-decomposer/-/sfdx-decomposer-3.3.10.tgz","fileCount":47,"unpackedSize":567479,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6U6x3XqX8xSIs9PXC2hVEIHWgmvosooZif30B+Qh/DAiEAk2FRGY93HAs9rQB6Yq/sDXpvtO1VlBCq7Dfj30FYTv0="}]},"_npmUser":{"name":"mcarvin","email":"matthewjcarvin@gmail.com"},"directories":{},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sfdx-decomposer_3.3.10_1714427968951_0.5087425599134487"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2024-01-28T17:57:06.301Z","0.1.0":"2024-01-28T17:57:06.690Z","modified":"2024-04-29T22:12:09.292Z","0.1.1":"2024-01-28T21:40:03.572Z","1.0.0-beta.1":"2024-01-30T23:47:27.709Z","1.0.0-beta.2":"2024-01-31T18:27:22.076Z","1.0.0":"2024-01-31T20:07:07.278Z","1.1.0":"2024-02-02T03:14:24.785Z","1.1.1-beta.1":"2024-02-06T20:58:40.695Z","1.1.1":"2024-02-06T21:09:54.550Z","1.1.2-beta.1":"2024-02-11T21:07:34.559Z","1.1.2-beta.2":"2024-02-11T21:21:16.344Z","2.0.0-beta.1":"2024-02-11T23:18:11.357Z","2.0.0":"2024-02-11T23:44:27.599Z","2.0.1":"2024-02-14T20:05:31.081Z","2.0.2":"2024-02-14T20:17:47.162Z","2.1.0":"2024-02-14T21:10:50.840Z","2.1.1":"2024-02-14T21:26:28.843Z","2.1.2":"2024-02-14T21:49:04.872Z","2.1.3":"2024-02-15T15:31:22.086Z","2.1.4":"2024-02-16T20:56:45.621Z","2.1.5":"2024-02-17T19:02:55.376Z","2.2.0":"2024-02-18T20:43:08.805Z","3.0.0":"2024-02-24T01:54:55.544Z","3.0.1":"2024-02-24T23:52:08.493Z","3.0.2-beta.1":"2024-03-07T20:11:52.088Z","3.0.2":"2024-03-07T20:19:38.871Z","3.1.0-beta.1":"2024-03-12T16:12:11.579Z","3.1.0":"2024-03-12T16:47:30.464Z","3.1.1-beta.1":"2024-03-14T20:56:07.236Z","3.1.1-beta.2":"2024-03-15T01:25:33.594Z","3.1.1-beta.3":"2024-03-15T01:33:32.636Z","3.1.1":"2024-03-15T02:06:30.514Z","3.1.2-beta.1":"2024-04-01T22:09:11.910Z","3.1.2-beta.2":"2024-04-02T14:42:39.792Z","3.2.0-beta.1":"2024-04-02T19:28:41.163Z","3.2.0":"2024-04-02T19:43:00.450Z","3.2.1":"2024-04-07T20:56:50.295Z","3.2.2":"2024-04-08T21:06:11.597Z","3.2.3":"2024-04-08T23:46:53.587Z","3.3.0":"2024-04-17T21:43:25.452Z","3.3.1":"2024-04-23T17:45:09.125Z","3.3.2":"2024-04-24T01:02:57.207Z","3.3.3":"2024-04-24T14:43:18.213Z","3.3.4":"2024-04-24T15:31:07.956Z","3.3.5-beta.1":"2024-04-29T14:14:38.619Z","3.3.5-beta.2":"2024-04-29T14:35:27.691Z","3.3.5-beta.3":"2024-04-29T15:05:53.314Z","3.3.5":"2024-04-29T15:36:46.357Z","3.3.6":"2024-04-29T15:57:16.617Z","3.3.7":"2024-04-29T19:04:48.101Z","3.3.8-beta.1":"2024-04-29T20:18:37.409Z","3.3.8":"2024-04-29T21:27:25.125Z","3.3.9":"2024-04-29T21:39:48.042Z","3.3.10":"2024-04-29T21:59:29.276Z"},"maintainers":[{"name":"mcarvin","email":"matthewjcarvin@gmail.com"}],"description":"Decomposes Salesforce metadata into more manageable files.","keywords":["force","salesforce","salesforcedx","sf","sf-plugin","sfdx","sfdx-plugin"],"author":{"name":"Matt Carvin"},"license":"MIT","readme":"# sfdx-decomposer\n\n[![NPM](https://img.shields.io/npm/v/sfdx-decomposer.svg?label=sfdx-decomposer)](https://www.npmjs.com/package/sfdx-decomposer) [![Downloads/week](https://img.shields.io/npm/dw/sfdx-decomposer.svg)](https://npmjs.org/package/sfdx-decomposer) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/LICENSE.md)\n\n**DEPRECATION**: The current version of this plugin, `sfdx-decomposer`, will be deprecated and renamed to `sf-decomposer`. Please download the plugin under [sf-decomposer](https://npmjs.org/package/sf-decomposer).\n\nThe `sfdx-decomposer` is a Salesforce plugin to read the original metadata files (XML) and create smaller, more manageable files for version control. The inverse function (`recompose`) will recreate metadata files for deployments.\n\nThis plugin requires [git](https://git-scm.com/downloads) to be installed and that it can be called using the command `git`.\n\nThis will parse and retain the following in the original XMLs:\n\n- Character Data (CDATA)\n- Comments\n- Attributes\n\nThe decomposed file format can be XML, JSON, or YAML. Based on testing, XML and YAML handles CDATA formatting nicer than JSON.\n\n**DISCLAIMERS:**\n\n- You must update the `.forceignore` to have the Salesforce CLI ignore the decomposed files created by this plugin. See section `Ignore Files`. Updates to the `.gitignore` are optional and can be updated based on what you want staged in your repo.\n- It is highly recommended that you extensively test this plugin in a sandbox environment on the metadata types you wish to use this tool for.\n- Do not change your production/QA pipelines until you have tested this and are happy with the results.\n- Confirm your deployment pipelines are stable prior to implementing this plugin.\n\n## Install\n\n```bash\nsf plugins install sfdx-decomposer@x.y.z\n```\n\n## Commands\n\nThe `sfdx-decomposer` supports 2 commands:\n\n- `sf decomposer decompose`\n- `sf decomposer recompose`\n\nBoth commands need to be ran somewhere inside your Salesforce DX git repository, whether in the root folder (recommended) or in a subfolder. This plugin will determine the root folder of this repository and read the `sfdx-project.json` file in the root folder. All package directories listed in the `sfdx-project.json` file will be processed when running this plugin.\n\n## `sf decomposer decompose`\n\nDecomposes the original metadata files into smaller files for version control. Excluding custom labels, the smaller files will be placed into new sub-directories:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-perm-set.png\">\n\n<br>\n\nCustom Labels will be decomposed directly in the root labels folder:\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-labels.png\">\n\n<br>\n\nUnique ID elements are used to name decomposed files for nested elements. The default unique ID elements for all metadata types are `<fullName>` and `<name>`. In this example XML below, the `<fullName>` tag is included in the nested element and its contents (`quoteAuto`) will be used to name the decomposed file.\n\n```xml\n    <labels>\n        <fullName>quoteAuto</fullName>\n        <value>This is an automatically generated quote.</value>\n        <language>en_US</language>\n        <protected>false</protected>\n        <shortDescription>Automatic Quote</shortDescription>\n    </labels>\n```\n\nIf the default unique ID elements are not found in the nested element, the plugin will look for any other metadata specific unique ID elements (see `CONTRIBUTING` section for more information).\n\nIf a unique ID element is not found in the nested element, the short SHA-256 hash of the element contents will be used to name the decomposed file, as shown below.\n\nIt's recommended to add the `--prepurge` flag to the `decompose` command to remove pre-existing decomposed files that may conflict with newer decomposed files due to different SHA hashes.\n\nUsing the `--format` flag, you can set the desired file type for the decomposed files to XML (default), YAML, or JSON. **Note**: The `--format` flag for the recompose command must match what you selected for the decompose `--format`.\n\n<img src=\"https://raw.githubusercontent.com/mcarvin8/sfdx-decomposer-plugin/main/.github/images/decomposed-apps-hashes.png\">\n\n<br>\n\n```\nUSAGE\n  $ sf decomposer decompose -m <value> -f <value> [--prepurge --postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file type for the decomposed files.\n  --prepurge  [default: false] If provided, purge directories of pre-existing decomposed files.\n  --postpurge  [default: false] If provided, purge the original files after decomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the original metadata files and separate them into smaller files in each package directory.\n\n  These smaller decomposed files can be XMLs, YAMLs, or JSONs.\n\n  You should run this after retrieving metadata from an org.\n\nEXAMPLES\n  Decompose all flows:\n\n    $ sf decomposer decompose -m \"flow\" -f \"xml\" --prepurge --postpurge --debug\n\n  Decompose all flows and custom labels:\n\n    $ sf decomposer decompose -m \"flow\" -m \"labels\" -f \"xml\" --prepurge --postpurge --debug\n\n```\n\n## `sf decomposer recompose`\n\nReads all of the files created by the decompose command and recreates metadata files suitable for deployments.\n\nEnsure the `--format` flag of the recompose command matches the file format selected for the `--format` flag in the decompose command. File formats for the decomposed files can be XML (default), YAML, or JSON.\n\nThis command will always create XMLs as its output format.\n\n```\nUSAGE\n  $ sf decomposer recompose -m <value> -f <value> [--postpurge --debug --json]\n\nFLAGS\n  -m, --metadata-type=<value> The metadata suffix to process, such as 'flow', 'labels', etc. You can provide this flag multiple times to process multiple metadata types at once.\n  -f, --format=<value> [default: 'xml'] The file format for the decomposed files.\n  --postpurge  [default: false] If provided, purge the decomposed files after recomposing them.\n  --debug [default: false] If provided, log debugging results to a text file (disassemble.log).\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  This command will read all of the decomposed files and recreate deployment compatible metadata files in each package directory.\n\n  You should run this before you deploy the metadata to an org.\n\nEXAMPLES\n  Recompose all flows:\n\n    $ sf decomposer recompose -m \"flow\" -f \"xml\" --postpurge --debug\n\n  Recompose all flows and custom labels:\n\n    $ sf decomposer recompose -m \"flow\" -m \"labels\" -f \"xml\" --postpurge --debug\n\n```\n\n## Supported Metadata\n\nAll parent metadata types imported from this plugin's version of @salesforce/source-deploy-retrieve (SDR) toolkit are supported except for certain types.\n\nThe `--metadata-type`/`-m` flag should be the metadata's `\"suffix\"` value as listed in the [metadataRegistry.json](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/src/registry/metadataRegistry.json).\n\nThe suffix is this part of the original meta file name - `labels` is the suffix in `*.labels-meta.xml`.\n\nHere are some examples:\n\n- Custom Labels (`--metadata-type \"labels\"`)\n- Workflows (`--metadata-type \"workflow\"`)\n- Profiles (`--metadata-type \"profile\"`)\n- Permission Sets (`--metadata-type \"permissionset\"`)\n- Flows (`--metadata-type \"flow\"`)\n- Matching Rules (`--metadata-type \"matchingRule\"`)\n- Assignment Rules (`--metadata-type \"assignmentRules\"`)\n- Escalation Rules (`--metadata-type \"escalationRules\"`)\n- Sharing Rules (`--metadata-type \"sharingRules\"`)\n- Auto Response Rules (`--metadata-type \"autoResponseRules\"`)\n- Global Value Set Translation (`--metadata-type \"globalValueSetTranslation\"`)\n- Standard Value Set Translation (`--metadata-type \"standardValueSetTranslation\"`)\n- Translations (`--metadata-type \"translation\"`)\n- Standard Value Sets (`--metadata-type \"standardValueSet\"`)\n- Global Value Sets (`--metadata-type \"globalValueSet\"`)\n- AI Scoring Model Definition (`--metadata-type \"aiScoringModelDefinition\"`)\n- Decision Matrix Definition (`--metadata-type \"decisionMatrixDefinition\"`)\n- Bot (`--metadata-type \"bot\"`)\n  - **NOTE**: Running \"bot\" will also decompose and recompose Bot Version meta files\n  - The `botVersion` meta suffix will be blocked from running directly\n- Marketing App Extension (`--metadata-type \"marketingappextension\"`)\n\n### Exceptions\n\n`botVersion` is blocked from being ran directly. Please use the `bot` meta suffix to decompose and recompose bots and bot versions.\n\n```\nError (1): `botVersion` suffix should not be used. Please use `bot` to decompose/recompose bot and bot version files.\n```\n\nCustom Objects are not supported by this plugin.\n\n```\nError (1): Custom Objects are not supported by this plugin.\n```\n\nMetadata types such as Apex Classes, Apex Components, Triggers, etc. with certain SDR adapter strategies (`matchingContentFile`, `digitalExperience`, `mixedContent`, `bundle`) are not supported by this plugin.\n\n```\nError (1): Metadata types with [matchingContentFile, digitalExperience, mixedContent, bundle] strategies are not supported by this plugin.\n```\n\nChildren metadata types (ex: custom fields) are not supported and will result in this general error:\n\n```\nError (1): Metadata type not found for the given suffix: field.\n```\n\n### Issues\n\nPlease create \"Issues\" in this repository if you experience problems decomposing and recomposing specific metadata types or if this plugin's version of SDR needs to be updated to account for new metadata types.\n\n## Warnings and Logging\n\nThe package used to decompose and recompose XMLs, `xml-disassembler`, will log errors, and optionally debugging statements, to a log file, `disassemble.log`. This log will be created in the working directory and will be created when runnign this plugin at all times. If there were no XML decomposing/recomposing errors, this log will simply be empty.\n\nBy default, this package will only log errors to the file. This plugin will print `xml-disassembler` errors as warnings in the command terminal to allow all other files to be processed.\n\nThese warnings when running `decompose` and `recompose` commands will look as such:\n\n```\nWarning: [2024-04-08T19:27:43.622] [ERROR] default - C:\\Users\\matth\\Documents\\sfdx-decomposer-plugin\\test\\baselines\\flows\\Get_Info\\actionCalls\\Get_Info.actionCalls-meta.xml was unabled to be parsed and will not be processed. Confirm formatting and try again.\n```\n\nTo add additional debugging statements to the log file, provide the `--debug` flag to either command to generate additional logging statements to `disassemble.log`.\n\nGeneral debugging statements in the log file will look like:\n\n```\n[2024-03-30T14:28:37.959] [DEBUG] default - Created disassembled file: mock\\no-nested-elements\\HR_Admin\\HR_Admin.permissionset-meta.xml\n```\n\nRecommend adding the `disassemble.log` to your `.gitignore` file.\n\n## Hook\n\nA post-retrieve hook has been configured if you elect to use it. The post-retrieve hook will automatically decompose the desired metadata types after every Salesforce CLI retrieval if you create this file in the root of your repo: `.sfdecomposer.config.json`\n\nThe `.sfdecomposer.config.json` should look like this:\n\n```json\n{\n  \"metadataSuffixes\": \"labels,workflow,profile\",\n  \"prePurge\": true,\n  \"postPurge\": true,\n  \"decomposedFormat\": \"xml\"\n}\n```\n\n- `metadataSuffixes` is required and should be a comma-separated string of metadata suffixes to decompose automatically after retrievals.\n- `prePurge` is optional and should be a boolean. If true, this will delete any existing decomposed files before decomposing the files. If you do not provide this, the default will be `false`.\n- `postPurge` is optional and should be a boolean. If true, this will delete the retrieval file after decomposing it. If you do not provide this, the default will be `false`.\n- `decomposedFormat` is optional and should be either `xml`, `json`, or `yaml`, depending on what file format you want the decomposed files created as. If you do not provide this, the default will be `xml`.\n\nIf the `.sfdecomposer.config.json` file isn't found, the hook will be skipped.\n\n**NOTE:** In order to avoid errors during the retrieval, you must configure your `.forceignore` file to have the Salesforce CLI ignore the decomposed files. See section below.\n\n## Ignore Files\n\nThe `.gitignore` and `.forceignore` files in your repository should be updated based on the metadata types you wish to decompose.\n\nReference the below examples:\n\n### `.gitignore` updates\n\nGit should ignore the recomposed files.\n\n```\n# Ignore recomposed files\n**/permissionsets/*.permissionset-meta.xml\n**/profiles/*.profile-meta.xml\n**/labels/CustomLabels.labels-meta.xml\n**/workflows/*.workflow-meta.xml\n**/flows/*.flow-meta.xml\n**/matchingRules/*.matchingRule-meta.xml\n**/assignmentRules/*.assignmentRules-meta.xml\n**/escalationRules/*.escalationRules-meta.xml\n**/sharingRules/*.sharingRules-meta.xml\n**/autoResponseRules/*.autoResponseRules-meta.xml\n**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n**/translations/*.translation-meta.xml\n**/globalValueSets/*.globalValueSet-meta.xml\n**/standardValueSets/*.standardValueSet-meta.xml\n**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n**/bots/*/*.botVersion-meta.xml\n**/bots/*/*.bot-meta.xml\n**/marketingappextensions/*.marketingappextension-meta.xml\n```\n\nGit should also ignore the log created by the `xml-disassembler` package (see previous section).\n\n```\ndisassemble.log\n```\n\n### `.forceignore` updates\n\nThe Salesforce CLI should ignore the decomposed files and should allow the recomposed files. Update based on the decomposed file format you are using (`.xml`, `.json`, or `.yaml`).\n\n```\n# Ignore decomposed files\n**/profiles/**/*.xml\n**/permissionsets/**/*.xml\n**/labels/*.xml\n**/workflows/**/*.xml\n**/flows/**/*.xml\n**/matchingRules/**/*.xml\n**/assignmentRules/**/*.xml\n**/escalationRules/**/*.xml\n**/sharingRules/**/*.xml\n**/autoResponseRules/**/*.xml\n**/globalValueSetTranslations/**/*.xml\n**/standardValueSetTranslations/**/*.xml\n**/translations/**/*.xml\n**/globalValueSets/**/*.xml\n**/standardValueSets/**/*.xml\n**/decisionMatrixDefinition/**/*.xml\n**/aiScoringModelDefinitions/**/*.xml\n**/bots/**/*.xml\n**/marketingappextensions/**/*.xml\n\n# Allow the recomposed files\n!**/permissionsets/*.permissionset-meta.xml\n!**/labels/CustomLabels.labels-meta.xml\n!**/workflows/*.workflow-meta.xml\n!**/profiles/*.profile-meta.xml\n!**/flows/*.flow-meta.xml\n!**/matchingRules/*.matchingRule-meta.xml\n!**/assignmentRules/*.assignmentRules-meta.xml\n!**/escalationRules/*.escalationRules-meta.xml\n!**/sharingRules/*.sharingRules-meta.xml\n!**/autoResponseRules/*.autoResponseRules-meta.xml\n!**/globalValueSetTranslations/*.globalValueSetTranslation-meta.xml\n!**/standardValueSetTranslations/*.standardValueSetTranslation-meta.xml\n!**/translations/*.translation-meta.xml\n!**/globalValueSets/*.globalValueSet-meta.xml\n!**/standardValueSets/*.standardValueSet-meta.xml\n!**/decisionMatrixDefinition/*.decisionMatrixDefinition-meta.xml\n!**/aiScoringModelDefinitions/*.aiScoringModelDefinition-meta.xml\n!**/bots/*/*.botVersion-meta.xml\n!**/bots/*/*.bot-meta.xml\n!**/marketingappextensions/*.marketingappextension-meta.xml\n```\n","readmeFilename":"README.md","homepage":"https://github.com/mcarvin8/sfdx-decomposer-plugin#readme","repository":{"type":"git","url":"git+https://github.com/mcarvin8/sfdx-decomposer-plugin.git"},"bugs":{"url":"https://github.com/mcarvin8/sfdx-decomposer-plugin/issues"}}