@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.
Files changed (67) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/built/cli.js +4 -0
  3. package/built/cli.js.map +1 -1
  4. package/built/cmds/archive/ArchiveMetadata.js +3 -0
  5. package/built/cmds/archive/ArchiveMetadata.js.map +1 -0
  6. package/built/cmds/archive/CountNumProcessed.js +15 -0
  7. package/built/cmds/archive/CountNumProcessed.js.map +1 -0
  8. package/built/cmds/archive/analyze.js +42 -0
  9. package/built/cmds/archive/analyze.js.map +1 -0
  10. package/built/cmds/archive/archive.js +181 -0
  11. package/built/cmds/archive/archive.js.map +1 -0
  12. package/built/cmds/archive/archiveStore.js +145 -0
  13. package/built/cmds/archive/archiveStore.js.map +1 -0
  14. package/built/cmds/archive/buildFilter.js +57 -0
  15. package/built/cmds/archive/buildFilter.js.map +1 -0
  16. package/built/cmds/archive/generateOpenAPI.js +17 -0
  17. package/built/cmds/archive/generateOpenAPI.js.map +1 -0
  18. package/built/cmds/archive/gitAncestors.js +15 -0
  19. package/built/cmds/archive/gitAncestors.js.map +1 -0
  20. package/built/cmds/archive/gitDeletedFiles.js +11 -0
  21. package/built/cmds/archive/gitDeletedFiles.js.map +1 -0
  22. package/built/cmds/archive/gitModifiedFiles.js +14 -0
  23. package/built/cmds/archive/gitModifiedFiles.js.map +1 -0
  24. package/built/cmds/archive/gitNewFiles.js +11 -0
  25. package/built/cmds/archive/gitNewFiles.js.map +1 -0
  26. package/built/cmds/archive/gitRevision.js +11 -0
  27. package/built/cmds/archive/gitRevision.js.map +1 -0
  28. package/built/cmds/archive/indexAppMaps.js +22 -0
  29. package/built/cmds/archive/indexAppMaps.js.map +1 -0
  30. package/built/cmds/archive/parseFilterArgs.js +35 -0
  31. package/built/cmds/archive/parseFilterArgs.js.map +1 -0
  32. package/built/cmds/archive/reportAppMapProcessingError.js +18 -0
  33. package/built/cmds/archive/reportAppMapProcessingError.js.map +1 -0
  34. package/built/cmds/archive/restore.js +129 -0
  35. package/built/cmds/archive/restore.js.map +1 -0
  36. package/built/cmds/archive/scan.js +46 -0
  37. package/built/cmds/archive/scan.js.map +1 -0
  38. package/built/cmds/archive/serializeAppMapFilter.js +19 -0
  39. package/built/cmds/archive/serializeAppMapFilter.js.map +1 -0
  40. package/built/cmds/archive/unpackArchive.js +39 -0
  41. package/built/cmds/archive/unpackArchive.js.map +1 -0
  42. package/built/cmds/archive/updateSequenceDiagrams.js +49 -0
  43. package/built/cmds/archive/updateSequenceDiagrams.js.map +1 -0
  44. package/built/cmds/sequenceDiagram.js.map +1 -1
  45. package/built/fingerprint/fingerprintQueue.js +6 -1
  46. package/built/fingerprint/fingerprintQueue.js.map +1 -1
  47. package/built/fingerprint/fingerprinter.js +4 -3
  48. package/built/fingerprint/fingerprinter.js.map +1 -1
  49. package/built/html/appmap.js +1 -1
  50. package/built/html/appmap.js.map +3 -3
  51. package/built/html/sequenceDiagram.js +1 -1
  52. package/built/html/sequenceDiagram.js.map +3 -3
  53. package/built/lib/executeCommand.js +50 -0
  54. package/built/lib/executeCommand.js.map +1 -0
  55. package/built/lib/findings.js +6 -0
  56. package/built/lib/findings.js.map +1 -0
  57. package/built/lib/loadAppMapConfig.js +24 -9
  58. package/built/lib/loadAppMapConfig.js.map +1 -1
  59. package/built/lib/sqlErrorLog.js +6 -9
  60. package/built/lib/sqlErrorLog.js.map +1 -1
  61. package/built/search/findCodeObjects.js +3 -1
  62. package/built/search/findCodeObjects.js.map +1 -1
  63. package/built/sequenceDiagram/analyzeAppMaps.js +3 -2
  64. package/built/sequenceDiagram/analyzeAppMaps.js.map +1 -1
  65. package/built/utils.js +38 -12
  66. package/built/utils.js.map +1 -1
  67. 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":"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"}
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;IAKnC,YAAoB,OAAO,CAAC;QAAR,SAAI,GAAJ,IAAI,CAAI;QAFpB,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;;oBAAM,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,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;AA7CD,mCA6CC"}
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 * 1000 * 1000;
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() > MAX_APPMAP_SIZE)
82
- throw new fileTooLargeError_1.default(appMapFileName, index.appmapFileSize(), MAX_APPMAP_SIZE);
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":"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"}
1
+ {"version":3,"file":"fingerprinter.js","sourceRoot":"","sources":["../../src/fingerprint/fingerprinter.ts"],"names":[],"mappings":"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"}