sfdx-git-delta 7.3.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.
Files changed (64) hide show
  1. package/README.md +23 -4
  2. package/lib/adapter/GitAdapter.d.ts +9 -4
  3. package/lib/adapter/GitAdapter.js +147 -52
  4. package/lib/adapter/GitAdapter.js.map +1 -1
  5. package/lib/adapter/pathMatching.d.ts +2 -1
  6. package/lib/adapter/pathMatching.js +35 -3
  7. package/lib/adapter/pathMatching.js.map +1 -1
  8. package/lib/adapter/treeReader.d.ts +1 -0
  9. package/lib/adapter/treeReader.js +10 -0
  10. package/lib/adapter/treeReader.js.map +1 -1
  11. package/lib/adapter/tsgitErrorMap.d.ts +6 -3
  12. package/lib/adapter/tsgitErrorMap.js +55 -16
  13. package/lib/adapter/tsgitErrorMap.js.map +1 -1
  14. package/lib/constant/metadataConstants.d.ts +9 -1
  15. package/lib/constant/metadataConstants.js +17 -3
  16. package/lib/constant/metadataConstants.js.map +1 -1
  17. package/lib/main.js +66 -63
  18. package/lib/main.js.map +1 -1
  19. package/lib/metadata/MetadataRepositoryImpl.d.ts +14 -2
  20. package/lib/metadata/MetadataRepositoryImpl.js +192 -50
  21. package/lib/metadata/MetadataRepositoryImpl.js.map +1 -1
  22. package/lib/post-processor/includeProcessor.js +8 -9
  23. package/lib/post-processor/includeProcessor.js.map +1 -1
  24. package/lib/service/botHandler.js +1 -1
  25. package/lib/service/botHandler.js.map +1 -1
  26. package/lib/service/inBundleHandler.js +10 -23
  27. package/lib/service/inBundleHandler.js.map +1 -1
  28. package/lib/service/inFolderHandler.js +1 -2
  29. package/lib/service/inFolderHandler.js.map +1 -1
  30. package/lib/service/objectTranslationHandler.d.ts +0 -1
  31. package/lib/service/objectTranslationHandler.js +11 -4
  32. package/lib/service/objectTranslationHandler.js.map +1 -1
  33. package/lib/types/runContext.d.ts +16 -5
  34. package/lib/types/runContext.js +17 -5
  35. package/lib/types/runContext.js.map +1 -1
  36. package/lib/utils/__mocks__/LoggingService.d.ts +2 -7
  37. package/lib/utils/__mocks__/LoggingService.js.map +1 -1
  38. package/lib/utils/changeSet.d.ts +1 -0
  39. package/lib/utils/changeSet.js +26 -1
  40. package/lib/utils/changeSet.js.map +1 -1
  41. package/lib/utils/configValidator.d.ts +14 -1
  42. package/lib/utils/configValidator.js +144 -72
  43. package/lib/utils/configValidator.js.map +1 -1
  44. package/lib/utils/errorUtils.d.ts +8 -0
  45. package/lib/utils/errorUtils.js +14 -0
  46. package/lib/utils/errorUtils.js.map +1 -1
  47. package/lib/utils/messageSanitizer.d.ts +1 -0
  48. package/lib/utils/messageSanitizer.js +46 -0
  49. package/lib/utils/messageSanitizer.js.map +1 -1
  50. package/lib/utils/metadataDiff/xmlEventReader.js +1 -1
  51. package/lib/utils/metadataDiff/xmlEventReader.js.map +1 -1
  52. package/lib/utils/repoGitDiff.d.ts +17 -2
  53. package/lib/utils/repoGitDiff.js +93 -12
  54. package/lib/utils/repoGitDiff.js.map +1 -1
  55. package/lib/utils/treeIndexScope.js +5 -14
  56. package/lib/utils/treeIndexScope.js.map +1 -1
  57. package/lib/utils/treeReaderBuilder.d.ts +8 -0
  58. package/lib/utils/treeReaderBuilder.js +34 -0
  59. package/lib/utils/treeReaderBuilder.js.map +1 -0
  60. package/lib/utils/txmlAdapter.js +1 -1
  61. package/lib/utils/txmlAdapter.js.map +1 -1
  62. package/messages/delta.md +16 -5
  63. package/oclif.manifest.json +1 -1
  64. package/package.json +105 -49
package/README.md CHANGED
@@ -122,7 +122,7 @@ It's also important to implement a way to switch back to full deployment in case
122
122
 
123
123
  ### Prerequisites
124
124
 
125
- No `git` binary is required: the plugin reads the repository's git object store in-process.
125
+ No `git` binary is required: the plugin reads the repository's git object store in-process, including `--ref-format=reftable` and `--object-format=sha256` repositories (the latter isn't hosted by GitHub or GitLab today, so you're unlikely to run into one).
126
126
 
127
127
  **Node v22 or above is required**.
128
128
  To check if Salesforce CLI runs under a supported node version for SGD, run `sf --version`. You should see a node version of v22 or above to use SGD.
@@ -214,7 +214,7 @@ FLAG DESCRIPTIONS
214
214
  `--source-dir force-app` does not match `nested/force-app/...`.
215
215
  ```
216
216
 
217
- _See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v7.3.0/src/commands/sgd/source/delta.ts)_
217
+ _See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v7.4.1/src/commands/sgd/source/delta.ts)_
218
218
  <!-- commandsstop -->
219
219
 
220
220
  ### Windows users
@@ -269,7 +269,7 @@ It is the user responsibility to ensure LFS content is present when the plugin i
269
269
 
270
270
  ### Use cases
271
271
 
272
- Any git sha pointer is supported: commit sha, branch, tag, git expression (HEAD, etc.).
272
+ Any git sha pointer is supported as long as it resolves to a commit: commit sha, branch, tag (an annotated tag is followed to the commit it points at), git expression (`HEAD`, `HEAD~1`, etc.). A tree or blob expression such as `HEAD^{tree}` or `HEAD:path` is rejected with an error naming the flag and the value you typed.
273
273
 
274
274
  `--from` parameter is the base commit (the first, the oldest, the closest)
275
275
  `--to` parameter is the target commit (the last, the youngest, the farthest)
@@ -448,6 +448,21 @@ sf project deploy start -p change-sources
448
448
  The `--ignore-file [-i]` parameter allows you to specify an [ignore file](https://git-scm.com/docs/gitignore) to filter the
449
449
  element on the diff to ignore. SGD ignores every diff line matching the pattern from the ignore file specified in the `--ignore-file [-i]`. `package.xml` generation, `destructiveChanges.xml` generation and `--delta-generate` will ignore those lines.
450
450
 
451
+ Moving a component into a directory `--ignore-file [-i]` covers is treated as a move, not a deletion: SGD holds the ignored addition and, when nothing else of that component is visible at `--to`, cancels the matching deletion so neither manifest gets an entry. If the component still has a file outside the ignored patterns at `--to`, the ignored copy is stale and the deletion is reported as usual.
452
+
453
+ ```sh
454
+ # ignorefile
455
+ force-app/recycle-bin/**
456
+
457
+ $ git mv force-app/main/default/classes/AccountService.cls force-app/recycle-bin/classes/AccountService.cls
458
+ $ git mv force-app/main/default/classes/AccountService.cls-meta.xml force-app/recycle-bin/classes/AccountService.cls-meta.xml
459
+ $ git commit -m "retire AccountService"
460
+
461
+ $ sf sgd source delta --from HEAD~1 --ignore-file ignorefile
462
+ ```
463
+
464
+ Before this behavior, `destructiveChanges.xml` listed `ApexClass/AccountService` and `package.xml` was empty. Now both are empty: the class moved into a directory SGD ignores, it wasn't deleted.
465
+
451
466
  Sometimes you may need to have two different ignore policies. One for the `package.xml` and another one for `destructiveChanges.xml` files. This is where the `--ignore-destructive-file [-D]` option comes handy!
452
467
  Use the `--ignore-destructive-file` parameter to specify a dedicated ignore file to handle deletions. It will apply to metadata listed in the `destructiveChanges.xml`. In other words, this will override the `--ignore-file [-i]` parameter for deleted items.
453
468
 
@@ -466,6 +481,10 @@ $ sf sgd source delta --from commit --ignore-destructive-file destructiveignore
466
481
 
467
482
  ```
468
483
 
484
+ `--ignore-destructive-file [-D]` does not affect the move detection described above. Whether a moved addition can cancel its deletion is decided purely against the `--ignore-file [-i]` patterns — the same file that held the addition in the first place — never the destructive-only one. A permissive `--ignore-destructive-file [-D]` does not turn the move back into a destructive change: as long as the component has no file outside `--ignore-file [-i]`'s patterns at `--to`, the deletion still cancels.
485
+
486
+ If SGD cannot read the file listing at `--to`, the move check is skipped, the deletion is reported as usual, and SGD emits a warning noting the check could not run.
487
+
469
488
  Note: when only using the `--ignore-file [-i]` parameter (and not `--ignore-destructive-file [-D]`) the plugin will apply it to added/changed/deleted elements.
470
489
 
471
490
  ### Explicitly including specific files for inclusion or destruction regardless of diff
@@ -623,7 +642,7 @@ const work = await sgd({
623
642
  from: '', // (required) commit sha from where the diff is done. [default : git rev-list --max-parents=0 HEAD]
624
643
  mergeBase: false, // (required) resolve `from` to the merge base of `from`/`to` first. [default : false]
625
644
  output: '', // source package specific output. [default : "./output"]
626
- apiVersion: '', // salesforce API version. [default : latest]
645
+ apiVersion: undefined, // salesforce API version, as a number (e.g. 67). [default : sfdx-project.json "sourceApiVersion", else latest]
627
646
  repo: '', // git repository location. [default : "."]
628
647
  source: ['.'], // (required) one or more repo-relative folders to scope the diff to; '.' (or an empty array) means the whole repository
629
648
  })
@@ -21,20 +21,25 @@ export type DiffRequest = Readonly<{
21
21
  scopes: readonly Pathspec[];
22
22
  }>;
23
23
  export default class GitAdapter implements GitBlobReader {
24
- private readonly repo;
24
+ private readonly key;
25
+ private readonly repoPath;
25
26
  private static instances;
26
27
  private static keyFor;
27
28
  static getInstance(config: Config): GitAdapter;
28
29
  static closeAll(): Promise<void>;
29
- protected readonly blobIdIndex: Map<string, Map<string, ObjectId>>;
30
+ protected readonly blobIdIndex: Map<string, Promise<ReadonlyMap<string, ObjectId>>>;
30
31
  private repoHandle;
31
32
  private constructor();
33
+ get repositoryKey(): string;
34
+ private mapError;
32
35
  protected getRepo(): Promise<Repository>;
33
36
  close(): Promise<void>;
34
- parseRev(ref: string): Promise<string>;
37
+ resolveCommit(ref: string): Promise<string>;
35
38
  buildTreeIndex(revision: string, scopePaths: readonly string[]): Promise<TreeIndex | undefined>;
36
39
  protected peelToCommit(oid: ObjectId, label: string): Promise<Commit>;
37
- protected indexRevision(revision: string): Promise<Map<string, ObjectId>>;
40
+ private peelRevision;
41
+ protected indexRevision(revision: string): Promise<ReadonlyMap<string, ObjectId>>;
42
+ protected flattenRevision(revision: string): Promise<ReadonlyMap<string, ObjectId>>;
38
43
  getMergeBase(from: string, to: string): Promise<string | undefined>;
39
44
  getFirstCommitRef(): Promise<string>;
40
45
  protected resolveObjectId(forRef: FileGitRef): Promise<ObjectId>;
@@ -9,7 +9,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
9
9
  * (zero-dependency, no `git` binary, no subprocess). Object-store reads,
10
10
  * diffs, tree walks and blob content all go through the tsgit facade:
11
11
  *
12
- * git rev-parse --verify <ref> -> repo.revParse(ref)
12
+ * git rev-parse --verify <ref>^{commit} -> repo.revParse(ref) + peelToCommit
13
13
  * git ls-tree --name-only -r <rev> -> repo.primitives.flattenTree
14
14
  * git rev-list --max-parents=0 HEAD -> repo.primitives.walkCommits
15
15
  * git cat-file --batch / blob -> repo.primitives.readBlob / streamBlob
@@ -35,18 +35,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
35
35
  import { once } from 'node:events';
36
36
  import { createReadStream } from 'node:fs';
37
37
  import { readFile, stat } from 'node:fs/promises';
38
- import { join } from 'node:path/posix';
38
+ import { join, resolve } from 'node:path';
39
39
  import { PassThrough, Readable } from 'node:stream';
40
40
  import { openRepository, } from '@scolladon/tsgit';
41
41
  import { UTF8_ENCODING } from '../constant/fsConstants.js';
42
42
  import { HEAD } from '../constant/gitConstants.js';
43
- import { getErrorMessage } from '../utils/errorUtils.js';
43
+ import { getErrorMessage, NotACommitError } from '../utils/errorUtils.js';
44
44
  import { sanitizePath, treatPathSep } from '../utils/fsUtils.js';
45
45
  import { getLFSObjectContentPath, isLFS } from '../utils/gitLfsHelper.js';
46
46
  import { log } from '../utils/LoggingDecorator.js';
47
47
  import { Logger, lazy } from '../utils/LoggingService.js';
48
48
  import { EscalateToStreamingSignal, SIZE_THRESHOLD, } from './gitBlobReader.js';
49
- import { buildLiteralMatcher, buildPathspecMatcher, hasRootScope, inScope, nonRootScopes, ROOT_PATHS, toDiffLines, } from './pathMatching.js';
49
+ import { buildLiteralMatcher, buildPathspecMatcher, buildScopeMatcher, hasRootScope, nonRootScopes, ROOT_PATHS, toDiffLines, } from './pathMatching.js';
50
50
  import { TreeIndex } from './treeIndex.js';
51
51
  import { mapTsgitError } from './tsgitErrorMap.js';
52
52
  // walkTree yields directories and gitlinks too; only blob-bearing modes
@@ -65,7 +65,8 @@ const IGNORE_WHITESPACE_OPTIONS = {
65
65
  const LFS_MAGIC = Buffer.from('version https://git-lfs.github.com/spec/v1\n');
66
66
  const LFS_POINTER_CAP = 1024;
67
67
  export default class GitAdapter {
68
- repo;
68
+ key;
69
+ repoPath;
69
70
  static instances = new Map();
70
71
  // Normalises the pool key the same way ConfigValidator eventually
71
72
  // normalises config.repo (fsUtils#sanitizePath), so two configs that
@@ -73,13 +74,24 @@ export default class GitAdapter {
73
74
  // still resolve to one instance. ConfigValidator pools an adapter on the
74
75
  // raw config.repo before _sanitizeConfig runs, so without this a single
75
76
  // `--repo-dir ./repo` invocation would still allocate two instances.
76
- static keyFor(config) {
77
- return sanitizePath(config.repo);
77
+ // Takes the already-resolved (platform-form) path rather than resolving
78
+ // again, so the key and the repository path it is derived from can never
79
+ // drift onto two different resolutions of the same config.repo.
80
+ static keyFor(resolvedRepo) {
81
+ return sanitizePath(resolvedRepo);
78
82
  }
79
83
  static getInstance(config) {
80
- const key = GitAdapter.keyFor(config);
84
+ // Resolved to an absolute path first: tsgit's openRepository validates
85
+ // `cwd` eagerly and refuses anything relative outright, which sgd's own
86
+ // CLI default ('./') would otherwise be. This platform-form value is
87
+ // threaded straight through to repository reads (see getRepo and the
88
+ // LFS reads below); the pool key instead takes its posix-sanitized
89
+ // form, since sanitizePath's separator normalisation — safe for an
90
+ // identity key — would corrupt a win32 UNC root if reads used it too.
91
+ const resolvedRepo = resolve(config.repo);
92
+ const key = GitAdapter.keyFor(resolvedRepo);
81
93
  if (!GitAdapter.instances.has(key)) {
82
- GitAdapter.instances.set(key, new GitAdapter(key));
94
+ GitAdapter.instances.set(key, new GitAdapter(key, resolvedRepo));
83
95
  }
84
96
  return GitAdapter.instances.get(key);
85
97
  }
@@ -89,37 +101,93 @@ export default class GitAdapter {
89
101
  }
90
102
  GitAdapter.instances.clear();
91
103
  }
92
- // Per revision: repo-relative path -> blob ObjectId. The tsgit counterpart
93
- // of `git cat-file --batch` oid:path resolution. Deterministic per
94
- // revision and safe to share across every run against this repository
95
- // unlike the tree index (see buildTreeIndex), nothing here varies by
96
- // caller-supplied scope.
104
+ // Per revision: the pending (or settled) build of repo-relative path ->
105
+ // blob ObjectId. Stored as the promise, not the resolved map, and written
106
+ // before the first await, so every caller that arrives while the first
107
+ // walk is still running awaits that same walk instead of starting its own
108
+ // (the DiffLineInterpreter queue and IOExecutor both fan out at
109
+ // getConcurrencyThreshold(); buildRunTreeReader asks for `to` and `from`
110
+ // under one Promise.all). Deterministic per revision and safe to share
111
+ // across every run against this repository — unlike the tree index (see
112
+ // buildTreeIndex), nothing here varies by caller-supplied scope. The map
113
+ // is handed out read-only: one instance is shared by every caller, and two
114
+ // consumers iterate it across an await.
97
115
  blobIdIndex;
98
116
  repoHandle = null;
99
- constructor(repo) {
100
- this.repo = repo;
117
+ // `key` identifies the repository — the pool map key and every
118
+ // user-facing message (mapTsgitError, the debug log below) render it, so
119
+ // a repository that fails the same way twice always reads identically.
120
+ // `repoPath` is the platform-native path actually opened and read from
121
+ // (openRepository's cwd, the LFS reads) — never sanitized, since
122
+ // sanitizePath's posix-only normalisation would corrupt a win32 UNC root.
123
+ constructor(key, repoPath) {
124
+ this.key = key;
125
+ this.repoPath = repoPath;
101
126
  this.blobIdIndex = new Map();
102
127
  }
128
+ // Read by ConfigValidator to render `error.PathIsNotGit` from the exact
129
+ // same absolute value this adapter renders its own repository-refusal
130
+ // messages from (see mapError below), so the two collapse to one sentence
131
+ // through validateConfig's `new Set(errors)` dedupe instead of reporting
132
+ // the same missing repository twice in different forms.
133
+ get repositoryKey() {
134
+ return this.key;
135
+ }
136
+ // Binds the repository argument every mapTsgitError call site needs so a
137
+ // transposition between it and the adjacent `context: string` argument
138
+ // can no longer compile — mapTsgitError itself stays a pure 3-argument
139
+ // function for its own unit surface.
140
+ mapError(error, context) {
141
+ return mapTsgitError(error, context, this.key);
142
+ }
103
143
  getRepo() {
104
144
  if (!this.repoHandle) {
105
- this.repoHandle = openRepository({ cwd: this.repo });
145
+ // sgd only ever reads a repository (revParse, diff, tree walks,
146
+ // blobs) and never runs a verb that fires a hook or a merge driver,
147
+ // so both execution surfaces are switched off outright. The
148
+ // ownership gate is opted out of for the same reason: it would
149
+ // refuse the container-mounted checkouts README.md documents as
150
+ // supported, and tsgit cannot see the `safe.directory` those users
151
+ // already configured for git itself.
152
+ this.repoHandle = openRepository({
153
+ cwd: this.repoPath,
154
+ trust: 'always',
155
+ hooks: false,
156
+ command: false,
157
+ });
106
158
  }
107
159
  return this.repoHandle;
108
160
  }
109
161
  async close() {
110
- if (this.repoHandle) {
111
- const repo = await this.repoHandle;
162
+ if (!this.repoHandle)
163
+ return;
164
+ const handle = this.repoHandle;
165
+ // A failed open is cached like any other handle, so awaiting it here
166
+ // would rethrow the raw engine error out of main.ts's finally and
167
+ // replace the mapped error the caller already reported. There is
168
+ // nothing to dispose when the open never produced a repository.
169
+ this.repoHandle = null;
170
+ try {
171
+ const repo = await handle;
112
172
  await repo.dispose();
113
- this.repoHandle = null;
173
+ }
174
+ catch (error) {
175
+ Logger.debug(lazy `GitAdapter.close: releasing '${this.key}' failed: ${() => getErrorMessage(error)}`);
114
176
  }
115
177
  }
116
- async parseRev(ref) {
178
+ // Equivalent to `git rev-parse --verify <ref>^{commit}`: resolves the
179
+ // revision and follows any tag chain down to the commit it names, so an
180
+ // annotated tag is accepted while a tree-ish or blob (`HEAD^{tree}`,
181
+ // `HEAD:path`, a bare tree oid, a tag pointing at a tree) is refused here
182
+ // instead of being accepted and left to degrade every later read. Returns
183
+ // the peeled COMMIT id, not the tag object's, so every consumer downstream
184
+ // is handed a commit.
185
+ async resolveCommit(ref) {
117
186
  try {
118
- const repo = await this.getRepo();
119
- return await repo.revParse(ref);
187
+ return (await this.peelRevision(ref)).id;
120
188
  }
121
189
  catch (error) {
122
- throw mapTsgitError(error, ref);
190
+ throw this.mapError(error, ref);
123
191
  }
124
192
  }
125
193
  // Builds and RETURNS a tree index for (revision, scopePaths) instead of
@@ -134,8 +202,9 @@ export default class GitAdapter {
134
202
  const blobIds = await this.indexRevision(revision);
135
203
  const index = new TreeIndex();
136
204
  const scopes = scopePaths.filter(path => !ROOT_PATHS.has(path));
205
+ const matchesScope = buildScopeMatcher(scopes);
137
206
  for (const path of blobIds.keys()) {
138
- if (scopes.length === 0 || inScope(path, scopes)) {
207
+ if (scopes.length === 0 || matchesScope(path)) {
139
208
  index.add(path);
140
209
  }
141
210
  }
@@ -151,6 +220,10 @@ export default class GitAdapter {
151
220
  // `git ls-tree -r <tag>` / `git merge-base` peeling semantics. `label`
152
221
  // identifies the original ref/oid for the error message (it can differ
153
222
  // from `oid` itself, e.g. a revision string vs. its resolved object id).
223
+ // Reached through peelRevision by resolveCommit as well, now that
224
+ // validation peels every --from/--to up front — the typed error is what
225
+ // lets ConfigValidator name the kind of object a revision resolved to
226
+ // instead of just reporting a failure.
154
227
  async peelToCommit(oid, label) {
155
228
  const repo = await this.getRepo();
156
229
  let target = await repo.primitives.readObject(oid);
@@ -158,22 +231,48 @@ export default class GitAdapter {
158
231
  target = await repo.primitives.readObject(target.data.object);
159
232
  }
160
233
  if (target.type !== 'commit') {
161
- throw new Error(`'${label}' does not resolve to a commit`);
234
+ throw new NotACommitError(label, target.type);
162
235
  }
163
236
  return target;
164
237
  }
165
- // Flattens the full tree at `revision` once and caches path -> blob oid.
166
- // Shared by the tree index, blob reads, archive streaming and grep.
167
- // flattenTree is the bulk traversal path (one call, no per-entry yields);
168
- // it takes a tree oid, so the commit is peeled first.
169
- async indexRevision(revision) {
170
- const cached = this.blobIdIndex.get(revision);
171
- if (cached) {
172
- return cached;
238
+ // The shared resolve-then-peel invariant behind resolveCommit,
239
+ // flattenRevision and getMergeBase. Centralizing it also pins the part
240
+ // no test can catch: the label handed to peelToCommit must stay the
241
+ // caller's revision string, never the oid revParse just returned, or the
242
+ // error names a hash instead of what the user typed.
243
+ async peelRevision(revision) {
244
+ const repo = await this.getRepo();
245
+ const oid = await repo.revParse(revision);
246
+ return await this.peelToCommit(oid, revision);
247
+ }
248
+ // Not `async` on purpose: an `await` between the memo read and the memo
249
+ // write is what let concurrent callers each re-walk the tree, and a
250
+ // non-async function cannot contain one.
251
+ indexRevision(revision) {
252
+ const memoised = this.blobIdIndex.get(revision);
253
+ if (memoised) {
254
+ return memoised;
173
255
  }
256
+ const build = this.flattenRevision(revision).catch((error) => {
257
+ // Evict so a later caller retries rather than inheriting the failure.
258
+ // No identity check is needed: the slot holds this build until this
259
+ // handler deletes it, so nothing can replace it first, and the
260
+ // reaction cannot run before the synchronous set below, so the delete
261
+ // never outruns the write.
262
+ this.blobIdIndex.delete(revision);
263
+ throw error;
264
+ });
265
+ this.blobIdIndex.set(revision, build);
266
+ return build;
267
+ }
268
+ // flattenTree is the bulk traversal path (one call, no per-entry yields);
269
+ // it takes a tree oid, so the commit is peeled first. Declared protected
270
+ // to mark it as the test seam the integration memo guards spy: it is the
271
+ // one call that runs only on a memo miss, and peelToCommit stopped being
272
+ // that proxy once validation started peeling every --from/--to up front.
273
+ async flattenRevision(revision) {
174
274
  const repo = await this.getRepo();
175
- const revisionId = await repo.revParse(revision);
176
- const commit = await this.peelToCommit(revisionId, revision);
275
+ const commit = await this.peelRevision(revision);
177
276
  const { entries } = await repo.primitives.flattenTree(commit.data.tree);
178
277
  const blobIds = new Map();
179
278
  for (const [path, entry] of entries) {
@@ -181,7 +280,6 @@ export default class GitAdapter {
181
280
  blobIds.set(treatPathSep(path), entry.id);
182
281
  }
183
282
  }
184
- this.blobIdIndex.set(revision, blobIds);
185
283
  return blobIds;
186
284
  }
187
285
  // Equivalent to `git merge-base <from> <to>`, resolved in-process via
@@ -195,13 +293,9 @@ export default class GitAdapter {
195
293
  async getMergeBase(from, to) {
196
294
  try {
197
295
  const repo = await this.getRepo();
198
- const [fromId, toId] = await Promise.all([
199
- repo.revParse(from),
200
- repo.revParse(to),
201
- ]);
202
296
  const [fromCommit, toCommit] = await Promise.all([
203
- this.peelToCommit(fromId, from),
204
- this.peelToCommit(toId, to),
297
+ this.peelRevision(from),
298
+ this.peelRevision(to),
205
299
  ]);
206
300
  // Criss-cross histories can legitimately have several common
207
301
  // ancestors; tsgit's mergeBase primitive returns all of them. Taking
@@ -215,7 +309,7 @@ export default class GitAdapter {
215
309
  return base;
216
310
  }
217
311
  catch (error) {
218
- throw mapTsgitError(error, `${from}...${to}`);
312
+ throw this.mapError(error, `${from}...${to}`);
219
313
  }
220
314
  }
221
315
  async getFirstCommitRef() {
@@ -234,7 +328,7 @@ export default class GitAdapter {
234
328
  return firstCommit;
235
329
  }
236
330
  catch (error) {
237
- throw mapTsgitError(error, HEAD);
331
+ throw this.mapError(error, HEAD);
238
332
  }
239
333
  }
240
334
  async resolveObjectId(forRef) {
@@ -256,12 +350,12 @@ export default class GitAdapter {
256
350
  let content = await this.readBlobBuffer(forRef);
257
351
  if (isLFS(content)) {
258
352
  const lfsPath = getLFSObjectContentPath(content);
259
- content = await readFile(join(this.repo, lfsPath));
353
+ content = await readFile(join(this.repoPath, lfsPath));
260
354
  }
261
355
  return content;
262
356
  }
263
357
  catch (error) {
264
- throw mapTsgitError(error, forRef.oid);
358
+ throw this.mapError(error, forRef.oid);
265
359
  }
266
360
  }
267
361
  // tsgit's Blob/BlobStream carry no size field, so the only way to know a
@@ -286,7 +380,7 @@ export default class GitAdapter {
286
380
  // The pointer itself is tiny, so the accumulated-length guard above
287
381
  // never fires for LFS-backed files — size the resolved object instead
288
382
  // and escalate oversized ones onto the streaming path.
289
- const lfsFile = join(this.repo, getLFSObjectContentPath(content));
383
+ const lfsFile = join(this.repoPath, getLFSObjectContentPath(content));
290
384
  const { size } = await stat(lfsFile);
291
385
  if (size > SIZE_THRESHOLD) {
292
386
  throw new EscalateToStreamingSignal(size, forRef);
@@ -322,15 +416,16 @@ export default class GitAdapter {
322
416
  async pipeLfsObject(chunks, head, out) {
323
417
  const pointer = await accumulatePointer(chunks, head);
324
418
  const lfsPath = getLFSObjectContentPath(pointer);
325
- createReadStream(join(this.repo, lfsPath))
419
+ createReadStream(join(this.repoPath, lfsPath))
326
420
  .on('error', (error) => out.destroy(error))
327
421
  .pipe(out);
328
422
  }
329
423
  async *streamArchive(path, revision) {
330
424
  const repo = await this.getRepo();
331
425
  const blobIds = await this.indexRevision(revision);
426
+ const inArchiveScope = buildScopeMatcher([path]);
332
427
  for (const [filePath, blobId] of blobIds) {
333
- if (!inScope(filePath, [path]))
428
+ if (!inArchiveScope(filePath))
334
429
  continue;
335
430
  const blob = await repo.primitives.streamBlob(blobId);
336
431
  yield {
@@ -431,13 +526,13 @@ export default class GitAdapter {
431
526
  });
432
527
  }
433
528
  catch (error) {
434
- throw mapTsgitError(error, `${spec.from}..${spec.to}`);
529
+ throw this.mapError(error, `${spec.from}..${spec.to}`);
435
530
  }
436
531
  }
437
532
  }
438
533
  __decorate([
439
534
  log
440
- ], GitAdapter.prototype, "parseRev", null);
535
+ ], GitAdapter.prototype, "resolveCommit", null);
441
536
  __decorate([
442
537
  log
443
538
  ], GitAdapter.prototype, "buildTreeIndex", null);
@@ -1 +1 @@
1
- {"version":3,"file":"GitAdapter.js","sourceRoot":"","sources":["../../src/adapter/GitAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitAdapter.js","sourceRoot":"","sources":["../../src/adapter/GitAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { type DiffChange } from '@scolladon/tsgit';
2
2
  import type { Pathspec } from '../utils/pathspec.js';
3
3
  export declare const ROOT_PATHS: Set<string>;
4
+ export declare const buildScopeMatcher: (scopes: readonly string[]) => ((path: string) => boolean);
4
5
  export declare const inScope: (path: string, scopes: readonly string[]) => boolean;
5
6
  export declare const hasRootScope: (scopes: readonly Pathspec[]) => boolean;
6
7
  export declare const nonRootScopes: (scopes: readonly Pathspec[]) => Pathspec[];
7
8
  export declare function toDiffLines(change: DiffChange, scopes: readonly string[]): Generator<string>;
8
- export declare const buildLiteralMatcher: (specs: string[]) => (path: string) => boolean;
9
+ export declare const buildLiteralMatcher: (specs: string[]) => ((path: string) => boolean);
9
10
  export declare const buildPathspecMatcher: (specs: string[]) => ((path: string) => boolean);
@@ -1,10 +1,41 @@
1
1
  import { toSimilarityPercent } from '@scolladon/tsgit';
2
2
  import { TAB } from '../constant/cliConstants.js';
3
+ import { PATH_SEP } from '../constant/fsConstants.js';
3
4
  import { ADDITION, DELETION, MODIFICATION, RENAMED, } from '../constant/gitConstants.js';
4
5
  import { treatPathSep } from '../utils/fsUtils.js';
5
6
  export const ROOT_PATHS = new Set(['', '.', './']);
6
7
  const GITLINK_MODE = '160000';
7
- export const inScope = (path, scopes) => scopes.some(scope => ROOT_PATHS.has(scope) || path === scope || path.startsWith(`${scope}/`));
8
+ // A path is in scope when it equals a scope, or descends from one i.e. any
9
+ // ancestor-directory prefix of the path is itself a scope. Walking the
10
+ // path's own prefixes against a Set is O(depth) per path regardless of scope
11
+ // count, replacing a naive O(scopes) scan per path. Slicing at each
12
+ // separator (rather than a naive `startsWith(scope + '/')` scan) is what
13
+ // keeps a sibling like `lwc/foobar` from matching scope `lwc/foo`.
14
+ //
15
+ // A factory, not a cache: `hasRoot` and `paths` derive from the scopes'
16
+ // contents, so a caller with a hot loop over the same scopes (buildTreeIndex)
17
+ // builds the matcher once and calls it per path, while a fresh-array-per-call
18
+ // site (streamArchive's per-file `[path]`) hoists its own single matcher out
19
+ // of its loop instead of paying a reference-keyed cache's lookup cost on
20
+ // every miss.
21
+ export const buildScopeMatcher = (scopes) => {
22
+ const hasRoot = scopes.some(scope => ROOT_PATHS.has(scope));
23
+ const paths = new Set(scopes);
24
+ return (path) => {
25
+ if (hasRoot)
26
+ return true;
27
+ let separatorIndex = path.indexOf(PATH_SEP);
28
+ while (separatorIndex !== -1) {
29
+ if (paths.has(path.slice(0, separatorIndex)))
30
+ return true;
31
+ separatorIndex = path.indexOf(PATH_SEP, separatorIndex + 1);
32
+ }
33
+ return paths.has(path);
34
+ };
35
+ };
36
+ // One-shot check for callers with no hot loop to hoist a matcher out of
37
+ // (toDiffLines/keepSide: one call per side per change).
38
+ export const inScope = (path, scopes) => buildScopeMatcher(scopes)(path);
8
39
  const keepSide = (mode, path, scopes) => mode !== GITLINK_MODE && (scopes.length === 0 || inScope(path, scopes));
9
40
  export const hasRootScope = (scopes) => scopes.some(scope => ROOT_PATHS.has(scope));
10
41
  export const nonRootScopes = (scopes) => scopes.filter(scope => !ROOT_PATHS.has(scope));
@@ -57,7 +88,7 @@ const REGEXP_SPECIALS = /[.+^${}()|\\\]]/g;
57
88
  // never carry a leading './' or '/' (treatPathSep and basePath already rule
58
89
  // those out), and treating `[` as a glob-class opener would misread real
59
90
  // path segments like an object folder named `Custom[1]__c`.
60
- export const buildLiteralMatcher = (specs) => (path) => inScope(path, specs);
91
+ export const buildLiteralMatcher = (specs) => buildScopeMatcher(specs);
61
92
  // Git pathspec semantics: a literal pathspec matches by directory prefix; a
62
93
  // pathspec containing wildcards uses wildmatch where `*` also crosses `/`
63
94
  // (no `:(glob)` magic). Callers mix both shapes (e.g. flow translations use
@@ -77,7 +108,8 @@ export const buildPathspecMatcher = (specs) => {
77
108
  .replace(/\?/g, '.');
78
109
  return new RegExp(`^${escaped}$`);
79
110
  });
80
- return (path) => (literals.length > 0 && inScope(path, literals)) ||
111
+ const matchesLiteral = buildScopeMatcher(literals);
112
+ return (path) => (literals.length > 0 && matchesLiteral(path)) ||
81
113
  globs.some(glob => glob.test(path));
82
114
  };
83
115
  //# sourceMappingURL=pathMatching.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pathMatching.js","sourceRoot":"","sources":["../../src/adapter/pathMatching.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pathMatching.js","sourceRoot":"","sources":["../../src/adapter/pathMatching.ts"],"names":[],"mappings":"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"}