sfdx-git-delta 6.41.1 → 6.41.2
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 +1 -2
- package/lib/adapter/GitAdapter.d.ts +3 -1
- package/lib/adapter/GitAdapter.js +62 -52
- package/lib/adapter/GitAdapter.js.map +1 -1
- package/lib/adapter/gitBatchCatFile.d.ts +4 -1
- package/lib/adapter/gitBatchCatFile.js +30 -8
- package/lib/adapter/gitBatchCatFile.js.map +1 -1
- package/lib/adapter/treeIndex.d.ts +18 -0
- package/lib/adapter/treeIndex.js +75 -0
- package/lib/adapter/treeIndex.js.map +1 -0
- package/lib/metadata/MetadataRepository.d.ts +1 -0
- package/lib/metadata/MetadataRepositoryImpl.d.ts +1 -0
- package/lib/metadata/MetadataRepositoryImpl.js +13 -12
- package/lib/metadata/MetadataRepositoryImpl.js.map +1 -1
- package/lib/metadata/metadataManager.js +22 -14
- package/lib/metadata/metadataManager.js.map +1 -1
- package/lib/post-processor/flowTranslationProcessor.d.ts +1 -1
- package/lib/post-processor/flowTranslationProcessor.js.map +1 -1
- package/lib/post-processor/packageGenerator.js +13 -4
- package/lib/post-processor/packageGenerator.js.map +1 -1
- package/lib/service/inBundleHandler.js +7 -1
- package/lib/service/inBundleHandler.js.map +1 -1
- package/lib/service/inResourceHandler.js +9 -1
- package/lib/service/inResourceHandler.js.map +1 -1
- package/lib/service/reportingFolderHandler.js +4 -0
- package/lib/service/reportingFolderHandler.js.map +1 -1
- package/lib/service/sharedFolderHandler.js +4 -0
- package/lib/service/sharedFolderHandler.js.map +1 -1
- package/lib/service/typeHandlerFactory.d.ts +1 -2
- package/lib/service/typeHandlerFactory.js +8 -9
- package/lib/service/typeHandlerFactory.js.map +1 -1
- package/lib/utils/LoggingDecorator.d.ts +1 -1
- package/lib/utils/LoggingDecorator.js +26 -10
- package/lib/utils/LoggingDecorator.js.map +1 -1
- package/lib/utils/configValidator.js +4 -6
- package/lib/utils/configValidator.js.map +1 -1
- package/lib/utils/fsHelper.d.ts +1 -0
- package/lib/utils/fsHelper.js +3 -0
- package/lib/utils/fsHelper.js.map +1 -1
- package/lib/utils/ignoreHelper.d.ts +2 -0
- package/lib/utils/ignoreHelper.js +21 -19
- package/lib/utils/ignoreHelper.js.map +1 -1
- package/lib/utils/metadataDiff.js +2 -1
- package/lib/utils/metadataDiff.js.map +1 -1
- package/lib/utils/metadataElement.js +1 -3
- package/lib/utils/metadataElement.js.map +1 -1
- package/lib/utils/packageHelper.js +7 -3
- package/lib/utils/packageHelper.js.map +1 -1
- package/lib/utils/repoGitDiff.js +3 -4
- package/lib/utils/repoGitDiff.js.map +1 -1
- package/lib/utils/xmlHelper.js +7 -5
- package/lib/utils/xmlHelper.js.map +1 -1
- package/npm-shrinkwrap.json +159 -166
- package/oclif.manifest.json +1 -1
- package/package.json +14 -11
package/README.md
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
[](https://badgen.net/npm/v/sfdx-git-delta)
|
|
5
5
|
[](https://codeclimate.com/github/scolladon/sfdx-git-delta/maintainability)
|
|
6
6
|
[](https://codecov.io/gh/scolladon/sfdx-git-delta)
|
|
7
|
-
[](https://snyk.io//test/github/scolladon/sfdx-git-delta?targetFile=package.json)
|
|
8
7
|
[](https://badgen.net/npm/dw/sfdx-git-delta)
|
|
9
8
|

|
|
10
9
|
|
|
@@ -201,7 +200,7 @@ FLAG DESCRIPTIONS
|
|
|
201
200
|
of a diff, in which case changes may still be picked up.
|
|
202
201
|
```
|
|
203
202
|
|
|
204
|
-
_See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v6.41.
|
|
203
|
+
_See code: [src/commands/sgd/source/delta.ts](https://github.com/scolladon/sfdx-git-delta/blob/v6.41.2/src/commands/sgd/source/delta.ts)_
|
|
205
204
|
<!-- commandsstop -->
|
|
206
205
|
|
|
207
206
|
### Windows users
|
|
@@ -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,
|
|
12
|
+
protected readonly treeIndex: Map<string, TreeIndex>;
|
|
11
13
|
protected batchCatFile: GitBatchCatFile | null;
|
|
12
14
|
private constructor();
|
|
13
15
|
protected getBatchCatFile(): GitBatchCatFile;
|
|
@@ -2,7 +2,7 @@ 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 {
|
|
5
|
+
import { UTF8_ENCODING } from '../constant/fsConstants.js';
|
|
6
6
|
import { ADDITION, DELETION, HEAD, IGNORE_WHITESPACE_PARAMS, MODIFICATION, NUM_STAT_CHANGE_INFORMATION, } from '../constant/gitConstants.js';
|
|
7
7
|
import { pushAll } from '../utils/arrayUtils.js';
|
|
8
8
|
import { getErrorMessage } from '../utils/errorUtils.js';
|
|
@@ -11,17 +11,24 @@ import { getLFSObjectContentPath, isLFS } from '../utils/gitLfsHelper.js';
|
|
|
11
11
|
import { log } from '../utils/LoggingDecorator.js';
|
|
12
12
|
import { Logger, lazy } from '../utils/LoggingService.js';
|
|
13
13
|
import { GitBatchCatFile } from './gitBatchCatFile.js';
|
|
14
|
-
|
|
14
|
+
import { TreeIndex } from './treeIndex.js';
|
|
15
|
+
const EOL = /\r?\n/;
|
|
15
16
|
const ROOT_PATHS = new Set(['', '.', './']);
|
|
16
17
|
export default class GitAdapter {
|
|
17
18
|
config;
|
|
18
19
|
static instances = new Map();
|
|
20
|
+
// Keyed by repo+to so spread copies of the same config (e.g. ioExecutor's
|
|
21
|
+
// per-revision {...config, to: rev}) share one adapter instead of spawning
|
|
22
|
+
// a fresh git cat-file subprocess per call.
|
|
23
|
+
static keyFor(config) {
|
|
24
|
+
return `${config.repo}\0${config.to}`;
|
|
25
|
+
}
|
|
19
26
|
static getInstance(config) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
GitAdapter.instances.set(
|
|
27
|
+
const key = GitAdapter.keyFor(config);
|
|
28
|
+
if (!GitAdapter.instances.has(key)) {
|
|
29
|
+
GitAdapter.instances.set(key, new GitAdapter(config));
|
|
23
30
|
}
|
|
24
|
-
return GitAdapter.instances.get(
|
|
31
|
+
return GitAdapter.instances.get(key);
|
|
25
32
|
}
|
|
26
33
|
simpleGit;
|
|
27
34
|
treeIndex;
|
|
@@ -64,31 +71,24 @@ export default class GitAdapter {
|
|
|
64
71
|
args.push('--', ...scopePaths);
|
|
65
72
|
}
|
|
66
73
|
const output = await this.simpleGit.raw(args);
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
74
|
+
const index = new TreeIndex();
|
|
75
|
+
for (const line of output.split(EOL)) {
|
|
76
|
+
if (line)
|
|
77
|
+
index.add(treatPathSep(line));
|
|
78
|
+
}
|
|
79
|
+
this.treeIndex.set(revision, index);
|
|
72
80
|
}
|
|
73
81
|
catch (error) {
|
|
74
82
|
Logger.debug(lazy `preBuildTreeIndex: scoped ls-tree for '${revision}' failed: ${() => getErrorMessage(error)}`);
|
|
75
83
|
}
|
|
76
84
|
}
|
|
77
85
|
pathExistsImpl(path, revision) {
|
|
78
|
-
const index = this.treeIndex.get(revision)
|
|
79
|
-
if (
|
|
86
|
+
const index = this.treeIndex.get(revision);
|
|
87
|
+
if (!index)
|
|
88
|
+
return false;
|
|
89
|
+
if (ROOT_PATHS.has(path))
|
|
80
90
|
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;
|
|
91
|
+
return index.hasPath(path);
|
|
92
92
|
}
|
|
93
93
|
async pathExists(path, revision = this.config.to) {
|
|
94
94
|
return this.pathExistsImpl(path, revision);
|
|
@@ -109,21 +109,14 @@ export default class GitAdapter {
|
|
|
109
109
|
return content.toString(UTF8_ENCODING);
|
|
110
110
|
}
|
|
111
111
|
getFilesPathCached(path, revision) {
|
|
112
|
-
const index = this.treeIndex.get(revision)
|
|
113
|
-
if (
|
|
114
|
-
return
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
const index = this.treeIndex.get(revision);
|
|
113
|
+
if (!index)
|
|
114
|
+
return [];
|
|
115
|
+
if (ROOT_PATHS.has(path))
|
|
116
|
+
return index.allPaths();
|
|
117
|
+
if (index.has(path))
|
|
117
118
|
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;
|
|
119
|
+
return index.getFilesUnder(path);
|
|
127
120
|
}
|
|
128
121
|
async getFilesPath(paths, revision = this.config.to) {
|
|
129
122
|
if (typeof paths === 'string') {
|
|
@@ -131,23 +124,15 @@ export default class GitAdapter {
|
|
|
131
124
|
}
|
|
132
125
|
const result = [];
|
|
133
126
|
for (const path of paths) {
|
|
134
|
-
|
|
135
|
-
pushAll(result, filesPath);
|
|
127
|
+
pushAll(result, this.getFilesPathCached(path, revision));
|
|
136
128
|
}
|
|
137
129
|
return result;
|
|
138
130
|
}
|
|
139
131
|
async listDirAtRevision(dir, revision) {
|
|
140
|
-
const index = this.treeIndex.get(revision)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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);
|
|
132
|
+
const index = this.treeIndex.get(revision);
|
|
133
|
+
if (!index)
|
|
134
|
+
return [];
|
|
135
|
+
return index.listChildren(dir);
|
|
151
136
|
}
|
|
152
137
|
async gitGrep(pattern, path, revision = this.config.to) {
|
|
153
138
|
try {
|
|
@@ -170,13 +155,38 @@ export default class GitAdapter {
|
|
|
170
155
|
return [];
|
|
171
156
|
}
|
|
172
157
|
}
|
|
158
|
+
// Fast path (no whitespace ignore): one `git diff --name-status` call.
|
|
159
|
+
//
|
|
160
|
+
// Whitespace path: three parallel `git diff --numstat --diff-filter=X`
|
|
161
|
+
// calls. `--name-status` does NOT honor `--ignore-all-space` — git decides
|
|
162
|
+
// A/M/D from blob SHAs for that mode, so a whitespace-only change still
|
|
163
|
+
// appears as `M`. Only `--numstat` computes a real content diff under the
|
|
164
|
+
// whitespace flags, so files with 0/0 line changes drop out naturally.
|
|
165
|
+
// A and D can't produce whitespace-only false positives, so the expensive
|
|
166
|
+
// path is only needed to correctly filter M.
|
|
173
167
|
async getDiffLines() {
|
|
168
|
+
if (!this.config.ignoreWhitespace) {
|
|
169
|
+
const output = await this.simpleGit.raw([
|
|
170
|
+
'diff',
|
|
171
|
+
'--name-status',
|
|
172
|
+
'--no-renames',
|
|
173
|
+
'--diff-filter=AMD',
|
|
174
|
+
this.config.from,
|
|
175
|
+
this.config.to,
|
|
176
|
+
'--',
|
|
177
|
+
...this.config.source,
|
|
178
|
+
]);
|
|
179
|
+
return output
|
|
180
|
+
.split(EOL)
|
|
181
|
+
.filter(Boolean)
|
|
182
|
+
.map(line => treatPathSep(line));
|
|
183
|
+
}
|
|
174
184
|
const results = await Promise.all([ADDITION, MODIFICATION, DELETION].map(async (changeType) => {
|
|
175
185
|
const output = await this.simpleGit.raw([
|
|
176
186
|
'diff',
|
|
177
187
|
'--numstat',
|
|
178
188
|
'--no-renames',
|
|
179
|
-
...
|
|
189
|
+
...IGNORE_WHITESPACE_PARAMS,
|
|
180
190
|
`--diff-filter=${changeType}`,
|
|
181
191
|
this.config.from,
|
|
182
192
|
this.config.to,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitAdapter.js","sourceRoot":"","sources":["../../src/adapter/GitAdapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAa,SAAS,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"GitAdapter.js","sourceRoot":"","sources":["../../src/adapter/GitAdapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAa,SAAS,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,wBAAwB,EACxB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,6BAA6B,CAAA;AAGpC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,GAAG,GAAG,OAAO,CAAA;AACnB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AAE3C,MAAM,CAAC,OAAO,OAAO,UAAU;IAuBU;IAtB/B,MAAM,CAAC,SAAS,GAA4B,IAAI,GAAG,EAAE,CAAA;IAE7D,0EAA0E;IAC1E,2EAA2E;IAC3E,4CAA4C;IACpC,MAAM,CAAC,MAAM,CAAC,MAAc;QAClC,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,CAAA;IACvC,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACvD,CAAC;QAED,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;IACvC,CAAC;IAEkB,SAAS,CAAW;IACpB,SAAS,CAAwB;IAC1C,YAAY,GAA2B,IAAI,CAAA;IAErD,YAAuC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACnE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC/C,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;IAEM,MAAM,CAAC,QAAQ;QACpB,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,QAAQ,CAAC,iBAAiB,EAAE,CAAA;QAC9B,CAAC;QACD,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IAGY,AAAN,KAAK,CAAC,mBAAmB;QAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;QACxD,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;IACzD,CAAC;IAGY,AAAN,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;IACzD,CAAC;IAGY,AAAN,KAAK,CAAC,iBAAiB,CAC5B,QAAgB,EAChB,UAAoB;QAEpB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YACvD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAA;YAChC,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC7C,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAA;YAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,IAAI;oBAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;YACzC,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,IAAI,CAAA,0CAA0C,QAAQ,aAAa,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAClG,CAAA;QACH,CAAC;IACH,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,QAAgB;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;QAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAGY,AAAN,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,WAAmB,IAAI,CAAC,MAAM,CAAC,EAAE;QACrE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAGY,AAAN,KAAK,CAAC,iBAAiB;QAC5B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAA;IACxE,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,MAAkB;QAC9C,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,CACnD,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,IAAI,CACZ,CAAA;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;YAChD,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAC3D,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAGY,AAAN,KAAK,CAAC,gBAAgB,CAAC,MAAkB;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IACxC,CAAC;IAES,kBAAkB,CAAC,IAAY,EAAE,QAAgB;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;QACjD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAGY,AAAN,KAAK,CAAC,YAAY,CACvB,KAAwB,EACxB,WAAmB,IAAI,CAAC,MAAM,CAAC,EAAE;QAEjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACjD,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC1D,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAGY,AAAN,KAAK,CAAC,iBAAiB,CAC5B,GAAW,EACX,QAAgB;QAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAGY,AAAN,KAAK,CAAC,OAAO,CAClB,OAAe,EACf,IAAuB,EACvB,WAAmB,IAAI,CAAC,MAAM,CAAC,EAAE;QAEjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBACtC,MAAM;gBACN,IAAI;gBACJ,OAAO;gBACP,QAAQ;gBACR,IAAI;gBACJ,GAAG,KAAK;aACT,CAAC,CAAA;YACF,OAAO,MAAM;iBACV,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;iBACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,IAAI,CAAA,sBAAsB,OAAO,SAAS,IAAI,SAAS,QAAQ,aAAa,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAC3G,CAAA;YACD,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,EAAE;IACF,uEAAuE;IACvE,2EAA2E;IAC3E,wEAAwE;IACxE,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,6CAA6C;IAEhC,AAAN,KAAK,CAAC,YAAY;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBACtC,MAAM;gBACN,eAAe;gBACf,cAAc;gBACd,mBAAmB;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI;gBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;gBACd,IAAI;gBACJ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;aACtB,CAAC,CAAA;YACF,OAAO,MAAM;iBACV,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBACtC,MAAM;gBACN,WAAW;gBACX,cAAc;gBACd,GAAG,wBAAwB;gBAC3B,iBAAiB,UAAU,EAAE;gBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI;gBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;gBACd,IAAI;gBACJ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;aACtB,CAAC,CAAA;YACF,OAAO,MAAM;iBACV,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,IAAI,CAAC,EAAE,CACV,YAAY,CACV,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,UAAU,IAAI,CAAC,CAC7D,CACF,CAAA;QACL,CAAC,CAAC,CACH,CAAA;QACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAA;IACvB,CAAC;;AA5LY;IADZ,GAAG;qDAIH;AAGY;IADZ,GAAG;0CAGH;AAGY;IADZ,GAAG;mDAyBH;AAUY;IADZ,GAAG;4CAGH;AAGY;IADZ,GAAG;mDAGH;AAgBY;IADZ,GAAG;kDAIH;AAWY;IADZ,GAAG;8CAeH;AAGY;IADZ,GAAG;mDAQH;AAGY;IADZ,GAAG;yCA0BH;AAYY;IADZ,GAAG;8CA2CH"}
|
|
@@ -6,11 +6,14 @@ type PendingRequest = {
|
|
|
6
6
|
export declare class GitBatchCatFile {
|
|
7
7
|
protected process: ChildProcessWithoutNullStreams;
|
|
8
8
|
protected queue: PendingRequest[];
|
|
9
|
-
protected
|
|
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
|
-
|
|
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.
|
|
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 =
|
|
67
|
+
const newlineIdx = buffer.indexOf(0x0a);
|
|
46
68
|
if (newlineIdx === -1)
|
|
47
69
|
return;
|
|
48
|
-
const header =
|
|
49
|
-
|
|
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 (
|
|
84
|
+
if (buffer.length < this.pendingSize + 1)
|
|
63
85
|
return;
|
|
64
|
-
const content = Buffer.from(
|
|
65
|
-
|
|
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,
|
|
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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"}
|
|
@@ -2,6 +2,7 @@ import type { Metadata } from '../types/metadata.js';
|
|
|
2
2
|
export interface MetadataRepository {
|
|
3
3
|
has(path: string): boolean;
|
|
4
4
|
get(path: string): Metadata | undefined;
|
|
5
|
+
getByXmlName(xmlName: string): Metadata | undefined;
|
|
5
6
|
getFullyQualifiedName(path: string): string;
|
|
6
7
|
values(): Metadata[];
|
|
7
8
|
}
|
|
@@ -15,6 +15,7 @@ export declare class MetadataRepositoryImpl implements MetadataRepository {
|
|
|
15
15
|
protected searchByExtension(parts: string[]): Metadata | undefined;
|
|
16
16
|
protected searchByDirectory(parts: string[]): Metadata | undefined;
|
|
17
17
|
protected searchByXmlName(xmlName: string): Metadata | undefined;
|
|
18
|
+
getByXmlName(xmlName: string): Metadata | undefined;
|
|
18
19
|
getFullyQualifiedName(path: string): string;
|
|
19
20
|
values(): Metadata[];
|
|
20
21
|
private static UNSAFE_EXTENSION;
|
|
@@ -4,6 +4,7 @@ import { parse } from 'node:path/posix';
|
|
|
4
4
|
import { DOT, PATH_SEP } from '../constant/fsConstants.js';
|
|
5
5
|
import { CUSTOM_APPLICATION_SUFFIX, CUSTOM_METADATA_SUFFIX, EMAIL_SERVICES_FUNCTION_SUFFIX, METAFILE_SUFFIX, OBJECT_TRANSLATION_TYPE, OBJECT_TYPE, PERMISSIONSET_TYPE, SHARING_RULE_TYPE, SUB_OBJECT_TYPES, WORKFLOW_TYPE, } from '../constant/metadataConstants.js';
|
|
6
6
|
import { log } from '../utils/LoggingDecorator.js';
|
|
7
|
+
const PATH_SEP_GLOBAL = new RegExp(PATH_SEP, 'g');
|
|
7
8
|
export class MetadataRepositoryImpl {
|
|
8
9
|
metadatas;
|
|
9
10
|
metadataPerExt;
|
|
@@ -32,17 +33,14 @@ export class MetadataRepositoryImpl {
|
|
|
32
33
|
this.addSharedFolderSuffix(metadata);
|
|
33
34
|
}
|
|
34
35
|
addSharedFolderSuffix(metadata) {
|
|
35
|
-
if (metadata.content)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
suffix: sharedFolderMetadataDef.suffix,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
36
|
+
if (!metadata.content)
|
|
37
|
+
return;
|
|
38
|
+
const { content: _content, ...metadataWithoutContent } = metadata;
|
|
39
|
+
for (const sharedFolderMetadataDef of metadata.content) {
|
|
40
|
+
this.addSuffix({
|
|
41
|
+
...metadataWithoutContent,
|
|
42
|
+
suffix: sharedFolderMetadataDef.suffix,
|
|
43
|
+
});
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
46
|
addFolder(metadata) {
|
|
@@ -86,6 +84,9 @@ export class MetadataRepositoryImpl {
|
|
|
86
84
|
searchByXmlName(xmlName) {
|
|
87
85
|
return this.metadataPerXmlName.get(xmlName);
|
|
88
86
|
}
|
|
87
|
+
getByXmlName(xmlName) {
|
|
88
|
+
return this.metadataPerXmlName.get(xmlName);
|
|
89
|
+
}
|
|
89
90
|
getFullyQualifiedName(path) {
|
|
90
91
|
let fullyQualifiedName = parse(path).base;
|
|
91
92
|
const type = this.get(path);
|
|
@@ -95,7 +96,7 @@ export class MetadataRepositoryImpl {
|
|
|
95
96
|
.find(part => this.metadataPerDir.has(part));
|
|
96
97
|
fullyQualifiedName = path
|
|
97
98
|
.slice(path.indexOf(parentType))
|
|
98
|
-
.replace(
|
|
99
|
+
.replace(PATH_SEP_GLOBAL, '');
|
|
99
100
|
}
|
|
100
101
|
return fullyQualifiedName;
|
|
101
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataRepositoryImpl.js","sourceRoot":"","sources":["../../src/metadata/MetadataRepositoryImpl.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,GACd,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAA;AAGlD,MAAM,OAAO,sBAAsB;IAIF;IAHZ,cAAc,CAAuB;IACrC,cAAc,CAAuB;IACrC,kBAAkB,CAAuB;IAC5D,YAA+B,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAA;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAA;QACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAoB,CAAA;QAErD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,SAAS,CAAC,QAAkB;QACpC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,sBAAsB,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC9D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAES,qBAAqB,CAAC,QAAkB;QAChD,IAAI,QAAQ,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"MetadataRepositoryImpl.js","sourceRoot":"","sources":["../../src/metadata/MetadataRepositoryImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,15 @@ import { MetadataDefinitionMerger } from './metadataDefinitionMerger.js';
|
|
|
9
9
|
import { SDRMetadataAdapter } from './sdrMetadataAdapter.js';
|
|
10
10
|
let inFileMetadata = new Map();
|
|
11
11
|
let sharedFolderMetadata = new Map();
|
|
12
|
+
let packableByXmlName = new Map();
|
|
12
13
|
// For testing - clears the cached metadata maps
|
|
13
14
|
export const resetMetadataCache = () => {
|
|
14
15
|
inFileMetadata = new Map();
|
|
15
16
|
sharedFolderMetadata = new Map();
|
|
17
|
+
packableByXmlName = new Map();
|
|
16
18
|
};
|
|
17
19
|
export const getLatestSupportedVersion = async () => {
|
|
18
|
-
return parseInt(await SDRMetadataAdapter.getLatestApiVersion());
|
|
20
|
+
return parseInt(await SDRMetadataAdapter.getLatestApiVersion(), 10);
|
|
19
21
|
};
|
|
20
22
|
export const getDefinition = async (config) => {
|
|
21
23
|
const { additionalMetadataRegistryPath } = config;
|
|
@@ -61,27 +63,33 @@ export const getDefinition = async (config) => {
|
|
|
61
63
|
const metadataRepository = new MetadataRepositoryImpl(finalMetadata);
|
|
62
64
|
return metadataRepository;
|
|
63
65
|
};
|
|
64
|
-
export const isPackable = (type) =>
|
|
66
|
+
export const isPackable = (type) => packableByXmlName.get(type) !== false;
|
|
65
67
|
const granularExcludedTypes = new Set([
|
|
66
68
|
'Translations',
|
|
67
69
|
'StandardValueSetTranslation',
|
|
68
70
|
'GlobalValueSetTranslation',
|
|
69
71
|
]);
|
|
70
|
-
export const getInFileAttributes = (metadata) =>
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
export const getInFileAttributes = (metadata) => {
|
|
73
|
+
if (inFileMetadata.size)
|
|
74
|
+
return inFileMetadata;
|
|
75
|
+
for (const meta of metadata.values()) {
|
|
76
|
+
if (!meta.xmlTag)
|
|
77
|
+
continue;
|
|
76
78
|
const isExcluded = granularExcludedTypes.has(meta.parentXmlName || '') ||
|
|
77
|
-
granularExcludedTypes.has(meta.xmlName || '')
|
|
78
|
-
|
|
79
|
+
granularExcludedTypes.has(meta.xmlName || '') ||
|
|
80
|
+
!!meta.excluded;
|
|
81
|
+
const entry = {
|
|
79
82
|
xmlName: meta.xmlName,
|
|
80
83
|
key: meta.key,
|
|
81
|
-
excluded: isExcluded
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
excluded: isExcluded,
|
|
85
|
+
};
|
|
86
|
+
inFileMetadata.set(meta.xmlTag, entry);
|
|
87
|
+
if (meta.xmlName) {
|
|
88
|
+
packableByXmlName.set(meta.xmlName, !isExcluded);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return inFileMetadata;
|
|
92
|
+
};
|
|
85
93
|
export const getSharedFolderMetadata = (metadata) => sharedFolderMetadata.size
|
|
86
94
|
? sharedFolderMetadata
|
|
87
95
|
: metadata
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataManager.js","sourceRoot":"","sources":["../../src/metadata/metadataManager.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAGL,mBAAmB,GAGpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,gBAAgB,MAAM,uBAAuB,CAAA;AAEpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,IAAI,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAA;AAC1D,IAAI,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"metadataManager.js","sourceRoot":"","sources":["../../src/metadata/metadataManager.ts"],"names":[],"mappings":"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"}
|