sfdx-git-delta 6.41.1 → 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 (101) hide show
  1. package/README.md +35 -3
  2. package/lib/adapter/GitAdapter.d.ts +4 -1
  3. package/lib/adapter/GitAdapter.js +113 -59
  4. package/lib/adapter/GitAdapter.js.map +1 -1
  5. package/lib/adapter/gitBatchCatFile.d.ts +4 -1
  6. package/lib/adapter/gitBatchCatFile.js +30 -8
  7. package/lib/adapter/gitBatchCatFile.js.map +1 -1
  8. package/lib/adapter/treeIndex.d.ts +18 -0
  9. package/lib/adapter/treeIndex.js +75 -0
  10. package/lib/adapter/treeIndex.js.map +1 -0
  11. package/lib/commands/sgd/source/delta.d.ts +2 -0
  12. package/lib/commands/sgd/source/delta.js +31 -1
  13. package/lib/commands/sgd/source/delta.js.map +1 -1
  14. package/lib/constant/cliConstants.d.ts +2 -0
  15. package/lib/constant/cliConstants.js +4 -0
  16. package/lib/constant/cliConstants.js.map +1 -1
  17. package/lib/constant/gitConstants.d.ts +1 -0
  18. package/lib/constant/gitConstants.js +4 -0
  19. package/lib/constant/gitConstants.js.map +1 -1
  20. package/lib/main.js +14 -4
  21. package/lib/main.js.map +1 -1
  22. package/lib/metadata/MetadataRepository.d.ts +1 -0
  23. package/lib/metadata/MetadataRepositoryImpl.d.ts +1 -0
  24. package/lib/metadata/MetadataRepositoryImpl.js +13 -12
  25. package/lib/metadata/MetadataRepositoryImpl.js.map +1 -1
  26. package/lib/metadata/metadataManager.js +22 -14
  27. package/lib/metadata/metadataManager.js.map +1 -1
  28. package/lib/post-processor/changesManifestProcessor.d.ts +15 -0
  29. package/lib/post-processor/changesManifestProcessor.js +50 -0
  30. package/lib/post-processor/changesManifestProcessor.js.map +1 -0
  31. package/lib/post-processor/flowTranslationProcessor.d.ts +2 -1
  32. package/lib/post-processor/flowTranslationProcessor.js +12 -4
  33. package/lib/post-processor/flowTranslationProcessor.js.map +1 -1
  34. package/lib/post-processor/packageGenerator.d.ts +0 -2
  35. package/lib/post-processor/packageGenerator.js +7 -18
  36. package/lib/post-processor/packageGenerator.js.map +1 -1
  37. package/lib/post-processor/postProcessorManager.js +6 -1
  38. package/lib/post-processor/postProcessorManager.js.map +1 -1
  39. package/lib/service/botHandler.js +1 -0
  40. package/lib/service/botHandler.js.map +1 -1
  41. package/lib/service/inBundleHandler.js +7 -1
  42. package/lib/service/inBundleHandler.js.map +1 -1
  43. package/lib/service/inFileHandler.d.ts +2 -2
  44. package/lib/service/inFileHandler.js +7 -5
  45. package/lib/service/inFileHandler.js.map +1 -1
  46. package/lib/service/inResourceHandler.js +9 -1
  47. package/lib/service/inResourceHandler.js.map +1 -1
  48. package/lib/service/reportingFolderHandler.d.ts +5 -2
  49. package/lib/service/reportingFolderHandler.js +5 -2
  50. package/lib/service/reportingFolderHandler.js.map +1 -1
  51. package/lib/service/sharedFolderHandler.d.ts +5 -2
  52. package/lib/service/sharedFolderHandler.js +5 -2
  53. package/lib/service/sharedFolderHandler.js.map +1 -1
  54. package/lib/service/standardHandler.d.ts +8 -2
  55. package/lib/service/standardHandler.js +21 -3
  56. package/lib/service/standardHandler.js.map +1 -1
  57. package/lib/service/typeHandlerFactory.d.ts +1 -2
  58. package/lib/service/typeHandlerFactory.js +8 -9
  59. package/lib/service/typeHandlerFactory.js.map +1 -1
  60. package/lib/types/config.d.ts +1 -0
  61. package/lib/types/handlerResult.d.ts +8 -0
  62. package/lib/types/handlerResult.js +7 -0
  63. package/lib/types/handlerResult.js.map +1 -1
  64. package/lib/types/work.d.ts +2 -5
  65. package/lib/utils/LoggingDecorator.d.ts +1 -1
  66. package/lib/utils/LoggingDecorator.js +26 -10
  67. package/lib/utils/LoggingDecorator.js.map +1 -1
  68. package/lib/utils/changeSet.d.ts +48 -0
  69. package/lib/utils/changeSet.js +173 -0
  70. package/lib/utils/changeSet.js.map +1 -0
  71. package/lib/utils/configValidator.d.ts +1 -0
  72. package/lib/utils/configValidator.js +43 -7
  73. package/lib/utils/configValidator.js.map +1 -1
  74. package/lib/utils/fsHelper.d.ts +1 -0
  75. package/lib/utils/fsHelper.js +3 -0
  76. package/lib/utils/fsHelper.js.map +1 -1
  77. package/lib/utils/ignoreHelper.d.ts +2 -0
  78. package/lib/utils/ignoreHelper.js +21 -19
  79. package/lib/utils/ignoreHelper.js.map +1 -1
  80. package/lib/utils/metadataDiff.d.ts +1 -0
  81. package/lib/utils/metadataDiff.js +24 -9
  82. package/lib/utils/metadataDiff.js.map +1 -1
  83. package/lib/utils/metadataElement.js +1 -3
  84. package/lib/utils/metadataElement.js.map +1 -1
  85. package/lib/utils/packageHelper.js +7 -3
  86. package/lib/utils/packageHelper.js.map +1 -1
  87. package/lib/utils/renameResolver.d.ts +19 -0
  88. package/lib/utils/renameResolver.js +52 -0
  89. package/lib/utils/renameResolver.js.map +1 -0
  90. package/lib/utils/repoGitDiff.d.ts +7 -0
  91. package/lib/utils/repoGitDiff.js +37 -8
  92. package/lib/utils/repoGitDiff.js.map +1 -1
  93. package/lib/utils/xmlHelper.js +7 -5
  94. package/lib/utils/xmlHelper.js.map +1 -1
  95. package/messages/delta.md +12 -0
  96. package/npm-shrinkwrap.json +482 -498
  97. package/oclif.manifest.json +9 -1
  98. package/package.json +19 -16
  99. package/lib/utils/manifestAggregator.d.ts +0 -3
  100. package/lib/utils/manifestAggregator.js +0 -22
  101. package/lib/utils/manifestAggregator.js.map +0 -1
package/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![npm](https://badgen.net/npm/v/sfdx-git-delta)](https://badgen.net/npm/v/sfdx-git-delta)
5
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/95619399c7bb2cf60da4/maintainability)](https://codeclimate.com/github/scolladon/sfdx-git-delta/maintainability)
6
6
  [![Code Coverage](https://codecov.io/gh/scolladon/sfdx-git-delta/branch/main/graph/badge.svg?token=92T8XKKBHN)](https://codecov.io/gh/scolladon/sfdx-git-delta)
7
- [![Known Vulnerabilities](https://snyk.io//test/github/scolladon/sfdx-git-delta/badge.svg?targetFile=package.json)](https://snyk.io//test/github/scolladon/sfdx-git-delta?targetFile=package.json)
8
7
  [![downloads](https://badgen.net/npm/dw/sfdx-git-delta)](https://badgen.net/npm/dw/sfdx-git-delta)
9
8
  ![GitHub Sponsors](https://img.shields.io/github/sponsors/scolladon)
10
9
 
@@ -150,7 +149,7 @@ Generate incremental package manifest and source content
150
149
  ```
151
150
  USAGE
152
151
  $ sf sgd source delta -f <value> [--json] [--flags-dir <value>] [-t <value>] [-d] [-o <value>] [-r <value>] [-s
153
- <value>...] [-i <value>] [-D <value>] [-n <value>] [-N <value>] [-M <value>] [-W] [-a <value>]
152
+ <value>...] [-i <value>] [-D <value>] [-n <value>] [-N <value>] [-M <value>] [-c <value>] [-W] [-a <value>]
154
153
 
155
154
  FLAGS
156
155
  -D, --ignore-destructive-file=<value> file listing paths to explicitly ignore for any destructive actions
@@ -159,6 +158,8 @@ FLAGS
159
158
  -W, --ignore-whitespace ignore git diff whitespace (space, tab, eol) changes
160
159
  -a, --api-version=<value> salesforce metadata API version, default to sfdx-project.json
161
160
  "sourceApiVersion" attribute or latest version
161
+ -c, --changes-manifest=<value> path to a JSON file grouping changed components by kind (add, modify,
162
+ delete, rename); setting this flag also enables git rename detection
162
163
  -d, --generate-delta generate delta files in [--output-dir] folder
163
164
  -f, --from=<value> (required) commit sha from where the diff is done
164
165
  -i, --ignore-file=<value> file listing paths to explicitly ignore for any diff actions
@@ -201,7 +202,7 @@ FLAG DESCRIPTIONS
201
202
  of a diff, in which case changes may still be picked up.
202
203
  ```
203
204
 
204
- _See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v6.41.1/src/commands/sgd/source/delta.ts)_
205
+ _See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v6.42.0/src/commands/sgd/source/delta.ts)_
205
206
  <!-- commandsstop -->
206
207
 
207
208
  ### Windows users
@@ -519,6 +520,37 @@ To cover this need, parse the content of the package.xml file produced by SGD us
519
520
 
520
521
  `xq . < package/package.xml | jq '.Package.types | [.] | flatten | map(select(.name=="ApexClass")) | .[] | .members | [.] | flatten | map(select(. | index("*") | not)) | unique | join(",")'`
521
522
 
523
+ ### Review-centric: list components by change kind
524
+
525
+ Package managers (1GP, unlocked, managed) and release reviewers often need to distinguish **newly added** components from **modified** ones — adding a new component to a managed package is a 1-way door that binds all subscribers. SGD groups `git diff` into Salesforce components, but its `package.xml` bundles additions and modifications together (as required for deployment).
526
+
527
+ Use `--changes-manifest [-c]` to emit an additional JSON file that groups components by change kind. The file is written alongside `package.xml` / `destructiveChanges.xml` (no changes to the deployment manifests themselves).
528
+
529
+ Two forms:
530
+
531
+ ```sh
532
+ # Bare flag: writes to <output-dir>/changes.manifest.json
533
+ sf sgd source delta --from "origin/development" --to HEAD --output-dir incremental --changes-manifest
534
+
535
+ # Explicit path: resolved against cwd (or used as-is when absolute), same as --ignore-file
536
+ sf sgd source delta --from "origin/development" --to HEAD --changes-manifest reports/changes.json
537
+ ```
538
+
539
+ Produces (bare form example) `incremental/changes.manifest.json`. Setting `--changes-manifest` also turns on git's `-M` rename detection for this run, so components renamed at the file level show up in their own bucket instead of being split into a fake delete+add pair. Default sgd runs (without the flag) keep the pre-feature behaviour — renames still appear as a delete on the old path + an add on the new path.
540
+
541
+ ```json
542
+ {
543
+ "add": { "ApexClass": ["BrandNewClass"], "CustomObject": ["NewObject__c"] },
544
+ "modify": { "ApexClass": ["ExistingClass"], "CustomLabels": ["MyApp.Label1"] },
545
+ "delete": { "ApexTrigger": ["OldTrigger"] },
546
+ "rename": { "ApexClass": [{ "from": "OldName", "to": "NewName" }] }
547
+ }
548
+ ```
549
+
550
+ `package.xml` still lists `NewName` and `destructiveChanges.xml` still lists `OldName` for renames — the deployment contract is unchanged.
551
+
552
+ Works for file-backed metadata, in-file sub-components (CustomLabels members, Workflow rules, etc.), decomposed metadata, in-resource bundles and in-folder metadata.
553
+
522
554
  ### Condition deployment on package.xml and destructiveChange content
523
555
 
524
556
  SGD does not always generate content in the package.xml (or destructiveChanges.xml). Sometimes the commit range contains changes only within files to ignore (using .sgdignore and `--i` parameter).
@@ -2,12 +2,14 @@ import { SimpleGit } from 'simple-git';
2
2
  import type { Config } from '../types/config.js';
3
3
  import type { FileGitRef } from '../types/git.js';
4
4
  import { GitBatchCatFile } from './gitBatchCatFile.js';
5
+ import { TreeIndex } from './treeIndex.js';
5
6
  export default class GitAdapter {
6
7
  protected readonly config: Config;
7
8
  private static instances;
9
+ private static keyFor;
8
10
  static getInstance(config: Config): GitAdapter;
9
11
  protected readonly simpleGit: SimpleGit;
10
- protected readonly treeIndex: Map<string, Set<string>>;
12
+ protected readonly treeIndex: Map<string, TreeIndex>;
11
13
  protected batchCatFile: GitBatchCatFile | null;
12
14
  private constructor();
13
15
  protected getBatchCatFile(): GitBatchCatFile;
@@ -26,4 +28,5 @@ export default class GitAdapter {
26
28
  listDirAtRevision(dir: string, revision: string): Promise<string[]>;
27
29
  gitGrep(pattern: string, path: string | string[], revision?: string): Promise<string[]>;
28
30
  getDiffLines(): Promise<string[]>;
31
+ protected _getNumstatLines(changeType: string, detectRenames: boolean): Promise<string[]>;
29
32
  }
@@ -2,8 +2,9 @@ import { __decorate } from "tslib";
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path/posix';
4
4
  import { simpleGit } from 'simple-git';
5
- import { PATH_SEP, UTF8_ENCODING } from '../constant/fsConstants.js';
6
- import { ADDITION, DELETION, HEAD, IGNORE_WHITESPACE_PARAMS, MODIFICATION, NUM_STAT_CHANGE_INFORMATION, } from '../constant/gitConstants.js';
5
+ import { TAB } from '../constant/cliConstants.js';
6
+ import { UTF8_ENCODING } from '../constant/fsConstants.js';
7
+ import { ADDITION, DELETION, HEAD, IGNORE_WHITESPACE_PARAMS, MODIFICATION, NUM_STAT_CHANGE_INFORMATION, RENAMED, } from '../constant/gitConstants.js';
7
8
  import { pushAll } from '../utils/arrayUtils.js';
8
9
  import { getErrorMessage } from '../utils/errorUtils.js';
9
10
  import { treatPathSep } from '../utils/fsUtils.js';
@@ -11,17 +12,24 @@ import { getLFSObjectContentPath, isLFS } from '../utils/gitLfsHelper.js';
11
12
  import { log } from '../utils/LoggingDecorator.js';
12
13
  import { Logger, lazy } from '../utils/LoggingService.js';
13
14
  import { GitBatchCatFile } from './gitBatchCatFile.js';
14
- const EOL = new RegExp(/\r?\n/);
15
+ import { TreeIndex } from './treeIndex.js';
16
+ const EOL = /\r?\n/;
15
17
  const ROOT_PATHS = new Set(['', '.', './']);
16
18
  export default class GitAdapter {
17
19
  config;
18
20
  static instances = new Map();
21
+ // Keyed by repo+to so spread copies of the same config (e.g. ioExecutor's
22
+ // per-revision {...config, to: rev}) share one adapter instead of spawning
23
+ // a fresh git cat-file subprocess per call.
24
+ static keyFor(config) {
25
+ return `${config.repo}\0${config.to}`;
26
+ }
19
27
  static getInstance(config) {
20
- if (!GitAdapter.instances.has(config)) {
21
- const instance = new GitAdapter(config);
22
- GitAdapter.instances.set(config, instance);
28
+ const key = GitAdapter.keyFor(config);
29
+ if (!GitAdapter.instances.has(key)) {
30
+ GitAdapter.instances.set(key, new GitAdapter(config));
23
31
  }
24
- return GitAdapter.instances.get(config);
32
+ return GitAdapter.instances.get(key);
25
33
  }
26
34
  simpleGit;
27
35
  treeIndex;
@@ -64,31 +72,24 @@ export default class GitAdapter {
64
72
  args.push('--', ...scopePaths);
65
73
  }
66
74
  const output = await this.simpleGit.raw(args);
67
- const files = new Set(output
68
- .split(EOL)
69
- .filter(line => line)
70
- .map(line => treatPathSep(line)));
71
- this.treeIndex.set(revision, files);
75
+ const index = new TreeIndex();
76
+ for (const line of output.split(EOL)) {
77
+ if (line)
78
+ index.add(treatPathSep(line));
79
+ }
80
+ this.treeIndex.set(revision, index);
72
81
  }
73
82
  catch (error) {
74
83
  Logger.debug(lazy `preBuildTreeIndex: scoped ls-tree for '${revision}' failed: ${() => getErrorMessage(error)}`);
75
84
  }
76
85
  }
77
86
  pathExistsImpl(path, revision) {
78
- const index = this.treeIndex.get(revision) ?? new Set();
79
- if (ROOT_PATHS.has(path)) {
87
+ const index = this.treeIndex.get(revision);
88
+ if (!index)
89
+ return false;
90
+ if (ROOT_PATHS.has(path))
80
91
  return index.size > 0;
81
- }
82
- if (index.has(path)) {
83
- return true;
84
- }
85
- const dirPrefix = `${path}${PATH_SEP}`;
86
- for (const filePath of index) {
87
- if (filePath.startsWith(dirPrefix)) {
88
- return true;
89
- }
90
- }
91
- return false;
92
+ return index.hasPath(path);
92
93
  }
93
94
  async pathExists(path, revision = this.config.to) {
94
95
  return this.pathExistsImpl(path, revision);
@@ -109,21 +110,14 @@ export default class GitAdapter {
109
110
  return content.toString(UTF8_ENCODING);
110
111
  }
111
112
  getFilesPathCached(path, revision) {
112
- const index = this.treeIndex.get(revision) ?? new Set();
113
- if (ROOT_PATHS.has(path)) {
114
- return Array.from(index);
115
- }
116
- if (index.has(path)) {
113
+ const index = this.treeIndex.get(revision);
114
+ if (!index)
115
+ return [];
116
+ if (ROOT_PATHS.has(path))
117
+ return index.allPaths();
118
+ if (index.has(path))
117
119
  return [path];
118
- }
119
- const dirPrefix = `${path}${PATH_SEP}`;
120
- const result = [];
121
- for (const filePath of index) {
122
- if (filePath.startsWith(dirPrefix)) {
123
- result.push(filePath);
124
- }
125
- }
126
- return result;
120
+ return index.getFilesUnder(path);
127
121
  }
128
122
  async getFilesPath(paths, revision = this.config.to) {
129
123
  if (typeof paths === 'string') {
@@ -131,23 +125,15 @@ export default class GitAdapter {
131
125
  }
132
126
  const result = [];
133
127
  for (const path of paths) {
134
- const filesPath = await this.getFilesPathCached(path, revision);
135
- pushAll(result, filesPath);
128
+ pushAll(result, this.getFilesPathCached(path, revision));
136
129
  }
137
130
  return result;
138
131
  }
139
132
  async listDirAtRevision(dir, revision) {
140
- const index = this.treeIndex.get(revision) ?? new Set();
141
- const dirPrefix = dir ? `${dir}${PATH_SEP}` : '';
142
- const children = new Set();
143
- for (const filePath of index) {
144
- if (filePath.startsWith(dirPrefix)) {
145
- const rest = filePath.slice(dirPrefix.length);
146
- const firstSegment = rest.split(PATH_SEP)[0];
147
- children.add(firstSegment);
148
- }
149
- }
150
- return Array.from(children);
133
+ const index = this.treeIndex.get(revision);
134
+ if (!index)
135
+ return [];
136
+ return index.listChildren(dir);
151
137
  }
152
138
  async gitGrep(pattern, path, revision = this.config.to) {
153
139
  try {
@@ -170,14 +156,35 @@ export default class GitAdapter {
170
156
  return [];
171
157
  }
172
158
  }
159
+ // Fast path (no whitespace ignore): one `git diff --name-status` call.
160
+ // Rename detection (`-M` + `R` filter) is gated behind
161
+ // `config.changesManifest` so the default sgd pipeline emits the same
162
+ // A/M/D line shape as before this feature. When enabled, renames surface
163
+ // as `R<score>\tfrom\tto` lines that RepoGitDiff splits into synthetic
164
+ // A/D while recording the rename pair for ChangeSet.
165
+ //
166
+ // Whitespace path: three (or four, when rename detection is on) parallel
167
+ // `git diff --numstat` calls, one per --diff-filter. `--name-status` does
168
+ // NOT honor `--ignore-all-space` (git decides A/M/D from blob SHAs for
169
+ // that mode, so a whitespace-only change still appears as `M`). Only
170
+ // `--numstat` computes a real content diff under the whitespace flags,
171
+ // so files with 0/0 line changes drop out naturally. When rename
172
+ // detection is enabled the R call uses `-z` so it can sidestep numstat's
173
+ // brace/arrow rename-path encoding.
174
+ //
175
+ // The Promise.all fans out to 4 items with rename detection on. That's a
176
+ // localised exception to the CLAUDE.local.md ≤3 bounded-Promise.all
177
+ // guideline: the four `--diff-filter`s are the canonical per-kind split,
178
+ // so hiding R as an out-of-band sequential await just obscures the real
179
+ // symmetric fan-out without changing the resource footprint.
173
180
  async getDiffLines() {
174
- const results = await Promise.all([ADDITION, MODIFICATION, DELETION].map(async (changeType) => {
181
+ const detectRenames = Boolean(this.config.changesManifest);
182
+ if (!this.config.ignoreWhitespace) {
175
183
  const output = await this.simpleGit.raw([
176
184
  'diff',
177
- '--numstat',
178
- '--no-renames',
179
- ...(this.config.ignoreWhitespace ? IGNORE_WHITESPACE_PARAMS : []),
180
- `--diff-filter=${changeType}`,
185
+ '--name-status',
186
+ ...(detectRenames ? ['-M'] : ['--no-renames']),
187
+ `--diff-filter=${detectRenames ? 'AMDR' : 'AMD'}`,
181
188
  this.config.from,
182
189
  this.config.to,
183
190
  '--',
@@ -186,10 +193,57 @@ export default class GitAdapter {
186
193
  return output
187
194
  .split(EOL)
188
195
  .filter(Boolean)
189
- .map(line => treatPathSep(line.replace(NUM_STAT_CHANGE_INFORMATION, `${changeType}\t`)));
190
- }));
196
+ .map(line => treatPathSep(line));
197
+ }
198
+ // When rename detection is on, the A/M/D filters also run with -M so
199
+ // renamed files drop out (reclassified to R by git), and the dedicated
200
+ // R call is the single source of rename lines — no dedup needed.
201
+ // Without rename detection, A/M/D keep their pre-feature line shape via
202
+ // --no-renames.
203
+ const filters = detectRenames
204
+ ? [ADDITION, MODIFICATION, DELETION, RENAMED]
205
+ : [ADDITION, MODIFICATION, DELETION];
206
+ const results = await Promise.all(filters.map(changeType => this._getNumstatLines(changeType, detectRenames)));
191
207
  return results.flat();
192
208
  }
209
+ // Per-filter numstat call. The R branch uses `-z` because numstat
210
+ // otherwise encodes rename paths in three format variants within the
211
+ // path column (`{a => b}`, `a/{b => c}/d`, or bare `old => new`). `-z`
212
+ // emits `N<TAB>M<TAB>\0<src>\0<dst>\0` for each rename, so we can
213
+ // stride-3 over the NUL-split tokens and synthesise
214
+ // `R<TAB><src><TAB><dst>` lines that RepoGitDiff._expandRenames
215
+ // already understands. A/M/D use the default output and rewrite the
216
+ // leading `N\tM\t` counts into the status prefix.
217
+ async _getNumstatLines(changeType, detectRenames) {
218
+ const isRename = changeType === RENAMED;
219
+ const output = await this.simpleGit.raw([
220
+ 'diff',
221
+ '--numstat',
222
+ ...(isRename ? ['-M', '-z'] : detectRenames ? ['-M'] : ['--no-renames']),
223
+ ...IGNORE_WHITESPACE_PARAMS,
224
+ `--diff-filter=${changeType}`,
225
+ this.config.from,
226
+ this.config.to,
227
+ '--',
228
+ ...this.config.source,
229
+ ]);
230
+ if (isRename) {
231
+ const tokens = output.split('\0');
232
+ const lines = [];
233
+ for (let i = 0; i + 2 < tokens.length; i += 3) {
234
+ const src = tokens[i + 1];
235
+ const dst = tokens[i + 2];
236
+ if (!src || !dst)
237
+ continue;
238
+ lines.push(treatPathSep(`${RENAMED}${TAB}${src}${TAB}${dst}`));
239
+ }
240
+ return lines;
241
+ }
242
+ return output
243
+ .split(EOL)
244
+ .filter(Boolean)
245
+ .map(line => treatPathSep(line.replace(NUM_STAT_CHANGE_INFORMATION, `${changeType}\t`)));
246
+ }
193
247
  }
194
248
  __decorate([
195
249
  log
@@ -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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"}
@@ -6,11 +6,14 @@ type PendingRequest = {
6
6
  export declare class GitBatchCatFile {
7
7
  protected process: ChildProcessWithoutNullStreams;
8
8
  protected queue: PendingRequest[];
9
- protected buffer: Buffer;
9
+ protected chunks: Buffer[];
10
+ protected totalLength: number;
10
11
  protected pendingSize: number;
11
12
  constructor(cwd: string);
12
13
  getContent(revision: string, path: string): Promise<Buffer>;
13
14
  protected _onData(chunk: Buffer): void;
15
+ protected _materializeBuffer(): Buffer;
16
+ protected _advance(buffer: Buffer, consumed: number): Buffer;
14
17
  protected _processBuffer(): void;
15
18
  close(): void;
16
19
  }
@@ -5,7 +5,8 @@ import { Logger, lazy } from '../utils/LoggingService.js';
5
5
  export class GitBatchCatFile {
6
6
  process;
7
7
  queue = [];
8
- buffer = Buffer.alloc(0);
8
+ chunks = [];
9
+ totalLength = 0;
9
10
  pendingSize = -1;
10
11
  constructor(cwd) {
11
12
  this.process = spawn('git', ['cat-file', '--batch'], {
@@ -36,17 +37,38 @@ export class GitBatchCatFile {
36
37
  });
37
38
  }
38
39
  _onData(chunk) {
39
- this.buffer = Buffer.concat([this.buffer, chunk]);
40
+ this.chunks.push(chunk);
41
+ this.totalLength += chunk.length;
40
42
  this._processBuffer();
41
43
  }
44
+ _materializeBuffer() {
45
+ if (this.chunks.length === 1)
46
+ return this.chunks[0];
47
+ const merged = Buffer.concat(this.chunks, this.totalLength);
48
+ this.chunks = [merged];
49
+ return merged;
50
+ }
51
+ _advance(buffer, consumed) {
52
+ const rest = buffer.subarray(consumed);
53
+ if (rest.length === 0) {
54
+ this.chunks = [];
55
+ this.totalLength = 0;
56
+ }
57
+ else {
58
+ this.chunks = [rest];
59
+ this.totalLength = rest.length;
60
+ }
61
+ return rest;
62
+ }
42
63
  _processBuffer() {
64
+ let buffer = this._materializeBuffer();
43
65
  while (this.queue.length > 0) {
44
66
  if (this.pendingSize === -1) {
45
- const newlineIdx = this.buffer.indexOf(0x0a);
67
+ const newlineIdx = buffer.indexOf(0x0a);
46
68
  if (newlineIdx === -1)
47
69
  return;
48
- const header = this.buffer.subarray(0, newlineIdx).toString();
49
- this.buffer = this.buffer.subarray(newlineIdx + 1);
70
+ const header = buffer.subarray(0, newlineIdx).toString();
71
+ buffer = this._advance(buffer, newlineIdx + 1);
50
72
  if (header.endsWith('missing')) {
51
73
  this.queue.shift().reject(new Error(`Object not found: ${header}`));
52
74
  continue;
@@ -59,10 +81,10 @@ export class GitBatchCatFile {
59
81
  continue;
60
82
  }
61
83
  }
62
- if (this.buffer.length < this.pendingSize + 1)
84
+ if (buffer.length < this.pendingSize + 1)
63
85
  return;
64
- const content = Buffer.from(this.buffer.subarray(0, this.pendingSize));
65
- this.buffer = this.buffer.subarray(this.pendingSize + 1);
86
+ const content = Buffer.from(buffer.subarray(0, this.pendingSize));
87
+ buffer = this._advance(buffer, this.pendingSize + 1);
66
88
  this.pendingSize = -1;
67
89
  this.queue.shift().resolve(content);
68
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gitBatchCatFile.js","sourceRoot":"","sources":["../../src/adapter/gitBatchCatFile.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAuC,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAOzD,MAAM,OAAO,eAAe;IAChB,OAAO,CAAgC;IACvC,KAAK,GAAqB,EAAE,CAAA;IAC5B,MAAM,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChC,WAAW,GAAW,CAAC,CAAC,CAAA;IAElC,YAAY,GAAW;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;YACnD,GAAG;YACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QACtE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA,2BAA2B,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACtC,MAAM,CAAC,KAAK,CACV,IAAI,CAAA,kCAAkC,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CACnE,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YAC/C,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAA;gBAChE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC/B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACrB,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;YACjB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,IAAY;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YACpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,OAAO,CAAC,KAAa;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;QACjD,IAAI,CAAC,cAAc,EAAE,CAAA;IACvB,CAAC;IAES,cAAc;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC5C,IAAI,UAAU,KAAK,CAAC,CAAC;oBAAE,OAAM;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;gBAC7D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;gBAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC,CAAA;oBACpE,SAAQ;gBACV,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC/B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACzC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;oBACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAA;oBAClE,SAAQ;gBACV,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC;gBAAE,OAAM;YACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;YACtE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;YACxD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;YACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACrB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;QACnD,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;CACF"}
1
+ {"version":3,"file":"gitBatchCatFile.js","sourceRoot":"","sources":["../../src/adapter/gitBatchCatFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ type TrieNode = {
2
+ children: Map<string, TrieNode>;
3
+ isFile: boolean;
4
+ };
5
+ export declare class TreeIndex {
6
+ protected readonly root: TrieNode;
7
+ protected fileCount: number;
8
+ add(path: string): void;
9
+ has(path: string): boolean;
10
+ hasPath(path: string): boolean;
11
+ listChildren(dir: string): string[];
12
+ getFilesUnder(dir: string): string[];
13
+ allPaths(): string[];
14
+ get size(): number;
15
+ protected navigate(path: string): TrieNode | undefined;
16
+ protected collectFiles(node: TrieNode, prefix: string, out: string[]): void;
17
+ }
18
+ export {};
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+ import { PATH_SEP } from '../constant/fsConstants.js';
3
+ const createNode = () => ({
4
+ children: new Map(),
5
+ isFile: false,
6
+ });
7
+ export class TreeIndex {
8
+ root = createNode();
9
+ fileCount = 0;
10
+ add(path) {
11
+ const parts = path.split(PATH_SEP);
12
+ let node = this.root;
13
+ for (const part of parts) {
14
+ let child = node.children.get(part);
15
+ if (!child) {
16
+ child = createNode();
17
+ node.children.set(part, child);
18
+ }
19
+ node = child;
20
+ }
21
+ if (!node.isFile) {
22
+ node.isFile = true;
23
+ this.fileCount++;
24
+ }
25
+ }
26
+ has(path) {
27
+ return this.navigate(path)?.isFile === true;
28
+ }
29
+ hasPath(path) {
30
+ return this.navigate(path) !== undefined;
31
+ }
32
+ listChildren(dir) {
33
+ const node = this.navigate(dir);
34
+ return node ? Array.from(node.children.keys()) : [];
35
+ }
36
+ getFilesUnder(dir) {
37
+ const node = this.navigate(dir);
38
+ if (!node)
39
+ return [];
40
+ const result = [];
41
+ this.collectFiles(node, dir, result);
42
+ return result;
43
+ }
44
+ allPaths() {
45
+ const result = [];
46
+ this.collectFiles(this.root, '', result);
47
+ return result;
48
+ }
49
+ get size() {
50
+ return this.fileCount;
51
+ }
52
+ navigate(path) {
53
+ if (!path)
54
+ return this.root;
55
+ const parts = path.split(PATH_SEP);
56
+ let node = this.root;
57
+ for (const part of parts) {
58
+ node = node.children.get(part);
59
+ if (!node)
60
+ return undefined;
61
+ }
62
+ return node;
63
+ }
64
+ // Recursion depth is bounded by path segment count, not file count.
65
+ // Worst case under OS PATH_MAX (~4096 bytes) is well under V8's stack limit.
66
+ collectFiles(node, prefix, out) {
67
+ if (node.isFile)
68
+ out.push(prefix);
69
+ for (const [segment, child] of node.children) {
70
+ const childPath = prefix ? `${prefix}${PATH_SEP}${segment}` : segment;
71
+ this.collectFiles(child, childPath, out);
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=treeIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeIndex.js","sourceRoot":"","sources":["../../src/adapter/treeIndex.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,10 @@ export default class SourceDeltaGenerate extends SfCommand<SgdResult> {
16
16
  'include-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
17
  'include-destructive-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
18
  'additional-metadata-registry': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ 'changes-manifest': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
20
  'ignore-whitespace': import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
21
  'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
22
  };
23
+ protected static _expandBareChangesManifest(argv: string[]): string[];
22
24
  run(): Promise<SgdResult>;
23
25
  }