@appland/appmap 3.103.0 → 3.105.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/CHANGELOG.md +24 -0
- package/built/cmds/compare/ReportFieldCalculator.js +214 -0
- package/built/cmds/compare/ReportFieldCalculator.js.map +1 -0
- package/built/cmds/compare/SourceDiff.js +60 -0
- package/built/cmds/compare/SourceDiff.js.map +1 -0
- package/built/cmds/compare/buildFailure.js +50 -0
- package/built/cmds/compare/buildFailure.js.map +1 -0
- package/built/cmds/compare/compare.js +11 -6
- package/built/cmds/compare/compare.js.map +1 -1
- package/built/cmds/compare/deleteUnreferencedAppMaps.js +30 -0
- package/built/cmds/compare/deleteUnreferencedAppMaps.js.map +1 -0
- package/built/cmds/compare/prepareOutputDir.js +1 -1
- package/built/cmds/compare/prepareOutputDir.js.map +1 -1
- package/built/cmds/compare/reportChanges.js +71 -0
- package/built/cmds/compare/reportChanges.js.map +1 -0
- package/built/cmds/compare-report/ChangeReport.js +47 -10
- package/built/cmds/compare-report/ChangeReport.js.map +1 -1
- package/built/cmds/compare-report/MarkdownReport.js +4 -1
- package/built/cmds/compare-report/MarkdownReport.js.map +1 -1
- package/built/cmds/compare-report/Preprocessor.js +28 -0
- package/built/cmds/compare-report/Preprocessor.js.map +1 -1
- package/built/cmds/compare-report/ReportSection.js +46 -14
- package/built/cmds/compare-report/ReportSection.js.map +1 -1
- package/built/cmds/compare-report/formatAPILocation.js +18 -0
- package/built/cmds/compare-report/formatAPILocation.js.map +1 -0
- package/built/cmds/compare-report/helpers.js +16 -0
- package/built/cmds/compare-report/helpers.js.map +1 -1
- package/built/diffArchive/ChangeAnalysis.js +232 -0
- package/built/diffArchive/ChangeAnalysis.js.map +1 -0
- package/built/{cmds/compare → diffArchive}/Digests.js +1 -1
- package/built/diffArchive/Digests.js.map +1 -0
- package/built/{cmds/compare → diffArchive}/Paths.js +7 -4
- package/built/diffArchive/Paths.js.map +1 -0
- package/built/diffArchive/RevisionName.js.map +1 -0
- package/built/{cmds/compare → diffArchive}/SequenceDiagramDigest.js +1 -1
- package/built/diffArchive/SequenceDiagramDigest.js.map +1 -0
- package/built/{cmds/compare/DiffLoader.js → diffArchive/SourceDiff.js} +9 -9
- package/built/diffArchive/SourceDiff.js.map +1 -0
- package/built/{cmds/compare → diffArchive}/loadFindings.js +1 -1
- package/built/diffArchive/loadFindings.js.map +1 -0
- package/built/html/appmap.js +93 -93
- package/built/html/appmap.js.map +3 -3
- package/built/html/sequenceDiagram.js +93 -93
- package/built/html/sequenceDiagram.js.map +3 -3
- package/built/lib/ArchiveMetadata.js.map +1 -0
- package/built/lib/normalizeAppMapId.js.map +1 -0
- package/built/lib/resolvePath.js +36 -0
- package/built/lib/resolvePath.js.map +1 -0
- package/package.json +2 -1
- package/resources/change-report/changed-appmaps/details.hbs +3 -3
- package/resources/change-report/failed-tests/details.hbs +3 -2
- package/resources/change-report/findings/details.hbs +2 -6
- package/resources/change-report/new-appmaps/details.hbs +3 -2
- package/resources/change-report/openapi-diff/details.hbs +3 -2
- package/resources/change-report/removed-appmaps/details.hbs +2 -2
- package/resources/change-report/sql-diff/details.hbs +59 -0
- package/resources/change-report/sql-diff/heading.hbs +14 -0
- package/built/cmds/archive/ArchiveMetadata.js.map +0 -1
- package/built/cmds/compare/ChangeReporter.js +0 -476
- package/built/cmds/compare/ChangeReporter.js.map +0 -1
- package/built/cmds/compare/DiffLoader.js.map +0 -1
- package/built/cmds/compare/Digests.js.map +0 -1
- package/built/cmds/compare/Paths.js.map +0 -1
- package/built/cmds/compare/RevisionName.js.map +0 -1
- package/built/cmds/compare/SequenceDiagramDigest.js.map +0 -1
- package/built/cmds/compare/loadFindings.js.map +0 -1
- package/built/cmds/compare-report/normalizeAppMapId.js.map +0 -1
- /package/built/{cmds/compare → diffArchive}/RevisionName.js +0 -0
- /package/built/{cmds/archive → lib}/ArchiveMetadata.js +0 -0
- /package/built/{cmds/compare-report → lib}/normalizeAppMapId.js +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ChangeAnalysisImpl = exports.analyzeChanges = exports.isChanged = exports.isAdded = void 0;
|
|
7
|
+
const promises_1 = require("fs/promises");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const async_1 = require("async");
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
const console_1 = require("console");
|
|
12
|
+
const Paths_1 = require("../diffArchive/Paths");
|
|
13
|
+
const Digests_1 = require("../diffArchive/Digests");
|
|
14
|
+
const RevisionName_1 = require("../diffArchive/RevisionName");
|
|
15
|
+
const utils_1 = require("../utils");
|
|
16
|
+
const loadFindings_1 = __importDefault(require("./loadFindings"));
|
|
17
|
+
class ReferencedAppMaps {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.referencedAppMaps = new Set();
|
|
20
|
+
}
|
|
21
|
+
add(revisionName, appmap) {
|
|
22
|
+
(0, assert_1.default)(!appmap.endsWith('.appmap.json'), `AppMap ${appmap} must not have an extension`);
|
|
23
|
+
this.referencedAppMaps.add((0, path_1.join)(revisionName, appmap));
|
|
24
|
+
}
|
|
25
|
+
test(revisionName, appmap) {
|
|
26
|
+
(0, assert_1.default)(!appmap.endsWith('.appmap.json'), `AppMap ${appmap} must not have an extension`);
|
|
27
|
+
return this.referencedAppMaps.has((0, path_1.join)(revisionName, appmap));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Gets a function that returns true if the given appmap is a test.
|
|
31
|
+
function isTest(revisionName, appMapMetadata) {
|
|
32
|
+
return (appmap) => {
|
|
33
|
+
const metadata = appMapMetadata[revisionName].get(appmap);
|
|
34
|
+
return !!(metadata && metadata.recorder.type === 'tests');
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Selects AppMaps that have stable names, and are not found in a base reference set.
|
|
38
|
+
function isAdded(referenceSet, isTestFn) {
|
|
39
|
+
return (appmap) => isTestFn(appmap) && !referenceSet.has(appmap);
|
|
40
|
+
}
|
|
41
|
+
exports.isAdded = isAdded;
|
|
42
|
+
// Selects AppMaps that is present in the reference set, and have different digests.
|
|
43
|
+
function isChanged(referenceSet, isTestFn, digests) {
|
|
44
|
+
return (appmap) => {
|
|
45
|
+
const baseDigest = digests.appmapDigest(RevisionName_1.RevisionName.Base, appmap);
|
|
46
|
+
const headDigest = digests.appmapDigest(RevisionName_1.RevisionName.Head, appmap);
|
|
47
|
+
return (isTestFn(appmap) &&
|
|
48
|
+
referenceSet.has(appmap) &&
|
|
49
|
+
!!baseDigest &&
|
|
50
|
+
!!headDigest &&
|
|
51
|
+
baseDigest !== headDigest);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
exports.isChanged = isChanged;
|
|
55
|
+
async function analyzeChanges(workingDir, srcDir, baseRevision, headRevision) {
|
|
56
|
+
const changeAnalysis = new ChangeAnalysisImpl(workingDir, srcDir, baseRevision, headRevision);
|
|
57
|
+
await changeAnalysis.initialize();
|
|
58
|
+
(0, assert_1.default)(changeAnalysis.baseManifest &&
|
|
59
|
+
changeAnalysis.headManifest &&
|
|
60
|
+
changeAnalysis.baseAppMaps &&
|
|
61
|
+
changeAnalysis.headAppMaps &&
|
|
62
|
+
changeAnalysis.appMapMetadata &&
|
|
63
|
+
changeAnalysis.newAppMaps &&
|
|
64
|
+
changeAnalysis.removedAppMaps &&
|
|
65
|
+
changeAnalysis.changedAppMaps &&
|
|
66
|
+
changeAnalysis.failedAppMaps);
|
|
67
|
+
return {
|
|
68
|
+
workingDir: changeAnalysis.workingDir,
|
|
69
|
+
srcDir: changeAnalysis.srcDir,
|
|
70
|
+
baseRevision: changeAnalysis.baseRevision,
|
|
71
|
+
headRevision: changeAnalysis.headRevision,
|
|
72
|
+
paths: changeAnalysis.paths,
|
|
73
|
+
digests: changeAnalysis.digests,
|
|
74
|
+
baseManifest: changeAnalysis.baseManifest,
|
|
75
|
+
headManifest: changeAnalysis.headManifest,
|
|
76
|
+
baseAppMaps: changeAnalysis.baseAppMaps,
|
|
77
|
+
headAppMaps: changeAnalysis.headAppMaps,
|
|
78
|
+
appMapMetadata: changeAnalysis.appMapMetadata,
|
|
79
|
+
newAppMaps: changeAnalysis.newAppMaps,
|
|
80
|
+
removedAppMaps: changeAnalysis.removedAppMaps,
|
|
81
|
+
changedAppMaps: changeAnalysis.changedAppMaps,
|
|
82
|
+
failedAppMaps: changeAnalysis.failedAppMaps,
|
|
83
|
+
findingDiff: changeAnalysis.findingDiff,
|
|
84
|
+
referencedAppMaps: changeAnalysis.referencedAppMaps,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
exports.analyzeChanges = analyzeChanges;
|
|
88
|
+
class ChangeAnalysisImpl {
|
|
89
|
+
constructor(workingDir, srcDir, baseRevision, headRevision) {
|
|
90
|
+
this.workingDir = workingDir;
|
|
91
|
+
this.srcDir = srcDir;
|
|
92
|
+
this.baseRevision = baseRevision;
|
|
93
|
+
this.headRevision = headRevision;
|
|
94
|
+
this.referencedAppMaps = new ReferencedAppMaps();
|
|
95
|
+
this.paths = new Paths_1.Paths(workingDir);
|
|
96
|
+
this.digests = new Digests_1.Digests(this.paths);
|
|
97
|
+
}
|
|
98
|
+
async initialize() {
|
|
99
|
+
var _a;
|
|
100
|
+
await this.digests.build();
|
|
101
|
+
this.baseManifest = JSON.parse(await (0, promises_1.readFile)(this.paths.manifestPath(RevisionName_1.RevisionName.Base), 'utf-8'));
|
|
102
|
+
this.headManifest = JSON.parse(await (0, promises_1.readFile)(this.paths.manifestPath(RevisionName_1.RevisionName.Head), 'utf-8'));
|
|
103
|
+
this.baseAppMaps = new Set(await this.paths.appmaps(RevisionName_1.RevisionName.Base));
|
|
104
|
+
this.headAppMaps = new Set(await this.paths.appmaps(RevisionName_1.RevisionName.Head));
|
|
105
|
+
await this.loadMetadata();
|
|
106
|
+
await this.loadFailedAppMaps();
|
|
107
|
+
await this.loadAppMapChanges();
|
|
108
|
+
if (((_a = this.failedAppMaps) === null || _a === void 0 ? void 0 : _a.size) === 0)
|
|
109
|
+
await this.loadFindingDiff();
|
|
110
|
+
await this.computeReferencedAppMaps();
|
|
111
|
+
}
|
|
112
|
+
async loadAppMapChanges() {
|
|
113
|
+
const { baseAppMaps, headAppMaps, appMapMetadata } = this;
|
|
114
|
+
(0, assert_1.default)(baseAppMaps && headAppMaps && appMapMetadata);
|
|
115
|
+
const isNewFn = isAdded(baseAppMaps, isTest(RevisionName_1.RevisionName.Head, appMapMetadata));
|
|
116
|
+
const isRemovedFn = isAdded(headAppMaps, isTest(RevisionName_1.RevisionName.Base, appMapMetadata));
|
|
117
|
+
const isChangedFn = isChanged(baseAppMaps, isTest(RevisionName_1.RevisionName.Head, appMapMetadata), this.digests);
|
|
118
|
+
this.newAppMaps = [...headAppMaps].filter(isNewFn);
|
|
119
|
+
this.removedAppMaps = [...baseAppMaps].filter(isRemovedFn);
|
|
120
|
+
this.changedAppMaps = [...headAppMaps].filter(isChangedFn);
|
|
121
|
+
}
|
|
122
|
+
async computeReferencedAppMaps() {
|
|
123
|
+
const { appMapMetadata, failedAppMaps, findingDiff, newAppMaps, removedAppMaps, changedAppMaps, } = this;
|
|
124
|
+
(0, assert_1.default)(appMapMetadata && failedAppMaps && newAppMaps && removedAppMaps && changedAppMaps);
|
|
125
|
+
(0, assert_1.default)(failedAppMaps || findingDiff);
|
|
126
|
+
const referenceAppMapFn = (appmap) => [RevisionName_1.RevisionName.Base, RevisionName_1.RevisionName.Head].forEach((revisionName) => this.referencedAppMaps.add(revisionName, appmap));
|
|
127
|
+
const referenceFindingAppMapFn = async (revisionName, finding) => {
|
|
128
|
+
const { appMapFile } = finding;
|
|
129
|
+
const appmap = appMapFile.slice(0, -'.appmap.json'.length);
|
|
130
|
+
const path = this.paths.appmapPath(revisionName, appmap);
|
|
131
|
+
// A sanity check
|
|
132
|
+
if (!(await (0, utils_1.exists)(path)))
|
|
133
|
+
(0, console_1.warn)(`AppMap ${path}, referenced by finding ${finding.hash_v2}, does not exist.`);
|
|
134
|
+
referenceAppMapFn(appmap);
|
|
135
|
+
};
|
|
136
|
+
newAppMaps.forEach((appmap) => referenceAppMapFn(appmap));
|
|
137
|
+
removedAppMaps.forEach((appmap) => referenceAppMapFn(appmap));
|
|
138
|
+
changedAppMaps.forEach((appmap) => referenceAppMapFn(appmap));
|
|
139
|
+
failedAppMaps.forEach((appmap) => referenceAppMapFn(appmap));
|
|
140
|
+
if (findingDiff) {
|
|
141
|
+
for (const finding of findingDiff.new || [])
|
|
142
|
+
referenceFindingAppMapFn(RevisionName_1.RevisionName.Head, finding);
|
|
143
|
+
for (const finding of findingDiff.resolved || [])
|
|
144
|
+
referenceFindingAppMapFn(RevisionName_1.RevisionName.Base, finding);
|
|
145
|
+
}
|
|
146
|
+
const sequenceDiagramExists = async (revisionName, appmap) => {
|
|
147
|
+
const path = this.paths.sequenceDiagramPath(revisionName, appmap);
|
|
148
|
+
return await (0, utils_1.exists)(path);
|
|
149
|
+
};
|
|
150
|
+
// Limit AppMap metadata to only those AppMaps that have a sequence diagram.
|
|
151
|
+
for (const revisionName of [RevisionName_1.RevisionName.Base, RevisionName_1.RevisionName.Head]) {
|
|
152
|
+
const metadataByPath = appMapMetadata[revisionName];
|
|
153
|
+
for (const appmap of metadataByPath.keys()) {
|
|
154
|
+
if (!(await sequenceDiagramExists(revisionName, appmap)))
|
|
155
|
+
metadataByPath.delete(appmap);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async loadMetadata() {
|
|
160
|
+
const appMapMetadata = {
|
|
161
|
+
base: new Map(),
|
|
162
|
+
head: new Map(),
|
|
163
|
+
};
|
|
164
|
+
const q = (0, async_1.queue)(async (appmap) => {
|
|
165
|
+
const metadataPath = this.paths.metadataPath(appmap.revisionName, appmap.name);
|
|
166
|
+
if (!(await (0, utils_1.exists)(metadataPath))) {
|
|
167
|
+
console.warn(`Metadata file ${metadataPath} does not exist!`);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const metadata = JSON.parse(await (0, promises_1.readFile)(metadataPath, 'utf-8'));
|
|
171
|
+
appMapMetadata[appmap.revisionName].set(appmap.name, metadata);
|
|
172
|
+
}, 2);
|
|
173
|
+
q.error(console.warn);
|
|
174
|
+
for (const revisionName of [RevisionName_1.RevisionName.Base, RevisionName_1.RevisionName.Head]) {
|
|
175
|
+
(await this.paths.appmaps(revisionName)).forEach((appmap) => q.push({
|
|
176
|
+
revisionName: revisionName,
|
|
177
|
+
name: appmap,
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
if (!q.idle())
|
|
181
|
+
await q.drain();
|
|
182
|
+
this.appMapMetadata = appMapMetadata;
|
|
183
|
+
}
|
|
184
|
+
async loadFailedAppMaps() {
|
|
185
|
+
(0, assert_1.default)(this.appMapMetadata);
|
|
186
|
+
const failedAppMaps = new Set();
|
|
187
|
+
{
|
|
188
|
+
for (const appmap of await this.paths.appmaps(RevisionName_1.RevisionName.Head)) {
|
|
189
|
+
const metadata = this.appMapMetadata[RevisionName_1.RevisionName.Head].get(appmap);
|
|
190
|
+
if (!metadata) {
|
|
191
|
+
console.warn(`Metadata for ${appmap} not found`);
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (metadata.test_status === 'failed')
|
|
195
|
+
failedAppMaps.add(appmap);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
this.failedAppMaps = failedAppMaps;
|
|
199
|
+
}
|
|
200
|
+
async loadFindingDiff() {
|
|
201
|
+
const { baseManifest, headManifest, paths } = this;
|
|
202
|
+
(0, assert_1.default)(baseManifest && headManifest && paths);
|
|
203
|
+
const baseFindings = await (0, loadFindings_1.default)(paths, RevisionName_1.RevisionName.Base, baseManifest.appMapDir);
|
|
204
|
+
const headFindings = await (0, loadFindings_1.default)(paths, RevisionName_1.RevisionName.Head, headManifest.appMapDir);
|
|
205
|
+
let newFindings;
|
|
206
|
+
let resolvedFindings;
|
|
207
|
+
const baseFindingHashes = baseFindings.reduce((memo, finding) => (memo.add(finding.hash_v2), memo), new Set());
|
|
208
|
+
const headFindingHashes = headFindings.reduce((memo, finding) => (memo.add(finding.hash_v2), memo), new Set());
|
|
209
|
+
const newFindingHashes = [...headFindingHashes].filter((hash) => !baseFindingHashes.has(hash));
|
|
210
|
+
const resolvedFindingHashes = [...baseFindingHashes].filter((hash) => !headFindingHashes.has(hash));
|
|
211
|
+
newFindings = Object.values(headFindings
|
|
212
|
+
.filter((finding) => newFindingHashes.includes(finding.hash_v2))
|
|
213
|
+
.reduce((memo, finding) => {
|
|
214
|
+
if (!(finding.hash_v2 in memo))
|
|
215
|
+
memo[finding.hash_v2] = finding;
|
|
216
|
+
return memo;
|
|
217
|
+
}, {}));
|
|
218
|
+
resolvedFindings = Object.values(baseFindings
|
|
219
|
+
.filter((finding) => resolvedFindingHashes.includes(finding.hash_v2))
|
|
220
|
+
.reduce((memo, finding) => {
|
|
221
|
+
if (!(finding.hash_v2 in memo))
|
|
222
|
+
memo[finding.hash_v2] = finding;
|
|
223
|
+
return memo;
|
|
224
|
+
}, {}));
|
|
225
|
+
this.findingDiff = {
|
|
226
|
+
new: newFindings,
|
|
227
|
+
resolved: resolvedFindings,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
exports.ChangeAnalysisImpl = ChangeAnalysisImpl;
|
|
232
|
+
//# sourceMappingURL=ChangeAnalysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeAnalysis.js","sourceRoot":"","sources":["../../src/diffArchive/ChangeAnalysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ exports.Digests = void 0;
|
|
|
4
4
|
const async_1 = require("async");
|
|
5
5
|
const RevisionName_1 = require("./RevisionName");
|
|
6
6
|
const SequenceDiagramDigest_1 = require("./SequenceDiagramDigest");
|
|
7
|
-
const utils_1 = require("
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
8
|
class Digests {
|
|
9
9
|
constructor(paths) {
|
|
10
10
|
this.paths = paths;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Digests.js","sourceRoot":"","sources":["../../src/diffArchive/Digests.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,16 +26,19 @@ class Paths {
|
|
|
26
26
|
return (0, path_1.join)(this.workingDir, revisionName, 'openapi.yml');
|
|
27
27
|
}
|
|
28
28
|
appmapPath(revisionName, appmap) {
|
|
29
|
-
return (0, path_1.join)(this.workingDir, revisionName, appmap);
|
|
29
|
+
return [(0, path_1.join)(this.workingDir, revisionName, appmap), 'appmap.json'].join('.');
|
|
30
|
+
}
|
|
31
|
+
indexFilePath(revisionName, appmap, indexFile) {
|
|
32
|
+
return (0, path_1.join)(this.workingDir, revisionName, appmap, indexFile);
|
|
30
33
|
}
|
|
31
34
|
metadataPath(revisionName, appmap) {
|
|
32
|
-
return
|
|
35
|
+
return this.indexFilePath(revisionName, appmap, 'metadata.json');
|
|
33
36
|
}
|
|
34
37
|
classMapPath(revisionName, appmap) {
|
|
35
|
-
return
|
|
38
|
+
return this.indexFilePath(revisionName, appmap, 'classMap.json');
|
|
36
39
|
}
|
|
37
40
|
sequenceDiagramPath(revisionName, appmap) {
|
|
38
|
-
return
|
|
41
|
+
return this.indexFilePath(revisionName, appmap, 'sequence.json');
|
|
39
42
|
}
|
|
40
43
|
sequenceDiagramDiffPath(appmap) {
|
|
41
44
|
return (0, path_1.join)(this.workingDir, RevisionName_1.RevisionName.Diff, [appmap, 'diff.sequence.json'].join('.'));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paths.js","sourceRoot":"","sources":["../../src/diffArchive/Paths.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,+BAA+C;AAC/C,+BAAiC;AAEjC,iDAA8C;AAE9C,MAAa,KAAK;IAChB,YAAmB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAEzC,KAAK,CAAC,OAAO,CAAC,YAA0B;QACtC,MAAM,aAAa,GAAG,MAAM,IAAA,gBAAS,EAAC,WAAI,CAAC,CACzC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC,CACxD,CAAC;QACF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChC,IAAA,eAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,YAA0B;QACrC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACtE,CAAC;IAED,YAAY,CAAC,YAA0B;QACrC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAED,YAAY,CAAC,YAA0B;QACrC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW,CAAC,YAA0B;QACpC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU,CAAC,YAA0B,EAAE,MAAc;QACnD,OAAO,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,aAAa,CAAC,YAA0B,EAAE,MAAc,EAAE,SAAiB;QACzE,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,YAAY,CAAC,YAA0B,EAAE,MAAc;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,YAAY,CAAC,YAA0B,EAAE,MAAc;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,mBAAmB,CAAC,YAA0B,EAAE,MAAc;QAC5D,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,uBAAuB,CAAC,MAAc;QACpC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,2BAAY,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;CACF;AAnDD,sBAmDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RevisionName.js","sourceRoot":"","sources":["../../src/diffArchive/RevisionName.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,6BAAa,CAAA;AACf,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SequenceDiagramDigest = void 0;
|
|
4
4
|
const crypto_1 = require("crypto");
|
|
5
|
-
const loadSequenceDiagram_1 = require("
|
|
5
|
+
const loadSequenceDiagram_1 = require("../cmds/compare/loadSequenceDiagram");
|
|
6
6
|
class SequenceDiagramDigest {
|
|
7
7
|
constructor(paths, revisionName, appmap) {
|
|
8
8
|
this.paths = paths;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SequenceDiagramDigest.js","sourceRoot":"","sources":["../../src/diffArchive/SequenceDiagramDigest.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAGpC,6EAA0E;AAE1E,MAAa,qBAAqB;IAChC,YAAmB,KAAY,EAAS,YAA0B,EAAS,MAAc;QAAtE,UAAK,GAAL,KAAK,CAAO;QAAS,iBAAY,GAAZ,YAAY,CAAc;QAAS,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE7F,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,IAAA,yCAAmB,EACvC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAC/D,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAXD,sDAWC"}
|
|
@@ -3,15 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.SourceDiffQueue = exports.MAX_DIFF_LENGTH = void 0;
|
|
7
7
|
const parse_diff_1 = __importDefault(require("parse-diff"));
|
|
8
8
|
const console_1 = require("console");
|
|
9
9
|
const assert_1 = __importDefault(require("assert"));
|
|
10
|
-
const executeCommand_1 = require("
|
|
10
|
+
const executeCommand_1 = require("../lib/executeCommand");
|
|
11
11
|
const async_1 = require("async");
|
|
12
12
|
const fs_1 = require("fs");
|
|
13
13
|
exports.MAX_DIFF_LENGTH = 1000 * 1000;
|
|
14
|
-
class
|
|
14
|
+
class SourceDiffQueue {
|
|
15
15
|
constructor(baseRevision, headRevision) {
|
|
16
16
|
this.baseRevision = baseRevision;
|
|
17
17
|
this.headRevision = headRevision;
|
|
@@ -53,13 +53,13 @@ class DiffLoaderQueue {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
exports.
|
|
57
|
-
class
|
|
56
|
+
exports.SourceDiffQueue = SourceDiffQueue;
|
|
57
|
+
class SourceDiff {
|
|
58
58
|
constructor(baseRevision, headRevision) {
|
|
59
59
|
this.baseRevision = baseRevision;
|
|
60
60
|
this.headRevision = headRevision;
|
|
61
61
|
this.sourcePathRoots = new Set();
|
|
62
|
-
this.diffLoaderQueue = new
|
|
62
|
+
this.diffLoaderQueue = new SourceDiffQueue(baseRevision, headRevision);
|
|
63
63
|
}
|
|
64
64
|
lookupDiff(path) {
|
|
65
65
|
if (!this.diffByFile)
|
|
@@ -85,7 +85,7 @@ class DiffLoader {
|
|
|
85
85
|
for (const root of sourcePathRoots) {
|
|
86
86
|
if (!this.sourcePathRoots.has(root)) {
|
|
87
87
|
this.sourcePathRoots.add(root);
|
|
88
|
-
if (
|
|
88
|
+
if (SourceDiff.isEligibleFile(root))
|
|
89
89
|
diffRoots.add(root);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -113,5 +113,5 @@ class DiffLoader {
|
|
|
113
113
|
}, this.diffByFile);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
exports.default =
|
|
117
|
-
//# sourceMappingURL=
|
|
116
|
+
exports.default = SourceDiff;
|
|
117
|
+
//# sourceMappingURL=SourceDiff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceDiff.js","sourceRoot":"","sources":["../../src/diffArchive/SourceDiff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const promises_1 = require("fs/promises");
|
|
4
|
-
const utils_1 = require("
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
5
|
async function loadFindings(paths, revisionName, appMapDir) {
|
|
6
6
|
const findings = new Array();
|
|
7
7
|
const collectFindings = (findings) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadFindings.js","sourceRoot":"","sources":["../../src/diffArchive/loadFindings.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AAKvC,oCAA6C;AAE9B,KAAK,UAAU,YAAY,CACxC,KAAY,EACZ,YAA0B,EAC1B,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAW,CAAC;IAEtC,MAAM,eAAe,GAAG,CAAC,QAAmB,EAA6C,EAAE;QACzF,OAAO,KAAK,EAAE,YAAoB,EAAE,EAAE;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,GAAI,YAAY,CAAC,QAAsB,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,IAAA,yBAAiB,EACrB,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,EAChC,sBAAsB,EACtB,eAAe,CAAC,QAAQ,CAAC,CAC1B,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,iBAAiB,YAAY,WAAW,CAAC,CAAC;IAE/E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC5C,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACrE;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AA5BD,+BA4BC"}
|