sfdx-git-delta 6.41.2 → 6.42.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.
Files changed (67) hide show
  1. package/README.md +35 -2
  2. package/lib/adapter/GitAdapter.d.ts +1 -0
  3. package/lib/adapter/GitAdapter.js +71 -27
  4. package/lib/adapter/GitAdapter.js.map +1 -1
  5. package/lib/commands/sgd/source/delta.d.ts +2 -0
  6. package/lib/commands/sgd/source/delta.js +31 -1
  7. package/lib/commands/sgd/source/delta.js.map +1 -1
  8. package/lib/constant/cliConstants.d.ts +2 -0
  9. package/lib/constant/cliConstants.js +4 -0
  10. package/lib/constant/cliConstants.js.map +1 -1
  11. package/lib/constant/gitConstants.d.ts +1 -0
  12. package/lib/constant/gitConstants.js +4 -0
  13. package/lib/constant/gitConstants.js.map +1 -1
  14. package/lib/main.js +14 -4
  15. package/lib/main.js.map +1 -1
  16. package/lib/post-processor/changesManifestProcessor.d.ts +15 -0
  17. package/lib/post-processor/changesManifestProcessor.js +50 -0
  18. package/lib/post-processor/changesManifestProcessor.js.map +1 -0
  19. package/lib/post-processor/flowTranslationProcessor.d.ts +1 -0
  20. package/lib/post-processor/flowTranslationProcessor.js +12 -4
  21. package/lib/post-processor/flowTranslationProcessor.js.map +1 -1
  22. package/lib/post-processor/packageGenerator.d.ts +0 -2
  23. package/lib/post-processor/packageGenerator.js +7 -27
  24. package/lib/post-processor/packageGenerator.js.map +1 -1
  25. package/lib/post-processor/postProcessorManager.js +6 -1
  26. package/lib/post-processor/postProcessorManager.js.map +1 -1
  27. package/lib/service/botHandler.js +1 -0
  28. package/lib/service/botHandler.js.map +1 -1
  29. package/lib/service/inFileHandler.d.ts +2 -2
  30. package/lib/service/inFileHandler.js +7 -5
  31. package/lib/service/inFileHandler.js.map +1 -1
  32. package/lib/service/reportingFolderHandler.d.ts +5 -2
  33. package/lib/service/reportingFolderHandler.js +1 -2
  34. package/lib/service/reportingFolderHandler.js.map +1 -1
  35. package/lib/service/sharedFolderHandler.d.ts +5 -2
  36. package/lib/service/sharedFolderHandler.js +1 -2
  37. package/lib/service/sharedFolderHandler.js.map +1 -1
  38. package/lib/service/standardHandler.d.ts +8 -2
  39. package/lib/service/standardHandler.js +21 -3
  40. package/lib/service/standardHandler.js.map +1 -1
  41. package/lib/types/config.d.ts +1 -0
  42. package/lib/types/handlerResult.d.ts +8 -0
  43. package/lib/types/handlerResult.js +7 -0
  44. package/lib/types/handlerResult.js.map +1 -1
  45. package/lib/types/work.d.ts +2 -5
  46. package/lib/utils/changeSet.d.ts +48 -0
  47. package/lib/utils/changeSet.js +173 -0
  48. package/lib/utils/changeSet.js.map +1 -0
  49. package/lib/utils/configValidator.d.ts +1 -0
  50. package/lib/utils/configValidator.js +39 -1
  51. package/lib/utils/configValidator.js.map +1 -1
  52. package/lib/utils/metadataDiff.d.ts +1 -0
  53. package/lib/utils/metadataDiff.js +22 -8
  54. package/lib/utils/metadataDiff.js.map +1 -1
  55. package/lib/utils/renameResolver.d.ts +19 -0
  56. package/lib/utils/renameResolver.js +52 -0
  57. package/lib/utils/renameResolver.js.map +1 -0
  58. package/lib/utils/repoGitDiff.d.ts +7 -0
  59. package/lib/utils/repoGitDiff.js +34 -4
  60. package/lib/utils/repoGitDiff.js.map +1 -1
  61. package/messages/delta.md +12 -0
  62. package/npm-shrinkwrap.json +333 -342
  63. package/oclif.manifest.json +9 -1
  64. package/package.json +8 -8
  65. package/lib/utils/manifestAggregator.d.ts +0 -3
  66. package/lib/utils/manifestAggregator.js +0 -22
  67. package/lib/utils/manifestAggregator.js.map +0 -1
@@ -0,0 +1,173 @@
1
+ 'use strict';
2
+ import { ChangeKind, ManifestTarget, } from '../types/handlerResult.js';
3
+ const RENAME_KEY_SEPARATOR = '\0';
4
+ const renameKey = (from, to) => `${from}${RENAME_KEY_SEPARATOR}${to}`;
5
+ /**
6
+ * Domain object that collects every component change observed in a diff and
7
+ * derives the views consumed downstream:
8
+ * - Package manifest (`ManifestTarget.Package` entries + rename targets)
9
+ * - Destructive manifest (`ManifestTarget.DestructiveChanges` entries +
10
+ * rename sources — minus entries that also appear in the Package view)
11
+ * - Per-kind bucket map (used for the JSON review manifest)
12
+ *
13
+ * `ManifestTarget` and `ChangeKind` are orthogonal. A single ManifestElement
14
+ * can be (target=Package, changeKind=Delete) — this happens when InFileHandler
15
+ * treats a deleted container file as an addition to preserve surviving
16
+ * sub-elements. The xml manifests MUST route on `target` (the deployment
17
+ * contract); `changeKind` only drives the review-oriented JSON bucket.
18
+ *
19
+ * Insertion goes through `add` for single-component changes and
20
+ * `recordRename` for rename pairs. Views are pure projections.
21
+ */
22
+ export default class ChangeSet {
23
+ byTarget = {
24
+ [ManifestTarget.Package]: new Map(),
25
+ [ManifestTarget.DestructiveChanges]: new Map(),
26
+ };
27
+ byKind = {
28
+ [ChangeKind.Add]: new Map(),
29
+ [ChangeKind.Modify]: new Map(),
30
+ [ChangeKind.Delete]: new Map(),
31
+ };
32
+ renames = new Map();
33
+ static from(elements) {
34
+ const set = new ChangeSet();
35
+ for (const element of elements) {
36
+ set.addElement(element);
37
+ }
38
+ return set;
39
+ }
40
+ // Precise insertion — respects the full (target, changeKind) discriminator.
41
+ // Callers that know both axes use this; the handler pipeline feeds
42
+ // ManifestElements through `from()`.
43
+ addElement(element) {
44
+ this._addToManifest(this.byTarget[element.target], element.type, element.member);
45
+ this._addToManifest(this.byKind[element.changeKind], element.type, element.member);
46
+ }
47
+ // Convenience for callers (mostly tests) that operate under the standard
48
+ // convention: Add/Modify target Package, Delete targets DestructiveChanges.
49
+ // Production handlers that diverge from this convention (e.g. InFileHandler
50
+ // treating a deleted container as an addition) MUST use addElement instead.
51
+ add(kind, type, member) {
52
+ const target = kind === ChangeKind.Delete
53
+ ? ManifestTarget.DestructiveChanges
54
+ : ManifestTarget.Package;
55
+ this.addElement({ target, type, member, changeKind: kind });
56
+ }
57
+ recordRename(type, from, to) {
58
+ if (from === to)
59
+ return;
60
+ if (!this.renames.has(type)) {
61
+ this.renames.set(type, new Map());
62
+ }
63
+ this.renames.get(type).set(renameKey(from, to), { from, to });
64
+ }
65
+ forPackageManifest() {
66
+ return this._unionByType([
67
+ this.byTarget[ManifestTarget.Package],
68
+ this._renameTargetsByType(),
69
+ ]);
70
+ }
71
+ forDestructiveManifest() {
72
+ const baseDeletes = this._unionByType([
73
+ this.byTarget[ManifestTarget.DestructiveChanges],
74
+ this._renameSourcesByType(),
75
+ ]);
76
+ return this._subtractByType(baseDeletes, this.forPackageManifest());
77
+ }
78
+ byChangeKind() {
79
+ // Rename participants move to the Rename bucket so every entry lives in
80
+ // exactly one user-visible bucket.
81
+ // Delete subtracts Add ∪ Modify (cancelled deletions) and rename sources.
82
+ const targets = this._renameTargetsByType();
83
+ const sources = this._renameSourcesByType();
84
+ return {
85
+ [ChangeKind.Add]: this._subtractByType(this.byKind[ChangeKind.Add], targets),
86
+ // Clone so callers that mutate the returned Modify view cannot corrupt
87
+ // ChangeSet internal state. Add and Delete buckets are already new
88
+ // Map instances returned by _subtractByType.
89
+ [ChangeKind.Modify]: this._cloneManifest(this.byKind[ChangeKind.Modify]),
90
+ [ChangeKind.Delete]: this._subtractByType(this.byKind[ChangeKind.Delete], this._unionByType([
91
+ this.byKind[ChangeKind.Add],
92
+ this.byKind[ChangeKind.Modify],
93
+ sources,
94
+ ])),
95
+ [ChangeKind.Rename]: this._cloneRenames(),
96
+ };
97
+ }
98
+ _addToManifest(manifest, type, member) {
99
+ if (!manifest.has(type)) {
100
+ manifest.set(type, new Set());
101
+ }
102
+ manifest.get(type).add(member);
103
+ }
104
+ _cloneManifest(manifest) {
105
+ const clone = new Map();
106
+ for (const [type, members] of manifest) {
107
+ clone.set(type, new Set(members));
108
+ }
109
+ return clone;
110
+ }
111
+ // `recordRename` always inserts at least one pair per type key, so the
112
+ // inner Set is non-empty by construction. No size check needed.
113
+ _renameTargetsByType() {
114
+ const result = new Map();
115
+ for (const [type, pairs] of this.renames) {
116
+ const members = new Set();
117
+ for (const { to } of pairs.values())
118
+ members.add(to);
119
+ result.set(type, members);
120
+ }
121
+ return result;
122
+ }
123
+ _renameSourcesByType() {
124
+ const result = new Map();
125
+ for (const [type, pairs] of this.renames) {
126
+ const members = new Set();
127
+ for (const { from } of pairs.values())
128
+ members.add(from);
129
+ result.set(type, members);
130
+ }
131
+ return result;
132
+ }
133
+ _cloneRenames() {
134
+ const clone = new Map();
135
+ for (const [type, pairs] of this.renames) {
136
+ clone.set(type, new Map(pairs));
137
+ }
138
+ return clone;
139
+ }
140
+ _unionByType(manifests) {
141
+ const result = new Map();
142
+ for (const manifest of manifests) {
143
+ for (const [type, members] of manifest) {
144
+ const existing = result.get(type);
145
+ if (existing) {
146
+ for (const member of members)
147
+ existing.add(member);
148
+ }
149
+ else {
150
+ result.set(type, new Set(members));
151
+ }
152
+ }
153
+ }
154
+ return result;
155
+ }
156
+ _subtractByType(base, minus) {
157
+ const result = new Map();
158
+ for (const [type, members] of base) {
159
+ const cancellers = minus.get(type);
160
+ const remaining = new Set();
161
+ for (const member of members) {
162
+ if (!cancellers?.has(member)) {
163
+ remaining.add(member);
164
+ }
165
+ }
166
+ if (remaining.size > 0) {
167
+ result.set(type, remaining);
168
+ }
169
+ }
170
+ return result;
171
+ }
172
+ }
173
+ //# sourceMappingURL=changeSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeSet.js","sourceRoot":"","sources":["../../src/utils/changeSet.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAEL,UAAU,EAEV,cAAc,GACf,MAAM,2BAA2B,CAAA;AAUlC,MAAM,oBAAoB,GAAG,IAAI,CAAA;AACjC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAC7C,GAAG,IAAI,GAAG,oBAAoB,GAAG,EAAE,EAAE,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IACX,QAAQ,GAAqC;QAC5D,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,EAAE;QACnC,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,GAAG,EAAE;KAC/C,CAAA;IACgB,MAAM,GAA8B;QACnD,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE;QAC3B,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE;QAC9B,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE;KAC/B,CAAA;IACgB,OAAO,GAAiB,IAAI,GAAG,EAAE,CAAA;IAElD,MAAM,CAAC,IAAI,CAAC,QAAoC;QAC9C,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAA;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,4EAA4E;IAC5E,mEAAmE;IACnE,qCAAqC;IACrC,UAAU,CAAC,OAAwB;QACjC,IAAI,CAAC,cAAc,CACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAC7B,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,MAAM,CACf,CAAA;QACD,IAAI,CAAC,cAAc,CACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAC/B,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,MAAM,CACf,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,GAAG,CAAC,IAAa,EAAE,IAAY,EAAE,MAAc;QAC7C,MAAM,MAAM,GACV,IAAI,KAAK,UAAU,CAAC,MAAM;YACxB,CAAC,CAAC,cAAc,CAAC,kBAAkB;YACnC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,EAAU;QACjD,IAAI,IAAI,KAAK,EAAE;YAAE,OAAM;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,oBAAoB,EAAE;SAC5B,CAAC,CAAA;IACJ,CAAC;IAED,sBAAsB;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;YAChD,IAAI,CAAC,oBAAoB,EAAE;SAC5B,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,YAAY;QAMV,wEAAwE;QACxE,mCAAmC;QACnC,0EAA0E;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3C,OAAO;YACL,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,CACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAC3B,OAAO,CACR;YACD,uEAAuE;YACvE,mEAAmE;YACnE,6CAA6C;YAC7C,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,CACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAC9B,IAAI,CAAC,YAAY,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC9B,OAAO;aACR,CAAC,CACH;YACD,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE;SAC1C,CAAA;IACH,CAAC;IAEO,cAAc,CACpB,QAAkB,EAClB,IAAY,EACZ,MAAc;QAEd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QAC/B,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAEO,cAAc,CAAC,QAAkB;QACvC,MAAM,KAAK,GAAa,IAAI,GAAG,EAAE,CAAA;QACjC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QACnC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,uEAAuE;IACvE,gEAAgE;IACxD,oBAAoB;QAC1B,MAAM,MAAM,GAAa,IAAI,GAAG,EAAE,CAAA;QAClC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;YACjC,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACpD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,oBAAoB;QAC1B,MAAM,MAAM,GAAa,IAAI,GAAG,EAAE,CAAA;QAClC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;YACjC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACxD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,aAAa;QACnB,MAAM,KAAK,GAAiB,IAAI,GAAG,EAAE,CAAA;QACrC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACjC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,YAAY,CAAC,SAA8B;QACjD,MAAM,MAAM,GAAa,IAAI,GAAG,EAAE,CAAA;QAClC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACjC,IAAI,QAAQ,EAAE,CAAC;oBACb,KAAK,MAAM,MAAM,IAAI,OAAO;wBAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACpD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,eAAe,CAAC,IAAc,EAAE,KAAe;QACrD,MAAM,MAAM,GAAa,IAAI,GAAG,EAAE,CAAA;QAClC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;YACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7B,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACvB,CAAC;YACH,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -10,6 +10,7 @@ export default class ConfigValidator {
10
10
  constructor(work: Work);
11
11
  protected _validateGitSha(): Promise<string[]>;
12
12
  validateConfig(): Promise<void>;
13
+ protected _validateChangesManifest(): Promise<string[]>;
13
14
  protected _handleDefault(): Promise<void>;
14
15
  protected _getApiVersion(): Promise<void>;
15
16
  protected _apiVersionDefault(): Promise<void>;
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  import { __decorate } from "tslib";
3
+ import { stat } from 'node:fs/promises';
3
4
  import { join } from 'node:path/posix';
4
5
  import { SfProject } from '@salesforce/core';
5
6
  import GitAdapter from '../adapter/GitAdapter.js';
@@ -42,21 +43,57 @@ export default class ConfigValidator {
42
43
  }
43
44
  async validateConfig() {
44
45
  this._sanitizeConfig();
45
- const [, repoExists, gitErrors] = await Promise.all([
46
+ const [, repoExists, gitErrors, changesManifestErrors] = await Promise.all([
46
47
  this._handleDefault(),
47
48
  pathExists(join(this.config.repo, GIT_FOLDER)),
48
49
  this._validateGitSha(),
50
+ this._validateChangesManifest(),
49
51
  ]);
50
52
  const errors = [];
51
53
  if (!repoExists) {
52
54
  errors.push(this.message.getMessage('error.PathIsNotGit', [this.config.repo]));
53
55
  }
54
56
  pushAll(errors, gitErrors);
57
+ pushAll(errors, changesManifestErrors);
55
58
  if (errors.length > 0) {
56
59
  throw new ConfigError(errors.join(', '));
57
60
  }
58
61
  await this.gitAdapter.configureRepository();
59
62
  }
63
+ // oclif cannot natively validate --changes-manifest (it uses a string flag
64
+ // to allow the bare form). Replicate meaningful checks: if the path already
65
+ // exists it must be a regular file; otherwise ENOENT is fine because
66
+ // fs-extra's outputFile creates the parent directory at write time.
67
+ async _validateChangesManifest() {
68
+ const target = this.config.changesManifest;
69
+ if (!target)
70
+ return [];
71
+ try {
72
+ const stats = await stat(target);
73
+ if (!stats.isFile()) {
74
+ return [
75
+ this.message.getMessage('error.ChangesManifestNotAFile', [target]),
76
+ ];
77
+ }
78
+ }
79
+ catch (error) {
80
+ // fs/promises stat always rejects with ErrnoException; narrow through
81
+ // an `instanceof Error` guard to keep `unknown` discipline, then read
82
+ // the POSIX code to distinguish "doesn't exist yet" from real failures.
83
+ const code = error instanceof Error
84
+ ? error.code
85
+ : undefined;
86
+ if (code !== 'ENOENT') {
87
+ return [
88
+ this.message.getMessage('error.ChangesManifestStatFailed', [
89
+ target,
90
+ getErrorMessage(error),
91
+ ]),
92
+ ];
93
+ }
94
+ }
95
+ return [];
96
+ }
60
97
  async _handleDefault() {
61
98
  await this._getApiVersion();
62
99
  await this._apiVersionDefault();
@@ -104,6 +141,7 @@ export default class ConfigValidator {
104
141
  this.config.include = sanitizePath(this.config.include);
105
142
  this.config.includeDestructive = sanitizePath(this.config.includeDestructive);
106
143
  this.config.additionalMetadataRegistryPath = sanitizePath(this.config.additionalMetadataRegistryPath);
144
+ this.config.changesManifest = sanitizePath(this.config.changesManifest);
107
145
  }
108
146
  }
109
147
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/utils/configValidator.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAG1E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,MAAM,QAAQ,GAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAElD,MAAM,CAAC,OAAO,OAAO,eAAe;IAKH;IAJZ,MAAM,CAAQ;IACd,UAAU,CAAY;IACtB,OAAO,CAAgB;IAE1C,YAA+B,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,EAAE,CAAA;IACrC,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAA;QAE3B,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC1C,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACtE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CACV,IAAI,CAAA,qBAAqB,YAAY,QAAQ,QAAQ,6BAA6B,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CACjH,CAAA;gBACD,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE;oBACpD,YAAY;oBACZ,QAAQ;iBACT,CAAC,CACH,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CACH,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAGY,AAAN,KAAK,CAAC,cAAc;QACzB,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtB,MAAM,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,cAAc,EAAE;YACrB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,EAAE;SACvB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAClE,CAAA;QACH,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAE1B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAA;IAC7C,CAAC;IAES,KAAK,CAAC,cAAc;QAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC3B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;IACjC,CAAC;IAES,KAAK,CAAC,cAAc;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,OAAM;QAEhD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3D,MAAM,iBAAiB,GAAG,SAAS;iBAChC,gBAAgB,EAAE;iBAClB,WAAW,EAAE,CAAC,gBAAgB,CAAA;YACjC,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CACV,IAAI,CAAA,kDAAkD,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,EAAE,CACjF,CAAA;QACH,CAAC;IACH,CAAC;IAES,KAAK,CAAC,kBAAkB;QAChC,MAAM,aAAa,GAAG,MAAM,yBAAyB,EAAE,CAAA;QAEvD,IACE,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;YACpC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,EACtC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,IAAI,KAAK,CACP,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,8BAA8B,EAAE;gBACtD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9B,MAAM,CAAC,aAAa,CAAC;aACtB,CAAC,CACH,CACF,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAA;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAA;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,IAAI,KAAK,CACP,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE;gBACrD,MAAM,CAAC,aAAa,CAAC;aACtB,CAAC,CACH,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAE,CAAC,CAAA;QAC5E,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,CAAA;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrD,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,YAAY,CAC3C,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC/B,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,8BAA8B,GAAG,YAAY,CACvD,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAC3C,CAAA;IACH,CAAC;CACF;AA5Fc;IADZ,GAAG;qDAuBH"}
1
+ {"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/utils/configValidator.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { type XmlContent } from './xmlHelper.js';
5
5
  type CompareEntry = Pick<ManifestElement, 'type' | 'member'>;
6
6
  interface CompareResult {
7
7
  added: CompareEntry[];
8
+ modified: CompareEntry[];
8
9
  deleted: CompareEntry[];
9
10
  toContent: XmlContent;
10
11
  fromContent: XmlContent;
@@ -37,9 +37,10 @@ export default class MetadataDiff {
37
37
  const toContent = await parseXmlFileToJson({ path, oid: this.config.to }, this.config);
38
38
  const fromContent = await parseXmlFileToJson({ path, oid: this.config.from }, this.config);
39
39
  const comparator = new MetadataComparator(this.extractor, fromContent, toContent);
40
- const added = comparator.getChanges();
40
+ const added = comparator.getAdded();
41
+ const modified = comparator.getModified();
41
42
  const deleted = comparator.getDeletion();
42
- return { added, deleted, toContent, fromContent };
43
+ return { added, modified, deleted, toContent, fromContent };
43
44
  }
44
45
  prune(toContent, fromContent) {
45
46
  const transformer = new JsonTransformer(this.extractor);
@@ -107,8 +108,11 @@ class MetadataComparator {
107
108
  this.fromContent = fromContent;
108
109
  this.toContent = toContent;
109
110
  }
110
- getChanges() {
111
- return this.compare(this.toContent, this.fromContent, this.matchAdded);
111
+ getAdded() {
112
+ return this.compare(this.toContent, this.fromContent, this.matchTrulyAdded);
113
+ }
114
+ getModified() {
115
+ return this.compare(this.toContent, this.fromContent, this.matchModified);
112
116
  }
113
117
  getDeletion() {
114
118
  return this.compare(this.fromContent, this.toContent, this.matchDeleted);
@@ -143,13 +147,23 @@ class MetadataComparator {
143
147
  }
144
148
  return entries;
145
149
  }
146
- // O(1) lookup instead of O(n) find()
147
- matchAdded = (targetLookup, keySelector, elem) => {
150
+ // Truly added: element not present in the opposite content by key
151
+ matchTrulyAdded = (targetLookup, keySelector, elem) => {
148
152
  const elemKey = keySelector(elem);
153
+ // Keyless elements cannot be identified as pre-existing — bucket as modified
149
154
  if (elemKey === undefined)
150
- return true;
155
+ return false;
156
+ return !targetLookup.has(elemKey);
157
+ };
158
+ // Modified: element present in opposite content by key but with different content.
159
+ // Keyless elements are skipped — they lack identity, so emitting them under a
160
+ // keyed bucket would produce `member: undefined` entries in the changes manifest.
161
+ matchModified = (targetLookup, keySelector, elem) => {
162
+ const elemKey = keySelector(elem);
163
+ if (elemKey === undefined)
164
+ return false;
151
165
  const match = targetLookup.get(elemKey);
152
- return !match || !deepEqual(match, elem);
166
+ return !!match && !deepEqual(match, elem);
153
167
  };
154
168
  // O(1) lookup instead of O(n) some()
155
169
  matchDeleted = (targetLookup, keySelector, elem) => {
@@ -1 +1 @@
1
- {"version":3,"file":"metadataDiff.js","sourceRoot":"","sources":["../../src/utils/metadataDiff.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAKvC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAC3C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,GAEzB,MAAM,gBAAgB,CAAA;AAEvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,iBAAiB,GAAG,SAAS,CAAA;AACnC,MAAM,kBAAkB,GAAG,UAAU,CAAA;AAErC,MAAM,OAAO,GAAG,CAAC,GAAc,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAA;AAkBpD,MAAM,CAAC,OAAO,OAAO,YAAY;IAIrB;IAHF,SAAS,CAAmB;IAEpC,YACU,MAAc,EACtB,UAA2C;QADnC,WAAM,GAAN,MAAM,CAAQ;QAGtB,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACpD,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,SAAS,GAAG,MAAM,kBAAkB,CACxC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAC7B,IAAI,CAAC,MAAM,CACZ,CAAA;QACD,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAC1C,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAC/B,IAAI,CAAC,MAAM,CACZ,CAAA;QAED,MAAM,UAAU,GAAG,IAAI,kBAAkB,CACvC,IAAI,CAAC,SAAS,EACd,WAAW,EACX,SAAS,CACV,CAAA;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,CAAA;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;QAExC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAA;IACnD,CAAC;IAGD,KAAK,CAAC,SAAqB,EAAE,WAAuB;QAClD,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACvD,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,mBAAmB,CAChE,WAAW,EACX,SAAS,CACV,CAAA;QAED,OAAO;YACL,UAAU,EAAE,gBAAgB,CAAC,aAAa,CAAC;YAC3C,OAAO;SACR,CAAA;IACH,CAAC;CACF;AAnCO;IADL,GAAG;2CAqBH;AAGD;IADC,GAAG;yCAYH;AAGH,MAAM,iBAAiB;IAGA;IAFb,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAA;IAE3D,YAAqB,UAA2C;QAA3C,eAAU,GAAV,UAAU,CAAiC;IAAG,CAAC;IAEpE,WAAW,CAAC,IAAgB;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,UAAU,CAAC,IAAgB;QACzB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,iBAAiB,CAAC,OAAe;QAC/B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;IAChD,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,uEAAuE;QACvE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,EAAE,CAAA;IACpD,CAAC;IAED,mBAAmB,CAAC,OAAe;QACjC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAY,CAAW,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAA;IAC5C,CAAC;IAED,qBAAqB,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAA;IAC1C,CAAC;IAED,iBAAiB,CAAC,IAAgB,EAAE,OAAe;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAA0C,CAAA;QACtE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACpE,CAAC;IAED,kBAAkB,CAAC,WAAuB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAChD,OAAQ,WAAW,CAAC,OAAO,CAAgB,IAAI,EAAE,CAAA;IACnD,CAAC;IAED,cAAc,CAAC,WAAuB;QACpC,OAAO,CACL,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,wBAAwB,CAAC;YACtE,EAAE,CACH,CAAA;IACH,CAAC;CACF;AAED,MAAM,kBAAkB;IAEZ;IACA;IACA;IAHV,YACU,SAA4B,EAC5B,WAAuB,EACvB,SAAqB;QAFrB,cAAS,GAAT,SAAS,CAAmB;QAC5B,gBAAW,GAAX,WAAW,CAAY;QACvB,cAAS,GAAT,SAAS,CAAY;IAC5B,CAAC;IAEJ,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACxE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IAC1E,CAAC;IAEO,OAAO,CACb,WAAuB,EACvB,aAAyB,EACzB,cAIY;QAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QAC/D,MAAM,OAAO,GAAmB,EAAE,CAAA;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAAE,SAAQ;YAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAChE,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAAE,SAAQ;YAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACpE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAElD,2DAA2D;YAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAA;YAClD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;gBAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;gBAC3B,CAAC;YACH,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,cAAc,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;oBACpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAE,EAAE,CAAC,CAAA;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,qCAAqC;IAC7B,UAAU,GAAG,CACnB,YAAqC,EACrC,WAA0B,EAC1B,IAAgB,EAChB,EAAE;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QACtC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACvC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC,CAAA;IAED,qCAAqC;IAC7B,YAAY,GAAG,CACrB,YAAqC,EACrC,WAA0B,EAC1B,IAAgB,EAChB,EAAE;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QACtC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,CAAA;CACF;AAOD,MAAM,eAAe;IACC;IAApB,YAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAEpD,mBAAmB,CACjB,WAAuB,EACvB,SAAqB;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;QACvD,MAAM,IAAI,GAAe,EAAE,CAAA;QAC3B,IAAI,wBAAwB,IAAI,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC,wBAAwB,CAAC,CAAA;QACtE,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;QACxD,MAAM,IAAI,GAAe,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAE7C,IAAI,aAAa,GAAG,KAAK,CAAA;QACzB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;gBACnB,SAAQ;YACV,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;YAC1D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CACpD,QAAQ,EACR,MAAM,EACN,QAAQ,CACT,CAAA;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,aAAa,GAAG,IAAI,CAAA;YACtB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA;YACrB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,CAAA;IACzD,CAAC;IAEO,iBAAiB,CACvB,QAAsB,EACtB,MAAoB,EACpB,QAA4B;QAE5B,gCAAgC;QAChC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;QAC9C,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IAClE,CAAC;IAEO,2BAA2B,CACjC,QAAsB,EACtB,MAAoB;QAEpB,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;IACxC,CAAC;IAEO,yBAAyB,CAC/B,QAAsB,EACtB,MAAoB;QAEpB,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QACxC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;IAChC,CAAC;IAEO,0BAA0B,CAChC,QAAsB,EACtB,MAAoB;QAEpB,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;IACnD,CAAC;IAEO,wBAAwB,CAC9B,QAAsB,EACtB,MAAoB,EACpB,QAAgB;QAEhB,MAAM,WAAW,GAAG,CAAC,IAAgB,EAAE,EAAE,CACvC,IAAI,CAAC,QAAQ,CAAuB,CAAA;QACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACxE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACnC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;YAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACjC,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"metadataDiff.js","sourceRoot":"","sources":["../../src/utils/metadataDiff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { MetadataRepository } from '../metadata/MetadataRepository.js';
2
+ import type { Work } from '../types/work.js';
3
+ import type ChangeSet from './changeSet.js';
4
+ import type { RenamePathPair } from './repoGitDiff.js';
5
+ /**
6
+ * Turns the `{ fromPath, toPath }` pairs git emitted for `-M` renames into
7
+ * `ChangeSet.recordRename(type, from, to)` calls by re-using the handler
8
+ * machinery to resolve each side to its Salesforce (type, member).
9
+ *
10
+ * Pairs where metadata resolution fails (ignored path, unknown type) or where
11
+ * the from/to side land on the same component are skipped — those reduce to
12
+ * normal add/delete or no-ops already covered by the handler pipeline.
13
+ */
14
+ export default class RenameResolver {
15
+ private readonly factory;
16
+ constructor(work: Work, metadata: MetadataRepository);
17
+ apply(changes: ChangeSet, pairs: readonly RenamePathPair[]): Promise<void>;
18
+ private _resolve;
19
+ }
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+ import { __decorate } from "tslib";
3
+ import { TAB } from '../constant/cliConstants.js';
4
+ import { ADDITION, DELETION } from '../constant/gitConstants.js';
5
+ import TypeHandlerFactory from '../service/typeHandlerFactory.js';
6
+ import { getErrorMessage } from './errorUtils.js';
7
+ import { log } from './LoggingDecorator.js';
8
+ import { Logger, lazy } from './LoggingService.js';
9
+ /**
10
+ * Turns the `{ fromPath, toPath }` pairs git emitted for `-M` renames into
11
+ * `ChangeSet.recordRename(type, from, to)` calls by re-using the handler
12
+ * machinery to resolve each side to its Salesforce (type, member).
13
+ *
14
+ * Pairs where metadata resolution fails (ignored path, unknown type) or where
15
+ * the from/to side land on the same component are skipped — those reduce to
16
+ * normal add/delete or no-ops already covered by the handler pipeline.
17
+ */
18
+ export default class RenameResolver {
19
+ factory;
20
+ constructor(work, metadata) {
21
+ this.factory = new TypeHandlerFactory(work, metadata);
22
+ }
23
+ async apply(changes, pairs) {
24
+ for (const pair of pairs) {
25
+ const resolved = await this._resolve(pair);
26
+ if (resolved) {
27
+ changes.recordRename(resolved.type, resolved.from, resolved.to);
28
+ }
29
+ }
30
+ }
31
+ async _resolve(pair) {
32
+ try {
33
+ const fromHandler = await this.factory.getTypeHandler(`${DELETION}${TAB}${pair.fromPath}`);
34
+ const toHandler = await this.factory.getTypeHandler(`${ADDITION}${TAB}${pair.toPath}`);
35
+ const from = fromHandler.getElementDescriptor();
36
+ const to = toHandler.getElementDescriptor();
37
+ if (from.type !== to.type)
38
+ return null;
39
+ if (from.member === to.member)
40
+ return null;
41
+ return { type: from.type, from: from.member, to: to.member };
42
+ }
43
+ catch (error) {
44
+ Logger.warn(lazy `RenameResolver._resolve: skipping ${pair.fromPath} -> ${pair.toPath}: ${() => getErrorMessage(error)}`);
45
+ return null;
46
+ }
47
+ }
48
+ }
49
+ __decorate([
50
+ log
51
+ ], RenameResolver.prototype, "apply", null);
52
+ //# sourceMappingURL=renameResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renameResolver.js","sourceRoot":"","sources":["../../src/utils/renameResolver.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAEhE,OAAO,kBAAkB,MAAM,kCAAkC,CAAA;AAGjE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAGlD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IAChB,OAAO,CAAoB;IAE5C,YAAY,IAAU,EAAE,QAA4B;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACvD,CAAC;IAGY,AAAN,KAAK,CAAC,KAAK,CAChB,OAAkB,EAClB,KAAgC;QAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,IAAoB;QAEpB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CACnD,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CACpC,CAAA;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CACjD,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAClC,CAAA;YACD,MAAM,IAAI,GAAG,WAAW,CAAC,oBAAoB,EAAE,CAAA;YAC/C,MAAM,EAAE,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAA;YAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YACtC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAA;YAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAA;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,IAAI,CAAA,qCAAqC,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAC5G,CAAA;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;CACF;AAlCc;IADZ,GAAG;2CAWH"}
@@ -1,12 +1,19 @@
1
1
  import GitAdapter from '../adapter/GitAdapter.js';
2
2
  import { MetadataRepository } from '../metadata/MetadataRepository.js';
3
3
  import type { Config } from '../types/config.js';
4
+ export type RenamePathPair = Readonly<{
5
+ fromPath: string;
6
+ toPath: string;
7
+ }>;
4
8
  export default class RepoGitDiff {
5
9
  protected readonly config: Config;
6
10
  protected readonly metadata: MetadataRepository;
7
11
  protected readonly gitAdapter: GitAdapter;
12
+ private renamePairs;
8
13
  constructor(config: Config, metadata: MetadataRepository);
9
14
  getLines(): Promise<string[]>;
15
+ getRenamePairs(): readonly RenamePathPair[];
16
+ protected _expandRenames(lines: string[]): string[];
10
17
  protected _treatResult(lines: string[]): Promise<string[]>;
11
18
  protected _getRenamedElements(lines: string[]): Set<string>;
12
19
  protected _spreadLinePerDiffType(lines: string[]): Map<any, any>;
@@ -1,20 +1,50 @@
1
1
  'use strict';
2
2
  import GitAdapter from '../adapter/GitAdapter.js';
3
- import { ADDITION, DELETION } from '../constant/gitConstants.js';
3
+ import { TAB } from '../constant/cliConstants.js';
4
+ import { ADDITION, DELETION, RENAMED } from '../constant/gitConstants.js';
4
5
  import { buildIgnoreHelper } from './ignoreHelper.js';
5
6
  export default class RepoGitDiff {
6
7
  config;
7
8
  metadata;
8
9
  gitAdapter;
10
+ renamePairs = [];
9
11
  constructor(config, metadata) {
10
12
  this.config = config;
11
13
  this.metadata = metadata;
12
14
  this.gitAdapter = GitAdapter.getInstance(this.config);
13
15
  }
14
16
  async getLines() {
15
- const lines = await this.gitAdapter.getDiffLines();
16
- const treatedLines = await this._treatResult(lines);
17
- return treatedLines;
17
+ const rawLines = await this.gitAdapter.getDiffLines();
18
+ const expanded = this._expandRenames(rawLines);
19
+ return await this._treatResult(expanded);
20
+ }
21
+ getRenamePairs() {
22
+ return this.renamePairs;
23
+ }
24
+ // git emits `R<score>\tfrom\tto` when -M detects a rename. We split each
25
+ // rename into the equivalent pair of A/D lines so every downstream handler
26
+ // continues to operate on a (status, path) tuple; the rename pair is
27
+ // captured separately for ChangeSet to re-group into its Rename bucket.
28
+ _expandRenames(lines) {
29
+ this.renamePairs = [];
30
+ const expanded = [];
31
+ for (const line of lines) {
32
+ if (!line.startsWith(RENAMED)) {
33
+ expanded.push(line);
34
+ continue;
35
+ }
36
+ const parts = line.split(TAB);
37
+ if (parts.length < 3) {
38
+ expanded.push(line);
39
+ continue;
40
+ }
41
+ const fromPath = parts[1];
42
+ const toPath = parts[2];
43
+ this.renamePairs.push({ fromPath, toPath });
44
+ expanded.push(`${DELETION}${TAB}${fromPath}`);
45
+ expanded.push(`${ADDITION}${TAB}${toPath}`);
46
+ }
47
+ return expanded;
18
48
  }
19
49
  async _treatResult(lines) {
20
50
  const renamedElements = this._getRenamedElements(lines);
@@ -1 +1 @@
1
- {"version":3,"file":"repoGitDiff.js","sourceRoot":"","sources":["../../src/utils/repoGitDiff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repoGitDiff.js","sourceRoot":"","sources":["../../src/utils/repoGitDiff.ts"],"names":[],"mappings":"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"}
package/messages/delta.md CHANGED
@@ -76,6 +76,10 @@ file listing paths to explicitly include for any destructive actions
76
76
 
77
77
  file containing additional metadata definitions to add to the registry
78
78
 
79
+ # flags.changes-manifest.summary
80
+
81
+ path to a JSON file grouping changed components by kind (add, modify, delete, rename); setting this flag also enables git rename detection
82
+
79
83
  # error.ParameterIsNotGitSHA
80
84
 
81
85
  --%s is not a valid sha pointer: '%s' (If in CI/CD context, check the fetch depth is properly set)
@@ -84,6 +88,14 @@ file containing additional metadata definitions to add to the registry
84
88
 
85
89
  '%s' is not a git repository
86
90
 
91
+ # error.ChangesManifestNotAFile
92
+
93
+ --changes-manifest must point to a file path, '%s' already exists and is not a regular file
94
+
95
+ # error.ChangesManifestStatFailed
96
+
97
+ --changes-manifest: cannot inspect '%s': %s
98
+
87
99
  # warning.ApiVersionOverridden
88
100
 
89
101
  API version '%s' is not supported, using '%s' instead