sfdx-git-delta 7.4.0 → 7.4.1
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/README.md +22 -3
- package/lib/adapter/GitAdapter.d.ts +5 -3
- package/lib/adapter/GitAdapter.js +71 -32
- package/lib/adapter/GitAdapter.js.map +1 -1
- package/lib/adapter/pathMatching.d.ts +2 -1
- package/lib/adapter/pathMatching.js +35 -3
- package/lib/adapter/pathMatching.js.map +1 -1
- package/lib/adapter/treeReader.d.ts +1 -0
- package/lib/adapter/treeReader.js +10 -0
- package/lib/adapter/treeReader.js.map +1 -1
- package/lib/adapter/tsgitErrorMap.d.ts +5 -4
- package/lib/adapter/tsgitErrorMap.js +12 -5
- package/lib/adapter/tsgitErrorMap.js.map +1 -1
- package/lib/constant/metadataConstants.d.ts +9 -1
- package/lib/constant/metadataConstants.js +17 -3
- package/lib/constant/metadataConstants.js.map +1 -1
- package/lib/main.js +66 -63
- package/lib/main.js.map +1 -1
- package/lib/metadata/MetadataRepositoryImpl.d.ts +14 -2
- package/lib/metadata/MetadataRepositoryImpl.js +192 -50
- package/lib/metadata/MetadataRepositoryImpl.js.map +1 -1
- package/lib/post-processor/includeProcessor.js +8 -9
- package/lib/post-processor/includeProcessor.js.map +1 -1
- package/lib/service/botHandler.js +1 -1
- package/lib/service/botHandler.js.map +1 -1
- package/lib/service/inBundleHandler.js +10 -23
- package/lib/service/inBundleHandler.js.map +1 -1
- package/lib/service/inFolderHandler.js +1 -2
- package/lib/service/inFolderHandler.js.map +1 -1
- package/lib/service/objectTranslationHandler.d.ts +0 -1
- package/lib/service/objectTranslationHandler.js +11 -4
- package/lib/service/objectTranslationHandler.js.map +1 -1
- package/lib/types/runContext.d.ts +16 -5
- package/lib/types/runContext.js +17 -5
- package/lib/types/runContext.js.map +1 -1
- package/lib/utils/__mocks__/LoggingService.d.ts +2 -7
- package/lib/utils/__mocks__/LoggingService.js.map +1 -1
- package/lib/utils/changeSet.d.ts +1 -0
- package/lib/utils/changeSet.js +26 -1
- package/lib/utils/changeSet.js.map +1 -1
- package/lib/utils/configValidator.d.ts +11 -1
- package/lib/utils/configValidator.js +133 -80
- package/lib/utils/configValidator.js.map +1 -1
- package/lib/utils/errorUtils.d.ts +5 -0
- package/lib/utils/errorUtils.js +8 -0
- package/lib/utils/errorUtils.js.map +1 -1
- package/lib/utils/messageSanitizer.d.ts +1 -0
- package/lib/utils/messageSanitizer.js +46 -0
- package/lib/utils/messageSanitizer.js.map +1 -1
- package/lib/utils/metadataDiff/xmlEventReader.js +1 -1
- package/lib/utils/metadataDiff/xmlEventReader.js.map +1 -1
- package/lib/utils/repoGitDiff.d.ts +17 -2
- package/lib/utils/repoGitDiff.js +93 -12
- package/lib/utils/repoGitDiff.js.map +1 -1
- package/lib/utils/treeIndexScope.js +5 -14
- package/lib/utils/treeIndexScope.js.map +1 -1
- package/lib/utils/treeReaderBuilder.d.ts +8 -0
- package/lib/utils/treeReaderBuilder.js +34 -0
- package/lib/utils/treeReaderBuilder.js.map +1 -0
- package/lib/utils/txmlAdapter.js +1 -1
- package/lib/utils/txmlAdapter.js.map +1 -1
- package/messages/delta.md +16 -5
- package/oclif.manifest.json +1 -1
- package/package.json +90 -49
package/lib/utils/repoGitDiff.js
CHANGED
|
@@ -3,6 +3,7 @@ import GitAdapter from '../adapter/GitAdapter.js';
|
|
|
3
3
|
import { TAB } from '../constant/cliConstants.js';
|
|
4
4
|
import { ADDITION, DELETION, RENAMED } from '../constant/gitConstants.js';
|
|
5
5
|
import { buildIgnoreHelper } from './ignoreHelper.js';
|
|
6
|
+
import { Logger, lazy } from './LoggingService.js';
|
|
6
7
|
export default class RepoGitDiff {
|
|
7
8
|
config;
|
|
8
9
|
metadata;
|
|
@@ -17,6 +18,12 @@ export default class RepoGitDiff {
|
|
|
17
18
|
changesSeen: 0,
|
|
18
19
|
linesYielded: 0,
|
|
19
20
|
};
|
|
21
|
+
// Set when the `to` listing could not be read while held additions were
|
|
22
|
+
// still pending, so the run can tell the user its move detection was
|
|
23
|
+
// degraded instead of silently falling back to the uncancelled output.
|
|
24
|
+
// Reset per getLines() call, like the verdict above, and read after the
|
|
25
|
+
// diff is drained.
|
|
26
|
+
probeFailure;
|
|
20
27
|
constructor(config, metadata) {
|
|
21
28
|
this.config = config;
|
|
22
29
|
this.metadata = metadata;
|
|
@@ -26,8 +33,9 @@ export default class RepoGitDiff {
|
|
|
26
33
|
* Streams the filtered, rename-expanded diff lines. Yields A/M lines as
|
|
27
34
|
* they arrive from git so handlers can start working immediately; D
|
|
28
35
|
* lines are buffered until upstream EOF because the deleted-renamed
|
|
29
|
-
* cancellation rule needs the full A-name set
|
|
30
|
-
*
|
|
36
|
+
* cancellation rule needs the full A-name set — including ignored
|
|
37
|
+
* additions, which are held and resolved against the `to` tree at EOF —
|
|
38
|
+
* before any D line can be classified.
|
|
31
39
|
*
|
|
32
40
|
* Rename pairs are captured along the way and exposed via
|
|
33
41
|
* getRenamePairs() once iteration completes.
|
|
@@ -36,8 +44,10 @@ export default class RepoGitDiff {
|
|
|
36
44
|
this.renamePairs = [];
|
|
37
45
|
this.diffScopeVerdict.changesSeen = 0;
|
|
38
46
|
this.diffScopeVerdict.linesYielded = 0;
|
|
47
|
+
this.probeFailure = undefined;
|
|
39
48
|
const ignoreHelper = await buildIgnoreHelper(this.config);
|
|
40
49
|
const additionNames = new Set();
|
|
50
|
+
const heldAdditionNames = new Set();
|
|
41
51
|
const deferredDeletions = [];
|
|
42
52
|
for await (const rawLine of this.gitAdapter.streamDiffLines({
|
|
43
53
|
spec: this.diffSpec(),
|
|
@@ -52,33 +62,55 @@ export default class RepoGitDiff {
|
|
|
52
62
|
/* v8 ignore next -- defensive: upstream RepoGitDiff already filters non-metadata paths via _expandRename, but kept as safety net */
|
|
53
63
|
if (!this.metadata.has(expanded))
|
|
54
64
|
continue;
|
|
55
|
-
|
|
56
|
-
continue;
|
|
57
|
-
// Stryker disable ConditionalExpression -- equivalent: else-if for DELETION; flipping to true treats any non-ADDITION as a deferred deletion, but only A/M/D lines reach this branch (renames are decomposed by _expandRename), so M lines hit the else (yield directly)
|
|
65
|
+
const kept = ignoreHelper.keep(expanded);
|
|
58
66
|
if (expanded.startsWith(ADDITION)) {
|
|
59
|
-
|
|
67
|
+
const name = this._extractComparisonName(expanded);
|
|
68
|
+
// An ignored addition is held rather than dropped: it may be the
|
|
69
|
+
// destination of a move into the ignore set, which can only be
|
|
70
|
+
// told from a stale copy once the whole diff has been seen.
|
|
71
|
+
if (!kept) {
|
|
72
|
+
heldAdditionNames.add(name);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
additionNames.add(name);
|
|
60
76
|
yield expanded;
|
|
61
77
|
}
|
|
78
|
+
else if (!kept) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
62
81
|
else if (expanded.startsWith(DELETION)) {
|
|
63
82
|
// Defer: the D line might cancel against an A line we haven't
|
|
64
83
|
// seen yet (rename-collapse case).
|
|
65
|
-
deferredDeletions.push(
|
|
84
|
+
deferredDeletions.push({
|
|
85
|
+
line: expanded,
|
|
86
|
+
name: this._extractComparisonName(expanded),
|
|
87
|
+
});
|
|
66
88
|
}
|
|
67
89
|
else {
|
|
68
90
|
yield expanded;
|
|
69
91
|
}
|
|
70
|
-
// Stryker restore ConditionalExpression
|
|
71
92
|
}
|
|
72
93
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
94
|
+
const vouching = await this._vouchingHeldNames(heldAdditionNames, deferredDeletions, additionNames, ignoreHelper);
|
|
95
|
+
if (vouching.size > 0) {
|
|
96
|
+
// A cancelled deletion appears in neither manifest, so without this
|
|
97
|
+
// line a debug run cannot explain why a destructive entry is missing.
|
|
98
|
+
Logger.debug(lazy `getLines: held addition(s) '${[...vouching].join("', '")}' survive only under ignored paths at '${this.config.to}', cancelling their deletions`);
|
|
99
|
+
}
|
|
100
|
+
for (const name of vouching)
|
|
101
|
+
additionNames.add(name);
|
|
102
|
+
for (const { line, name } of deferredDeletions) {
|
|
103
|
+
if (!additionNames.has(name))
|
|
104
|
+
yield line;
|
|
77
105
|
}
|
|
78
106
|
}
|
|
79
107
|
getRenamePairs() {
|
|
80
108
|
return this.renamePairs;
|
|
81
109
|
}
|
|
110
|
+
// Meaningful only once the diff is drained, like getUnmatchedSourceScopes().
|
|
111
|
+
getHeldAdditionProbeFailure() {
|
|
112
|
+
return this.probeFailure;
|
|
113
|
+
}
|
|
82
114
|
getUnmatchedSourceScopes() {
|
|
83
115
|
return this.gitAdapter.getUnmatchedSourceScopes(this.diffScopeVerdict, this.config.source);
|
|
84
116
|
}
|
|
@@ -106,6 +138,55 @@ export default class RepoGitDiff {
|
|
|
106
138
|
_extractComparisonName(line) {
|
|
107
139
|
return this.metadata.getFullyQualifiedName(line).toLocaleLowerCase();
|
|
108
140
|
}
|
|
141
|
+
// A held name vouches for its component only when nothing of that
|
|
142
|
+
// component is visible at `to`: a component still alive under an
|
|
143
|
+
// unignored path keeps its deletions, because the ignored copy is then a
|
|
144
|
+
// stale duplicate rather than a move into the ignore set.
|
|
145
|
+
async _vouchingHeldNames(held, deferred, registered, ignoreHelper) {
|
|
146
|
+
// A name a kept addition already registered is cancelled whatever the
|
|
147
|
+
// tree says, so excluding it keeps the read to the names whose answer
|
|
148
|
+
// can still change an outcome.
|
|
149
|
+
const candidates = new Set(deferred
|
|
150
|
+
.map(({ name }) => name)
|
|
151
|
+
.filter(name => held.has(name) && !registered.has(name)));
|
|
152
|
+
if (candidates.size === 0)
|
|
153
|
+
return candidates;
|
|
154
|
+
const visible = await this._visibleNamesAtTo(candidates, ignoreHelper);
|
|
155
|
+
return new Set([...candidates].filter(name => !visible.has(name)));
|
|
156
|
+
}
|
|
157
|
+
// Visibility is decided by the global ignore, never the destructive one:
|
|
158
|
+
// the question is whether sgd would still treat a file of the component
|
|
159
|
+
// as live source, which is the A/M routing.
|
|
160
|
+
async _visibleNamesAtTo(candidates, ignoreHelper) {
|
|
161
|
+
const listing = await this._listFilesAt(this.config.to);
|
|
162
|
+
if (!listing) {
|
|
163
|
+
// Fail closed: a tree that cannot be read lets nothing vouch, so a
|
|
164
|
+
// read failure keeps the uncancelled output rather than silently
|
|
165
|
+
// suppressing a real deletion. Recorded so the run can warn — a
|
|
166
|
+
// degraded result the user never sees is the failure worth avoiding.
|
|
167
|
+
this.probeFailure = { candidateCount: candidates.size };
|
|
168
|
+
Logger.debug(lazy `_visibleNamesAtTo: '${this.config.to}' could not be listed, ${candidates.size} candidate component(s) cannot vouch`);
|
|
169
|
+
return candidates;
|
|
170
|
+
}
|
|
171
|
+
const visible = new Set();
|
|
172
|
+
for (const path of listing) {
|
|
173
|
+
const line = `${ADDITION}${TAB}${path}`;
|
|
174
|
+
if (!this.metadata.has(line))
|
|
175
|
+
continue;
|
|
176
|
+
const name = this._extractComparisonName(line);
|
|
177
|
+
if (candidates.has(name) && ignoreHelper.keep(line))
|
|
178
|
+
visible.add(name);
|
|
179
|
+
}
|
|
180
|
+
return visible;
|
|
181
|
+
}
|
|
182
|
+
// The one seam that touches git. `undefined` is buildTreeIndex's own
|
|
183
|
+
// failure signal and passes through untouched. Protected so a benchmark
|
|
184
|
+
// can drive the visibility pass over a synthetic listing without a
|
|
185
|
+
// repository, the way the cancellation-key bench reaches the key.
|
|
186
|
+
async _listFilesAt(revision) {
|
|
187
|
+
const index = await this.gitAdapter.buildTreeIndex(revision, this.config.source);
|
|
188
|
+
return index?.getFilesPath(this.config.source);
|
|
189
|
+
}
|
|
109
190
|
// Built fresh on every getLines() call (not cached at construction) so a
|
|
110
191
|
// later rewrite of config.from (ConfigValidator resolves SHAs after
|
|
111
192
|
// RepoGitDiff may already exist) is still visible when the diff runs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repoGitDiff.js","sourceRoot":"","sources":["../../src/utils/repoGitDiff.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,UAGN,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIzE,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"repoGitDiff.js","sourceRoot":"","sources":["../../src/utils/repoGitDiff.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
import { PATH_SEP } from '../constant/fsConstants.js';
|
|
3
3
|
import { GIT_DIFF_TYPE_REGEX } from '../constant/gitConstants.js';
|
|
4
4
|
import { CONTENT_CONTAINER_ADAPTERS } from '../constant/metadataConstants.js';
|
|
5
|
-
// Bundle-style adapters get a deeper scope slice in scopeForType than the
|
|
6
|
-
// flat mixedContent containers, so this stays distinct from the broader
|
|
7
|
-
// CONTENT_CONTAINER_ADAPTERS membership used by needsTreeIndex.
|
|
8
|
-
const BUNDLE_ADAPTERS = new Set(['bundle', 'digitalExperience']);
|
|
9
5
|
const TREE_INDEX_XML_NAMES = new Set([
|
|
10
6
|
'CustomObject',
|
|
11
7
|
'Dashboard',
|
|
@@ -35,20 +31,15 @@ const buildParentIndex = (metadata) => {
|
|
|
35
31
|
}
|
|
36
32
|
return index;
|
|
37
33
|
};
|
|
34
|
+
// Every tree-index-needing type scopes to its type directory, regardless of
|
|
35
|
+
// adapter: a bundle's liveness check (pathExists on its component directory)
|
|
36
|
+
// answers identically whether the index was built from just that component
|
|
37
|
+
// or from the whole type directory, so there is no need to slice deeper for
|
|
38
|
+
// bundle-style adapters.
|
|
38
39
|
const scopeForType = (parts, type) => {
|
|
39
40
|
const dirIndex = parts.indexOf(type.directoryName);
|
|
40
|
-
// Stryker disable next-line ConditionalExpression -- equivalent: dir-not-found guard; flipping to false continues with dirIndex=-1 and slice(0, 0) returns an empty string that the caller's scope set absorbs as a useless entry not asserted on
|
|
41
41
|
if (dirIndex < 0)
|
|
42
42
|
return null;
|
|
43
|
-
if (type.adapter && BUNDLE_ADAPTERS.has(type.adapter)) {
|
|
44
|
-
// Stryker disable next-line ConditionalExpression,EqualityOperator,ArithmeticOperator -- equivalent: bundle-vs-non-bundle slice gate; for bundles the scope expands by one segment if the path has another segment, otherwise stays at dirIndex+1; the mutants flip the boundary by one position which still produces a valid scope path that the test surface accepts as either the parent dir or the bundle dir — both are observed as the same set membership in scope
|
|
45
|
-
if (dirIndex + 1 < parts.length) {
|
|
46
|
-
return parts.slice(0, dirIndex + 2).join(PATH_SEP);
|
|
47
|
-
}
|
|
48
|
-
// Stryker disable next-line MethodExpression -- equivalent: this branch fires only when `dirIndex + 1 >= parts.length`, i.e. parts ends at the type directory; in that case `parts.slice(0, dirIndex + 1)` is reference-distinct but value-identical to `parts`, so the join produces the same string
|
|
49
|
-
return parts.slice(0, dirIndex + 1).join(PATH_SEP);
|
|
50
|
-
}
|
|
51
|
-
// Stryker disable next-line MethodExpression -- equivalent: parts.slice(0, dirIndex + 1).join(PATH_SEP) computes the scope path; mutating slice to return parts wholesale would yield the full path joined, but the consuming Set absorbs both forms and tests assert on the directory-prefix membership which both forms satisfy
|
|
52
43
|
return parts.slice(0, dirIndex + 1).join(PATH_SEP);
|
|
53
44
|
};
|
|
54
45
|
export const computeTreeIndexScope = (lines, metadata) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeIndexScope.js","sourceRoot":"","sources":["../../src/utils/treeIndexScope.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAI7E,
|
|
1
|
+
{"version":3,"file":"treeIndexScope.js","sourceRoot":"","sources":["../../src/utils/treeIndexScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type GitAdapter from '../adapter/GitAdapter.js';
|
|
2
|
+
import { type TreeReader } from '../adapter/treeReader.js';
|
|
3
|
+
import type { Config } from '../types/config.js';
|
|
4
|
+
export type TreeReaderBuildResult = Readonly<{
|
|
5
|
+
trees: TreeReader;
|
|
6
|
+
unindexed: readonly string[];
|
|
7
|
+
}>;
|
|
8
|
+
export declare const buildRunTreeReader: (gitAdapter: Pick<GitAdapter, 'buildTreeIndex'>, config: Pick<Config, 'to' | 'from'>, scopePaths: readonly string[]) => Promise<TreeReaderBuildResult>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import { createTreeReader, EMPTY_TREE_READER, } from '../adapter/treeReader.js';
|
|
3
|
+
// One TreeIndex per revision, built once per run under the run's own scope
|
|
4
|
+
// and threaded to every reader through RunContext rather than cached on
|
|
5
|
+
// GitAdapter: a reader can never see a different scope than the one this
|
|
6
|
+
// build ran under (a shared, scope-keyed cache — the design this replaced —
|
|
7
|
+
// is an implicit contract that drifts). An empty scope means the run
|
|
8
|
+
// touches nothing index-backed, so no tree is walked at all — nothing was
|
|
9
|
+
// attempted, so nothing is reported unindexed.
|
|
10
|
+
export const buildRunTreeReader = async (gitAdapter, config, scopePaths) => {
|
|
11
|
+
if (scopePaths.length === 0) {
|
|
12
|
+
return { trees: EMPTY_TREE_READER, unindexed: [] };
|
|
13
|
+
}
|
|
14
|
+
const [toIndex, fromIndex] = await Promise.all([
|
|
15
|
+
gitAdapter.buildTreeIndex(config.to, scopePaths),
|
|
16
|
+
gitAdapter.buildTreeIndex(config.from, scopePaths),
|
|
17
|
+
]);
|
|
18
|
+
const entries = new Map();
|
|
19
|
+
const unindexed = [];
|
|
20
|
+
if (toIndex) {
|
|
21
|
+
entries.set(config.to, toIndex);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
unindexed.push(config.to);
|
|
25
|
+
}
|
|
26
|
+
if (fromIndex) {
|
|
27
|
+
entries.set(config.from, fromIndex);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
unindexed.push(config.from);
|
|
31
|
+
}
|
|
32
|
+
return { trees: createTreeReader(entries), unindexed };
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=treeReaderBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeReaderBuilder.js","sourceRoot":"","sources":["../../src/utils/treeReaderBuilder.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAGZ,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,0BAA0B,CAAA;AAajC,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AACzE,4EAA4E;AAC5E,qEAAqE;AACrE,0EAA0E;AAC1E,+CAA+C;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,UAA8C,EAC9C,MAAmC,EACnC,UAA6B,EACG,EAAE;IAClC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;IACpD,CAAC;IACD,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC;QAChD,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;KACnD,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC5C,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;AACxD,CAAC,CAAA"}
|
package/lib/utils/txmlAdapter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
import { parse as txmlParse } from 'txml';
|
|
2
|
+
import { parse as txmlParse } from 'txml/txml';
|
|
3
3
|
import { ATTRIBUTE_PREFIX, XML_HEADER_ATTRIBUTE_KEY, } from './xmlHelper.js';
|
|
4
4
|
// Stryker disable next-line StringLiteral -- equivalent: '#comment' is the internal sentinel key for comment children; mutating to "" produces an empty key that addComment still uses consistently and the test surface only checks for the presence of the comment via the same constant
|
|
5
5
|
const COMMENT_KEY = '#comment';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txmlAdapter.js","sourceRoot":"","sources":["../../src/utils/txmlAdapter.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"txmlAdapter.js","sourceRoot":"","sources":["../../src/utils/txmlAdapter.ts"],"names":[],"mappings":"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"}
|
package/messages/delta.md
CHANGED
|
@@ -94,6 +94,10 @@ path to a JSON file grouping changed components by kind (add, modify, delete, re
|
|
|
94
94
|
|
|
95
95
|
--%s is not a valid sha pointer: '%s' (If in CI/CD context, check the fetch depth is properly set)
|
|
96
96
|
|
|
97
|
+
# error.ParameterIsNotCommit
|
|
98
|
+
|
|
99
|
+
--%s must resolve to a commit: '%s' resolves to a %s. Use a commit sha, a branch, or a tag that points to a commit
|
|
100
|
+
|
|
97
101
|
# error.MergeBaseNotFound
|
|
98
102
|
|
|
99
103
|
no merge base found between --from '%s' and --to '%s' (If in CI/CD context, check the fetch depth is properly set)
|
|
@@ -130,10 +134,6 @@ no merge base found between --from '%s' and --to '%s' (If in CI/CD context, chec
|
|
|
130
134
|
|
|
131
135
|
--source-dir does not accept git pathspec magic (e.g. ':(exclude)', ':!'); use a literal repository-relative path instead (received: '%s')
|
|
132
136
|
|
|
133
|
-
# warning.ApiVersionOverridden
|
|
134
|
-
|
|
135
|
-
API version '%s' is not supported, using '%s' instead
|
|
136
|
-
|
|
137
137
|
# warning.ApiVersionDefaulted
|
|
138
138
|
|
|
139
139
|
No API version found (no --api-version flag, no sourceApiVersion in sfdx-project.json), using '%s'
|
|
@@ -142,6 +142,10 @@ No API version found (no --api-version flag, no sourceApiVersion in sfdx-project
|
|
|
142
142
|
|
|
143
143
|
Unable to resolve the Salesforce API version. Provide one with --api-version, or set "sourceApiVersion" in sfdx-project.json. Caused by: %s
|
|
144
144
|
|
|
145
|
+
# error.ApiVersionLookupUnusable
|
|
146
|
+
|
|
147
|
+
The appexchange org returned '%s', which is not a usable Salesforce API version
|
|
148
|
+
|
|
145
149
|
# warning.MalformedXML
|
|
146
150
|
|
|
147
151
|
could not process '%s', please ensure it is properly formatted xml in both '%s' and '%s' revision
|
|
@@ -174,4 +178,11 @@ Failure
|
|
|
174
178
|
|
|
175
179
|
💡 Enjoying sfdx-git-delta?
|
|
176
180
|
Your contribution helps us provide fast support 🚀 and high quality features 🔥
|
|
177
|
-
Become a sponsor: https://github.com/sponsors/scolladon 💙
|
|
181
|
+
Become a sponsor: https://github.com/sponsors/scolladon 💙
|
|
182
|
+
# warning.IgnoredMoveCheckSkipped
|
|
183
|
+
|
|
184
|
+
Could not read the file list at '%s', so %s component(s) moved into an ignored directory could not be confirmed as moves and are reported as deletions. Check that --to resolves to a readable commit.
|
|
185
|
+
|
|
186
|
+
# warning.TreeIndexUnavailable
|
|
187
|
+
|
|
188
|
+
Could not build the file tree index for '%s', so components that still exist there may be listed in destructiveChanges.xml as deleted. Check that the commit's tree objects are present locally (a partial clone created with --filter may not have them).
|
package/oclif.manifest.json
CHANGED