sf-decomposer 6.15.1 → 6.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,25 @@
5
5
 
6
6
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
7
7
 
8
+ ## [6.17.0](https://github.com/mcarvin8/sf-decomposer/compare/v6.16.0...v6.17.0) (2026-05-04)
9
+
10
+
11
+ ### Features
12
+
13
+ * **decompose:** expand uniqueIdElements coverage for 11 metadata types ([#432](https://github.com/mcarvin8/sf-decomposer/issues/432)) ([7e8d73a](https://github.com/mcarvin8/sf-decomposer/commit/7e8d73a15fbcc860d1aff78067e5851703216c9a))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **decompose:** bump config-disassembler to 1.1.3 and add approval/entitlement uniqueIdElements ([#430](https://github.com/mcarvin8/sf-decomposer/issues/430)) ([82b2458](https://github.com/mcarvin8/sf-decomposer/commit/82b2458a228e2a0a9ff5a7a49ad1fcc763fb0274))
19
+
20
+ ## [6.16.0](https://github.com/mcarvin8/sf-decomposer/compare/v6.15.1...v6.16.0) (2026-05-01)
21
+
22
+
23
+ ### Features
24
+
25
+ * **decompose:** apply multiLevel defaults to bot by default ([#426](https://github.com/mcarvin8/sf-decomposer/issues/426)) ([f824ffe](https://github.com/mcarvin8/sf-decomposer/commit/f824ffef439f7a00153a729330adbcdb31b816b9))
26
+
8
27
  ## [6.15.1](https://github.com/mcarvin8/sf-decomposer/compare/v6.15.0...v6.15.1) (2026-05-01)
9
28
 
10
29
 
package/HANDBOOK.md CHANGED
@@ -32,7 +32,15 @@ Three knobs cover almost every case:
32
32
  Hard rules the plugin always enforces (so you don't have to):
33
33
 
34
34
  - `labels` and `loyaltyProgramSetup` are always treated as `unique-id` regardless of any override.
35
- - `loyaltyProgramSetup` automatically gets `multiLevel: programProcesses:programProcesses:parameterName,ruleName` when run under `unique-id` — you can replace it but you don't have to set it.
35
+
36
+ Built-in `multiLevel` defaults — applied automatically when `strategy` is `unique-id` and you do not supply your own `multiLevel` for that type. You can replace any of them by setting an explicit `multiLevel` on the override.
37
+
38
+ | Metadata type | Built-in `multiLevel` |
39
+ | --------------------- | ------------------------------------------------------------------- |
40
+ | `bot` | `["botDialogs:botDialogs:developerName", "botSteps:botSteps:type"]` |
41
+ | `loyaltyProgramSetup` | `"programProcesses:programProcesses:parameterName,ruleName"` |
42
+
43
+ The full registry lives in [`src/metadata/multiLevelDefaults.ts`](./src/metadata/multiLevelDefaults.ts).
36
44
 
37
45
  Everything else in this handbook is opt-in.
38
46
 
@@ -49,22 +57,14 @@ Everything else in this handbook is opt-in.
49
57
 
50
58
  A flat `unique-id` decomposition of a `BotVersion` produces one giant per-dialog file with hundreds of nested steps inside. That's only marginally easier to review than the original.
51
59
 
52
- **Recipe two-rule multi-level decomposition.**
60
+ **The two-rule recipe — applied by default.** Under `strategy: unique-id` (the default) the plugin automatically applies:
53
61
 
54
62
  ```json
55
- {
56
- "metadataSuffixes": "bot",
57
- "strategy": "unique-id",
58
- "decomposedFormat": "xml",
59
- "overrides": [
60
- {
61
- "metadataTypes": ["bot"],
62
- "multiLevel": ["botDialogs:botDialogs:developerName", "botSteps:botSteps:type"]
63
- }
64
- ]
65
- }
63
+ "multiLevel": ["botDialogs:botDialogs:developerName", "botSteps:botSteps:type"]
66
64
  ```
67
65
 
66
+ to every `bot` you decompose. You don't need to add anything to `.sfdecomposer.config.json` for the canonical Bot layout — just run `sf decomposer decompose --metadata-type bot` and you get the structure documented below. Add an explicit `multiLevel` override only if you want a different layout (see "When to use a single rule instead" further down).
67
+
68
68
  What this produces on disk for `Sample_Chat_Bot/v1.botVersion-meta.xml` (an Einstein chat bot from the plugin's own fixtures):
69
69
 
70
70
  ```
@@ -105,16 +105,26 @@ A few things worth knowing before you commit this:
105
105
  - **Each step is one of two shapes**: a leaf `<hash>.botSteps-meta.xml` file when the step has no nested content (e.g. a `Wait` step), or a `<hash>/` directory containing `<hash>.xml` plus subdirectories for the nested content (e.g. a `Message` step with `<botMessages>`, a `Navigation` step with `<botNavigation>`, an Agentforce `Action` step with `<botFlowInvocation>`). Both shapes recompose back to identical `<botSteps>` XML.
106
106
  - **The two rules do different things.** The outer `botDialogs` rule is what gives you per-dialog folders — that's the headline win for review-ability. The inner `botSteps` rule additionally splits each step's nested content out of the per-dialog file into per-step subdirectories. For small Einstein bots with shallow steps you can drop the inner rule and still get the dialog-level split; for heavier Agentforce bots the inner rule is the difference between a 50-line per-step subtree and a 500-line per-dialog file.
107
107
 
108
- **When to use a single rule instead.** If your bots have shallow steps (most Einstein chat bots, or pre-Agentforce bots), `multiLevel: ["botDialogs:botDialogs:developerName"]` alone is enough. Each dialog gets its own folder and steps live as flat `*.botSteps-meta.xml` files inside. Recompose is byte-identical either way; the choice is purely about how granular you want the per-step diff to be.
108
+ **When to use a single rule instead.** If your bots have shallow steps (most Einstein chat bots, or pre-Agentforce bots), you can override the default with a single outer rule:
109
+
110
+ ```json
111
+ {
112
+ "overrides": [{ "metadataTypes": ["bot"], "multiLevel": ["botDialogs:botDialogs:developerName"] }]
113
+ }
114
+ ```
115
+
116
+ Each dialog still gets its own folder, but steps live as flat `*.botSteps-meta.xml` files inside instead of per-type subdirectories. Recompose is byte-identical either way; the choice is purely about how granular you want the per-step diff to be. Your override fully replaces the built-in default — no merging.
109
117
 
110
- > **Per-bot precision.** Scope the override to a single component when one bot in your repo has a different shape than the rest. The plugin's own bot fixture suite uses this pattern:
118
+ > **Per-bot precision.** When one bot in your repo wants a different layout than the rest, scope the override to a single component:
111
119
  >
112
120
  > ```json
113
121
  > {
114
- > "components": ["bot:Sample_Chat_Bot", "bot:Internal_Copilot_Sample"],
115
- > "multiLevel": ["botDialogs:botDialogs:developerName", "botSteps:botSteps:type"]
122
+ > "components": ["bot:Legacy_Chat_Bot"],
123
+ > "multiLevel": ["botDialogs:botDialogs:developerName"]
116
124
  > }
117
125
  > ```
126
+ >
127
+ > The default still applies to every other bot.
118
128
 
119
129
  > **Agentforce vs Einstein.** Both share the `bot` suffix, so a single override entry covers both bot families. The structural difference (Agentforce uses richer `botFlowInvocation` and `genAi*` blocks where Einstein uses `botNavigation` and `mlIntents`) is invisible to this recipe — `multiLevel` rules only target the repeating sections that exist on each side. The plugin ships an `Internal_Copilot_Sample` fixture that exercises the Agentforce-style shape and an Einstein-style `Sample_Chat_Bot` fixture; both round-trip with the same recipe.
120
130
 
package/README.md CHANGED
@@ -5,6 +5,7 @@
5
5
  [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/mcarvin8/sf-decomposer/main/LICENSE.md)
6
6
  [![Maintainability](https://qlty.sh/badges/8492c1c6-0f93-4d37-bfad-32fd3b788a2d/maintainability.svg)](https://qlty.sh/gh/mcarvin8/projects/sf-decomposer)
7
7
  [![codecov](https://codecov.io/gh/mcarvin8/sf-decomposer/graph/badge.svg?token=YFU52L4XM5)](https://codecov.io/gh/mcarvin8/sf-decomposer)
8
+ [![Performance](https://img.shields.io/badge/Performance-Dashboard-58a6ff)](https://mcarvin8.github.io/sf-decomposer/dev/bench/runtime/)
8
9
 
9
10
  A Salesforce CLI plugin that **decomposes** large metadata XML files into smaller, version-control–friendly files (XML, JSON, YAML, JSON5), and **recomposes** them back into deployment-ready metadata.
10
11
 
@@ -59,7 +60,7 @@ A Salesforce CLI plugin that **decomposes** large metadata XML files into smalle
59
60
  sf decomposer decompose -m "flow" -m "labels" --postpurge
60
61
  ```
61
62
 
62
- > Combine steps 2 & 3 by configuring the [hooks](#hooks).
63
+ > Combine steps 2 & 3 by configuring the [hooks](#hooks).
63
64
 
64
65
  4. **Add decomposed paths to [.forceignore](#forceignore)**
65
66
  This is **required** so the Salesforce CLI does not treat decomposed files as source. Use the [sample .forceignore](https://raw.githubusercontent.com/mcarvin8/sf-decomposer/main/examples/.forceignore) and adjust extensions for your chosen format (`.xml`, `.json`, `.yaml`, etc.).
@@ -637,19 +638,21 @@ Within one scope, the `(file_pattern, root_to_strip)` pair must be unique across
637
638
  ```json
638
639
  "overrides": [
639
640
  {
640
- "metadataTypes": ["loyaltyProgramSetup"],
641
- "multiLevel": "programProcesses:programProcesses:parameterName,ruleName"
641
+ "metadataTypes": ["dashboard"],
642
+ "multiLevel": "components:components:title"
642
643
  },
643
644
  {
644
- "components": ["bot:Assessment_Bot"],
645
+ "metadataTypes": ["layout"],
645
646
  "multiLevel": [
646
- "botDialogs:botDialogs:developerName",
647
- "botSteps:botSteps:type"
647
+ "layoutSections:layoutSections:label",
648
+ "layoutItems:layoutItems:field,customLink,emptySpace"
648
649
  ]
649
650
  }
650
651
  ]
651
652
  ```
652
653
 
654
+ > **`bot` and `loyaltyProgramSetup` ship with built-in `multiLevel` defaults**, so you don't need to add an override for either type to get the canonical decomposed layout — supply your own only if you want to replace the default. The full registry lives in [`src/metadata/multiLevelDefaults.ts`](https://github.com/mcarvin8/sf-decomposer/blob/main/src/metadata/multiLevelDefaults.ts).
655
+
653
656
  > **Why one call:** Pass every rule for a given component in a single override. Sequential single-rule decompositions rewrite the on-disk `.multi_level.json` and only the last rule survives — so multi-rule scenarios must travel together.
654
657
 
655
658
  > **Tip:** Use [`sf decomposer verify`](#sf-decomposer-verify) to non-destructively confirm a new override config still round-trips before committing it.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Built-in `multiLevel` rules for a metadata suffix, or `undefined` if the
3
+ * suffix has no default. The caller is responsible for honoring user-supplied
4
+ * `multiLevel` overrides first - this function only returns the fallback.
5
+ */
6
+ export declare function getMultiLevelDefault(metaSuffix: string): string[] | undefined;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ import { multiLevelDefaults } from './multiLevelDefaults.js';
3
+ /**
4
+ * Built-in `multiLevel` rules for a metadata suffix, or `undefined` if the
5
+ * suffix has no default. The caller is responsible for honoring user-supplied
6
+ * `multiLevel` overrides first - this function only returns the fallback.
7
+ */
8
+ export function getMultiLevelDefault(metaSuffix) {
9
+ return multiLevelDefaults[metaSuffix];
10
+ }
11
+ //# sourceMappingURL=getMultiLevelDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getMultiLevelDefault.js","sourceRoot":"","sources":["../../src/metadata/getMultiLevelDefault.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Built-in `multiLevel` rules applied when the user does not supply their own
3
+ * `multiLevel` override for a metadata suffix and `strategy === 'unique-id'`.
4
+ *
5
+ * Rule shape: `<file_pattern>:<root_to_strip>:<unique_id_elements>` (the third
6
+ * segment is itself a comma-separated list). See the `multiLevel` JSDoc on
7
+ * `DecomposerOverride` in src/helpers/types.ts for the full grammar.
8
+ *
9
+ * Adding an entry here makes the rule the default for that metadata suffix.
10
+ * User-supplied overrides always win because the resolver only falls back to
11
+ * this map when `options.multiLevel === undefined`.
12
+ *
13
+ * To use a different multi-level layout, supply your own `multiLevel` in
14
+ * `.sfdecomposer.config.json` (component- or type-scoped). To get fully flat
15
+ * output, pass `--strategy grouped-by-tag`, which skips multi-level entirely.
16
+ */
17
+ export declare const multiLevelDefaults: Record<string, string[]>;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+ /**
3
+ * Built-in `multiLevel` rules applied when the user does not supply their own
4
+ * `multiLevel` override for a metadata suffix and `strategy === 'unique-id'`.
5
+ *
6
+ * Rule shape: `<file_pattern>:<root_to_strip>:<unique_id_elements>` (the third
7
+ * segment is itself a comma-separated list). See the `multiLevel` JSDoc on
8
+ * `DecomposerOverride` in src/helpers/types.ts for the full grammar.
9
+ *
10
+ * Adding an entry here makes the rule the default for that metadata suffix.
11
+ * User-supplied overrides always win because the resolver only falls back to
12
+ * this map when `options.multiLevel === undefined`.
13
+ *
14
+ * To use a different multi-level layout, supply your own `multiLevel` in
15
+ * `.sfdecomposer.config.json` (component- or type-scoped). To get fully flat
16
+ * output, pass `--strategy grouped-by-tag`, which skips multi-level entirely.
17
+ */
18
+ export const multiLevelDefaults = {
19
+ // Bot: dialogs split out by developerName so each dialog gets its own
20
+ // subdirectory; steps within a dialog split by step type so distinct steps
21
+ // (Message vs Navigation vs Wait, etc.) live in separate shards. Without
22
+ // these the output is a flat blob of indistinguishable <botSteps> shards
23
+ // since most botSteps elements share structural shape and the SHA-256
24
+ // fallback alone produces opaque file names.
25
+ bot: ['botDialogs:botDialogs:developerName', 'botSteps:botSteps:type'],
26
+ // LoyaltyProgramSetup: programProcesses keyed by parameterName + ruleName.
27
+ // (Previously hardcoded inline in decomposeFileHandler.ts.)
28
+ loyaltyProgramSetup: ['programProcesses:programProcesses:parameterName,ruleName'],
29
+ };
30
+ //# sourceMappingURL=multiLevelDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiLevelDefaults.js","sourceRoot":"","sources":["../../src/metadata/multiLevelDefaults.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D,sEAAsE;IACtE,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,sEAAsE;IACtE,6CAA6C;IAC7C,GAAG,EAAE,CAAC,qCAAqC,EAAE,wBAAwB,CAAC;IAEtE,2EAA2E;IAC3E,4DAA4D;IAC5D,mBAAmB,EAAE,CAAC,0DAA0D,CAAC;CAClF,CAAC"}
@@ -23,6 +23,45 @@ declare const _default: {
23
23
  loyaltyProgramSetup: {
24
24
  uniqueIdElements: string[];
25
25
  };
26
+ entitlementProcess: {
27
+ uniqueIdElements: string[];
28
+ };
29
+ approvalProcess: {
30
+ uniqueIdElements: string[];
31
+ };
32
+ quickAction: {
33
+ uniqueIdElements: string[];
34
+ };
35
+ md: {
36
+ uniqueIdElements: string[];
37
+ };
38
+ pathAssistant: {
39
+ uniqueIdElements: string[];
40
+ };
41
+ omniSupervisorConfig: {
42
+ uniqueIdElements: string[];
43
+ };
44
+ genAiPromptTemplate: {
45
+ uniqueIdElements: string[];
46
+ };
47
+ mlDomain: {
48
+ uniqueIdElements: string[];
49
+ };
50
+ liveChatAgentConfig: {
51
+ uniqueIdElements: string[];
52
+ };
53
+ liveChatButton: {
54
+ uniqueIdElements: string[];
55
+ };
56
+ duplicateRule: {
57
+ uniqueIdElements: string[];
58
+ };
59
+ queue: {
60
+ uniqueIdElements: string[];
61
+ };
62
+ reportType: {
63
+ uniqueIdElements: string[];
64
+ };
26
65
  mutingpermissionset: {
27
66
  uniqueIdElements: string[];
28
67
  };
@@ -71,6 +71,83 @@ export default [
71
71
  loyaltyProgramSetup: {
72
72
  uniqueIdElements: ['processName'],
73
73
  },
74
+ entitlementProcess: {
75
+ // `<milestones>` items have no `<fullName>`/`<name>`; the canonical key
76
+ // is `<milestoneName>`. Without this, every milestone shard falls back
77
+ // to a SHA-256 hash filename.
78
+ uniqueIdElements: ['milestoneName'],
79
+ },
80
+ approvalProcess: {
81
+ // `<approvalStep>` already keys off `<name>` via the default list, but
82
+ // `<allowedSubmitters>` items only carry `<type>` (e.g. `creator`,
83
+ // `owner`, `queue`). Multiple submitters with the same `<type>` in one
84
+ // process will collide and fall back to SHA-256, which is acceptable
85
+ // (and rare in practice) compared to *every* allowedSubmitters shard
86
+ // hashing today.
87
+ uniqueIdElements: ['type'],
88
+ },
89
+ quickAction: {
90
+ // `<fieldOverrides>` and `<quickActionLayoutItems>` both key off
91
+ // `<field>`. Singleton wrappers like `<quickActionLayout>` and
92
+ // `<quickActionSendEmailOptions>` still hash (one stable hash per
93
+ // parent), which is correct and intentional.
94
+ uniqueIdElements: ['field'],
95
+ },
96
+ md: {
97
+ // `<values>` items inside a `<CustomMetadata>` record are keyed by
98
+ // `<field>`. Each customMetadata file holds 1..N values for distinct
99
+ // fields, so `<field>` is unique per shard.
100
+ uniqueIdElements: ['field'],
101
+ },
102
+ pathAssistant: {
103
+ // `<pathAssistantSteps>` items use `<picklistValueName>` (a stage
104
+ // value like "Planning", "Pre-Live Review") as their natural key.
105
+ uniqueIdElements: ['picklistValueName'],
106
+ },
107
+ omniSupervisorConfig: {
108
+ // Six sibling repeating elements: `<omniSupervisorConfigUser>` /
109
+ // `<...Group>` / `<...Queue>` / `<...Profile>` / `<...Skill>` /
110
+ // `<...Action>`. Each item carries exactly one of these inner-name
111
+ // fields, and `find_id_in_subtree` picks whichever one is present.
112
+ uniqueIdElements: ['user', 'group', 'queue', 'profile', 'skill', 'actionName'],
113
+ },
114
+ genAiPromptTemplate: {
115
+ // `<templateVersions>` items carry a unique `<versionIdentifier>` per
116
+ // version. The trailing `_<n>` makes it filesystem-safe.
117
+ uniqueIdElements: ['versionIdentifier'],
118
+ },
119
+ mlDomain: {
120
+ // `<mlIntents>` items use `<developerName>` as their canonical key.
121
+ uniqueIdElements: ['developerName'],
122
+ },
123
+ liveChatAgentConfig: {
124
+ // `<transferableButtons>` items carry `<button>`, `<supervisorSkills>`
125
+ // items carry `<skill>`. `<assignments>` items wrap heterogeneous
126
+ // user/group payloads with no single keyable field, so they continue
127
+ // to hash (stable per content).
128
+ uniqueIdElements: ['button', 'skill'],
129
+ },
130
+ liveChatButton: {
131
+ // `<skills>` items use `<skill>`; `<deployments>` items use
132
+ // `<deployment>`.
133
+ uniqueIdElements: ['skill', 'deployment'],
134
+ },
135
+ duplicateRule: {
136
+ // `<duplicateRuleMatchRules>` items carry `<matchingRule>`. Each
137
+ // match rule appears once per duplicate rule, so the field is unique
138
+ // within the parent.
139
+ uniqueIdElements: ['matchingRule'],
140
+ },
141
+ queue: {
142
+ // `<queueSobject>` items are keyed by `<sobjectType>` (e.g. `Case`,
143
+ // `Lead`). Each sobject appears at most once per queue.
144
+ uniqueIdElements: ['sobjectType'],
145
+ },
146
+ reportType: {
147
+ // `<sections>` items use `<masterLabel>` as their natural key. Same
148
+ // pattern as `globalValueSetTranslation`/`standardValueSetTranslation`.
149
+ uniqueIdElements: ['masterLabel'],
150
+ },
74
151
  mutingpermissionset: {
75
152
  uniqueIdElements: [
76
153
  'application',
@@ -1 +1 @@
1
- {"version":3,"file":"uniqueIdElements.js","sourceRoot":"","sources":["../../src/metadata/uniqueIdElements.ts"],"names":[],"mappings":"AAAA,eAAe;IACb;QACE,OAAO,EAAE;YACP,gBAAgB,EAAE;gBAChB,aAAa;gBACb,WAAW;gBACX,oBAAoB;gBACpB,MAAM;gBACN,QAAQ;gBACR,UAAU;gBACV,YAAY;gBACZ,KAAK;gBACL,OAAO;gBACP,cAAc;gBACd,mBAAmB;gBACnB,QAAQ;gBACR,cAAc;gBACd,cAAc;gBACd,WAAW;aACZ;SACF;QACD,aAAa,EAAE;YACb,gBAAgB,EAAE;gBAChB,aAAa;gBACb,WAAW;gBACX,oBAAoB;gBACpB,MAAM;gBACN,QAAQ;gBACR,UAAU;gBACV,YAAY;gBACZ,KAAK;gBACL,OAAO;gBACP,WAAW;gBACX,6BAA6B;gBAC7B,uBAAuB;aACxB;SACF;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE;gBAChB,WAAW;gBACX,QAAQ;gBACR,OAAO;gBACP,QAAQ;gBACR,YAAY;gBACZ,iBAAiB;gBACjB,mBAAmB;gBACnB,YAAY;gBACZ,YAAY;aACb;SACF;QACD,yBAAyB,EAAE;YACzB,gBAAgB,EAAE,CAAC,aAAa,CAAC;SAClC;QACD,2BAA2B,EAAE;YAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC;SAClC;QACD,GAAG,EAAE;YACH,gBAAgB,EAAE;gBAChB,eAAe;gBACf,gBAAgB;gBAChB,sBAAsB;gBACtB,eAAe;gBACf,iBAAiB;gBACjB,QAAQ;gBACR,gBAAgB;aACjB;SACF;QACD,qBAAqB,EAAE;YACrB,gBAAgB,EAAE,CAAC,SAAS,CAAC;SAC9B;QACD,mBAAmB,EAAE;YACnB,gBAAgB,EAAE,CAAC,aAAa,CAAC;SAClC;QACD,mBAAmB,EAAE;YACnB,gBAAgB,EAAE;gBAChB,aAAa;gBACb,WAAW;gBACX,oBAAoB;gBACpB,MAAM;gBACN,QAAQ;gBACR,UAAU;gBACV,YAAY;gBACZ,KAAK;gBACL,OAAO;gBACP,WAAW;gBACX,6BAA6B;gBAC7B,uBAAuB;aACxB;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"uniqueIdElements.js","sourceRoot":"","sources":["../../src/metadata/uniqueIdElements.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { DisassembleXMLFileHandler } from 'config-disassembler';
5
5
  import pLimit from 'p-limit';
6
6
  import { CUSTOM_LABELS_FILE, CONCURRENCY_LIMITS } from '../../helpers/constants.js';
7
7
  import { hasComponentOverridesForType, resolveDecomposeOptionsForComponent, } from '../../helpers/configOverrides.js';
8
+ import { getMultiLevelDefault } from '../../metadata/getMultiLevelDefault.js';
8
9
  import { prePurgeLabels, moveAndRenameLabels } from './customLabels.js';
9
10
  import { renameWorkflows } from './renameWorkflows.js';
10
11
  export async function decomposeFileHandler(metaAttributes, typeResolved, ignorePath, overrides, manifestXmlPaths) {
@@ -91,13 +92,14 @@ function disassembleHandler(filePath, uniqueIdElements, options, ignorePath, met
91
92
  const effectiveStrategy = applyHardStrategyRules(metaSuffix, options.strategy);
92
93
  // Resolve multiLevel with this precedence:
93
94
  // 1. an explicit `multiLevel` set in the override (any metadata type);
94
- // 2. the hardcoded loyaltyProgramSetup default when running unique-id strategy.
95
+ // 2. the built-in default for this metadata suffix when running unique-id strategy
96
+ // (see src/metadata/multiLevelDefaults.ts; covers `bot` and `loyaltyProgramSetup`).
95
97
  // The override may be a single rule (string) or several rules (string[]); both shapes are
96
98
  // forwarded verbatim — the crate decides how to split them. Empty arrays are rejected
97
99
  // upstream by validateMultiLevelSpec, so we don't need to guard against them here.
98
100
  let multiLevel = options.multiLevel;
99
- if (multiLevel === undefined && metaSuffix === 'loyaltyProgramSetup' && effectiveStrategy === 'unique-id') {
100
- multiLevel = 'programProcesses:programProcesses:parameterName,ruleName';
101
+ if (multiLevel === undefined && effectiveStrategy === 'unique-id') {
102
+ multiLevel = getMultiLevelDefault(metaSuffix);
101
103
  }
102
104
  // Resolve splitTags with this precedence:
103
105
  // 1. an explicit `splitTags` set in the override (any metadata type, gated to grouped-by-tag);
@@ -1 +1 @@
1
- {"version":3,"file":"decomposeFileHandler.js","sourceRoot":"","sources":["../../../src/service/decompose/decomposeFileHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decomposeFileHandler.js","sourceRoot":"","sources":["../../../src/service/decompose/decomposeFileHandler.ts"],"names":[],"mappings":"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"}
@@ -342,5 +342,5 @@
342
342
  ]
343
343
  }
344
344
  },
345
- "version": "6.15.1"
345
+ "version": "6.17.0"
346
346
  }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "sf-decomposer",
3
3
  "description": "Split large Salesforce metadata files into version-control-friendly pieces and rebuild deployment-ready files.",
4
- "version": "6.15.1",
4
+ "version": "6.17.0",
5
5
  "dependencies": {
6
6
  "@oclif/core": "^4",
7
7
  "@salesforce/core": "^8.26.3",
8
8
  "@salesforce/sf-plugins-core": "^12.2.6",
9
9
  "@salesforce/source-deploy-retrieve": "^12.35.0",
10
- "config-disassembler": "^1.1.2",
10
+ "config-disassembler": "^1.1.3",
11
11
  "fast-xml-parser": "^5.7.2",
12
12
  "p-limit": "^7.3.0"
13
13
  },