sfdx-git-delta 7.2.0 → 7.4.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.
- package/README.md +18 -5
- package/lib/adapter/GitAdapter.d.ts +22 -13
- package/lib/adapter/GitAdapter.js +170 -105
- package/lib/adapter/GitAdapter.js.map +1 -1
- package/lib/adapter/ioExecutor.d.ts +5 -6
- package/lib/adapter/ioExecutor.js +22 -22
- package/lib/adapter/ioExecutor.js.map +1 -1
- package/lib/adapter/treeIndex.d.ts +7 -4
- package/lib/adapter/treeIndex.js +34 -0
- package/lib/adapter/treeIndex.js.map +1 -1
- package/lib/adapter/treeReader.d.ts +8 -0
- package/lib/adapter/treeReader.js +22 -0
- package/lib/adapter/treeReader.js.map +1 -0
- package/lib/adapter/tsgitErrorMap.d.ts +5 -3
- package/lib/adapter/tsgitErrorMap.js +48 -16
- package/lib/adapter/tsgitErrorMap.js.map +1 -1
- package/lib/commands/sgd/source/delta.d.ts +1 -0
- package/lib/commands/sgd/source/delta.js +5 -0
- package/lib/commands/sgd/source/delta.js.map +1 -1
- package/lib/main.js +27 -9
- package/lib/main.js.map +1 -1
- package/lib/post-processor/baseProcessor.d.ts +4 -4
- package/lib/post-processor/baseProcessor.js +6 -5
- package/lib/post-processor/baseProcessor.js.map +1 -1
- package/lib/post-processor/flowTranslationProcessor.d.ts +0 -3
- package/lib/post-processor/flowTranslationProcessor.js +1 -5
- package/lib/post-processor/flowTranslationProcessor.js.map +1 -1
- package/lib/post-processor/includeProcessor.d.ts +2 -3
- package/lib/post-processor/includeProcessor.js +4 -4
- package/lib/post-processor/includeProcessor.js.map +1 -1
- package/lib/post-processor/postProcessorManager.d.ts +2 -3
- package/lib/post-processor/postProcessorManager.js +4 -4
- package/lib/post-processor/postProcessorManager.js.map +1 -1
- package/lib/service/containedDecomposedHandler.d.ts +2 -2
- package/lib/service/containedDecomposedHandler.js +3 -3
- package/lib/service/containedDecomposedHandler.js.map +1 -1
- package/lib/service/customObjectHandler.js +1 -1
- package/lib/service/customObjectHandler.js.map +1 -1
- package/lib/service/diffLineInterpreter.d.ts +3 -5
- package/lib/service/diffLineInterpreter.js +6 -9
- package/lib/service/diffLineInterpreter.js.map +1 -1
- package/lib/service/inFileHandler.d.ts +2 -2
- package/lib/service/inFileHandler.js +3 -3
- package/lib/service/inFileHandler.js.map +1 -1
- package/lib/service/inFolderHandler.js +1 -1
- package/lib/service/inFolderHandler.js.map +1 -1
- package/lib/service/inResourceHandler.js +3 -2
- package/lib/service/inResourceHandler.js.map +1 -1
- package/lib/service/reportingFolderHandler.d.ts +2 -2
- package/lib/service/reportingFolderHandler.js +2 -2
- package/lib/service/reportingFolderHandler.js.map +1 -1
- package/lib/service/sharedFolderHandler.d.ts +2 -2
- package/lib/service/sharedFolderHandler.js +2 -2
- package/lib/service/sharedFolderHandler.js.map +1 -1
- package/lib/service/standardHandler.d.ts +4 -2
- package/lib/service/standardHandler.js +8 -3
- package/lib/service/standardHandler.js.map +1 -1
- package/lib/service/typeHandlerFactory.d.ts +6 -4
- package/lib/service/typeHandlerFactory.js +12 -11
- package/lib/service/typeHandlerFactory.js.map +1 -1
- package/lib/types/config.d.ts +1 -0
- package/lib/types/runContext.d.ts +21 -0
- package/lib/types/runContext.js +12 -0
- package/lib/types/runContext.js.map +1 -0
- package/lib/utils/configValidator.d.ts +4 -0
- package/lib/utils/configValidator.js +49 -8
- package/lib/utils/configValidator.js.map +1 -1
- package/lib/utils/errorUtils.d.ts +3 -0
- package/lib/utils/errorUtils.js +6 -0
- package/lib/utils/errorUtils.js.map +1 -1
- package/lib/utils/fsHelper.d.ts +3 -2
- package/lib/utils/fsHelper.js +9 -10
- package/lib/utils/fsHelper.js.map +1 -1
- package/lib/utils/metadataBoundaryResolver.d.ts +7 -5
- package/lib/utils/metadataBoundaryResolver.js +18 -21
- package/lib/utils/metadataBoundaryResolver.js.map +1 -1
- package/lib/utils/renameResolver.d.ts +2 -3
- package/lib/utils/renameResolver.js +2 -2
- package/lib/utils/renameResolver.js.map +1 -1
- package/lib/utils/repoGitDiff.d.ts +1 -0
- package/lib/utils/repoGitDiff.js +17 -1
- package/lib/utils/repoGitDiff.js.map +1 -1
- package/messages/delta.md +12 -0
- package/oclif.manifest.json +9 -2
- package/package.json +42 -27
|
@@ -5,8 +5,8 @@ import { emptyResult } from '../types/handlerResult.js';
|
|
|
5
5
|
import InFolderHandler from './inFolderHandler.js';
|
|
6
6
|
export default class ReportingFolderHandler extends InFolderHandler {
|
|
7
7
|
resolvedType;
|
|
8
|
-
constructor(changeType, element,
|
|
9
|
-
super(changeType, element,
|
|
8
|
+
constructor(changeType, element, ctx) {
|
|
9
|
+
super(changeType, element, ctx);
|
|
10
10
|
this.resolvedType = element.getSharedFolderMetadata().get(element.extension);
|
|
11
11
|
}
|
|
12
12
|
/* jscpd:ignore-start */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportingFolderHandler.js","sourceRoot":"","sources":["../../src/service/reportingFolderHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"reportingFolderHandler.js","sourceRoot":"","sources":["../../src/service/reportingFolderHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAGvD,OAAO,eAAe,MAAM,sBAAsB,CAAA;AAElD,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,eAAe;IAC9C,YAAY,CAAoB;IAEnD,YAAY,UAAkB,EAAE,OAAwB,EAAE,GAAe;QACvE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9E,CAAC;IAED,wBAAwB;IACR,KAAK,CAAC,eAAe;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,EAAE,CAAA;QAC5C,OAAO,MAAM,KAAK,CAAC,eAAe,EAAE,CAAA;IACtC,CAAC;IAEe,KAAK,CAAC,eAAe;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,EAAE,CAAA;QAC5C,OAAO,MAAM,KAAK,CAAC,eAAe,EAAE,CAAA;IACtC,CAAC;IACD,sBAAsB;IAEH,wBAAwB,CAAC,MAAuB;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,cAAc,GAAG,GAAG,UAAU,GAAG,eAAe,EAAE,CAAA;QACxD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;IACzE,CAAC;IAEe,oBAAoB;QAClC,+RAA+R;QAC/R,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAC/E,CAAA;QACH,CAAC;QACD,qEAAqE;QACrE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;SAC/B,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Config } from '../types/config.js';
|
|
2
1
|
import type { HandlerResult } from '../types/handlerResult.js';
|
|
2
|
+
import type { RunContext } from '../types/runContext.js';
|
|
3
3
|
import type { MetadataElement } from '../utils/metadataElement.js';
|
|
4
4
|
import StandardHandler from './standardHandler.js';
|
|
5
5
|
export default class SharedFolderHandler extends StandardHandler {
|
|
6
6
|
protected readonly resolvedType: string | undefined;
|
|
7
|
-
constructor(changeType: string, element: MetadataElement,
|
|
7
|
+
constructor(changeType: string, element: MetadataElement, ctx: RunContext);
|
|
8
8
|
getElementDescriptor(): {
|
|
9
9
|
type: string;
|
|
10
10
|
member: string;
|
|
@@ -5,8 +5,8 @@ import { emptyResult } from '../types/handlerResult.js';
|
|
|
5
5
|
import StandardHandler from './standardHandler.js';
|
|
6
6
|
export default class SharedFolderHandler extends StandardHandler {
|
|
7
7
|
resolvedType;
|
|
8
|
-
constructor(changeType, element,
|
|
9
|
-
super(changeType, element,
|
|
8
|
+
constructor(changeType, element, ctx) {
|
|
9
|
+
super(changeType, element, ctx);
|
|
10
10
|
this.resolvedType = element.getSharedFolderMetadata().get(element.extension);
|
|
11
11
|
}
|
|
12
12
|
getElementDescriptor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedFolderHandler.js","sourceRoot":"","sources":["../../src/service/sharedFolderHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"sharedFolderHandler.js","sourceRoot":"","sources":["../../src/service/sharedFolderHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAIvD,OAAO,eAAe,MAAM,sBAAsB,CAAA;AAElD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,eAAe;IAC3C,YAAY,CAAoB;IAEnD,YAAY,UAAkB,EAAE,OAAwB,EAAE,GAAe;QACvE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9E,CAAC;IAEe,oBAAoB;QAClC,4RAA4R;QAC5R,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,oDAAoD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAC5E,CAAA;QACH,CAAC;QACD,qEAAqE;QACrE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;SAC/B,CAAA;IACH,CAAC;IAEe,KAAK,CAAC,eAAe;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,EAAE,CAAA;QAC5C,OAAO,MAAM,KAAK,CAAC,eAAe,EAAE,CAAA;IACtC,CAAC;IAEe,KAAK,CAAC,eAAe;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,EAAE,CAAA;QAC5C,OAAO,MAAM,KAAK,CAAC,eAAe,EAAE,CAAA;IACtC,CAAC;IAEkB,cAAc;QAC/B,mXAAmX;QACnX,OAAO,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA;IACtD,CAAC;IAEkB,oBAAoB,CAAC,IAAY;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,IAAI,CACT,UAAU,CAAC,GAAG,EACd,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,GAAG,eAAe,EAAE,CACxD,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Config } from '../types/config.js';
|
|
2
2
|
import type { AddKind, CopyOperation, HandlerResult } from '../types/handlerResult.js';
|
|
3
3
|
import { ManifestTarget } from '../types/handlerResult.js';
|
|
4
|
+
import type { RunContext } from '../types/runContext.js';
|
|
4
5
|
import type { MetadataElement } from '../utils/metadataElement.js';
|
|
5
6
|
/**
|
|
6
7
|
* Strategy pattern base for metadata type handlers.
|
|
@@ -14,8 +15,9 @@ import type { MetadataElement } from '../utils/metadataElement.js';
|
|
|
14
15
|
export default class StandardHandler {
|
|
15
16
|
protected readonly changeType: string;
|
|
16
17
|
protected readonly element: MetadataElement;
|
|
17
|
-
protected readonly
|
|
18
|
-
constructor(changeType: string, element: MetadataElement,
|
|
18
|
+
protected readonly ctx: RunContext;
|
|
19
|
+
constructor(changeType: string, element: MetadataElement, ctx: RunContext);
|
|
20
|
+
protected get config(): Config;
|
|
19
21
|
collect(): Promise<HandlerResult>;
|
|
20
22
|
collectAddition(): Promise<HandlerResult>;
|
|
21
23
|
collectDeletion(): Promise<HandlerResult>;
|
|
@@ -29,11 +29,14 @@ const CHANGE_KIND_BY_GIT_TYPE = {
|
|
|
29
29
|
export default class StandardHandler {
|
|
30
30
|
changeType;
|
|
31
31
|
element;
|
|
32
|
-
|
|
33
|
-
constructor(changeType, element,
|
|
32
|
+
ctx;
|
|
33
|
+
constructor(changeType, element, ctx) {
|
|
34
34
|
this.changeType = changeType;
|
|
35
35
|
this.element = element;
|
|
36
|
-
this.
|
|
36
|
+
this.ctx = ctx;
|
|
37
|
+
}
|
|
38
|
+
get config() {
|
|
39
|
+
return this.ctx.config;
|
|
37
40
|
}
|
|
38
41
|
async collect() {
|
|
39
42
|
if (!this._isProcessable()) {
|
|
@@ -53,11 +56,13 @@ export default class StandardHandler {
|
|
|
53
56
|
}
|
|
54
57
|
catch (error) {
|
|
55
58
|
const message = `${this.element.basePath}: ${getErrorMessage(error)}`;
|
|
59
|
+
// Stryker disable CallExpression -- equivalent: removing either log call entirely is unobservable, because this file's tests mock LoggingService and assert on the wrapped warning in result.warnings via wrapError; asserting the emission itself would couple them to logging plumbing, which this project deliberately avoids
|
|
56
60
|
// Stryker disable next-line StringLiteral -- equivalent: lazy log content is observability only; tests assert on the wrapped warning message in result.warnings via wrapError, not on the lazy log line
|
|
57
61
|
Logger.warn(lazy `${message}`);
|
|
58
62
|
Logger.debug(
|
|
59
63
|
// Stryker disable next-line StringLiteral,ArrowFunction -- equivalent: same as above, debug log is observability only
|
|
60
64
|
lazy `${this.constructor.name}.collect: ${this.changeType} ${this.element.type.xmlName} '${this.element.basePath}' failed: ${() => getErrorMessage(error)}`);
|
|
65
|
+
// Stryker restore CallExpression
|
|
61
66
|
return { elements: [], copies: [], warnings: [wrapError(message, error)] };
|
|
62
67
|
}
|
|
63
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardHandler.js","sourceRoot":"","sources":["../../src/service/standardHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;AACZ,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAOlE,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,GACf,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"standardHandler.js","sourceRoot":"","sources":["../../src/service/standardHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { MetadataRepository } from '../metadata/MetadataRepository.js';
|
|
1
|
+
import type { MetadataRepository } from '../metadata/MetadataRepository.js';
|
|
2
2
|
import type { Config } from '../types/config.js';
|
|
3
|
+
import type { RunContext } from '../types/runContext.js';
|
|
3
4
|
import { MetadataBoundaryResolver } from '../utils/metadataBoundaryResolver.js';
|
|
4
5
|
import Standard from './standardHandler.js';
|
|
5
6
|
export default class TypeHandlerFactory {
|
|
6
|
-
protected readonly
|
|
7
|
-
protected readonly metadata: MetadataRepository;
|
|
7
|
+
protected readonly ctx: RunContext;
|
|
8
8
|
protected readonly resolver: MetadataBoundaryResolver;
|
|
9
9
|
private readonly inFileParentXmlNames;
|
|
10
10
|
private readonly handlerCache;
|
|
11
|
-
constructor(
|
|
11
|
+
constructor(ctx: RunContext);
|
|
12
|
+
protected get config(): Config;
|
|
13
|
+
protected get metadata(): MetadataRepository;
|
|
12
14
|
getTypeHandler(line: string): Promise<Standard>;
|
|
13
15
|
private buildInFileParentIndex;
|
|
14
16
|
private resolveHandler;
|
|
@@ -5,7 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
import GitAdapter from '../adapter/GitAdapter.js';
|
|
9
8
|
import { DELETION, GIT_DIFF_TYPE_REGEX } from '../constant/gitConstants.js';
|
|
10
9
|
import { log } from '../utils/LoggingDecorator.js';
|
|
11
10
|
import { MetadataBoundaryResolver } from '../utils/metadataBoundaryResolver.js';
|
|
@@ -58,8 +57,7 @@ const adapterHandlerMap = {
|
|
|
58
57
|
mixedContent: InResource,
|
|
59
58
|
};
|
|
60
59
|
export default class TypeHandlerFactory {
|
|
61
|
-
|
|
62
|
-
metadata;
|
|
60
|
+
ctx;
|
|
63
61
|
resolver;
|
|
64
62
|
inFileParentXmlNames;
|
|
65
63
|
// Memoizes resolveHandler(metadata) → handler-class. The dispatch
|
|
@@ -70,15 +68,19 @@ export default class TypeHandlerFactory {
|
|
|
70
68
|
// stays trivially small.
|
|
71
69
|
handlerCache = new Map();
|
|
72
70
|
// Stryker disable BlockStatement -- equivalent: constructor body wires the resolver and pre-builds the inFileParent index; tests instantiate via factory paths that exercise the indexed lookups indirectly, but the mutant `{}` constructor would fail at first getTypeHandler call (resolver undefined), and that failure surfaces only outside the unit test surface for the factory's pure-routing tests
|
|
73
|
-
constructor(
|
|
74
|
-
this.
|
|
75
|
-
this.
|
|
76
|
-
const gitAdapter = GitAdapter.getInstance(config);
|
|
77
|
-
this.resolver = new MetadataBoundaryResolver(metadata, gitAdapter);
|
|
71
|
+
constructor(ctx) {
|
|
72
|
+
this.ctx = ctx;
|
|
73
|
+
this.resolver = new MetadataBoundaryResolver(ctx);
|
|
78
74
|
this.inFileParentXmlNames = new Set();
|
|
79
75
|
this.buildInFileParentIndex();
|
|
80
76
|
}
|
|
81
77
|
// Stryker restore BlockStatement
|
|
78
|
+
get config() {
|
|
79
|
+
return this.ctx.config;
|
|
80
|
+
}
|
|
81
|
+
get metadata() {
|
|
82
|
+
return this.ctx.metadata;
|
|
83
|
+
}
|
|
82
84
|
async getTypeHandler(line) {
|
|
83
85
|
// Stryker disable next-line MethodExpression -- equivalent: line.charAt(0) extracts the first character (A/M/D/R); mutating to `line` returns the full line which is then matched against DELETION constant — only the first-char comparison logic matters and the rest of the path proceeds with the now-truthy changeType assignment
|
|
84
86
|
const changeType = line.charAt(0);
|
|
@@ -91,12 +93,10 @@ export default class TypeHandlerFactory {
|
|
|
91
93
|
throw new Error(`Unknown metadata type for path: ${path}`);
|
|
92
94
|
}
|
|
93
95
|
// Stryker restore ConditionalExpression,BlockStatement,StringLiteral
|
|
94
|
-
// Stryker disable ConditionalExpression,EqualityOperator -- equivalent: the conditional picks `from` for deletions and `to` for additions/modifications; the test surface uses identical from/to values via getWork() defaults so the swap is unobservable
|
|
95
96
|
const revision = changeType === DELETION ? this.config.from : this.config.to;
|
|
96
|
-
// Stryker restore ConditionalExpression,EqualityOperator
|
|
97
97
|
const element = await this.resolver.createElement(path, type, revision);
|
|
98
98
|
const Handler = this.resolveHandler(type);
|
|
99
|
-
return new Handler(changeType, element, this.
|
|
99
|
+
return new Handler(changeType, element, this.ctx);
|
|
100
100
|
}
|
|
101
101
|
// Stryker disable next-line BlockStatement -- equivalent: emptying the body produces an empty inFileParent index; downstream resolveHandler falls back to Standard for inFile parents, which still routes correctly for the pure-routing test surface
|
|
102
102
|
buildInFileParentIndex() {
|
|
@@ -118,6 +118,7 @@ export default class TypeHandlerFactory {
|
|
|
118
118
|
if (cached !== undefined)
|
|
119
119
|
return cached;
|
|
120
120
|
const resolved = this._computeHandler(type);
|
|
121
|
+
// Stryker disable next-line CallExpression -- equivalent: cache population; dropping the set() only means resolveHandler recomputes through the deterministic _computeHandler(type) on every call, which is the same situation the cache-check flip above is already documented as equivalent for
|
|
121
122
|
this.handlerCache.set(type, resolved);
|
|
122
123
|
return resolved;
|
|
123
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeHandlerFactory.js","sourceRoot":"","sources":["../../src/service/typeHandlerFactory.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;AACZ,OAAO,
|
|
1
|
+
{"version":3,"file":"typeHandlerFactory.js","sourceRoot":"","sources":["../../src/service/typeHandlerFactory.ts"],"names":[],"mappings":"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"}
|
package/lib/types/config.d.ts
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TreeReader } from '../adapter/treeReader.js';
|
|
2
|
+
import type { MetadataRepository } from '../metadata/MetadataRepository.js';
|
|
3
|
+
import type { Config } from './config.js';
|
|
4
|
+
export type RunContext = Readonly<{
|
|
5
|
+
config: Config;
|
|
6
|
+
metadata: MetadataRepository;
|
|
7
|
+
trees: TreeReader;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* The single derive point for a pass that runs under overridden revisions
|
|
11
|
+
* (IncludeProcessor's ADDITION / DELETION re-entry). `trees` is deliberately
|
|
12
|
+
* carried through UNCHANGED: the reader stays keyed by whatever revision each
|
|
13
|
+
* read names, so a pass whose effective `config.to` is a revision no index was
|
|
14
|
+
* built for still reads empty. That degrade is load-bearing on the include
|
|
15
|
+
* DELETION path — rebinding `trees` here silently reclassifies deletions as
|
|
16
|
+
* additions.
|
|
17
|
+
*/
|
|
18
|
+
export declare const withRevisions: (ctx: RunContext, revisions?: {
|
|
19
|
+
from: string;
|
|
20
|
+
to: string;
|
|
21
|
+
}) => RunContext;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* The single derive point for a pass that runs under overridden revisions
|
|
4
|
+
* (IncludeProcessor's ADDITION / DELETION re-entry). `trees` is deliberately
|
|
5
|
+
* carried through UNCHANGED: the reader stays keyed by whatever revision each
|
|
6
|
+
* read names, so a pass whose effective `config.to` is a revision no index was
|
|
7
|
+
* built for still reads empty. That degrade is load-bearing on the include
|
|
8
|
+
* DELETION path — rebinding `trees` here silently reclassifies deletions as
|
|
9
|
+
* additions.
|
|
10
|
+
*/
|
|
11
|
+
export const withRevisions = (ctx, revisions) => revisions ? { ...ctx, config: { ...ctx.config, ...revisions } } : ctx;
|
|
12
|
+
//# sourceMappingURL=runContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runContext.js","sourceRoot":"","sources":["../../src/types/runContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAYZ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAe,EACf,SAAwC,EAC5B,EAAE,CACd,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA"}
|
|
@@ -2,6 +2,7 @@ import GitAdapter from '../adapter/GitAdapter.js';
|
|
|
2
2
|
import type { Config } from '../types/config.js';
|
|
3
3
|
import { MessageService } from './MessageService.js';
|
|
4
4
|
import type { SourceDirRejection } from './pathspec.js';
|
|
5
|
+
type ShaKey = 'from' | 'to';
|
|
5
6
|
export default class ConfigValidator {
|
|
6
7
|
protected readonly config: Config;
|
|
7
8
|
private readonly sourceRejections;
|
|
@@ -9,8 +10,10 @@ export default class ConfigValidator {
|
|
|
9
10
|
protected readonly message: MessageService;
|
|
10
11
|
constructor(config: Config, sourceRejections?: readonly SourceDirRejection[]);
|
|
11
12
|
protected _validateGitSha(): Promise<string[]>;
|
|
13
|
+
protected _shaFailureMessage(error: unknown, shaParameter: ShaKey, shaValue: string): string;
|
|
12
14
|
protected _validateSource(): string[];
|
|
13
15
|
validateConfig(): Promise<readonly Error[]>;
|
|
16
|
+
protected _resolveMergeBase(requestedFrom: string, requestedTo: string): Promise<void>;
|
|
14
17
|
protected _validateChangesManifest(): Promise<string[]>;
|
|
15
18
|
protected _handleDefault(): Promise<readonly Error[]>;
|
|
16
19
|
protected _getApiVersion(): Promise<void>;
|
|
@@ -18,3 +21,4 @@ export default class ConfigValidator {
|
|
|
18
21
|
protected _resolveLatestSupportedVersion(): Promise<number | undefined>;
|
|
19
22
|
protected _sanitizeConfig(): void;
|
|
20
23
|
}
|
|
24
|
+
export {};
|
|
@@ -12,7 +12,7 @@ import GitAdapter from '../adapter/GitAdapter.js';
|
|
|
12
12
|
import { GIT_FOLDER } from '../constant/gitConstants.js';
|
|
13
13
|
import { getLatestSupportedVersion } from '../metadata/metadataManager.js';
|
|
14
14
|
import { pushAll } from './arrayUtils.js';
|
|
15
|
-
import { ConfigError, getErrorMessage } from './errorUtils.js';
|
|
15
|
+
import { ConfigError, getErrorMessage, RepositoryRefusalError, } from './errorUtils.js';
|
|
16
16
|
import { pathExists, sanitizePath } from './fsUtils.js';
|
|
17
17
|
import { log } from './LoggingDecorator.js';
|
|
18
18
|
import { Logger, lazy } from './LoggingService.js';
|
|
@@ -48,18 +48,28 @@ export default class ConfigValidator {
|
|
|
48
48
|
Logger.debug(
|
|
49
49
|
// Stryker disable next-line StringLiteral,ArrowFunction -- equivalent: catch log content is observability only
|
|
50
50
|
lazy `_validateGitSha: '${shaParameter}' = '${shaValue}' is not a valid git SHA: ${() => getErrorMessage(error)}`);
|
|
51
|
-
errors.push(this.
|
|
52
|
-
shaParameter,
|
|
53
|
-
shaValue,
|
|
54
|
-
]));
|
|
51
|
+
errors.push(this._shaFailureMessage(error, shaParameter, shaValue));
|
|
55
52
|
}
|
|
56
53
|
}));
|
|
57
54
|
return errors;
|
|
58
55
|
}
|
|
56
|
+
// A refusal is about the repository, not about either ref: reporting it
|
|
57
|
+
// verbatim replaces two bogus "check the fetch depth" lines with the one
|
|
58
|
+
// thing the user can act on.
|
|
59
|
+
_shaFailureMessage(error, shaParameter, shaValue) {
|
|
60
|
+
if (error instanceof RepositoryRefusalError)
|
|
61
|
+
return error.message;
|
|
62
|
+
return this.message.getMessage('error.ParameterIsNotGitSHA', [
|
|
63
|
+
shaParameter,
|
|
64
|
+
sanitizeForMessage(shaValue),
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
59
67
|
_validateSource() {
|
|
60
68
|
return this.sourceRejections.map(rejection => this.message.getMessage(SOURCE_DIR_REJECTION_MESSAGE_KEYS[rejection.reason], [sanitizeForMessage(rejection.value)]));
|
|
61
69
|
}
|
|
62
70
|
async validateConfig() {
|
|
71
|
+
const requestedFrom = this.config.from;
|
|
72
|
+
const requestedTo = this.config.to;
|
|
63
73
|
this._sanitizeConfig();
|
|
64
74
|
// Short-circuits before any git object is read: _validateGitSha below
|
|
65
75
|
// calls parseRev, which opens the repository. A bad --source-dir is
|
|
@@ -77,16 +87,47 @@ export default class ConfigValidator {
|
|
|
77
87
|
]);
|
|
78
88
|
const errors = [];
|
|
79
89
|
if (!repoExists) {
|
|
80
|
-
|
|
90
|
+
// Rendered from the adapter's own absolute repository key — not
|
|
91
|
+
// this.config.repo, which is only sanitizePath-normalized, never
|
|
92
|
+
// resolved to absolute — so this collapses with the identical
|
|
93
|
+
// RepositoryRefusalError message a same-repository parseRev failure
|
|
94
|
+
// produces below, instead of reporting the missing repository twice
|
|
95
|
+
// in two different forms.
|
|
96
|
+
errors.push(this.message.getMessage('error.PathIsNotGit', [
|
|
97
|
+
sanitizeForMessage(this.gitAdapter.repositoryKey),
|
|
98
|
+
]));
|
|
81
99
|
}
|
|
82
100
|
pushAll(errors, gitErrors);
|
|
83
101
|
pushAll(errors, changesManifestErrors);
|
|
84
102
|
if (errors.length > 0) {
|
|
85
|
-
|
|
103
|
+
// Two SHA keys against one repository produce the same refusal twice,
|
|
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(', '));
|
|
86
107
|
}
|
|
87
|
-
|
|
108
|
+
// Runs after the SHA validation above so a typo in either ref surfaces
|
|
109
|
+
// as the precise ParameterIsNotGitSHA message instead of the vaguer
|
|
110
|
+
// MergeBaseNotFound.
|
|
111
|
+
await this._resolveMergeBase(requestedFrom, requestedTo);
|
|
88
112
|
return defaultWarnings;
|
|
89
113
|
}
|
|
114
|
+
// --merge-base resolves --from to the merge base of --from and --to (git
|
|
115
|
+
// three-dot semantics) in place. requestedFrom/requestedTo are the
|
|
116
|
+
// user-typed refs, captured before _validateGitSha overwrites
|
|
117
|
+
// this.config.from/to with resolved SHAs — the error the user sees must
|
|
118
|
+
// name what they typed, not a 40-character hash.
|
|
119
|
+
async _resolveMergeBase(requestedFrom, requestedTo) {
|
|
120
|
+
if (!this.config.mergeBase)
|
|
121
|
+
return;
|
|
122
|
+
const base = await this.gitAdapter.getMergeBase(this.config.from, this.config.to);
|
|
123
|
+
if (!base) {
|
|
124
|
+
throw new ConfigError(this.message.getMessage('error.MergeBaseNotFound', [
|
|
125
|
+
sanitizeForMessage(requestedFrom),
|
|
126
|
+
sanitizeForMessage(requestedTo),
|
|
127
|
+
]));
|
|
128
|
+
}
|
|
129
|
+
this.config.from = base;
|
|
130
|
+
}
|
|
90
131
|
// oclif cannot natively validate --changes-manifest (it uses a string flag
|
|
91
132
|
// to allow the bare form). Replicate meaningful checks: if the path already
|
|
92
133
|
// exists it must be a regular file; otherwise ENOENT is fine because
|
|
@@ -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,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"configValidator.js","sourceRoot":"","sources":["../../src/utils/configValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,8 @@ export declare class ConfigError extends SgdError {
|
|
|
7
7
|
export declare class MetadataRegistryError extends SgdError {
|
|
8
8
|
constructor(message: string);
|
|
9
9
|
}
|
|
10
|
+
export declare class RepositoryRefusalError extends SgdError {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
10
13
|
export declare const getErrorMessage: (error: unknown) => string;
|
|
11
14
|
export declare const wrapError: (message: string, cause: unknown) => SgdError;
|
package/lib/utils/errorUtils.js
CHANGED
|
@@ -17,6 +17,12 @@ export class MetadataRegistryError extends SgdError {
|
|
|
17
17
|
this.name = 'MetadataRegistryError';
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
export class RepositoryRefusalError extends SgdError {
|
|
21
|
+
constructor(message) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.name = 'RepositoryRefusalError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
20
26
|
export const getErrorMessage = (error) => {
|
|
21
27
|
if (error instanceof Error) {
|
|
22
28
|
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,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;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"}
|
package/lib/utils/fsHelper.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Config } from '../types/config.js';
|
|
2
2
|
import type { FileGitRef } from '../types/git.js';
|
|
3
|
+
import type { RunContext } from '../types/runContext.js';
|
|
3
4
|
export declare const resetWrittenFiles: () => void;
|
|
4
5
|
export declare const readPathFromGit: (forRef: FileGitRef, config: Config) => Promise<string>;
|
|
5
|
-
export declare const pathExists: (path: string,
|
|
6
|
-
export declare const readDirs: (paths: string | string[],
|
|
6
|
+
export declare const pathExists: (path: string, ctx: RunContext) => Promise<boolean>;
|
|
7
|
+
export declare const readDirs: (paths: string | string[], ctx: RunContext) => Promise<string[]>;
|
|
7
8
|
export declare const grepContentUnder: (pattern: string, path: string | string[], config: Config) => Promise<string[]>;
|
|
8
9
|
export declare const grepContentMatching: (pattern: string, pathspecs: string | string[], config: Config) => Promise<string[]>;
|
|
9
10
|
export declare const contentIncludes: (pattern: string, path: string, config: Config) => Promise<boolean>;
|
package/lib/utils/fsHelper.js
CHANGED
|
@@ -22,21 +22,20 @@ export const readPathFromGit = async (forRef, config) => {
|
|
|
22
22
|
}
|
|
23
23
|
return utf8Data;
|
|
24
24
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
25
|
+
// Both read the run-owned tree reader for `config.to` — supplied by the
|
|
26
|
+
// caller (ultimately main.ts) rather than rebuilt here, so there is no
|
|
27
|
+
// scope for this lookup to disagree with whatever scope the index was
|
|
28
|
+
// actually built under. A revision nobody built an index for (or an index
|
|
29
|
+
// build that failed) degrades to false/[] rather than indexing lazily.
|
|
30
|
+
export const pathExists = async (path, ctx) => ctx.trees.pathExists(ctx.config.to, path);
|
|
31
|
+
export const readDirs = async (paths, ctx) => ctx.trees.filesUnder(ctx.config.to, paths);
|
|
33
32
|
export const grepContentUnder = async (pattern, path, config) => {
|
|
34
33
|
const gitAdapter = GitAdapter.getInstance(config);
|
|
35
|
-
return await gitAdapter.grepUnderPaths(pattern, path);
|
|
34
|
+
return await gitAdapter.grepUnderPaths(pattern, path, config.to);
|
|
36
35
|
};
|
|
37
36
|
export const grepContentMatching = async (pattern, pathspecs, config) => {
|
|
38
37
|
const gitAdapter = GitAdapter.getInstance(config);
|
|
39
|
-
return await gitAdapter.grepMatchingPathspecs(pattern, pathspecs);
|
|
38
|
+
return await gitAdapter.grepMatchingPathspecs(pattern, pathspecs, config.to);
|
|
40
39
|
};
|
|
41
40
|
export const contentIncludes = async (pattern, path, config) => {
|
|
42
41
|
const results = await grepContentUnder(pattern, path, config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fsHelper.js","sourceRoot":"","sources":["../../src/utils/fsHelper.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,UAAU,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"fsHelper.js","sourceRoot":"","sources":["../../src/utils/fsHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { MetadataRepository } from '../metadata/MetadataRepository.js';
|
|
1
|
+
import type { TreeReader } from '../adapter/treeReader.js';
|
|
2
|
+
import type { MetadataRepository } from '../metadata/MetadataRepository.js';
|
|
3
3
|
import type { Metadata } from '../types/metadata.js';
|
|
4
|
+
import type { RunContext } from '../types/runContext.js';
|
|
4
5
|
import { MetadataElement } from './metadataElement.js';
|
|
5
6
|
export declare class MetadataBoundaryResolver {
|
|
6
|
-
protected readonly
|
|
7
|
-
protected readonly gitAdapter: GitAdapter;
|
|
7
|
+
protected readonly ctx: RunContext;
|
|
8
8
|
protected readonly dirCache: Map<string, string[]>;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(ctx: RunContext);
|
|
10
|
+
protected get metadata(): MetadataRepository;
|
|
11
|
+
protected get trees(): TreeReader;
|
|
10
12
|
createElement(path: string, metadataDef: Metadata, revision: string): Promise<MetadataElement>;
|
|
11
13
|
protected scanAndCreateElement(path: string, metadataDef: Metadata, revision: string): Promise<MetadataElement>;
|
|
12
14
|
protected isNameInPath(parts: string[], componentName: string): boolean;
|