@appland/appmap 3.82.1 → 3.84.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 +22 -0
- package/built/cli.js +4 -0
- package/built/cli.js.map +1 -1
- package/built/cmds/archive/ArchiveMetadata.js +3 -0
- package/built/cmds/archive/ArchiveMetadata.js.map +1 -0
- package/built/cmds/archive/CountNumProcessed.js +15 -0
- package/built/cmds/archive/CountNumProcessed.js.map +1 -0
- package/built/cmds/archive/analyze.js +42 -0
- package/built/cmds/archive/analyze.js.map +1 -0
- package/built/cmds/archive/archive.js +181 -0
- package/built/cmds/archive/archive.js.map +1 -0
- package/built/cmds/archive/archiveStore.js +145 -0
- package/built/cmds/archive/archiveStore.js.map +1 -0
- package/built/cmds/archive/buildFilter.js +57 -0
- package/built/cmds/archive/buildFilter.js.map +1 -0
- package/built/cmds/archive/generateOpenAPI.js +17 -0
- package/built/cmds/archive/generateOpenAPI.js.map +1 -0
- package/built/cmds/archive/gitAncestors.js +15 -0
- package/built/cmds/archive/gitAncestors.js.map +1 -0
- package/built/cmds/archive/gitDeletedFiles.js +11 -0
- package/built/cmds/archive/gitDeletedFiles.js.map +1 -0
- package/built/cmds/archive/gitModifiedFiles.js +14 -0
- package/built/cmds/archive/gitModifiedFiles.js.map +1 -0
- package/built/cmds/archive/gitNewFiles.js +11 -0
- package/built/cmds/archive/gitNewFiles.js.map +1 -0
- package/built/cmds/archive/gitRevision.js +11 -0
- package/built/cmds/archive/gitRevision.js.map +1 -0
- package/built/cmds/archive/indexAppMaps.js +22 -0
- package/built/cmds/archive/indexAppMaps.js.map +1 -0
- package/built/cmds/archive/parseFilterArgs.js +35 -0
- package/built/cmds/archive/parseFilterArgs.js.map +1 -0
- package/built/cmds/archive/reportAppMapProcessingError.js +18 -0
- package/built/cmds/archive/reportAppMapProcessingError.js.map +1 -0
- package/built/cmds/archive/restore.js +129 -0
- package/built/cmds/archive/restore.js.map +1 -0
- package/built/cmds/archive/scan.js +46 -0
- package/built/cmds/archive/scan.js.map +1 -0
- package/built/cmds/archive/serializeAppMapFilter.js +19 -0
- package/built/cmds/archive/serializeAppMapFilter.js.map +1 -0
- package/built/cmds/archive/unpackArchive.js +39 -0
- package/built/cmds/archive/unpackArchive.js.map +1 -0
- package/built/cmds/archive/updateSequenceDiagrams.js +49 -0
- package/built/cmds/archive/updateSequenceDiagrams.js.map +1 -0
- package/built/cmds/sequenceDiagram.js.map +1 -1
- package/built/fingerprint/fingerprintQueue.js +6 -1
- package/built/fingerprint/fingerprintQueue.js.map +1 -1
- package/built/fingerprint/fingerprinter.js +4 -3
- package/built/fingerprint/fingerprinter.js.map +1 -1
- package/built/html/appmap.js +1 -1
- package/built/html/appmap.js.map +3 -3
- package/built/html/sequenceDiagram.js +1 -1
- package/built/html/sequenceDiagram.js.map +3 -3
- package/built/lib/executeCommand.js +50 -0
- package/built/lib/executeCommand.js.map +1 -0
- package/built/lib/findings.js +6 -0
- package/built/lib/findings.js.map +1 -0
- package/built/lib/loadAppMapConfig.js +24 -9
- package/built/lib/loadAppMapConfig.js.map +1 -1
- package/built/lib/sqlErrorLog.js +6 -9
- package/built/lib/sqlErrorLog.js.map +1 -1
- package/built/search/findCodeObjects.js +3 -1
- package/built/search/findCodeObjects.js.map +1 -1
- package/built/sequenceDiagram/analyzeAppMaps.js +3 -2
- package/built/sequenceDiagram/analyzeAppMaps.js.map +1 -1
- package/built/utils.js +38 -12
- package/built/utils.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const executeCommand_1 = require("../../lib/executeCommand");
|
|
4
|
+
async function gitModifiedFiles(revision, diffFilters, folders) {
|
|
5
|
+
const command = [`git diff --name-only --no-renames `];
|
|
6
|
+
if (diffFilters.length > 0)
|
|
7
|
+
command.push(`--diff-filter=${diffFilters.join('')}`);
|
|
8
|
+
command.push(revision);
|
|
9
|
+
if (folders)
|
|
10
|
+
command.push(...folders);
|
|
11
|
+
return (await (0, executeCommand_1.executeCommand)(command.join(' '))).trim().split('\n').filter(Boolean);
|
|
12
|
+
}
|
|
13
|
+
exports.default = gitModifiedFiles;
|
|
14
|
+
//# sourceMappingURL=gitModifiedFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitModifiedFiles.js","sourceRoot":"","sources":["../../../src/cmds/archive/gitModifiedFiles.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAE3C,KAAK,UAAU,gBAAgB,CAC5C,QAAgB,EAChB,WAAqB,EACrB,OAAkB;IAElB,MAAM,OAAO,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACvD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,IAAI,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,IAAA,+BAAc,EAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtF,CAAC;AAXD,mCAWC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const executeCommand_1 = require("../../lib/executeCommand");
|
|
4
|
+
async function gitNewFiles(folders) {
|
|
5
|
+
const command = ['git ls-files -o --exclude-standard'];
|
|
6
|
+
if (folders)
|
|
7
|
+
command.push(...folders);
|
|
8
|
+
return (await (0, executeCommand_1.executeCommand)(command.join(' '))).trim().split('\n').filter(Boolean);
|
|
9
|
+
}
|
|
10
|
+
exports.default = gitNewFiles;
|
|
11
|
+
//# sourceMappingURL=gitNewFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitNewFiles.js","sourceRoot":"","sources":["../../../src/cmds/archive/gitNewFiles.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAE3C,KAAK,UAAU,WAAW,CAAC,OAAkB;IAC1D,MAAM,OAAO,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACvD,IAAI,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,IAAA,+BAAc,EAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtF,CAAC;AALD,8BAKC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const executeCommand_1 = require("../../lib/executeCommand");
|
|
4
|
+
async function gitRevision() {
|
|
5
|
+
const revision = (await (0, executeCommand_1.executeCommand)('git rev-parse HEAD')).trim();
|
|
6
|
+
if (!revision)
|
|
7
|
+
throw new Error(`Unable to determine revision. Use --revision to specify it, or run this command in a Git repo.`);
|
|
8
|
+
return revision;
|
|
9
|
+
}
|
|
10
|
+
exports.default = gitRevision;
|
|
11
|
+
//# sourceMappingURL=gitRevision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitRevision.js","sourceRoot":"","sources":["../../../src/cmds/archive/gitRevision.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAE3C,KAAK,UAAU,WAAW;IACvC,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,+BAAc,EAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IAEJ,OAAO,QAAQ,CAAC;AAClB,CAAC;AARD,8BAQC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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.indexAppMaps = void 0;
|
|
7
|
+
const fingerprinter_1 = __importDefault(require("../../fingerprint/fingerprinter"));
|
|
8
|
+
const utils_1 = require("../../utils");
|
|
9
|
+
const CountNumProcessed_1 = require("./CountNumProcessed");
|
|
10
|
+
const reportAppMapProcessingError_1 = __importDefault(require("./reportAppMapProcessingError"));
|
|
11
|
+
async function indexAppMaps(appmapDir, maxAppMapSizeInBytes) {
|
|
12
|
+
const handler = new fingerprinter_1.default();
|
|
13
|
+
handler.maxFileSizeInBytes = maxAppMapSizeInBytes;
|
|
14
|
+
const counter = new CountNumProcessed_1.CountNumProcessed();
|
|
15
|
+
const options = new utils_1.ProcessFileOptions(appmapDir);
|
|
16
|
+
options.fileCountFn = counter.setCount();
|
|
17
|
+
options.errorFn = (0, reportAppMapProcessingError_1.default)('Index');
|
|
18
|
+
await (0, utils_1.processFiles)('**/*.appmap.json', async (appmapFile) => await handler.fingerprint(appmapFile), options);
|
|
19
|
+
return counter.count;
|
|
20
|
+
}
|
|
21
|
+
exports.indexAppMaps = indexAppMaps;
|
|
22
|
+
//# sourceMappingURL=indexAppMaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexAppMaps.js","sourceRoot":"","sources":["../../../src/cmds/archive/indexAppMaps.ts"],"names":[],"mappings":";;;;;;AAAA,oFAA4D;AAC5D,uCAA+D;AAC/D,2DAAwD;AACxD,gGAAwE;AAEjE,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,oBAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;IACpC,OAAO,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,qCAAiB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,0BAAkB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzC,OAAO,CAAC,OAAO,GAAG,IAAA,qCAA2B,EAAC,OAAO,CAAC,CAAC;IACvD,MAAM,IAAA,oBAAY,EAChB,kBAAkB,EAClB,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAC3D,OAAO,CACR,CAAC;IAEF,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,CAAC;AAlBD,oCAkBC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const console_1 = require("console");
|
|
4
|
+
function parseFilterArgs(compareFilter, filterArgs) {
|
|
5
|
+
var _a;
|
|
6
|
+
const filters = new Map();
|
|
7
|
+
for (const filter of filterArgs) {
|
|
8
|
+
const [key, v] = filter.split('=');
|
|
9
|
+
if (!filters.has(key))
|
|
10
|
+
filters.set(key, []);
|
|
11
|
+
(_a = filters.get(key)) === null || _a === void 0 ? void 0 : _a.push(v);
|
|
12
|
+
}
|
|
13
|
+
for (const [key, values] of filters.entries()) {
|
|
14
|
+
if (key === 'hide_external') {
|
|
15
|
+
if (values.length !== 1) {
|
|
16
|
+
(0, console_1.warn)(`hide_external should not be repeated, got: ${values.join(', ')}`);
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const value = values[0];
|
|
20
|
+
if (value === 'true')
|
|
21
|
+
compareFilter[key] = true;
|
|
22
|
+
else if (value === 'false')
|
|
23
|
+
compareFilter[key] = false;
|
|
24
|
+
else
|
|
25
|
+
(0, console_1.warn)(`Invalid value for hide_external: ${value}`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
if (!compareFilter[key])
|
|
29
|
+
compareFilter[key] = [];
|
|
30
|
+
compareFilter[key].push(...values);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.default = parseFilterArgs;
|
|
35
|
+
//# sourceMappingURL=parseFilterArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseFilterArgs.js","sourceRoot":"","sources":["../../../src/cmds/archive/parseFilterArgs.ts"],"names":[],"mappings":";;AAAA,qCAA+B;AAG/B,SAAwB,eAAe,CAAC,aAA4B,EAAE,UAAoB;;IACxF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;QAC7C,IAAI,GAAG,KAAK,eAAe,EAAE;YAC3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,IAAA,cAAI,EAAC,8CAA8C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxE,SAAS;aACV;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,MAAM;gBAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;iBAC3C,IAAI,KAAK,KAAK,OAAO;gBAAE,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;gBAClD,IAAA,cAAI,EAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;SACxD;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjD,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SACpC;KACF;AACH,CAAC;AAtBD,kCAsBC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
const fileTooLargeError_1 = __importDefault(require("../../fingerprint/fileTooLargeError"));
|
|
7
|
+
function reportAppMapProcessingError(jobName) {
|
|
8
|
+
return (error) => {
|
|
9
|
+
if (error instanceof fileTooLargeError_1.default) {
|
|
10
|
+
process.stderr.write(`${jobName}: skipped large AppMap ${error.path} (${error.bytes / 1024}kb})\n`);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
process.stderr.write(`${jobName}: ${error}\n`);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.default = reportAppMapProcessingError;
|
|
18
|
+
//# sourceMappingURL=reportAppMapProcessingError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportAppMapProcessingError.js","sourceRoot":"","sources":["../../../src/cmds/archive/reportAppMapProcessingError.ts"],"names":[],"mappings":";;;;;AAAA,4FAAoE;AAEpE,SAAwB,2BAA2B,CAAC,OAAe;IACjE,OAAO,CAAC,KAAU,EAAE,EAAE;QACpB,IAAI,KAAK,YAAY,2BAAiB,EAAE;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,OAAO,0BAA0B,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,GAAG,IAAI,QAAQ,CAC9E,CAAC;SACH;aAAM;YACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;SAChD;IACH,CAAC,CAAC;AACJ,CAAC;AAVD,8CAUC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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.handler = exports.builder = exports.describe = exports.command = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const glob_1 = require("glob");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const util_1 = require("util");
|
|
12
|
+
const handleWorkingDirectory_1 = require("../../lib/handleWorkingDirectory");
|
|
13
|
+
const utils_1 = require("../../utils");
|
|
14
|
+
const archiveStore_1 = require("./archiveStore");
|
|
15
|
+
const gitAncestors_1 = __importDefault(require("./gitAncestors"));
|
|
16
|
+
const gitRevision_1 = __importDefault(require("./gitRevision"));
|
|
17
|
+
const unpackArchive_1 = __importDefault(require("./unpackArchive"));
|
|
18
|
+
exports.command = 'restore';
|
|
19
|
+
exports.describe = 'Restore the most current available AppMap data from available archives';
|
|
20
|
+
const builder = (args) => {
|
|
21
|
+
args.option('directory', {
|
|
22
|
+
describe: 'program working directory',
|
|
23
|
+
type: 'string',
|
|
24
|
+
alias: 'd',
|
|
25
|
+
});
|
|
26
|
+
args.option('revision', {
|
|
27
|
+
describe: `revision to restore`,
|
|
28
|
+
type: 'string',
|
|
29
|
+
alias: 'r',
|
|
30
|
+
});
|
|
31
|
+
args.option('output-dir', {
|
|
32
|
+
describe: 'directory in which to restore the data. Default: .appmap/work/<revision>',
|
|
33
|
+
type: 'string',
|
|
34
|
+
});
|
|
35
|
+
args.option('archive-dir', {
|
|
36
|
+
describe: 'directory in which the archives are stored',
|
|
37
|
+
type: 'string',
|
|
38
|
+
default: '.appmap/archive',
|
|
39
|
+
});
|
|
40
|
+
args.option('github-repo', {
|
|
41
|
+
describe: 'Fetch AppMap archives from artifacts on a GitHub repository. GITHUB_TOKEN must be set for this option to work.',
|
|
42
|
+
type: 'string',
|
|
43
|
+
});
|
|
44
|
+
args.option('exact', {
|
|
45
|
+
describe: 'fail unless the specific revision requested is available to be restored',
|
|
46
|
+
type: 'boolean',
|
|
47
|
+
default: false,
|
|
48
|
+
});
|
|
49
|
+
return args.strict();
|
|
50
|
+
};
|
|
51
|
+
exports.builder = builder;
|
|
52
|
+
const handler = async (argv) => {
|
|
53
|
+
(0, utils_1.verbose)(argv.verbose);
|
|
54
|
+
(0, handleWorkingDirectory_1.handleWorkingDirectory)(argv.directory);
|
|
55
|
+
const { revision: revisionArg, outputDir: outputDirArg, githubRepo, archiveDir, exact } = argv;
|
|
56
|
+
const revision = revisionArg !== undefined ? revisionArg.toString() : await (0, gitRevision_1.default)();
|
|
57
|
+
const outputDir = outputDirArg || (0, path_1.join)('.appmap', 'work', revision);
|
|
58
|
+
if ((0, fs_1.existsSync)(outputDir))
|
|
59
|
+
throw new Error(`Output directory ${outputDir} already exists`);
|
|
60
|
+
console.log(`Restoring AppMaps of revision ${revision} to ${outputDir}`);
|
|
61
|
+
let archiveStore;
|
|
62
|
+
if (githubRepo) {
|
|
63
|
+
const token = process.env.GITHUB_TOKEN;
|
|
64
|
+
if (!token)
|
|
65
|
+
throw new Error('GITHUB_TOKEN must be set to use the --github-repo option');
|
|
66
|
+
archiveStore = new archiveStore_1.GitHubArchiveStore(githubRepo, token);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
archiveStore = new archiveStore_1.FileArchiveStore(archiveDir);
|
|
70
|
+
}
|
|
71
|
+
const archivesAvailable = await archiveStore.revisionsAvailable();
|
|
72
|
+
if ((0, utils_1.verbose)())
|
|
73
|
+
console.debug(`Found ${(0, util_1.inspect)(archivesAvailable)} AppMap archives`);
|
|
74
|
+
let ancestors;
|
|
75
|
+
let mostRecentArchiveAvailable = [
|
|
76
|
+
...archivesAvailable.full.values(),
|
|
77
|
+
].find((archive) => archive.revision === revision);
|
|
78
|
+
if (mostRecentArchiveAvailable) {
|
|
79
|
+
console.log(`Found exact match full AppMap archive ${revision}`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
ancestors = await (0, gitAncestors_1.default)(revision);
|
|
83
|
+
{
|
|
84
|
+
const ancestorIndex = ancestors.reduce((memo, revision, index) => ((memo[revision] = index), memo), {});
|
|
85
|
+
let mostRecentAncestorIndex;
|
|
86
|
+
for (const archive of archivesAvailable.full.values()) {
|
|
87
|
+
const index = ancestorIndex[archive.revision];
|
|
88
|
+
if (index !== undefined &&
|
|
89
|
+
(mostRecentAncestorIndex === undefined || index < mostRecentAncestorIndex)) {
|
|
90
|
+
mostRecentAncestorIndex = index;
|
|
91
|
+
mostRecentArchiveAvailable = archive;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (!mostRecentArchiveAvailable)
|
|
96
|
+
throw new Error(`No full AppMap archive found in the ancestry of ${revision}`);
|
|
97
|
+
}
|
|
98
|
+
console.log(`Using revision ${mostRecentArchiveAvailable.revision} as the baseline`);
|
|
99
|
+
const fullArchivePath = await archiveStore.fetch(mostRecentArchiveAvailable.id);
|
|
100
|
+
console.log(`Restoring full archive revision '${mostRecentArchiveAvailable.revision}' from '${fullArchivePath}' to '${outputDir}'`);
|
|
101
|
+
await (0, unpackArchive_1.default)(outputDir, fullArchivePath);
|
|
102
|
+
let restoredRevision = mostRecentArchiveAvailable.revision;
|
|
103
|
+
const restoredRevisions = [restoredRevision];
|
|
104
|
+
if (mostRecentArchiveAvailable.revision !== revision) {
|
|
105
|
+
(0, assert_1.default)(ancestors);
|
|
106
|
+
const baseRevisionIndex = ancestors.indexOf(mostRecentArchiveAvailable.revision);
|
|
107
|
+
(0, assert_1.default)(baseRevisionIndex !== -1);
|
|
108
|
+
const ancestorsAfterBaseRevision = new Set(ancestors.slice(0, baseRevisionIndex));
|
|
109
|
+
const incrementalArchivesAvailable = (await (0, util_1.promisify)(glob_1.glob)((0, path_1.join)(archiveDir, 'incremental', '*.tar'))).filter((archive) => {
|
|
110
|
+
const revision = (0, path_1.basename)(archive, '.tar');
|
|
111
|
+
return ancestorsAfterBaseRevision.has(revision);
|
|
112
|
+
});
|
|
113
|
+
console.log(`Applying incremental archives ${incrementalArchivesAvailable.join(', ')}`);
|
|
114
|
+
for (const archive of incrementalArchivesAvailable) {
|
|
115
|
+
const incrementalRevision = (0, path_1.basename)(archive, '.tar');
|
|
116
|
+
restoredRevision = incrementalRevision;
|
|
117
|
+
restoredRevisions.push(restoredRevision);
|
|
118
|
+
await (0, unpackArchive_1.default)(outputDir, archive);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (exact) {
|
|
122
|
+
if (restoredRevisions[restoredRevisions.length - 1] !== revision) {
|
|
123
|
+
throw new Error(`Unable to restore specific revision ${revision}; applied ${restoredRevisions.join(', ')}.`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
console.log(`Restore complete`);
|
|
127
|
+
};
|
|
128
|
+
exports.handler = handler;
|
|
129
|
+
//# sourceMappingURL=restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../src/cmds/archive/restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scan = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const executeCommand_1 = require("../../lib/executeCommand");
|
|
6
|
+
const promises_1 = require("fs/promises");
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
async function scan(appMapDir) {
|
|
9
|
+
await (0, executeCommand_1.executeCommand)(`npx @appland/scanner@latest scan --appmap-dir ${appMapDir} --all`);
|
|
10
|
+
const scanResultsData = await (0, promises_1.readFile)('appmap-findings.json', 'utf8');
|
|
11
|
+
await (0, promises_1.rm)('appmap-findings.json');
|
|
12
|
+
const scanResults = JSON.parse(scanResultsData);
|
|
13
|
+
const scanResultsTemplateJSON = JSON.parse(scanResultsData);
|
|
14
|
+
delete scanResultsTemplateJSON['findings'];
|
|
15
|
+
const appMapMetadata = scanResultsTemplateJSON['appMapMetadata'];
|
|
16
|
+
const scanResultsTemplate = JSON.stringify(scanResultsTemplateJSON);
|
|
17
|
+
const findings = scanResults['findings'];
|
|
18
|
+
const findingsByAppMap = findings.reduce((memo, finding) => {
|
|
19
|
+
if (!memo.has(finding.appMapFile))
|
|
20
|
+
memo.set(finding.appMapFile, [finding]);
|
|
21
|
+
else
|
|
22
|
+
memo.get(finding.appMapFile).push(finding);
|
|
23
|
+
return memo;
|
|
24
|
+
}, new Map());
|
|
25
|
+
return await (0, utils_1.processNamedFiles)(appMapDir, 'metadata.json', async (metadataFile) => {
|
|
26
|
+
// TODO: This is hacky, but scanning everything at once is an efficient way to get it done,
|
|
27
|
+
// and the scanner code is not accessible from the CLI project.
|
|
28
|
+
const indexDir = (0, path_1.dirname)(metadataFile);
|
|
29
|
+
const appmapFileName = (0, path_1.join)(...indexDir.split(path_1.sep).reverse().slice(1).reverse(), (0, path_1.basename)(indexDir) + '.appmap.json');
|
|
30
|
+
const scanResults = JSON.parse(scanResultsTemplate);
|
|
31
|
+
const findings = findingsByAppMap.get(appmapFileName) || [];
|
|
32
|
+
const scanSummary = scanResults['summary'];
|
|
33
|
+
scanSummary.numChecks = scanSummary.numChecks / scanSummary.numAppMaps;
|
|
34
|
+
scanSummary.numAppMaps = 1;
|
|
35
|
+
scanSummary.numFindings = findings.length;
|
|
36
|
+
scanResults['findings'] = findings;
|
|
37
|
+
const metadataEntry = appMapMetadata[appmapFileName];
|
|
38
|
+
if (metadataEntry)
|
|
39
|
+
scanResults['appMapMetadata'] = { [appmapFileName]: metadataEntry };
|
|
40
|
+
else
|
|
41
|
+
console.warn(`No appMapMetadata found for '${appmapFileName}' in scan results.`);
|
|
42
|
+
await (0, promises_1.writeFile)((0, path_1.join)(indexDir, 'appmap-findings.json'), JSON.stringify(scanResults, null, 2));
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
exports.scan = scan;
|
|
46
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cmds/archive/scan.ts"],"names":[],"mappings":";;;AAAA,+BAA8D;AAC9D,6DAA0D;AAC1D,0CAAsD;AAEtD,uCAAgD;AAEzC,KAAK,UAAU,IAAI,CAAC,SAAiB;IAC1C,MAAM,IAAA,+BAAc,EAAC,iDAAiD,SAAS,QAAQ,CAAC,CAAC;IAEzF,MAAM,eAAe,GAAG,MAAM,IAAA,mBAAQ,EAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,IAAA,aAAE,EAAC,sBAAsB,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5D,OAAO,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAwB,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IACtF,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAc,WAAW,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACjF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;;YACtE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,IAAI,GAAG,EAAqB,CAAC,CAAC;IAEjC,OAAO,MAAM,IAAA,yBAAiB,EAAC,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;QAChF,2FAA2F;QAC3F,+DAA+D;QAE/D,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,YAAY,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,IAAA,WAAI,EACzB,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EACnD,IAAA,eAAQ,EAAC,QAAQ,CAAC,GAAG,cAAc,CACpC,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAc,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAEvE,MAAM,WAAW,GACf,WAAW,CAAC,SAAS,CAAC,CAAC;QACzB,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC;QACvE,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC;QAC3B,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE1C,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QAEnC,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,aAAa;YAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;;YAClF,OAAO,CAAC,IAAI,CAAC,gCAAgC,cAAc,oBAAoB,CAAC,CAAC;QAEtF,MAAM,IAAA,oBAAS,EAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC;AA7CD,oBA6CC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeAppMapFilter = void 0;
|
|
4
|
+
function serializeAppMapFilter(appmapFilter) {
|
|
5
|
+
const { declutter } = appmapFilter;
|
|
6
|
+
const declutterNames = Object.keys(declutter).filter((key) => declutter[key].on);
|
|
7
|
+
return declutterNames
|
|
8
|
+
.sort((a, b) => a.localeCompare(b))
|
|
9
|
+
.reduce((acc, key) => {
|
|
10
|
+
const declutterValue = Object.assign({}, declutter[key]);
|
|
11
|
+
delete declutterValue.on;
|
|
12
|
+
delete declutterValue.default;
|
|
13
|
+
delete declutterValue.defaultValue;
|
|
14
|
+
acc[key] = declutterValue;
|
|
15
|
+
return acc;
|
|
16
|
+
}, {});
|
|
17
|
+
}
|
|
18
|
+
exports.serializeAppMapFilter = serializeAppMapFilter;
|
|
19
|
+
//# sourceMappingURL=serializeAppMapFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeAppMapFilter.js","sourceRoot":"","sources":["../../../src/cmds/archive/serializeAppMapFilter.ts"],"names":[],"mappings":";;;AAEA,SAAgB,qBAAqB,CAAC,YAA0B;IAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IACnC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,cAAc;SAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnB,MAAM,cAAc,qBAAQ,SAAS,CAAC,GAAG,CAAC,CAAE,CAAC;QAC7C,OAAO,cAAc,CAAC,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC,OAAO,CAAC;QAC9B,OAAO,cAAc,CAAC,YAAY,CAAC;QACnC,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAbD,sDAaC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const child_process_1 = require("child_process");
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
async function unpackArchive(outputDir, archivePath) {
|
|
7
|
+
await (0, promises_1.mkdir)(outputDir, { recursive: true });
|
|
8
|
+
const dir = process.cwd();
|
|
9
|
+
try {
|
|
10
|
+
process.chdir(outputDir);
|
|
11
|
+
await new Promise((resolveCB, rejectCB) => {
|
|
12
|
+
(0, child_process_1.exec)(`tar xf ${(0, path_1.resolve)(dir, archivePath)}`, (error) => {
|
|
13
|
+
if (error)
|
|
14
|
+
rejectCB(error);
|
|
15
|
+
resolveCB();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
await new Promise((resolveCB, rejectCB) => {
|
|
19
|
+
(0, child_process_1.exec)(`tar xf appmaps.tar.gz`, (error) => {
|
|
20
|
+
if (error)
|
|
21
|
+
rejectCB(error);
|
|
22
|
+
resolveCB();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
await (0, promises_1.unlink)('appmaps.tar.gz');
|
|
26
|
+
const metadata = JSON.parse(await (0, promises_1.readFile)('appmap_archive.json', 'utf8'));
|
|
27
|
+
await (0, promises_1.cp)('appmap_archive.json', `appmap_archive.${metadata.revision}.json`);
|
|
28
|
+
const deletedAppMaps = metadata.deletedAppMaps || [];
|
|
29
|
+
for (const deletedAppMap of deletedAppMaps) {
|
|
30
|
+
await (0, promises_1.unlink)(deletedAppMap);
|
|
31
|
+
await (0, promises_1.rmdir)((0, path_1.basename)(deletedAppMap, '.appmap.json'), { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
process.chdir(dir);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = unpackArchive;
|
|
39
|
+
//# sourceMappingURL=unpackArchive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unpackArchive.js","sourceRoot":"","sources":["../../../src/cmds/archive/unpackArchive.ts"],"names":[],"mappings":";;AAAA,iDAAqC;AACrC,0CAAyE;AACzE,+BAA+C;AAGhC,KAAK,UAAU,aAAa,CAAC,SAAc,EAAE,WAAmB;IAC7E,MAAM,IAAA,gBAAK,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI;QACF,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEzB,MAAM,IAAI,OAAO,CAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC9C,IAAA,oBAAI,EAAC,UAAU,IAAA,cAAO,EAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;gBACpD,IAAI,KAAK;oBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAE3B,SAAS,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC9C,IAAA,oBAAI,EAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,EAAE;gBACtC,IAAI,KAAK;oBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAE3B,SAAS,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,IAAA,iBAAM,EAAC,gBAAgB,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAoB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5F,MAAM,IAAA,aAAE,EAAC,qBAAqB,EAAE,kBAAkB,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC;QAE5E,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;QACrD,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;YAC1C,MAAM,IAAA,iBAAM,EAAC,aAAa,CAAC,CAAC;YAC5B,MAAM,IAAA,gBAAK,EAAC,IAAA,eAAQ,EAAC,aAAa,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAC3E;KACF;YAAS;QACR,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACpB;AACH,CAAC;AAlCD,gCAkCC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
const models_1 = require("@appland/models");
|
|
7
|
+
const sequence_diagram_1 = require("@appland/sequence-diagram");
|
|
8
|
+
const promises_1 = require("fs/promises");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const utils_1 = require("../../utils");
|
|
11
|
+
const fileTooLargeError_1 = __importDefault(require("../../fingerprint/fileTooLargeError"));
|
|
12
|
+
const CountNumProcessed_1 = require("./CountNumProcessed");
|
|
13
|
+
const reportAppMapProcessingError_1 = __importDefault(require("./reportAppMapProcessingError"));
|
|
14
|
+
const buildFilter_1 = __importDefault(require("./buildFilter"));
|
|
15
|
+
async function updateSequenceDiagrams(dir, maxAppMapSizeInBytes, compareFilter) {
|
|
16
|
+
const specOptions = {
|
|
17
|
+
loops: true,
|
|
18
|
+
};
|
|
19
|
+
const oversizedAppMaps = new Array();
|
|
20
|
+
const generateDiagram = async (appmapFileName) => {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
// Determine size of file appmapFileName in bytes
|
|
23
|
+
const stats = await (0, promises_1.stat)(appmapFileName);
|
|
24
|
+
if (stats.size > maxAppMapSizeInBytes) {
|
|
25
|
+
oversizedAppMaps.push(appmapFileName);
|
|
26
|
+
throw new fileTooLargeError_1.default(appmapFileName, stats.size, maxAppMapSizeInBytes);
|
|
27
|
+
}
|
|
28
|
+
const fullAppMap = (0, models_1.buildAppMap)()
|
|
29
|
+
.source(await (0, promises_1.readFile)(appmapFileName, 'utf8'))
|
|
30
|
+
.build();
|
|
31
|
+
const language = ((_b = (_a = fullAppMap.metadata) === null || _a === void 0 ? void 0 : _a.language) === null || _b === void 0 ? void 0 : _b.name) || 'unknown';
|
|
32
|
+
const filter = (0, buildFilter_1.default)(language, compareFilter);
|
|
33
|
+
const filteredAppMap = filter.filter(fullAppMap, []);
|
|
34
|
+
const specification = sequence_diagram_1.Specification.build(filteredAppMap, specOptions);
|
|
35
|
+
const diagram = (0, sequence_diagram_1.buildDiagram)(appmapFileName, filteredAppMap, specification);
|
|
36
|
+
const diagramOutput = (0, sequence_diagram_1.format)(sequence_diagram_1.FormatType.JSON, diagram, appmapFileName);
|
|
37
|
+
const indexDir = (0, path_1.join)((0, path_1.dirname)(appmapFileName), (0, path_1.basename)(appmapFileName, '.appmap.json'));
|
|
38
|
+
const diagramFileName = (0, path_1.join)(indexDir, 'sequence.json');
|
|
39
|
+
await (0, promises_1.writeFile)(diagramFileName, diagramOutput.diagram);
|
|
40
|
+
};
|
|
41
|
+
const counter = new CountNumProcessed_1.CountNumProcessed();
|
|
42
|
+
const options = new utils_1.ProcessFileOptions(dir);
|
|
43
|
+
options.fileCountFn = counter.setCount();
|
|
44
|
+
options.errorFn = (0, reportAppMapProcessingError_1.default)('Sequence diagram');
|
|
45
|
+
await (0, utils_1.processFiles)('**/*.appmap.json', generateDiagram, options);
|
|
46
|
+
return { numGenerated: counter.count, oversizedAppMaps };
|
|
47
|
+
}
|
|
48
|
+
exports.default = updateSequenceDiagrams;
|
|
49
|
+
//# sourceMappingURL=updateSequenceDiagrams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateSequenceDiagrams.js","sourceRoot":"","sources":["../../../src/cmds/archive/updateSequenceDiagrams.ts"],"names":[],"mappings":";;;;;AAAA,4CAA8C;AAC9C,gEAMmC;AACnC,0CAAwD;AACxD,+BAA+C;AAC/C,uCAA+D;AAC/D,4FAAoE;AACpE,2DAAwD;AACxD,gGAAwE;AACxE,gEAAsD;AAGvC,KAAK,UAAU,sBAAsB,CAClD,GAAW,EACX,oBAA4B,EAC5B,aAA4B;IAE5B,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,IAAI;KACc,CAAC;IAE5B,MAAM,gBAAgB,GAAG,IAAI,KAAK,EAAU,CAAC;IAE7C,MAAM,eAAe,GAAG,KAAK,EAAE,cAAsB,EAAE,EAAE;;QACvD,iDAAiD;QACjD,MAAM,KAAK,GAAG,MAAM,IAAA,eAAI,EAAC,cAAc,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,IAAI,GAAG,oBAAoB,EAAE;YACrC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtC,MAAM,IAAI,2BAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;SAC/E;QAED,MAAM,UAAU,GAAG,IAAA,oBAAW,GAAE;aAC7B,MAAM,CAAC,MAAM,IAAA,mBAAQ,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC;aAC9C,KAAK,EAAE,CAAC;QAEX,MAAM,QAAQ,GAAG,CAAA,MAAA,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,0CAAE,IAAI,KAAI,SAAS,CAAC;QAClE,MAAM,MAAM,GAAG,IAAA,qBAAW,EAAC,QAAoB,EAAE,aAAa,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,gCAAa,CAAC,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAA,yBAAM,EAAC,6BAAU,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,cAAc,CAAC,EAAE,IAAA,eAAQ,EAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;QACzF,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxD,MAAM,IAAA,oBAAS,EAAC,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,qCAAiB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,0BAAkB,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzC,OAAO,CAAC,OAAO,GAAG,IAAA,qCAA2B,EAAC,kBAAkB,CAAC,CAAC;IAClE,MAAM,IAAA,oBAAY,EAAC,kBAAkB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAEjE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC;AAC3D,CAAC;AAzCD,yCAyCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequenceDiagram.js","sourceRoot":"","sources":["../../src/cmds/sequenceDiagram.ts"],"names":[],"mappings":";;;;;;AAAA,0CAAyD;AACzD,+BAA+C;AAE/C,0EAAuE;AACvE,oCAAmC;AACnC,4CAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"sequenceDiagram.js","sourceRoot":"","sources":["../../src/cmds/sequenceDiagram.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ function isNodeError(error, code) {
|
|
|
12
12
|
class FingerprintQueue {
|
|
13
13
|
constructor(size = 2) {
|
|
14
14
|
this.size = size;
|
|
15
|
+
this.failOnError = true;
|
|
15
16
|
this.pending = new Set();
|
|
16
17
|
// eslint-disable-next-line no-use-before-define
|
|
17
18
|
this.handler = new fingerprinter_1.default();
|
|
@@ -39,8 +40,12 @@ class FingerprintQueue {
|
|
|
39
40
|
else if (isNodeError(error, 'ENOENT')) {
|
|
40
41
|
console.warn(`Skipped: ${error.path}\nThe file does not exist.`);
|
|
41
42
|
}
|
|
42
|
-
else
|
|
43
|
+
else if (this.failOnError) {
|
|
43
44
|
reject(error);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.warn(`Skipped: ${error}`);
|
|
48
|
+
}
|
|
44
49
|
});
|
|
45
50
|
// The queue will run continuously from here on out, which is what we want.
|
|
46
51
|
// Items will be added to the queue as they are discovered.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprintQueue.js","sourceRoot":"","sources":["../../src/fingerprint/fingerprintQueue.ts"],"names":[],"mappings":";;;;;AAAA,iCAA2C;AAC3C,4EAAoD;AACpD,oEAA4C;AAE5C,SAAS,WAAW,CAAC,KAAc,EAAE,IAAa;IAChD,OAAO,KAAK,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,IAAK,KAA+B,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,MAAqB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"fingerprintQueue.js","sourceRoot":"","sources":["../../src/fingerprint/fingerprintQueue.ts"],"names":[],"mappings":";;;;;AAAA,iCAA2C;AAC3C,4EAAoD;AACpD,oEAA4C;AAE5C,SAAS,WAAW,CAAC,KAAc,EAAE,IAAa;IAChD,OAAO,KAAK,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,IAAK,KAA+B,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,MAAqB,gBAAgB;IAMnC,YAAoB,OAAO,CAAC;QAAR,SAAI,GAAJ,IAAI,CAAI;QAJrB,gBAAW,GAAG,IAAI,CAAC;QAElB,YAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAGlC,gDAAgD;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAA,aAAK,EAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YAC1C,IAAI;gBACF,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;aAChD;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,IAAI,CAAC,wBAAwB,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzB,IAAI,KAAK,YAAY,2BAAiB,EAAE;oBACtC,OAAO,CAAC,IAAI,CACV;wBACE,YAAY,KAAK,CAAC,OAAO,EAAE;wBAC3B,yFAAyF;qBAC1F,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;iBACH;qBAAM,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;oBACvC,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,4BAA4B,CAAC,CAAC;iBAClE;qBAAM,IAAI,IAAI,CAAC,WAAW,EAAE;oBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;iBACf;qBAAM;oBACL,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;iBACnC;YACH,CAAC,CAAC,CAAC;YACH,2EAA2E;YAC3E,2DAA2D;YAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CACF;AAlDD,mCAkDC"}
|
|
@@ -52,7 +52,7 @@ const renameFile = (0, util_1.promisify)(graceful_fs_1.default.rename);
|
|
|
52
52
|
* * sql can contain the analysis (action, tables, columns), and/or the normalized query string.
|
|
53
53
|
*/
|
|
54
54
|
exports.VERSION = '1.2.0';
|
|
55
|
-
const MAX_APPMAP_SIZE = 50 *
|
|
55
|
+
const MAX_APPMAP_SIZE = 50 * 1024 * 1024;
|
|
56
56
|
class Fingerprinter extends events_1.default {
|
|
57
57
|
constructor() {
|
|
58
58
|
super(...arguments);
|
|
@@ -62,6 +62,7 @@ class Fingerprinter extends events_1.default {
|
|
|
62
62
|
* pass to avoid re-reading the same 'version' files over and over.
|
|
63
63
|
*/
|
|
64
64
|
this.checkVersion = true;
|
|
65
|
+
this.maxFileSizeInBytes = MAX_APPMAP_SIZE;
|
|
65
66
|
}
|
|
66
67
|
async fingerprint(appMapFileName) {
|
|
67
68
|
if ((0, utils_1.verbose)()) {
|
|
@@ -78,8 +79,8 @@ class Fingerprinter extends events_1.default {
|
|
|
78
79
|
}
|
|
79
80
|
return;
|
|
80
81
|
}
|
|
81
|
-
if (index.appmapFileSize() >
|
|
82
|
-
throw new fileTooLargeError_1.default(appMapFileName, index.appmapFileSize(),
|
|
82
|
+
if (index.appmapFileSize() > this.maxFileSizeInBytes)
|
|
83
|
+
throw new fileTooLargeError_1.default(appMapFileName, index.appmapFileSize(), this.maxFileSizeInBytes);
|
|
83
84
|
const appmapData = await index.loadAppMapData();
|
|
84
85
|
if (!appmapData)
|
|
85
86
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprinter.js","sourceRoot":"","sources":["../../src/fingerprint/fingerprinter.ts"],"names":[],"mappings":";;;;;;AACA,+BAAkD;AAClD,8DAAqC;AACrC,+BAAiC;AACjC,4CAAwD;AACxD,oDAA4B;AAC5B,4EAAoD;AAEpD,oCAA0C;AAC1C,iDAA0D;AAC1D,gEAAwC;AACxC,oDAAkC;AAElC,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,qBAAU,CAAC,MAAM,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACU,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AASzC,MAAM,aAAc,SAAQ,gBAAY;IAAxC;;QACE;;;;WAIG;QACI,iBAAY,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"fingerprinter.js","sourceRoot":"","sources":["../../src/fingerprint/fingerprinter.ts"],"names":[],"mappings":";;;;;;AACA,+BAAkD;AAClD,8DAAqC;AACrC,+BAAiC;AACjC,4CAAwD;AACxD,oDAA4B;AAC5B,4EAAoD;AAEpD,oCAA0C;AAC1C,iDAA0D;AAC1D,gEAAwC;AACxC,oDAAkC;AAElC,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,qBAAU,CAAC,MAAM,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACU,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AASzC,MAAM,aAAc,SAAQ,gBAAY;IAAxC;;QACE;;;;WAIG;QACI,iBAAY,GAAG,IAAI,CAAC;QACpB,uBAAkB,GAAG,eAAe,CAAC;IAiE9C,CAAC;IA/DC,KAAK,CAAC,WAAW,CAAC,cAAsB;QACtC,IAAI,IAAA,eAAO,GAAE,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,YAAY,cAAc,EAAE,CAAC,CAAC;SAC3C;QAED,MAAM,KAAK,GAAG,IAAI,qBAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE;YAC/B,OAAO;SACR;QAED,IACE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,KAAK,CAAC,eAAe,CAAC,eAAO,CAAC,CAAC,CAAC;YAC9D,CAAC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,EAC7B;YACA,IAAI,IAAA,eAAO,GAAE,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;aACjD;YACD,OAAO;SACR;QAED,IAAI,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,kBAAkB;YAClD,MAAM,IAAI,2BAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/F,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,yBAAyB,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAC/D,IAAI,CAAC,yBAAyB;YAAE,OAAO;QAEvC,OAAO,yBAAyB,CAAC,QAAQ,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QAE3D,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtB,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,yBAAU,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;YAClD,MAAM,aAAa,GAAG,IAAA,2BAAY,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC,eAAe,CAAC,aAAa,aAAa,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAA,WAAQ,EAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,KAAK,CAAC,eAAe,CAAC,IAAA,eAAQ,EAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,eAAe,GAAG,MAAM,IAAA,aAAK,EAAC,kBAAkB,CAAC,CAAC;QAExD,IAAA,gBAAM,EAAC,eAAe,EAAE,GAAG,kBAAkB,6CAA6C,CAAC,CAAC;QAE5F,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,eAAO,CAAC;YACzC,KAAK,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChF,KAAK,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChF,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;SACrD,CAAC,CAAC;QAEH,6EAA6E;QAC7E,6EAA6E;QAC7E,0CAA0C;QAC1C,MAAM,UAAU,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AAYD,kBAAe,aAAa,CAAC"}
|