sfdx-git-delta 7.4.0 → 7.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -3
- package/lib/adapter/GitAdapter.d.ts +5 -3
- package/lib/adapter/GitAdapter.js +71 -32
- package/lib/adapter/GitAdapter.js.map +1 -1
- package/lib/adapter/pathMatching.d.ts +2 -1
- package/lib/adapter/pathMatching.js +35 -3
- package/lib/adapter/pathMatching.js.map +1 -1
- package/lib/adapter/treeReader.d.ts +1 -0
- package/lib/adapter/treeReader.js +10 -0
- package/lib/adapter/treeReader.js.map +1 -1
- package/lib/adapter/tsgitErrorMap.d.ts +5 -4
- package/lib/adapter/tsgitErrorMap.js +12 -5
- package/lib/adapter/tsgitErrorMap.js.map +1 -1
- package/lib/constant/metadataConstants.d.ts +9 -1
- package/lib/constant/metadataConstants.js +17 -3
- package/lib/constant/metadataConstants.js.map +1 -1
- package/lib/main.js +66 -63
- package/lib/main.js.map +1 -1
- package/lib/metadata/MetadataRepositoryImpl.d.ts +14 -2
- package/lib/metadata/MetadataRepositoryImpl.js +192 -50
- package/lib/metadata/MetadataRepositoryImpl.js.map +1 -1
- package/lib/post-processor/includeProcessor.js +8 -9
- package/lib/post-processor/includeProcessor.js.map +1 -1
- package/lib/service/botHandler.js +1 -1
- package/lib/service/botHandler.js.map +1 -1
- package/lib/service/inBundleHandler.js +10 -23
- package/lib/service/inBundleHandler.js.map +1 -1
- package/lib/service/inFolderHandler.js +1 -2
- package/lib/service/inFolderHandler.js.map +1 -1
- package/lib/service/objectTranslationHandler.d.ts +0 -1
- package/lib/service/objectTranslationHandler.js +11 -4
- package/lib/service/objectTranslationHandler.js.map +1 -1
- package/lib/types/runContext.d.ts +16 -5
- package/lib/types/runContext.js +17 -5
- package/lib/types/runContext.js.map +1 -1
- package/lib/utils/__mocks__/LoggingService.d.ts +2 -7
- package/lib/utils/__mocks__/LoggingService.js.map +1 -1
- package/lib/utils/changeSet.d.ts +1 -0
- package/lib/utils/changeSet.js +26 -1
- package/lib/utils/changeSet.js.map +1 -1
- package/lib/utils/configValidator.d.ts +11 -1
- package/lib/utils/configValidator.js +133 -80
- package/lib/utils/configValidator.js.map +1 -1
- package/lib/utils/errorUtils.d.ts +5 -0
- package/lib/utils/errorUtils.js +8 -0
- package/lib/utils/errorUtils.js.map +1 -1
- package/lib/utils/messageSanitizer.d.ts +1 -0
- package/lib/utils/messageSanitizer.js +46 -0
- package/lib/utils/messageSanitizer.js.map +1 -1
- package/lib/utils/metadataDiff/xmlEventReader.js +1 -1
- package/lib/utils/metadataDiff/xmlEventReader.js.map +1 -1
- package/lib/utils/repoGitDiff.d.ts +17 -2
- package/lib/utils/repoGitDiff.js +93 -12
- package/lib/utils/repoGitDiff.js.map +1 -1
- package/lib/utils/treeIndexScope.js +5 -14
- package/lib/utils/treeIndexScope.js.map +1 -1
- package/lib/utils/treeReaderBuilder.d.ts +8 -0
- package/lib/utils/treeReaderBuilder.js +34 -0
- package/lib/utils/treeReaderBuilder.js.map +1 -0
- package/lib/utils/txmlAdapter.js +1 -1
- package/lib/utils/txmlAdapter.js.map +1 -1
- package/messages/delta.md +16 -5
- package/oclif.manifest.json +1 -1
- package/package.json +90 -49
|
@@ -11,13 +11,12 @@ import { SfProject } from '@salesforce/core';
|
|
|
11
11
|
import GitAdapter from '../adapter/GitAdapter.js';
|
|
12
12
|
import { GIT_FOLDER } from '../constant/gitConstants.js';
|
|
13
13
|
import { getLatestSupportedVersion } from '../metadata/metadataManager.js';
|
|
14
|
-
import {
|
|
15
|
-
import { ConfigError, getErrorMessage, RepositoryRefusalError, } from './errorUtils.js';
|
|
14
|
+
import { ConfigError, getErrorMessage, NotACommitError, RepositoryRefusalError, } from './errorUtils.js';
|
|
16
15
|
import { pathExists, sanitizePath } from './fsUtils.js';
|
|
17
16
|
import { log } from './LoggingDecorator.js';
|
|
18
17
|
import { Logger, lazy } from './LoggingService.js';
|
|
19
18
|
import { MessageService } from './MessageService.js';
|
|
20
|
-
import { sanitizeForMessage } from './messageSanitizer.js';
|
|
19
|
+
import { redactProxyCredentials, sanitizeForMessage, } from './messageSanitizer.js';
|
|
21
20
|
const SHA_KEYS = ['from', 'to'];
|
|
22
21
|
const SOURCE_DIR_REJECTION_MESSAGE_KEYS = {
|
|
23
22
|
empty: 'error.SourceDirIsEmpty',
|
|
@@ -26,6 +25,16 @@ const SOURCE_DIR_REJECTION_MESSAGE_KEYS = {
|
|
|
26
25
|
absolute: 'error.SourceDirIsAbsolute',
|
|
27
26
|
escapes: 'error.SourceDirEscapesRepository',
|
|
28
27
|
};
|
|
28
|
+
const isPositiveVersion = (version) => version > 0;
|
|
29
|
+
// Two values arrive unparsed: a JavaScript library caller's apiVersion, which
|
|
30
|
+
// the number type does not bind (e.g. '' or '67.0'), and sfdx-project.json's
|
|
31
|
+
// sourceApiVersion string. Parse the way the --api-version flag path does, so
|
|
32
|
+
// a value that does not parse to a positive version means "not provided"
|
|
33
|
+
// rather than rendering <version>.0</version>.
|
|
34
|
+
const toApiVersion = (value) => {
|
|
35
|
+
const parsed = parseInt(String(value), 10);
|
|
36
|
+
return isPositiveVersion(parsed) ? parsed : undefined;
|
|
37
|
+
};
|
|
29
38
|
export default class ConfigValidator {
|
|
30
39
|
config;
|
|
31
40
|
sourceRejections;
|
|
@@ -42,12 +51,13 @@ export default class ConfigValidator {
|
|
|
42
51
|
await Promise.all(SHA_KEYS.map(async (shaParameter) => {
|
|
43
52
|
const shaValue = this.config[shaParameter];
|
|
44
53
|
try {
|
|
45
|
-
this.config[shaParameter] =
|
|
54
|
+
this.config[shaParameter] =
|
|
55
|
+
await this.gitAdapter.resolveCommit(shaValue);
|
|
46
56
|
}
|
|
47
57
|
catch (error) {
|
|
48
58
|
Logger.debug(
|
|
49
59
|
// Stryker disable next-line StringLiteral,ArrowFunction -- equivalent: catch log content is observability only
|
|
50
|
-
lazy `_validateGitSha: '${shaParameter}' = '${shaValue}'
|
|
60
|
+
lazy `_validateGitSha: '${shaParameter}' = '${shaValue}' does not resolve to a commit: ${() => getErrorMessage(error)}`);
|
|
51
61
|
errors.push(this._shaFailureMessage(error, shaParameter, shaValue));
|
|
52
62
|
}
|
|
53
63
|
}));
|
|
@@ -55,10 +65,20 @@ export default class ConfigValidator {
|
|
|
55
65
|
}
|
|
56
66
|
// A refusal is about the repository, not about either ref: reporting it
|
|
57
67
|
// verbatim replaces two bogus "check the fetch depth" lines with the one
|
|
58
|
-
// thing the user can act on.
|
|
68
|
+
// thing the user can act on. A non-commit is about the ref's KIND, not
|
|
69
|
+
// its existence: the fetch-depth hint would send the user to deepen a
|
|
70
|
+
// clone that is already complete, so it gets its own sentence. Both name
|
|
71
|
+
// shaValue — what the user typed — never the oid resolveCommit produced.
|
|
59
72
|
_shaFailureMessage(error, shaParameter, shaValue) {
|
|
60
73
|
if (error instanceof RepositoryRefusalError)
|
|
61
74
|
return error.message;
|
|
75
|
+
if (error instanceof NotACommitError) {
|
|
76
|
+
return this.message.getMessage('error.ParameterIsNotCommit', [
|
|
77
|
+
shaParameter,
|
|
78
|
+
sanitizeForMessage(shaValue),
|
|
79
|
+
error.objectType,
|
|
80
|
+
]);
|
|
81
|
+
}
|
|
62
82
|
return this.message.getMessage('error.ParameterIsNotGitSHA', [
|
|
63
83
|
shaParameter,
|
|
64
84
|
sanitizeForMessage(shaValue),
|
|
@@ -71,45 +91,64 @@ export default class ConfigValidator {
|
|
|
71
91
|
const requestedFrom = this.config.from;
|
|
72
92
|
const requestedTo = this.config.to;
|
|
73
93
|
this._sanitizeConfig();
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// the
|
|
77
|
-
//
|
|
94
|
+
this._assertSourceDirs();
|
|
95
|
+
const warnings = await this._validateInputsAndApiVersion();
|
|
96
|
+
// Runs after the SHA validation above so a typo in either ref surfaces
|
|
97
|
+
// as the precise ParameterIsNotGitSHA message instead of the vaguer
|
|
98
|
+
// MergeBaseNotFound.
|
|
99
|
+
await this._resolveMergeBase(requestedFrom, requestedTo);
|
|
100
|
+
return warnings;
|
|
101
|
+
}
|
|
102
|
+
// Short-circuits before any git object is read: _validateGitSha below
|
|
103
|
+
// calls resolveCommit, which opens the repository. A bad --source-dir is
|
|
104
|
+
// the actionable error and the one that today produces a silent empty
|
|
105
|
+
// manifest, so it is reported alone even if the SHAs are also invalid.
|
|
106
|
+
_assertSourceDirs() {
|
|
78
107
|
const sourceErrors = this._validateSource();
|
|
79
108
|
if (sourceErrors.length > 0) {
|
|
80
109
|
throw new ConfigError(sourceErrors.join(', '));
|
|
81
110
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
111
|
+
}
|
|
112
|
+
async _validateInputsAndApiVersion() {
|
|
113
|
+
const [apiVersionOutcome, inputErrors] = await Promise.all([
|
|
114
|
+
this._settleApiVersion(),
|
|
115
|
+
this._collectInputErrors(),
|
|
116
|
+
]);
|
|
117
|
+
// The refusal is about the environment, the input errors about what the
|
|
118
|
+
// user typed: report both in one run, the typing first.
|
|
119
|
+
if ('refusal' in apiVersionOutcome) {
|
|
120
|
+
throw this._configError([...inputErrors, apiVersionOutcome.refusal]);
|
|
121
|
+
}
|
|
122
|
+
if (inputErrors.length > 0) {
|
|
123
|
+
throw this._configError(inputErrors);
|
|
124
|
+
}
|
|
125
|
+
return apiVersionOutcome.warnings;
|
|
126
|
+
}
|
|
127
|
+
async _collectInputErrors() {
|
|
128
|
+
const errorGroups = await Promise.all([
|
|
129
|
+
this._validateRepository(),
|
|
85
130
|
this._validateGitSha(),
|
|
86
131
|
this._validateChangesManifest(),
|
|
87
132
|
]);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// in two different forms.
|
|
96
|
-
errors.push(this.message.getMessage('error.PathIsNotGit', [
|
|
97
|
-
sanitizeForMessage(this.gitAdapter.repositoryKey),
|
|
98
|
-
]));
|
|
133
|
+
return errorGroups.flat();
|
|
134
|
+
}
|
|
135
|
+
// Only a ConfigError is a refusal to report alongside the input errors; any
|
|
136
|
+
// other rejection is a defect and propagates untouched.
|
|
137
|
+
async _settleApiVersion() {
|
|
138
|
+
try {
|
|
139
|
+
return { warnings: await this._handleDefault() };
|
|
99
140
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// and a missing .git makes the config check and the engine say the
|
|
105
|
-
// same sentence. Identical strings carry no extra information.
|
|
106
|
-
throw new ConfigError([...new Set(errors)].join(', '));
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (!(error instanceof ConfigError))
|
|
143
|
+
throw error;
|
|
144
|
+
return { refusal: error.message };
|
|
107
145
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
146
|
+
}
|
|
147
|
+
// Two SHA keys against one repository produce the same refusal twice, and a
|
|
148
|
+
// missing .git makes the config check and the engine say the same sentence.
|
|
149
|
+
// Identical strings carry no extra information.
|
|
150
|
+
_configError(errors) {
|
|
151
|
+
return new ConfigError([...new Set(errors)].join(', '));
|
|
113
152
|
}
|
|
114
153
|
// --merge-base resolves --from to the merge base of --from and --to (git
|
|
115
154
|
// three-dot semantics) in place. requestedFrom/requestedTo are the
|
|
@@ -128,6 +167,20 @@ export default class ConfigValidator {
|
|
|
128
167
|
}
|
|
129
168
|
this.config.from = base;
|
|
130
169
|
}
|
|
170
|
+
// Rendered from the adapter's own absolute repository key — not
|
|
171
|
+
// this.config.repo, which is only sanitizePath-normalized, never resolved to
|
|
172
|
+
// absolute — so this collapses with the identical RepositoryRefusalError
|
|
173
|
+
// message a same-repository resolveCommit failure produces, instead of
|
|
174
|
+
// reporting the missing repository twice in two different forms.
|
|
175
|
+
async _validateRepository() {
|
|
176
|
+
if (await pathExists(join(this.config.repo, GIT_FOLDER)))
|
|
177
|
+
return [];
|
|
178
|
+
return [
|
|
179
|
+
this.message.getMessage('error.PathIsNotGit', [
|
|
180
|
+
sanitizeForMessage(this.gitAdapter.repositoryKey),
|
|
181
|
+
]),
|
|
182
|
+
];
|
|
183
|
+
}
|
|
131
184
|
// oclif cannot natively validate --changes-manifest (it uses a string flag
|
|
132
185
|
// to allow the bare form). Replicate meaningful checks: if the path already
|
|
133
186
|
// exists it must be a regular file; otherwise ENOENT is fine because
|
|
@@ -164,19 +217,19 @@ export default class ConfigValidator {
|
|
|
164
217
|
}
|
|
165
218
|
async _handleDefault() {
|
|
166
219
|
await this._getApiVersion();
|
|
220
|
+
// A version the user pinned is emitted as pinned: capping it would need the
|
|
221
|
+
// network, and a manifest that changes with network reachability is one the
|
|
222
|
+
// user cannot reproduce.
|
|
223
|
+
if (this._isPinned())
|
|
224
|
+
return [];
|
|
167
225
|
return await this._apiVersionDefault();
|
|
168
226
|
}
|
|
169
227
|
async _getApiVersion() {
|
|
170
|
-
if (this.
|
|
228
|
+
if (this._isPinned())
|
|
171
229
|
return;
|
|
172
230
|
try {
|
|
173
231
|
const sfProject = await SfProject.resolve(this.config.repo);
|
|
174
|
-
|
|
175
|
-
.getSfProjectJson()
|
|
176
|
-
.getContents().sourceApiVersion;
|
|
177
|
-
if (projectApiVersion) {
|
|
178
|
-
this.config.apiVersion = parseInt(projectApiVersion, 10);
|
|
179
|
-
}
|
|
232
|
+
this.config.apiVersion = toApiVersion(sfProject.getSfProjectJson().getContents().sourceApiVersion);
|
|
180
233
|
}
|
|
181
234
|
catch (ex) {
|
|
182
235
|
Logger.debug(
|
|
@@ -186,53 +239,53 @@ export default class ConfigValidator {
|
|
|
186
239
|
}
|
|
187
240
|
async _apiVersionDefault() {
|
|
188
241
|
const latestVersion = await this._resolveLatestSupportedVersion();
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
const warnings = [];
|
|
193
|
-
// Stryker disable ConditionalExpression,LogicalOperator -- equivalent: this triple-AND gate ensures we only override a numeric, defined, above-latest apiVersion; flipping individual conditions to true falls into the override branch when apiVersion is undefined or NaN, but the second `if (apiVersion === undefined || isNaN())` block immediately resets to latestVersion, producing the same observable apiVersion in both arms (only the warning content differs, which the test surface doesn't disambiguate)
|
|
194
|
-
if (this.config.apiVersion !== undefined &&
|
|
195
|
-
!isNaN(this.config.apiVersion) &&
|
|
196
|
-
this.config.apiVersion > latestVersion) {
|
|
197
|
-
// Stryker restore ConditionalExpression,LogicalOperator
|
|
198
|
-
warnings.push(new Error(this.message.getMessage('warning.ApiVersionOverridden', [
|
|
199
|
-
String(this.config.apiVersion),
|
|
200
|
-
String(latestVersion),
|
|
201
|
-
])));
|
|
202
|
-
this.config.apiVersion = latestVersion;
|
|
203
|
-
}
|
|
204
|
-
// Stryker disable next-line ConditionalExpression -- equivalent: defaulting fallback when apiVersion is unset/NaN; flipping to false skips the default and the apiVersion stays as-is, but the only test fixtures with apiVersion already set hit the early-return at _getApiVersion start, so the default branch is unreachable for those test cases
|
|
205
|
-
if (this.config.apiVersion === undefined || isNaN(this.config.apiVersion)) {
|
|
206
|
-
this.config.apiVersion = latestVersion;
|
|
207
|
-
warnings.push(new Error(this.message.getMessage('warning.ApiVersionDefaulted', [
|
|
242
|
+
this.config.apiVersion = latestVersion;
|
|
243
|
+
return [
|
|
244
|
+
new Error(this.message.getMessage('warning.ApiVersionDefaulted', [
|
|
208
245
|
String(latestVersion),
|
|
209
|
-
]))
|
|
210
|
-
|
|
211
|
-
return warnings;
|
|
246
|
+
])),
|
|
247
|
+
];
|
|
212
248
|
}
|
|
213
|
-
//
|
|
214
|
-
//
|
|
249
|
+
// Only an unpinned run looks the version up, so there is nothing to fall back
|
|
250
|
+
// to: a lookup that fails, or that answers with something that is not a
|
|
251
|
+
// positive version, refuses the run. This tool cannot vouch for a <version> it
|
|
252
|
+
// did not resolve, and a wrong one is authoritative at deploy time.
|
|
215
253
|
async _resolveLatestSupportedVersion() {
|
|
254
|
+
const latestVersion = await this._lookUpLatestVersion();
|
|
255
|
+
if (isPositiveVersion(latestVersion))
|
|
256
|
+
return latestVersion;
|
|
257
|
+
throw this._refusal(this.message.getMessage('error.ApiVersionLookupUnusable', [
|
|
258
|
+
String(latestVersion),
|
|
259
|
+
]));
|
|
260
|
+
}
|
|
261
|
+
async _lookUpLatestVersion() {
|
|
216
262
|
try {
|
|
217
263
|
return await getLatestSupportedVersion();
|
|
218
264
|
}
|
|
219
265
|
catch (ex) {
|
|
220
|
-
|
|
221
|
-
// Stryker disable ConditionalExpression -- equivalent: the '!== undefined' clause exists only for TS narrowing (isNaN requires a number); !isNaN already returns false for both undefined and NaN, so replacing the left operand with true preserves behavior for every reachable apiVersion
|
|
222
|
-
if (this.config.apiVersion !== undefined &&
|
|
223
|
-
!isNaN(this.config.apiVersion)) {
|
|
224
|
-
// Stryker restore ConditionalExpression
|
|
225
|
-
Logger.debug(
|
|
226
|
-
// Stryker disable next-line StringLiteral -- equivalent: lazy log content is observability only
|
|
227
|
-
lazy `_resolveLatestSupportedVersion: keeping provided apiVersion, latest version lookup failed: ${ex}`);
|
|
228
|
-
return undefined;
|
|
229
|
-
}
|
|
230
|
-
throw new ConfigError(this.message.getMessage('error.ApiVersionRetrievalFailed', [
|
|
231
|
-
getErrorMessage(ex),
|
|
232
|
-
]));
|
|
266
|
+
throw this._refusal(this._describeLookupFailure(ex));
|
|
233
267
|
}
|
|
234
268
|
}
|
|
269
|
+
_refusal(detail) {
|
|
270
|
+
return new ConfigError(this.message.getMessage('error.ApiVersionRetrievalFailed', [detail]));
|
|
271
|
+
}
|
|
272
|
+
_isPinned() {
|
|
273
|
+
return this.config.apiVersion !== undefined;
|
|
274
|
+
}
|
|
275
|
+
// SDR wraps got's RequestError as `cause`; its message carries the code
|
|
276
|
+
// (connect ECONNREFUSED …, connect ETIMEDOUT, getaddrinfo ENOTFOUND …), which is
|
|
277
|
+
// the only thing that tells a proxy misconfiguration from a firewall drop from DNS.
|
|
278
|
+
_describeLookupFailure(ex) {
|
|
279
|
+
const message = getErrorMessage(ex);
|
|
280
|
+
const cause = ex instanceof Error ? ex.cause : undefined;
|
|
281
|
+
if (!(cause instanceof Error))
|
|
282
|
+
return message;
|
|
283
|
+
// Redact before sanitising: the length cap could otherwise cut between the
|
|
284
|
+
// credentials and their '@', leaving a fragment the redaction cannot match.
|
|
285
|
+
return `${message} (${sanitizeForMessage(redactProxyCredentials(cause.message))})`;
|
|
286
|
+
}
|
|
235
287
|
_sanitizeConfig() {
|
|
288
|
+
this.config.apiVersion = toApiVersion(this.config.apiVersion);
|
|
236
289
|
this.config.repo = sanitizePath(this.config.repo);
|
|
237
290
|
this.config.output = sanitizePath(this.config.output);
|
|
238
291
|
this.config.ignore = sanitizePath(this.config.ignore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/utils/configValidator.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAE1E,OAAO,
|
|
1
|
+
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/utils/configValidator.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAE1E,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAO9B,MAAM,QAAQ,GAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAElD,MAAM,iCAAiC,GAGnC;IACF,KAAK,EAAE,wBAAwB;IAC/B,KAAK,EAAE,kCAAkC;IACzC,QAAQ,EAAE,iCAAiC;IAC3C,QAAQ,EAAE,2BAA2B;IACrC,OAAO,EAAE,kCAAkC;CAC5C,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAW,EAAE,CAAC,OAAO,GAAG,CAAC,CAAA;AAMnE,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,+CAA+C;AAC/C,MAAM,YAAY,GAAG,CAAC,KAAc,EAAsB,EAAE;IAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1C,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,eAAe;IAKb,MAAM;IACR,gBAAgB;IALhB,UAAU,CAAY;IACtB,OAAO,CAAgB;IAE1C,YACqB,MAAc,EAChB,gBAAgB,GAAkC,EAAE;sBADlD,MAAM;gCACR,gBAAgB;QAEjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,EAAE,CAAA;IACrC,CAAC;IAES,KAAK,CAAC,eAAe;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAA;QAE3B,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC1C,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;oBACvB,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK;gBACV,+GAA+G;gBAC/G,IAAI,CAAA,qBAAqB,YAAY,QAAQ,QAAQ,mCAAmC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CACvH,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;YACrE,CAAC;QACH,CAAC,CAAC,CACH,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,uEAAuE;IACvE,sEAAsE;IACtE,yEAAyE;IACzE,yEAAyE;IAC/D,kBAAkB,CAC1B,KAAc,EACd,YAAoB,EACpB,QAAgB;QAEhB,IAAI,KAAK,YAAY,sBAAsB;YAAE,OAAO,KAAK,CAAC,OAAO,CAAA;QACjE,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE;gBAC3D,YAAY;gBACZ,kBAAkB,CAAC,QAAQ,CAAC;gBAC5B,KAAK,CAAC,UAAU;aACjB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE;YAC3D,YAAY;YACZ,kBAAkB,CAAC,QAAQ,CAAC;SAC7B,CAAC,CAAA;IACJ,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,CACrB,iCAAiC,CAAC,SAAS,CAAC,MAAM,CAAC,EACnD,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACtC,CACF,CAAA;IACH,CAAC;IAGY,AAAN,KAAK,CAAC,cAAc;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;QAClC,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAA;QAE1D,uEAAuE;QACvE,oEAAoE;QACpE,qBAAqB;QACrB,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAExD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,sEAAsE;IACtE,yEAAyE;IACzE,sEAAsE;IACtE,uEAAuE;IAC/D,iBAAiB;QACvB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,4BAA4B;QACxC,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzD,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,mBAAmB,EAAE;SAC3B,CAAC,CAAA;QACF,wEAAwE;QACxE,wDAAwD;QACxD,IAAI,SAAS,IAAI,iBAAiB,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QACtC,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAA;IACnC,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpC,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,wBAAwB,EAAE;SAChC,CAAC,CAAA;QACF,OAAO,WAAW,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC;IAED,4EAA4E;IAC5E,wDAAwD;IAChD,KAAK,CAAC,iBAAiB;QAC7B,IAAI,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,CAAA;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;gBAAE,MAAM,KAAK,CAAA;YAChD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;QACnC,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,gDAAgD;IACxC,YAAY,CAAC,MAAyB;QAC5C,OAAO,IAAI,WAAW,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,yEAAyE;IACzE,mEAAmE;IACnE,8DAA8D;IAC9D,wEAAwE;IACxE,iDAAiD;IACvC,KAAK,CAAC,iBAAiB,CAC/B,aAAqB,EACrB,WAAmB;QAEnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAM;QAElC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CACf,CAAA;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,WAAW,CACnB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE;gBACjD,kBAAkB,CAAC,aAAa,CAAC;gBACjC,kBAAkB,CAAC,WAAW,CAAC;aAChC,CAAC,CACH,CAAA;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,gEAAgE;IAChE,6EAA6E;IAC7E,yEAAyE;IACzE,uEAAuE;IACvE,iEAAiE;IACvD,KAAK,CAAC,mBAAmB;QACjC,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAAE,OAAO,EAAE,CAAA;QACnE,OAAO;YACL,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE;gBAC5C,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;aAClD,CAAC;SACH,CAAA;IACH,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,oEAAoE;IAC1D,KAAK,CAAC,wBAAwB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAA;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;YAChC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,OAAO;oBACL,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC,MAAM,CAAC,CAAC;iBACnE,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,MAAM,IAAI,GACR,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAE,KAA+B,CAAC,IAAI;gBACvC,CAAC,CAAC,SAAS,CAAA;YACf,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,OAAO;oBACL,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iCAAiC,EAAE;wBACzD,MAAM;wBACN,eAAe,CAAC,KAAK,CAAC;qBACvB,CAAC;iBACH,CAAA;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAES,KAAK,CAAC,cAAc;QAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC3B,4EAA4E;QAC5E,4EAA4E;QAC5E,yBAAyB;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO,EAAE,CAAA;QAC/B,OAAO,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;IACxC,CAAC;IAES,KAAK,CAAC,cAAc;QAC5B,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAM;QAE5B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3D,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,CACnC,SAAS,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAC5D,CAAA;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK;YACV,gGAAgG;YAChG,IAAI,CAAA,kDAAkD,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,EAAE,CACjF,CAAA;QACH,CAAC;IACH,CAAC;IAES,KAAK,CAAC,kBAAkB;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAA;QACjE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAA;QACtC,OAAO;YACL,IAAI,KAAK,CACP,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE;gBACrD,MAAM,CAAC,aAAa,CAAC;aACtB,CAAC,CACH;SACF,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,wEAAwE;IACxE,+EAA+E;IAC/E,oEAAoE;IAC1D,KAAK,CAAC,8BAA8B;QAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACvD,IAAI,iBAAiB,CAAC,aAAa,CAAC;YAAE,OAAO,aAAa,CAAA;QAC1D,MAAM,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,gCAAgC,EAAE;YACxD,MAAM,CAAC,aAAa,CAAC;SACtB,CAAC,CACH,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC;YACH,OAAO,MAAM,yBAAyB,EAAE,CAAA;QAC1C,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,MAAc;QAC7B,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iCAAiC,EAAE,CAAC,MAAM,CAAC,CAAC,CACrE,CAAA;IACH,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAA;IAC7C,CAAC;IAED,wEAAwE;IACxE,iFAAiF;IACjF,oFAAoF;IAC5E,sBAAsB,CAAC,EAAW;QACxC,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACxD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,OAAO,OAAO,CAAA;QAC7C,2EAA2E;QAC3E,4EAA4E;QAC5E,OAAO,GAAG,OAAO,KAAK,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAA;IACpF,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,CAAA;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrD,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,YAAY,CAC3C,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC/B,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,8BAA8B,GAAG,YAAY,CACvD,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAC3C,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACzE,CAAC;CACF;AA/Oc;IADZ,GAAG;qDAcH"}
|
|
@@ -10,5 +10,10 @@ export declare class MetadataRegistryError extends SgdError {
|
|
|
10
10
|
export declare class RepositoryRefusalError extends SgdError {
|
|
11
11
|
constructor(message: string);
|
|
12
12
|
}
|
|
13
|
+
export type NonCommitObjectType = 'tree' | 'blob';
|
|
14
|
+
export declare class NotACommitError extends SgdError {
|
|
15
|
+
readonly objectType: NonCommitObjectType;
|
|
16
|
+
constructor(label: string, objectType: NonCommitObjectType);
|
|
17
|
+
}
|
|
13
18
|
export declare const getErrorMessage: (error: unknown) => string;
|
|
14
19
|
export declare const wrapError: (message: string, cause: unknown) => SgdError;
|
package/lib/utils/errorUtils.js
CHANGED
|
@@ -23,6 +23,14 @@ export class RepositoryRefusalError extends SgdError {
|
|
|
23
23
|
this.name = 'RepositoryRefusalError';
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
export class NotACommitError extends SgdError {
|
|
27
|
+
objectType;
|
|
28
|
+
constructor(label, objectType) {
|
|
29
|
+
super(`'${label}' does not resolve to a commit (it is a ${objectType})`);
|
|
30
|
+
this.objectType = objectType;
|
|
31
|
+
this.name = 'NotACommitError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
26
34
|
export const getErrorMessage = (error) => {
|
|
27
35
|
if (error instanceof Error) {
|
|
28
36
|
return error.message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../src/utils/errorUtils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACxB,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAU,EAAE;IACxD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,KAAc,EAAY,EAAE;IACrE,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../src/utils/errorUtils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACxB,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAOD,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAGhC,UAAU;IAFrB,YACE,KAAa,EACJ,UAA+B;QAExC,KAAK,CAAC,IAAI,KAAK,2CAA2C,UAAU,GAAG,CAAC,CAAA;0BAF/D,UAAU;QAGnB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAU,EAAE;IACxD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,KAAc,EAAY,EAAE;IACrE,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA"}
|
|
@@ -26,6 +26,52 @@ const escapeControlChar = (char) => {
|
|
|
26
26
|
const codePoint = char.codePointAt(0);
|
|
27
27
|
return `\\u{${codePoint.toString(16)}}`;
|
|
28
28
|
};
|
|
29
|
+
// Some network errors echo the offending proxy verbatim, credentials included:
|
|
30
|
+
// proxy-agent's "Unsupported protocol for proxy URL: <url>" carries a URL's
|
|
31
|
+
// user:password userinfo, and pac-proxy-agent's "Failed to establish a socket
|
|
32
|
+
// connection to proxies: [...]" lists a PAC resolver's entries as written.
|
|
33
|
+
// Redact both before the value reaches a message; both patterns stay linear
|
|
34
|
+
// because they run on network-supplied text before any length cap.
|
|
35
|
+
//
|
|
36
|
+
// The URL userinfo match runs up to the last '@' before an authority terminator
|
|
37
|
+
// ('/', '?', '#') and deliberately crosses whitespace, because a URL parser
|
|
38
|
+
// accepts a password with a space in it; over-redacting a later '@' fails safe.
|
|
39
|
+
// The scheme is capped at 32 characters: an uncapped scheme backtracks
|
|
40
|
+
// quadratically on a long letter run.
|
|
41
|
+
const URL_USERINFO_REGEX = /([a-z][a-z\d+.-]{0,31}:\/{2,})[^/?#]*@/gi;
|
|
42
|
+
// A PAC entry has no scheme to anchor on, so its keyword anchors instead,
|
|
43
|
+
// matched case-insensitively because a mis-cased or unsupported entry (such as
|
|
44
|
+
// SOCKS5H) is rejected yet still echoed. pac-proxy-agent splits an entry on any
|
|
45
|
+
// whitespace but echoes the list through JSON.stringify, so the separator
|
|
46
|
+
// arrives either as whitespace or as a JSON escape (\t, \n, \r, \f, \u000b).
|
|
47
|
+
// The separator is consumed atomically (lookahead then backreference) so the
|
|
48
|
+
// engine can never hand it back to the userinfo run. That run stops at
|
|
49
|
+
// whitespace, at a closing quote and at an escaped separator, and reads any
|
|
50
|
+
// other backslash pair (such as an escaped quote in a password) as one
|
|
51
|
+
// character: a match stays inside its own entry, which keeps every other
|
|
52
|
+
// entry's host visible and the scan linear over a long echoed list. Ordinary
|
|
53
|
+
// text shaped like a keyword followed by "<word>@" is over-redacted, which
|
|
54
|
+
// fails safe.
|
|
55
|
+
const PAC_ENTRY_USERINFO_REGEX = /\b((?:PROXY|HTTPS?|SOCKS(?:4A?|5H?)?)(?=((?:\s|\\[tnrf]|\\u000b)+))\2)(?:[^\s"\\]|\\(?![tnrf]|u000b)\S)*@/gi;
|
|
56
|
+
// Still not covered, and why each stays open. A raw '/', '?' or '#' inside a
|
|
57
|
+
// password is echoed only under a scheme proxy-agent rejects, with nothing but
|
|
58
|
+
// digits before the delimiter; closing it would redact URL paths. A special
|
|
59
|
+
// scheme written with fewer than two slashes ("ftp:user:pass@host") reaches a
|
|
60
|
+
// message only when the value also carries a later "://", because
|
|
61
|
+
// proxy-from-env prefixes a scheme to any value without one; closing it would
|
|
62
|
+
// mean matching any "word:" followed by an '@' in ordinary message text.
|
|
63
|
+
// Entries that never parse as a working proxy are echoed yet may stay
|
|
64
|
+
// unredacted: a literal backslash escape used as the separator
|
|
65
|
+
// ("PROXY\\tuser:pass@host"), a password containing whitespace (the target
|
|
66
|
+
// then has no '@'), or a non-whitespace character before the keyword or as the
|
|
67
|
+
// separator. Letting the userinfo run cross escaped separators would cover a
|
|
68
|
+
// tab, newline, carriage return, form feed or vertical tab inside a password
|
|
69
|
+
// (a space arrives raw and stays uncovered either way), but it backtracks
|
|
70
|
+
// quadratically.
|
|
71
|
+
const REDACTED_USERINFO = '<redacted>';
|
|
72
|
+
export const redactProxyCredentials = (value) => value
|
|
73
|
+
.replace(URL_USERINFO_REGEX, `$1${REDACTED_USERINFO}@`)
|
|
74
|
+
.replace(PAC_ENTRY_USERINFO_REGEX, `$1${REDACTED_USERINFO}@`);
|
|
29
75
|
export const sanitizeForMessage = (value) => {
|
|
30
76
|
// Truncate on code points (not UTF-16 code units) before escaping: a
|
|
31
77
|
// surrogate pair must never be split, and escaping only the already-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageSanitizer.js","sourceRoot":"","sources":["../../src/utils/messageSanitizer.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,2EAA2E;AAC3E,WAAW;AACX,MAAM,mBAAmB,GAAG,8BAA8B,CAAA;AAC1D,MAAM,eAAe,GAAG,KAAK,CAAA;AAC7B,MAAM,wBAAwB,GAAG,GAAG,CAAA;AACpC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,oEAAoE;AACpE,wEAAwE;AACxE,wEAAwE;AACxE,2EAA2E;AAC3E,yEAAyE;AACzE,yEAAyE;AACzE,6DAA6D;AAC7D,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE;IACjD,mEAAmE;IACnE,2CAA2C;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;IACtC,OAAO,OAAO,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAA;AACzC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;IAC1D,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,kEAAkE;IAClE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,wBAAwB,CAAA;IAChE,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,CAAC,CAAC,KAAK,CAAA;IACT,wEAAwE;IACxE,oEAAoE;IACpE,kEAAkE;IAClE,6CAA6C;IAC7C,MAAM,OAAO,GAAG,MAAM;SACnB,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC;SAChC,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;IAClD,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;AACjE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"messageSanitizer.js","sourceRoot":"","sources":["../../src/utils/messageSanitizer.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,2EAA2E;AAC3E,WAAW;AACX,MAAM,mBAAmB,GAAG,8BAA8B,CAAA;AAC1D,MAAM,eAAe,GAAG,KAAK,CAAA;AAC7B,MAAM,wBAAwB,GAAG,GAAG,CAAA;AACpC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,oEAAoE;AACpE,wEAAwE;AACxE,wEAAwE;AACxE,2EAA2E;AAC3E,yEAAyE;AACzE,yEAAyE;AACzE,6DAA6D;AAC7D,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE;IACjD,mEAAmE;IACnE,2CAA2C;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;IACtC,OAAO,OAAO,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAA;AACzC,CAAC,CAAA;AAED,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,mEAAmE;AACnE,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,gFAAgF;AAChF,uEAAuE;AACvE,sCAAsC;AACtC,MAAM,kBAAkB,GAAG,0CAA0C,CAAA;AACrE,0EAA0E;AAC1E,+EAA+E;AAC/E,gFAAgF;AAChF,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,uEAAuE;AACvE,4EAA4E;AAC5E,uEAAuE;AACvE,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,cAAc;AACd,MAAM,wBAAwB,GAC5B,6GAA6G,CAAA;AAC/G,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,kEAAkE;AAClE,8EAA8E;AAC9E,yEAAyE;AACzE,sEAAsE;AACtE,+DAA+D;AAC/D,2EAA2E;AAC3E,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,iBAAiB;AACjB,MAAM,iBAAiB,GAAG,YAAY,CAAA;AAEtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC9D,KAAK;KACF,OAAO,CAAC,kBAAkB,EAAE,KAAK,iBAAiB,GAAG,CAAC;KACtD,OAAO,CAAC,wBAAwB,EAAE,KAAK,iBAAiB,GAAG,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;IAC1D,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,kEAAkE;IAClE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,wBAAwB,CAAA;IAChE,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,CAAC,CAAC,KAAK,CAAA;IACT,wEAAwE;IACxE,oEAAoE;IACpE,kEAAkE;IAClE,6CAA6C;IAC7C,MAAM,OAAO,GAAG,MAAM;SACnB,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC;SAChC,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;IAClD,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;AACjE,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
import { parse as txmlParse } from 'txml';
|
|
2
|
+
import { parse as txmlParse } from 'txml/txml';
|
|
3
3
|
import { getErrorMessage } from '../errorUtils.js';
|
|
4
4
|
import { Logger, lazy } from '../LoggingService.js';
|
|
5
5
|
import { tNodeToXmlContent, } from '../txmlAdapter.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xmlEventReader.js","sourceRoot":"","sources":["../../../src/utils/metadataDiff/xmlEventReader.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"xmlEventReader.js","sourceRoot":"","sources":["../../../src/utils/metadataDiff/xmlEventReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,46 @@
|
|
|
1
1
|
import GitAdapter from '../adapter/GitAdapter.js';
|
|
2
2
|
import { MetadataRepository } from '../metadata/MetadataRepository.js';
|
|
3
3
|
import type { Config } from '../types/config.js';
|
|
4
|
+
import { type IgnoreHelper } from './ignoreHelper.js';
|
|
4
5
|
export type RenamePathPair = Readonly<{
|
|
5
6
|
fromPath: string;
|
|
6
7
|
toPath: string;
|
|
7
8
|
}>;
|
|
9
|
+
export type HeldAdditionProbeFailure = Readonly<{
|
|
10
|
+
candidateCount: number;
|
|
11
|
+
}>;
|
|
12
|
+
type DeferredDeletion = Readonly<{
|
|
13
|
+
line: string;
|
|
14
|
+
name: string;
|
|
15
|
+
}>;
|
|
8
16
|
export default class RepoGitDiff {
|
|
9
17
|
protected readonly config: Config;
|
|
10
18
|
protected readonly metadata: MetadataRepository;
|
|
11
19
|
protected readonly gitAdapter: GitAdapter;
|
|
12
20
|
private renamePairs;
|
|
13
21
|
private readonly diffScopeVerdict;
|
|
22
|
+
private probeFailure;
|
|
14
23
|
constructor(config: Config, metadata: MetadataRepository);
|
|
15
24
|
/**
|
|
16
25
|
* Streams the filtered, rename-expanded diff lines. Yields A/M lines as
|
|
17
26
|
* they arrive from git so handlers can start working immediately; D
|
|
18
27
|
* lines are buffered until upstream EOF because the deleted-renamed
|
|
19
|
-
* cancellation rule needs the full A-name set
|
|
20
|
-
*
|
|
28
|
+
* cancellation rule needs the full A-name set — including ignored
|
|
29
|
+
* additions, which are held and resolved against the `to` tree at EOF —
|
|
30
|
+
* before any D line can be classified.
|
|
21
31
|
*
|
|
22
32
|
* Rename pairs are captured along the way and exposed via
|
|
23
33
|
* getRenamePairs() once iteration completes.
|
|
24
34
|
*/
|
|
25
35
|
getLines(): AsyncGenerator<string>;
|
|
26
36
|
getRenamePairs(): readonly RenamePathPair[];
|
|
37
|
+
getHeldAdditionProbeFailure(): HeldAdditionProbeFailure | undefined;
|
|
27
38
|
getUnmatchedSourceScopes(): readonly string[];
|
|
28
39
|
protected _expandRename(line: string): Iterable<string>;
|
|
29
40
|
protected _extractComparisonName(line: string): string;
|
|
41
|
+
protected _vouchingHeldNames(held: ReadonlySet<string>, deferred: readonly DeferredDeletion[], registered: ReadonlySet<string>, ignoreHelper: IgnoreHelper): Promise<ReadonlySet<string>>;
|
|
42
|
+
protected _visibleNamesAtTo(candidates: ReadonlySet<string>, ignoreHelper: IgnoreHelper): Promise<ReadonlySet<string>>;
|
|
43
|
+
protected _listFilesAt(revision: string): Promise<readonly string[] | undefined>;
|
|
30
44
|
private diffSpec;
|
|
31
45
|
}
|
|
46
|
+
export {};
|