sfdx-git-delta 6.41.2 → 6.43.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 +35 -2
- package/lib/adapter/GitAdapter.d.ts +51 -2
- package/lib/adapter/GitAdapter.js +367 -41
- package/lib/adapter/GitAdapter.js.map +1 -1
- package/lib/adapter/gitBatchCatFile.d.ts +26 -4
- package/lib/adapter/gitBatchCatFile.js +128 -44
- package/lib/adapter/gitBatchCatFile.js.map +1 -1
- package/lib/adapter/gitBlobReader.d.ts +58 -0
- package/lib/adapter/gitBlobReader.js +27 -0
- package/lib/adapter/gitBlobReader.js.map +1 -0
- package/lib/adapter/ioExecutor.d.ts +18 -6
- package/lib/adapter/ioExecutor.js +97 -12
- package/lib/adapter/ioExecutor.js.map +1 -1
- package/lib/commands/sgd/source/delta.d.ts +2 -0
- package/lib/commands/sgd/source/delta.js +31 -1
- package/lib/commands/sgd/source/delta.js.map +1 -1
- package/lib/constant/cliConstants.d.ts +2 -0
- package/lib/constant/cliConstants.js +4 -0
- package/lib/constant/cliConstants.js.map +1 -1
- package/lib/constant/gitConstants.d.ts +1 -0
- package/lib/constant/gitConstants.js +4 -0
- package/lib/constant/gitConstants.js.map +1 -1
- package/lib/main.js +35 -7
- package/lib/main.js.map +1 -1
- package/lib/metadata/MetadataRepositoryImpl.d.ts +1 -0
- package/lib/metadata/MetadataRepositoryImpl.js +14 -2
- package/lib/metadata/MetadataRepositoryImpl.js.map +1 -1
- package/lib/post-processor/changesManifestProcessor.d.ts +15 -0
- package/lib/post-processor/changesManifestProcessor.js +50 -0
- package/lib/post-processor/changesManifestProcessor.js.map +1 -0
- package/lib/post-processor/flowTranslationProcessor.d.ts +31 -14
- package/lib/post-processor/flowTranslationProcessor.js +146 -51
- package/lib/post-processor/flowTranslationProcessor.js.map +1 -1
- package/lib/post-processor/packageGenerator.d.ts +1 -2
- package/lib/post-processor/packageGenerator.js +23 -34
- package/lib/post-processor/packageGenerator.js.map +1 -1
- package/lib/post-processor/postProcessorManager.js +9 -6
- package/lib/post-processor/postProcessorManager.js.map +1 -1
- package/lib/service/botHandler.d.ts +2 -1
- package/lib/service/botHandler.js +4 -3
- package/lib/service/botHandler.js.map +1 -1
- package/lib/service/containedDecomposedHandler.d.ts +3 -2
- package/lib/service/containedDecomposedHandler.js +6 -6
- package/lib/service/containedDecomposedHandler.js.map +1 -1
- package/lib/service/customFieldHandler.d.ts +2 -1
- package/lib/service/customFieldHandler.js +2 -2
- package/lib/service/customFieldHandler.js.map +1 -1
- package/lib/service/customLabelHandler.d.ts +2 -1
- package/lib/service/customLabelHandler.js +3 -3
- package/lib/service/customLabelHandler.js.map +1 -1
- package/lib/service/customObjectHandler.d.ts +2 -1
- package/lib/service/customObjectHandler.js +2 -2
- package/lib/service/customObjectHandler.js.map +1 -1
- package/lib/service/decomposedHandler.d.ts +2 -1
- package/lib/service/decomposedHandler.js +2 -2
- package/lib/service/decomposedHandler.js.map +1 -1
- package/lib/service/diffLineInterpreter.d.ts +1 -1
- package/lib/service/diffLineInterpreter.js +16 -6
- package/lib/service/diffLineInterpreter.js.map +1 -1
- package/lib/service/flowHandler.d.ts +2 -1
- package/lib/service/flowHandler.js +2 -2
- package/lib/service/flowHandler.js.map +1 -1
- package/lib/service/inFileHandler.d.ts +8 -7
- package/lib/service/inFileHandler.js +37 -30
- package/lib/service/inFileHandler.js.map +1 -1
- package/lib/service/inFolderHandler.d.ts +2 -1
- package/lib/service/inFolderHandler.js +2 -2
- package/lib/service/inFolderHandler.js.map +1 -1
- package/lib/service/inResourceHandler.d.ts +3 -2
- package/lib/service/inResourceHandler.js +5 -5
- package/lib/service/inResourceHandler.js.map +1 -1
- package/lib/service/objectTranslationHandler.d.ts +3 -3
- package/lib/service/objectTranslationHandler.js +15 -8
- package/lib/service/objectTranslationHandler.js.map +1 -1
- package/lib/service/reportingFolderHandler.d.ts +8 -4
- package/lib/service/reportingFolderHandler.js +5 -6
- package/lib/service/reportingFolderHandler.js.map +1 -1
- package/lib/service/sharedFolderHandler.d.ts +8 -4
- package/lib/service/sharedFolderHandler.js +5 -6
- package/lib/service/sharedFolderHandler.js.map +1 -1
- package/lib/service/standardHandler.d.ts +14 -7
- package/lib/service/standardHandler.js +47 -27
- package/lib/service/standardHandler.js.map +1 -1
- package/lib/service/typeHandlerFactory.d.ts +2 -0
- package/lib/service/typeHandlerFactory.js +15 -0
- package/lib/service/typeHandlerFactory.js.map +1 -1
- package/lib/types/config.d.ts +1 -0
- package/lib/types/handlerResult.d.ts +17 -8
- package/lib/types/handlerResult.js +9 -11
- package/lib/types/handlerResult.js.map +1 -1
- package/lib/types/work.d.ts +2 -5
- package/lib/utils/LoggingDecorator.js +22 -11
- package/lib/utils/LoggingDecorator.js.map +1 -1
- package/lib/utils/changeSet.d.ts +53 -0
- package/lib/utils/changeSet.js +257 -0
- package/lib/utils/changeSet.js.map +1 -0
- package/lib/utils/configValidator.d.ts +1 -0
- package/lib/utils/configValidator.js +39 -1
- package/lib/utils/configValidator.js.map +1 -1
- package/lib/utils/gitLfsHelper.js +9 -1
- package/lib/utils/gitLfsHelper.js.map +1 -1
- package/lib/utils/metadataDiff/index.d.ts +28 -0
- package/lib/utils/metadataDiff/index.js +57 -0
- package/lib/utils/metadataDiff/index.js.map +1 -0
- package/lib/utils/metadataDiff/streamingDiff.d.ts +68 -0
- package/lib/utils/metadataDiff/streamingDiff.js +300 -0
- package/lib/utils/metadataDiff/streamingDiff.js.map +1 -0
- package/lib/utils/metadataDiff/xmlEventReader.d.ts +28 -0
- package/lib/utils/metadataDiff/xmlEventReader.js +221 -0
- package/lib/utils/metadataDiff/xmlEventReader.js.map +1 -0
- package/lib/utils/metadataDiff/xmlWriter.d.ts +17 -0
- package/lib/utils/metadataDiff/xmlWriter.js +213 -0
- package/lib/utils/metadataDiff/xmlWriter.js.map +1 -0
- package/lib/utils/packageHelper.d.ts +8 -1
- package/lib/utils/packageHelper.js +25 -28
- package/lib/utils/packageHelper.js.map +1 -1
- package/lib/utils/renameResolver.d.ts +19 -0
- package/lib/utils/renameResolver.js +52 -0
- package/lib/utils/renameResolver.js.map +1 -0
- package/lib/utils/repoGitDiff.d.ts +18 -5
- package/lib/utils/repoGitDiff.js +66 -33
- package/lib/utils/repoGitDiff.js.map +1 -1
- package/lib/utils/treeIndexScope.d.ts +1 -1
- package/lib/utils/treeIndexScope.js.map +1 -1
- package/lib/utils/txmlAdapter.d.ts +30 -0
- package/lib/utils/txmlAdapter.js +121 -0
- package/lib/utils/txmlAdapter.js.map +1 -0
- package/lib/utils/xmlHelper.d.ts +0 -5
- package/lib/utils/xmlHelper.js +0 -57
- package/lib/utils/xmlHelper.js.map +1 -1
- package/messages/delta.md +12 -0
- package/npm-shrinkwrap.json +628 -486
- package/oclif.manifest.json +9 -1
- package/package.json +53 -21
- package/lib/utils/manifestAggregator.d.ts +0 -3
- package/lib/utils/manifestAggregator.js +0 -22
- package/lib/utils/manifestAggregator.js.map +0 -1
- package/lib/utils/metadataDiff.d.ts +0 -23
- package/lib/utils/metadataDiff.js +0 -242
- package/lib/utils/metadataDiff.js.map +0 -1
|
@@ -9,26 +9,25 @@ export default class SharedFolderHandler extends StandardHandler {
|
|
|
9
9
|
super(changeType, element, work);
|
|
10
10
|
this.resolvedType = element.getSharedFolderMetadata().get(element.extension);
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
getElementDescriptor() {
|
|
13
13
|
/* v8 ignore next 5 -- collectAddition/Deletion guard ensures resolvedType is set */
|
|
14
14
|
if (!this.resolvedType) {
|
|
15
15
|
throw new Error(`SharedFolderHandler: resolvedType is missing for ${this.element.fullPath}`);
|
|
16
16
|
}
|
|
17
17
|
return {
|
|
18
|
-
target,
|
|
19
18
|
type: this.resolvedType,
|
|
20
19
|
member: this._getElementName(),
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
|
-
async collectAddition() {
|
|
22
|
+
async collectAddition(sink) {
|
|
24
23
|
if (!this.resolvedType)
|
|
25
24
|
return emptyResult();
|
|
26
|
-
return await super.collectAddition();
|
|
25
|
+
return await super.collectAddition(sink);
|
|
27
26
|
}
|
|
28
|
-
async collectDeletion() {
|
|
27
|
+
async collectDeletion(sink) {
|
|
29
28
|
if (!this.resolvedType)
|
|
30
29
|
return emptyResult();
|
|
31
|
-
return await super.collectDeletion();
|
|
30
|
+
return await super.collectDeletion(sink);
|
|
32
31
|
}
|
|
33
32
|
_isProcessable() {
|
|
34
33
|
return super._isProcessable() || !!this.resolvedType;
|
|
@@ -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;
|
|
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;AAKvD,OAAO,eAAe,MAAM,sBAAsB,CAAA;AAElD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,eAAe;IAC3C,YAAY,CAAoB;IAEnD,YAAY,UAAkB,EAAE,OAAwB,EAAE,IAAU;QAClE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9E,CAAC;IAEe,oBAAoB;QAClC,oFAAoF;QACpF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,oDAAoD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAC5E,CAAA;QACH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;SAC/B,CAAA;IACH,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,IAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,EAAE,CAAA;QAC5C,OAAO,MAAM,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEe,KAAK,CAAC,eAAe,CACnC,IAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,WAAW,EAAE,CAAA;QAC5C,OAAO,MAAM,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEkB,cAAc;QAC/B,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,7 +1,8 @@
|
|
|
1
1
|
import type { Config } from '../types/config.js';
|
|
2
|
-
import type { CopyOperation, HandlerResult } from '../types/handlerResult.js';
|
|
2
|
+
import type { AddKind, CopyOperation, HandlerResult } from '../types/handlerResult.js';
|
|
3
3
|
import { ManifestTarget } from '../types/handlerResult.js';
|
|
4
4
|
import type { Work } from '../types/work.js';
|
|
5
|
+
import type ChangeSet from '../utils/changeSet.js';
|
|
5
6
|
import type { MetadataElement } from '../utils/metadataElement.js';
|
|
6
7
|
/**
|
|
7
8
|
* Strategy pattern base for metadata type handlers.
|
|
@@ -18,19 +19,25 @@ export default class StandardHandler {
|
|
|
18
19
|
protected readonly work: Work;
|
|
19
20
|
protected readonly config: Config;
|
|
20
21
|
constructor(changeType: string, element: MetadataElement, work: Work);
|
|
21
|
-
collect(): Promise<HandlerResult>;
|
|
22
|
-
collectAddition(): Promise<HandlerResult>;
|
|
23
|
-
collectDeletion(): Promise<HandlerResult>;
|
|
24
|
-
collectModification(): Promise<HandlerResult>;
|
|
22
|
+
collect(sink?: ChangeSet): Promise<HandlerResult>;
|
|
23
|
+
collectAddition(sink?: ChangeSet): Promise<HandlerResult>;
|
|
24
|
+
collectDeletion(sink?: ChangeSet): Promise<HandlerResult>;
|
|
25
|
+
collectModification(sink?: ChangeSet): Promise<HandlerResult>;
|
|
26
|
+
protected _emptyResultFor(sink?: ChangeSet): HandlerResult;
|
|
25
27
|
protected _getElementName(): string;
|
|
28
|
+
getElementDescriptor(): {
|
|
29
|
+
type: string;
|
|
30
|
+
member: string;
|
|
31
|
+
};
|
|
26
32
|
protected _collectManifestElement(target: ManifestTarget): {
|
|
27
|
-
|
|
33
|
+
changeKind: AddKind;
|
|
28
34
|
type: string;
|
|
29
35
|
member: string;
|
|
36
|
+
target: ManifestTarget;
|
|
30
37
|
};
|
|
38
|
+
protected _getChangeKind(): AddKind;
|
|
31
39
|
protected _collectCopyWithMetaFile(copies: CopyOperation[], src: string): void;
|
|
32
40
|
protected _collectCopy(copies: CopyOperation[], path: string): void;
|
|
33
|
-
protected _collectComputedContent(copies: CopyOperation[], path: string, content: string): void;
|
|
34
41
|
protected _shouldCollectCopies(): boolean;
|
|
35
42
|
protected _getMetaTypeFilePath(path: string): string;
|
|
36
43
|
protected _shouldCopyMetaFile(path: string): boolean;
|
|
@@ -3,10 +3,15 @@ import { __decorate } from "tslib";
|
|
|
3
3
|
import { join, parse } from 'node:path/posix';
|
|
4
4
|
import { ADDITION, DELETION, MODIFICATION } from '../constant/gitConstants.js';
|
|
5
5
|
import { METAFILE_SUFFIX } from '../constant/metadataConstants.js';
|
|
6
|
-
import { CopyOperationKind, emptyResult, ManifestTarget, } from '../types/handlerResult.js';
|
|
6
|
+
import { ChangeKind, CopyOperationKind, emptyResult, ManifestTarget, } from '../types/handlerResult.js';
|
|
7
7
|
import { getErrorMessage, wrapError } from '../utils/errorUtils.js';
|
|
8
8
|
import { log } from '../utils/LoggingDecorator.js';
|
|
9
9
|
import { Logger, lazy } from '../utils/LoggingService.js';
|
|
10
|
+
const CHANGE_KIND_BY_GIT_TYPE = {
|
|
11
|
+
[ADDITION]: ChangeKind.Add,
|
|
12
|
+
[MODIFICATION]: ChangeKind.Modify,
|
|
13
|
+
[DELETION]: ChangeKind.Delete,
|
|
14
|
+
};
|
|
10
15
|
/**
|
|
11
16
|
* Strategy pattern base for metadata type handlers.
|
|
12
17
|
* Each Salesforce metadata type may need unique diff-collection behavior
|
|
@@ -27,57 +32,77 @@ export default class StandardHandler {
|
|
|
27
32
|
this.work = work;
|
|
28
33
|
this.config = work.config;
|
|
29
34
|
}
|
|
30
|
-
|
|
35
|
+
// `sink` lets the orchestrator (DiffLineInterpreter) share one ChangeSet
|
|
36
|
+
// across every handler in a pass, eliminating ~N per-handler ChangeSet
|
|
37
|
+
// allocations and their later merge. When omitted (tests, ad-hoc callers)
|
|
38
|
+
// each call still gets its own fresh ChangeSet via `emptyResult()`, so the
|
|
39
|
+
// existing test API (`await sut.collectAddition()`) stays unchanged.
|
|
40
|
+
async collect(sink) {
|
|
31
41
|
if (!this._isProcessable()) {
|
|
32
|
-
return
|
|
42
|
+
return this._emptyResultFor(sink);
|
|
33
43
|
}
|
|
34
44
|
try {
|
|
35
45
|
switch (this.changeType) {
|
|
36
46
|
case ADDITION:
|
|
37
|
-
return await this.collectAddition();
|
|
47
|
+
return await this.collectAddition(sink);
|
|
38
48
|
case DELETION:
|
|
39
|
-
return await this.collectDeletion();
|
|
49
|
+
return await this.collectDeletion(sink);
|
|
40
50
|
case MODIFICATION:
|
|
41
|
-
return await this.collectModification();
|
|
51
|
+
return await this.collectModification(sink);
|
|
42
52
|
default:
|
|
43
|
-
return
|
|
53
|
+
return this._emptyResultFor(sink);
|
|
44
54
|
}
|
|
45
55
|
}
|
|
46
56
|
catch (error) {
|
|
47
57
|
const message = `${this.element.basePath}: ${getErrorMessage(error)}`;
|
|
48
58
|
Logger.warn(lazy `${message}`);
|
|
49
59
|
Logger.debug(lazy `${this.constructor.name}.collect: ${this.changeType} ${this.element.type.xmlName} '${this.element.basePath}' failed: ${() => getErrorMessage(error)}`);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
warnings: [wrapError(message, error)],
|
|
54
|
-
};
|
|
60
|
+
const failed = this._emptyResultFor(sink);
|
|
61
|
+
failed.warnings.push(wrapError(message, error));
|
|
62
|
+
return failed;
|
|
55
63
|
}
|
|
56
64
|
}
|
|
57
|
-
async collectAddition() {
|
|
58
|
-
const result =
|
|
59
|
-
result.
|
|
65
|
+
async collectAddition(sink) {
|
|
66
|
+
const result = this._emptyResultFor(sink);
|
|
67
|
+
result.changes.addElement(this._collectManifestElement(ManifestTarget.Package));
|
|
60
68
|
this._collectCopyWithMetaFile(result.copies, this.element.basePath);
|
|
61
69
|
return result;
|
|
62
70
|
}
|
|
63
|
-
async collectDeletion() {
|
|
64
|
-
const result =
|
|
65
|
-
result.
|
|
71
|
+
async collectDeletion(sink) {
|
|
72
|
+
const result = this._emptyResultFor(sink);
|
|
73
|
+
result.changes.addElement(this._collectManifestElement(ManifestTarget.DestructiveChanges));
|
|
66
74
|
return result;
|
|
67
75
|
}
|
|
68
|
-
async collectModification() {
|
|
69
|
-
return await this.collectAddition();
|
|
76
|
+
async collectModification(sink) {
|
|
77
|
+
return await this.collectAddition(sink);
|
|
78
|
+
}
|
|
79
|
+
_emptyResultFor(sink) {
|
|
80
|
+
/* v8 ignore next -- defensive: production callers always pass a sink; the no-sink fallback exists for legacy / direct-handler tests */
|
|
81
|
+
return sink ? { changes: sink, copies: [], warnings: [] } : emptyResult();
|
|
70
82
|
}
|
|
71
83
|
_getElementName() {
|
|
72
84
|
return this.element.componentName;
|
|
73
85
|
}
|
|
74
|
-
|
|
86
|
+
// Public accessor used by the rename resolver — lets main.ts map a rename
|
|
87
|
+
// path pair back to (type, member) without running collect() side-effects.
|
|
88
|
+
getElementDescriptor() {
|
|
75
89
|
return {
|
|
76
|
-
target,
|
|
77
90
|
type: this.element.type.xmlName,
|
|
78
91
|
member: this._getElementName(),
|
|
79
92
|
};
|
|
80
93
|
}
|
|
94
|
+
_collectManifestElement(target) {
|
|
95
|
+
return {
|
|
96
|
+
target,
|
|
97
|
+
...this.getElementDescriptor(),
|
|
98
|
+
changeKind: this._getChangeKind(),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
_getChangeKind() {
|
|
102
|
+
// collect()'s switch guarantees changeType is ADDITION | MODIFICATION |
|
|
103
|
+
// DELETION before _collectManifestElement runs, so the lookup always hits.
|
|
104
|
+
return CHANGE_KIND_BY_GIT_TYPE[this.changeType];
|
|
105
|
+
}
|
|
81
106
|
_collectCopyWithMetaFile(copies, src) {
|
|
82
107
|
if (this._delegateFileCopy()) {
|
|
83
108
|
this._collectCopy(copies, src);
|
|
@@ -95,11 +120,6 @@ export default class StandardHandler {
|
|
|
95
120
|
revision: this.config.to,
|
|
96
121
|
});
|
|
97
122
|
}
|
|
98
|
-
_collectComputedContent(copies, path, content) {
|
|
99
|
-
if (!this._shouldCollectCopies())
|
|
100
|
-
return;
|
|
101
|
-
copies.push({ kind: CopyOperationKind.ComputedContent, path, content });
|
|
102
|
-
}
|
|
103
123
|
_shouldCollectCopies() {
|
|
104
124
|
return this.config.generateDelta;
|
|
105
125
|
}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"standardHandler.js","sourceRoot":"","sources":["../../src/service/standardHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,10 @@ export default class TypeHandlerFactory {
|
|
|
7
7
|
protected readonly metadata: MetadataRepository;
|
|
8
8
|
protected readonly resolver: MetadataBoundaryResolver;
|
|
9
9
|
private readonly inFileParentXmlNames;
|
|
10
|
+
private readonly handlerCache;
|
|
10
11
|
constructor(work: Work, metadata: MetadataRepository);
|
|
11
12
|
getTypeHandler(line: string): Promise<Standard>;
|
|
12
13
|
private buildInFileParentIndex;
|
|
13
14
|
private resolveHandler;
|
|
15
|
+
private _computeHandler;
|
|
14
16
|
}
|
|
@@ -57,6 +57,13 @@ export default class TypeHandlerFactory {
|
|
|
57
57
|
metadata;
|
|
58
58
|
resolver;
|
|
59
59
|
inFileParentXmlNames;
|
|
60
|
+
// Memoizes resolveHandler(metadata) → handler-class. The dispatch
|
|
61
|
+
// (handlerMap lookup, inFolder check, adapter check, parentXmlName
|
|
62
|
+
// walk, inFileParent check) is deterministic in the metadata
|
|
63
|
+
// reference, and the registry returns the same Metadata instance for
|
|
64
|
+
// a given type. ~50 distinct types per diff at most, so the cache
|
|
65
|
+
// stays trivially small.
|
|
66
|
+
handlerCache = new Map();
|
|
60
67
|
constructor(work, metadata) {
|
|
61
68
|
this.work = work;
|
|
62
69
|
this.metadata = metadata;
|
|
@@ -89,6 +96,14 @@ export default class TypeHandlerFactory {
|
|
|
89
96
|
}
|
|
90
97
|
}
|
|
91
98
|
resolveHandler(type) {
|
|
99
|
+
const cached = this.handlerCache.get(type);
|
|
100
|
+
if (cached !== undefined)
|
|
101
|
+
return cached;
|
|
102
|
+
const resolved = this._computeHandler(type);
|
|
103
|
+
this.handlerCache.set(type, resolved);
|
|
104
|
+
return resolved;
|
|
105
|
+
}
|
|
106
|
+
_computeHandler(type) {
|
|
92
107
|
const xmlName = type.xmlName;
|
|
93
108
|
if (xmlName in handlerMap) {
|
|
94
109
|
return handlerMap[xmlName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeHandlerFactory.js","sourceRoot":"","sources":["../../src/service/typeHandlerFactory.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAI3E,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,OAAO,GAAG,MAAM,iBAAiB,CAAA;AACjC,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AACjE,OAAO,kBAAkB,MAAM,yBAAyB,CAAA;AACxD,OAAO,WAAW,MAAM,yBAAyB,CAAA;AACjD,OAAO,wBAAwB,MAAM,+BAA+B,CAAA;AACpE,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAC1C,OAAO,QAAQ,MAAM,sBAAsB,CAAA;AAC3C,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,QAAQ,MAAM,sBAAsB,CAAA;AAC3C,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,GAAG,MAAM,iBAAiB,CAAA;AACjC,OAAO,iBAAiB,MAAM,+BAA+B,CAAA;AAC7D,OAAO,sBAAsB,MAAM,6BAA6B,CAAA;AAChE,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,QAAQ,MAAM,sBAAsB,CAAA;AAE3C,MAAM,eAAe,GAAG,eAAe,CAAA;AAEvC,sEAAsE;AACtE,MAAM,UAAU,GAAoC;IAClD,oBAAoB,EAAE,GAAG;IACzB,WAAW,EAAE,kBAAkB;IAC/B,sBAAsB,EAAE,iBAAiB;IACzC,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,YAAY;IAC1B,uBAAuB,EAAE,iBAAiB;IAC1C,SAAS,EAAE,sBAAsB;IACjC,IAAI,EAAE,WAAW;IACjB,aAAa,EAAE,GAAG;IAClB,yBAAyB,EAAE,MAAM;IACjC,wBAAwB,EAAE,GAAG;IAC7B,aAAa,EAAE,mBAAmB;IAClC,MAAM,EAAE,sBAAsB;IAC9B,2BAA2B,EAAE,MAAM;IACnC,UAAU,EAAE,UAAU;IACtB,eAAe,EAAE,YAAY;IAC7B,cAAc,EAAE,UAAU;IAC1B,UAAU,EAAE,GAAG;IACf,gBAAgB,EAAE,YAAY;IAC9B,iBAAiB,EAAE,YAAY;IAC/B,WAAW,EAAE,YAAY;CAC1B,CAAA;AAED,uDAAuD;AACvD,MAAM,iBAAiB,GAAoC;IACzD,MAAM,EAAE,UAAU;IAClB,iBAAiB,EAAE,QAAQ;IAC3B,YAAY,EAAE,UAAU;CACzB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,kBAAkB;
|
|
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
|
@@ -1,16 +1,26 @@
|
|
|
1
|
+
import type { Writable } from 'node:stream';
|
|
2
|
+
import type ChangeSet from '../utils/changeSet.js';
|
|
1
3
|
export declare enum ManifestTarget {
|
|
2
4
|
Package = "package",
|
|
3
5
|
DestructiveChanges = "destructiveChanges"
|
|
4
6
|
}
|
|
7
|
+
export declare enum ChangeKind {
|
|
8
|
+
Add = "add",
|
|
9
|
+
Modify = "modify",
|
|
10
|
+
Delete = "delete",
|
|
11
|
+
Rename = "rename"
|
|
12
|
+
}
|
|
13
|
+
export type AddKind = ChangeKind.Add | ChangeKind.Modify | ChangeKind.Delete;
|
|
5
14
|
export declare enum CopyOperationKind {
|
|
6
15
|
GitCopy = "gitCopy",
|
|
7
16
|
GitDirCopy = "gitDirCopy",
|
|
8
|
-
|
|
17
|
+
StreamedContent = "streamedContent"
|
|
9
18
|
}
|
|
10
19
|
export type ManifestElement = {
|
|
11
20
|
target: ManifestTarget;
|
|
12
21
|
type: string;
|
|
13
22
|
member: string;
|
|
23
|
+
changeKind: AddKind;
|
|
14
24
|
};
|
|
15
25
|
export type GitCopyOperation = {
|
|
16
26
|
kind: CopyOperationKind.GitCopy;
|
|
@@ -22,16 +32,15 @@ export type GitDirCopyOperation = {
|
|
|
22
32
|
path: string;
|
|
23
33
|
revision: string;
|
|
24
34
|
};
|
|
25
|
-
export type
|
|
26
|
-
kind: CopyOperationKind.
|
|
35
|
+
export type StreamedContentOperation = {
|
|
36
|
+
kind: CopyOperationKind.StreamedContent;
|
|
27
37
|
path: string;
|
|
28
|
-
|
|
38
|
+
writer: (out: Writable) => Promise<void>;
|
|
29
39
|
};
|
|
30
|
-
export type CopyOperation = GitCopyOperation | GitDirCopyOperation |
|
|
40
|
+
export type CopyOperation = GitCopyOperation | GitDirCopyOperation | StreamedContentOperation;
|
|
31
41
|
export type HandlerResult = {
|
|
32
|
-
|
|
42
|
+
changes: ChangeSet;
|
|
33
43
|
copies: CopyOperation[];
|
|
34
44
|
warnings: Error[];
|
|
35
45
|
};
|
|
36
|
-
export
|
|
37
|
-
export declare const mergeResults: (...results: HandlerResult[]) => HandlerResult;
|
|
46
|
+
export { emptyResult, mergeResults } from '../utils/changeSet.js';
|
|
@@ -4,20 +4,18 @@ export var ManifestTarget;
|
|
|
4
4
|
ManifestTarget["Package"] = "package";
|
|
5
5
|
ManifestTarget["DestructiveChanges"] = "destructiveChanges";
|
|
6
6
|
})(ManifestTarget || (ManifestTarget = {}));
|
|
7
|
+
export var ChangeKind;
|
|
8
|
+
(function (ChangeKind) {
|
|
9
|
+
ChangeKind["Add"] = "add";
|
|
10
|
+
ChangeKind["Modify"] = "modify";
|
|
11
|
+
ChangeKind["Delete"] = "delete";
|
|
12
|
+
ChangeKind["Rename"] = "rename";
|
|
13
|
+
})(ChangeKind || (ChangeKind = {}));
|
|
7
14
|
export var CopyOperationKind;
|
|
8
15
|
(function (CopyOperationKind) {
|
|
9
16
|
CopyOperationKind["GitCopy"] = "gitCopy";
|
|
10
17
|
CopyOperationKind["GitDirCopy"] = "gitDirCopy";
|
|
11
|
-
CopyOperationKind["
|
|
18
|
+
CopyOperationKind["StreamedContent"] = "streamedContent";
|
|
12
19
|
})(CopyOperationKind || (CopyOperationKind = {}));
|
|
13
|
-
export
|
|
14
|
-
manifests: [],
|
|
15
|
-
copies: [],
|
|
16
|
-
warnings: [],
|
|
17
|
-
});
|
|
18
|
-
export const mergeResults = (...results) => ({
|
|
19
|
-
manifests: results.flatMap(r => r.manifests),
|
|
20
|
-
copies: results.flatMap(r => r.copies),
|
|
21
|
-
warnings: results.flatMap(r => r.warnings),
|
|
22
|
-
});
|
|
20
|
+
export { emptyResult, mergeResults } from '../utils/changeSet.js';
|
|
23
21
|
//# sourceMappingURL=handlerResult.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlerResult.js","sourceRoot":"","sources":["../../src/types/handlerResult.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"handlerResult.js","sourceRoot":"","sources":["../../src/types/handlerResult.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AASZ,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,2DAAyC,CAAA;AAC3C,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;AACnB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAOD,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,8CAAyB,CAAA;IACzB,wDAAmC,CAAA;AACrC,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAgDD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA"}
|
package/lib/types/work.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
+
import type ChangeSet from '../utils/changeSet.js';
|
|
1
2
|
import type { Config } from './config.js';
|
|
2
3
|
export type Manifest = Map<string, Set<string>>;
|
|
3
|
-
export type Manifests = {
|
|
4
|
-
package: Manifest;
|
|
5
|
-
destructiveChanges: Manifest;
|
|
6
|
-
};
|
|
7
4
|
export type Work = {
|
|
8
5
|
config: Config;
|
|
9
|
-
|
|
6
|
+
changes: ChangeSet;
|
|
10
7
|
warnings: Error[];
|
|
11
8
|
};
|
|
@@ -1,29 +1,40 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noExplicitAny: it is dynamic by definition */
|
|
2
2
|
import { Logger, lazy } from './LoggingService.js';
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
]);
|
|
7
|
-
const isAsyncFunction = (fn) => ASYNC_CALLABLE_TAGS.has(Object.prototype.toString.call(fn));
|
|
3
|
+
const ASYNC_FUNCTION_TAG = '[object AsyncFunction]';
|
|
4
|
+
const ASYNC_GENERATOR_FUNCTION_TAG = '[object AsyncGeneratorFunction]';
|
|
5
|
+
const tagOf = (fn) => Object.prototype.toString.call(fn);
|
|
8
6
|
export function log(_target, propertyKey, descriptor) {
|
|
9
7
|
const original = descriptor.value;
|
|
10
|
-
const
|
|
8
|
+
const tag = tagOf(original);
|
|
9
|
+
const isAsync = tag === ASYNC_FUNCTION_TAG;
|
|
10
|
+
const isAsyncGenerator = tag === ASYNC_GENERATOR_FUNCTION_TAG;
|
|
11
11
|
descriptor.value = function (...args) {
|
|
12
12
|
const className = this.constructor.name;
|
|
13
13
|
Logger.trace(lazy `${className}.${propertyKey}: entry`);
|
|
14
14
|
const logExit = () => {
|
|
15
15
|
Logger.trace(lazy `${className}.${propertyKey}: exit`);
|
|
16
16
|
};
|
|
17
|
-
// `exit` must fire on every failure path
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
17
|
+
// `exit` must fire on every failure path. Sync throws are caught
|
|
18
|
+
// below. Async functions resolve/reject through `.finally`. Async
|
|
19
|
+
// generators are wrapped in a delegating generator whose `finally`
|
|
20
|
+
// clause fires whether iteration completes, throws, or is closed
|
|
21
|
+
// early via `.return()` / `.throw()`.
|
|
22
22
|
try {
|
|
23
23
|
const result = original.apply(this, args);
|
|
24
24
|
if (isAsync) {
|
|
25
25
|
return result.finally(logExit);
|
|
26
26
|
}
|
|
27
|
+
if (isAsyncGenerator) {
|
|
28
|
+
const inner = result;
|
|
29
|
+
return (async function* () {
|
|
30
|
+
try {
|
|
31
|
+
yield* inner;
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
logExit();
|
|
35
|
+
}
|
|
36
|
+
})();
|
|
37
|
+
}
|
|
27
38
|
logExit();
|
|
28
39
|
return result;
|
|
29
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoggingDecorator.js","sourceRoot":"","sources":["../../src/utils/LoggingDecorator.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"LoggingDecorator.js","sourceRoot":"","sources":["../../src/utils/LoggingDecorator.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAElD,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AACnD,MAAM,4BAA4B,GAAG,iCAAiC,CAAA;AAEtE,MAAM,KAAK,GAAG,CAAC,EAAW,EAAU,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAEzE,MAAM,UAAU,GAAG,CACjB,OAAY,EACZ,WAAmB,EACnB,UAA8B;IAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAA;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3B,MAAM,OAAO,GAAG,GAAG,KAAK,kBAAkB,CAAA;IAC1C,MAAM,gBAAgB,GAAG,GAAG,KAAK,4BAA4B,CAAA;IAE7D,UAAU,CAAC,KAAK,GAAG,UAAwB,GAAG,IAAW;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA,GAAG,SAAS,IAAI,WAAW,SAAS,CAAC,CAAA;QAEtD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA,GAAG,SAAS,IAAI,WAAW,QAAQ,CAAC,CAAA;QACvD,CAAC,CAAA;QAED,iEAAiE;QACjE,kEAAkE;QAClE,mEAAmE;QACnE,iEAAiE;QACjE,sCAAsC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACzC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAQ,MAA2B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACtD,CAAC;YACD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAiC,CAAA;gBAC/C,OAAO,CAAC,KAAK,SAAS,CAAC;oBACrB,IAAI,CAAC;wBACH,KAAK,CAAC,CAAC,KAAK,CAAA;oBACd,CAAC;4BAAS,CAAC;wBACT,OAAO,EAAE,CAAA;oBACX,CAAC;gBACH,CAAC,CAAC,EAAE,CAAA;YACN,CAAC;YACD,OAAO,EAAE,CAAA;YACT,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAA;YACT,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type AddKind, ChangeKind, type ManifestElement } from '../types/handlerResult.js';
|
|
2
|
+
import type { Manifest } from '../types/work.js';
|
|
3
|
+
export type RenamePair = Readonly<{
|
|
4
|
+
from: string;
|
|
5
|
+
to: string;
|
|
6
|
+
}>;
|
|
7
|
+
export type RenameBucket = Map<string, Map<string, RenamePair>>;
|
|
8
|
+
/**
|
|
9
|
+
* Domain object that collects every component change observed in a diff and
|
|
10
|
+
* derives the views consumed downstream:
|
|
11
|
+
* - Package manifest (`ManifestTarget.Package` entries + rename targets)
|
|
12
|
+
* - Destructive manifest (`ManifestTarget.DestructiveChanges` entries +
|
|
13
|
+
* rename sources — minus entries that also appear in the Package view)
|
|
14
|
+
* - Per-kind bucket map (used for the JSON review manifest)
|
|
15
|
+
*
|
|
16
|
+
* `ManifestTarget` and `ChangeKind` are orthogonal. A single ManifestElement
|
|
17
|
+
* can be (target=Package, changeKind=Delete) — this happens when InFileHandler
|
|
18
|
+
* treats a deleted container file as an addition to preserve surviving
|
|
19
|
+
* sub-elements. The xml manifests MUST route on `target` (the deployment
|
|
20
|
+
* contract); `changeKind` only drives the review-oriented JSON bucket.
|
|
21
|
+
*
|
|
22
|
+
* Insertion goes through `add` for single-component changes and
|
|
23
|
+
* `recordRename` for rename pairs. Views are pure projections.
|
|
24
|
+
*/
|
|
25
|
+
export default class ChangeSet {
|
|
26
|
+
private readonly byTarget;
|
|
27
|
+
private readonly byKind;
|
|
28
|
+
private readonly renames;
|
|
29
|
+
static from(elements: readonly ManifestElement[]): ChangeSet;
|
|
30
|
+
addElement(element: ManifestElement): void;
|
|
31
|
+
toElements(): ManifestElement[];
|
|
32
|
+
add(kind: AddKind, type: string, member: string): void;
|
|
33
|
+
recordRename(type: string, from: string, to: string): void;
|
|
34
|
+
merge(other: ChangeSet): void;
|
|
35
|
+
forPackageManifest(): Manifest;
|
|
36
|
+
forDestructiveManifest(): Manifest;
|
|
37
|
+
byChangeKind(): Readonly<{
|
|
38
|
+
[ChangeKind.Add]: Manifest;
|
|
39
|
+
[ChangeKind.Modify]: Manifest;
|
|
40
|
+
[ChangeKind.Delete]: Manifest;
|
|
41
|
+
[ChangeKind.Rename]: RenameBucket;
|
|
42
|
+
}>;
|
|
43
|
+
private _addToManifest;
|
|
44
|
+
private _cloneManifest;
|
|
45
|
+
private _renameTargetsByType;
|
|
46
|
+
private _renameSourcesByType;
|
|
47
|
+
private _cloneRenames;
|
|
48
|
+
private _unionByType;
|
|
49
|
+
private _subtractByType;
|
|
50
|
+
}
|
|
51
|
+
import type { HandlerResult } from '../types/handlerResult.js';
|
|
52
|
+
export declare const emptyResult: () => HandlerResult;
|
|
53
|
+
export declare const mergeResults: (...results: HandlerResult[]) => HandlerResult;
|