@appland/appmap 3.104.0 → 3.106.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 (63) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/built/cmds/compare/reportChanges.js +4 -1
  3. package/built/cmds/compare/reportChanges.js.map +1 -1
  4. package/built/cmds/compare-report/ChangeReport.js +1 -3
  5. package/built/cmds/compare-report/ChangeReport.js.map +1 -1
  6. package/built/cmds/compare-report/MarkdownReport.js +3 -3
  7. package/built/cmds/compare-report/MarkdownReport.js.map +1 -1
  8. package/built/cmds/compare-report/ReportSection.js +12 -79
  9. package/built/cmds/compare-report/ReportSection.js.map +1 -1
  10. package/built/cmds/inventory/analyzers/collectFindings.js +26 -0
  11. package/built/cmds/inventory/analyzers/collectFindings.js.map +1 -0
  12. package/built/cmds/inventory/analyzers/collectHTTPClientRequests.js +37 -0
  13. package/built/cmds/inventory/analyzers/collectHTTPClientRequests.js.map +1 -0
  14. package/built/cmds/inventory/analyzers/collectHTTPServerRequests.js +21 -0
  15. package/built/cmds/inventory/analyzers/collectHTTPServerRequests.js.map +1 -0
  16. package/built/cmds/inventory/analyzers/collectLabels.js +18 -0
  17. package/built/cmds/inventory/analyzers/collectLabels.js.map +1 -0
  18. package/built/cmds/inventory/analyzers/collectMetadata.js +21 -0
  19. package/built/cmds/inventory/analyzers/collectMetadata.js.map +1 -0
  20. package/built/cmds/inventory/analyzers/collectPackageDependencies.js +19 -0
  21. package/built/cmds/inventory/analyzers/collectPackageDependencies.js.map +1 -0
  22. package/built/cmds/inventory/analyzers/collectRoutes.js +39 -0
  23. package/built/cmds/inventory/analyzers/collectRoutes.js.map +1 -0
  24. package/built/cmds/inventory/analyzers/collectSQLQueries.js +20 -0
  25. package/built/cmds/inventory/analyzers/collectSQLQueries.js.map +1 -0
  26. package/built/cmds/inventory/analyzers/collectSQLTables.js +18 -0
  27. package/built/cmds/inventory/analyzers/collectSQLTables.js.map +1 -0
  28. package/built/cmds/inventory/buildReport.js +86 -0
  29. package/built/cmds/inventory/buildReport.js.map +1 -0
  30. package/built/cmds/inventory/inventory.js +3 -141
  31. package/built/cmds/inventory/inventory.js.map +1 -1
  32. package/built/cmds/inventory/readIndexFile.js +13 -0
  33. package/built/cmds/inventory/readIndexFile.js.map +1 -0
  34. package/built/cmds/inventory-report/Reporter.js +38 -0
  35. package/built/cmds/inventory-report/Reporter.js.map +1 -0
  36. package/built/cmds/inventory-report/SummaryReporter.js +97 -0
  37. package/built/cmds/inventory-report/SummaryReporter.js.map +1 -0
  38. package/built/cmds/inventory-report/WelcomeReporter.js +54 -0
  39. package/built/cmds/inventory-report/WelcomeReporter.js.map +1 -0
  40. package/built/cmds/inventory-report/inventoryReport.js +19 -10
  41. package/built/cmds/inventory-report/inventoryReport.js.map +1 -1
  42. package/built/diffArchive/ChangeAnalysis.js +3 -1
  43. package/built/diffArchive/ChangeAnalysis.js.map +1 -1
  44. package/built/html/appmap.js +98 -98
  45. package/built/html/appmap.js.map +3 -3
  46. package/built/html/sequenceDiagram.js +98 -98
  47. package/built/html/sequenceDiagram.js.map +3 -3
  48. package/built/report/ReportTemplate.js +17 -0
  49. package/built/report/ReportTemplate.js.map +1 -0
  50. package/built/report/helpers.js.map +1 -0
  51. package/built/report/loadReportTemplate.js +31 -0
  52. package/built/report/loadReportTemplate.js.map +1 -0
  53. package/built/report/urlHelpers.js +108 -0
  54. package/built/report/urlHelpers.js.map +1 -0
  55. package/package.json +1 -1
  56. package/resources/change-report/findings/details.hbs +4 -12
  57. package/resources/change-report/findings/inline/finding.hbs +47 -0
  58. package/resources/inlines/stack.hbs +6 -0
  59. package/resources/inventory-report/summary/summary.hbs +90 -0
  60. package/built/cmds/compare-report/helpers.js.map +0 -1
  61. package/built/cmds/inventory-report/MarkdownReport.js +0 -84
  62. package/built/cmds/inventory-report/MarkdownReport.js.map +0 -1
  63. /package/built/{cmds/compare-report → report}/helpers.js +0 -0
@@ -0,0 +1,86 @@
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.buildReport = void 0;
7
+ const DependencyMap_1 = __importDefault(require("./DependencyMap"));
8
+ const collectMetadata_1 = __importDefault(require("./analyzers/collectMetadata"));
9
+ const collectHTTPServerRequests_1 = __importDefault(require("./analyzers/collectHTTPServerRequests"));
10
+ const collectSQLQueries_1 = __importDefault(require("./analyzers/collectSQLQueries"));
11
+ const collectHTTPClientRequests_1 = __importDefault(require("./analyzers/collectHTTPClientRequests"));
12
+ const collectPackageDependencies_1 = require("./analyzers/collectPackageDependencies");
13
+ const collectSQLTables_1 = require("./analyzers/collectSQLTables");
14
+ const collectLabels_1 = require("./analyzers/collectLabels");
15
+ const collectRoutes_1 = __importDefault(require("./analyzers/collectRoutes"));
16
+ const path_1 = require("path");
17
+ const console_1 = require("console");
18
+ const readIndexFile_1 = __importDefault(require("./readIndexFile"));
19
+ const collectFindings_1 = __importDefault(require("./analyzers/collectFindings"));
20
+ async function buildReport(appmapDir, appmaps, resourceTokens) {
21
+ const appmapCountByRecorderName = {};
22
+ const appmapCountByHTTPServerRequestCount = {};
23
+ const appmapCountBySQLQueryCount = {};
24
+ const clientRouteCountByResource = {};
25
+ const uniquePackageDependencies = new DependencyMap_1.default();
26
+ const sqlTables = new Set();
27
+ const labels = new Set();
28
+ const routeCountByResource = {};
29
+ const routeCountByContentType = {};
30
+ const findings = [];
31
+ const analyzers = [
32
+ (0, collectMetadata_1.default)(appmapCountByRecorderName),
33
+ (0, collectHTTPServerRequests_1.default)(appmapCountByHTTPServerRequestCount),
34
+ (0, collectSQLQueries_1.default)(appmapCountBySQLQueryCount),
35
+ (0, collectHTTPClientRequests_1.default)(clientRouteCountByResource, resourceTokens),
36
+ (0, collectPackageDependencies_1.collectPackageDependencies)(uniquePackageDependencies),
37
+ (0, collectSQLTables_1.collectSQLTables)(sqlTables),
38
+ (0, collectLabels_1.collectLabels)(labels),
39
+ (0, collectFindings_1.default)(findings),
40
+ ];
41
+ for (const appmap of appmaps) {
42
+ const metadata = await (0, readIndexFile_1.default)(appmap, 'metadata.json');
43
+ // If the metadata file is missing, skip this appmap. It's probably been skipped
44
+ // by the indexer because it's too large.
45
+ if (!metadata)
46
+ continue;
47
+ for (const analyzer of analyzers) {
48
+ try {
49
+ await analyzer(appmap);
50
+ }
51
+ catch (e) {
52
+ (0, console_1.warn)(`Error analyzing ${appmap}: ${e}`);
53
+ }
54
+ }
55
+ }
56
+ const uniqueFindings = [];
57
+ {
58
+ findings.sort((a, b) => b.modifiedDate.getTime() - a.modifiedDate.getTime());
59
+ const findingHashes = new Set();
60
+ for (const finding of findings) {
61
+ if (!findingHashes.has(finding.hash_v2)) {
62
+ uniqueFindings.push(finding);
63
+ findingHashes.add(finding.hash_v2);
64
+ }
65
+ }
66
+ }
67
+ const openapiFile = (0, path_1.join)(appmapDir, 'openapi.yml');
68
+ await (0, collectRoutes_1.default)(openapiFile, resourceTokens, routeCountByResource, routeCountByContentType);
69
+ return {
70
+ appmapCountByRecorderName,
71
+ appmapCountByHTTPServerRequestCount,
72
+ appmapCountBySQLQueryCount,
73
+ routeCountByResource,
74
+ routeCountByContentType,
75
+ clientRouteCountByResource,
76
+ labels: [...labels].sort(),
77
+ sqlTables: [...sqlTables].sort(),
78
+ packages: [
79
+ ...new Set(uniquePackageDependencies.dependencies.map((d) => [d.caller, d.callee]).flat()),
80
+ ].sort(),
81
+ packageDependencies: uniquePackageDependencies.dependencies,
82
+ findings: uniqueFindings,
83
+ };
84
+ }
85
+ exports.buildReport = buildReport;
86
+ //# sourceMappingURL=buildReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildReport.js","sourceRoot":"","sources":["../../../src/cmds/inventory/buildReport.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAE5C,kFAA0D;AAC1D,sGAA8E;AAC9E,sFAA8D;AAC9D,sGAA8E;AAC9E,uFAAoF;AACpF,mEAAgE;AAChE,6DAA0D;AAC1D,8EAAsD;AACtD,+BAA4B;AAC5B,qCAA+B;AAC/B,oEAA4C;AAC5C,kFAA0D;AAEnD,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,OAAiB,EACjB,cAAsB;IAEtB,MAAM,yBAAyB,GAA2B,EAAE,CAAC;IAC7D,MAAM,mCAAmC,GAA2B,EAAE,CAAC;IACvE,MAAM,0BAA0B,GAA2B,EAAE,CAAC;IAC9D,MAAM,0BAA0B,GAA2B,EAAE,CAAC;IAC9D,MAAM,yBAAyB,GAAG,IAAI,uBAAa,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,oBAAoB,GAA2B,EAAE,CAAC;IACxD,MAAM,uBAAuB,GAA2B,EAAE,CAAC;IAC3D,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,MAAM,SAAS,GAA0C;QACvD,IAAA,yBAAe,EAAC,yBAAyB,CAAC;QAC1C,IAAA,mCAAyB,EAAC,mCAAmC,CAAC;QAC9D,IAAA,2BAAiB,EAAC,0BAA0B,CAAC;QAC7C,IAAA,mCAAyB,EAAC,0BAA0B,EAAE,cAAc,CAAC;QACrE,IAAA,uDAA0B,EAAC,yBAAyB,CAAC;QACrD,IAAA,mCAAgB,EAAC,SAAS,CAAC;QAC3B,IAAA,6BAAa,EAAC,MAAM,CAAC;QACrB,IAAA,yBAAe,EAAC,QAAQ,CAAC;KAC1B,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAa,EAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC9D,gFAAgF;QAChF,yCAAyC;QACzC,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI;gBACF,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;aACxB;YAAC,OAAO,CAAC,EAAE;gBACV,IAAA,cAAI,EAAC,mBAAmB,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;aACzC;SACF;KACF;IAED,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C;QACE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACvC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aACpC;SACF;KACF;IAED,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,IAAA,uBAAa,EAAC,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IAEhG,OAAO;QACL,yBAAyB;QACzB,mCAAmC;QACnC,0BAA0B;QAC1B,oBAAoB;QACpB,uBAAuB;QACvB,0BAA0B;QAC1B,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE;QAC1B,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE;QAChC,QAAQ,EAAE;YACR,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC3F,CAAC,IAAI,EAAE;QACR,mBAAmB,EAAE,yBAAyB,CAAC,YAAY;QAC3D,QAAQ,EAAE,cAAc;KACzB,CAAC;AACJ,CAAC;AAxED,kCAwEC"}
@@ -8,150 +8,12 @@ const yargs_1 = __importDefault(require("yargs"));
8
8
  const path_1 = require("path");
9
9
  const promises_1 = require("fs/promises");
10
10
  const fs_1 = require("fs");
11
- const js_yaml_1 = require("js-yaml");
12
- const openapi_types_1 = require("openapi-types");
13
11
  const handleWorkingDirectory_1 = require("../../lib/handleWorkingDirectory");
14
12
  const utils_1 = require("../../utils");
15
13
  const console_1 = require("console");
16
- const DependencyMap_1 = __importDefault(require("./DependencyMap"));
17
14
  const assert_1 = __importDefault(require("assert"));
18
15
  const locateAppMapDir_1 = require("../../lib/locateAppMapDir");
19
- async function buildRepositoryReport(appmapDir, appmaps, resourceTokens) {
20
- var _a;
21
- const appmapCountByRecorderName = {};
22
- const appmapCountByHTTPServerRequestCount = {};
23
- const appmapCountBySQLQueryCount = {};
24
- const clientRouteCountByResource = {};
25
- const uniquePackageDependencies = new DependencyMap_1.default();
26
- const uniqueClassDependencies = new DependencyMap_1.default();
27
- const sqlTables = new Set();
28
- const labels = new Set();
29
- for (const appmap of appmaps) {
30
- {
31
- const metadataFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'metadata.json');
32
- const metadata = JSON.parse(await (0, promises_1.readFile)(metadataFile, 'utf-8'));
33
- const recorderName = ((_a = metadata.recorder) === null || _a === void 0 ? void 0 : _a.name) || 'unknown';
34
- if (!appmapCountByRecorderName[recorderName])
35
- appmapCountByRecorderName[recorderName] = 1;
36
- else
37
- appmapCountByRecorderName[recorderName] = appmapCountByRecorderName[recorderName] + 1;
38
- }
39
- {
40
- const httpServerRequestsFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'canonical.httpServerRequests.json');
41
- const httpServerRequests = JSON.parse(await (0, promises_1.readFile)(httpServerRequestsFile, 'utf-8'));
42
- const requestCount = String(httpServerRequests.length);
43
- if (!appmapCountByHTTPServerRequestCount[requestCount])
44
- appmapCountByHTTPServerRequestCount[requestCount] = 1;
45
- else
46
- appmapCountByHTTPServerRequestCount[requestCount] =
47
- appmapCountByHTTPServerRequestCount[requestCount] + 1;
48
- }
49
- {
50
- const httpClientRequestsFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'canonical.httpClientRequests.json');
51
- const httpClientRequests = JSON.parse(await (0, promises_1.readFile)(httpClientRequestsFile, 'utf-8'));
52
- for (const request of httpClientRequests) {
53
- const { route } = request;
54
- const [_method, urlStr] = route.split(' ');
55
- let hostname, path;
56
- try {
57
- const url = new URL(urlStr);
58
- hostname = url.hostname;
59
- path = url.pathname;
60
- }
61
- catch (_b) {
62
- (0, console_1.warn)(`Error parsing URL: ${urlStr}`);
63
- path = urlStr;
64
- }
65
- let directoryIsh = path.split('/').slice(0, resourceTokens).join('/');
66
- if (hostname)
67
- directoryIsh = [hostname, directoryIsh].join('');
68
- if (!clientRouteCountByResource[directoryIsh])
69
- clientRouteCountByResource[directoryIsh] = 1;
70
- else
71
- clientRouteCountByResource[directoryIsh] = clientRouteCountByResource[directoryIsh] + 1;
72
- }
73
- }
74
- {
75
- const labelsFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'canonical.labels.json');
76
- const labelsArray = JSON.parse(await (0, promises_1.readFile)(labelsFile, 'utf-8'));
77
- for (const label of labelsArray)
78
- labels.add(label);
79
- }
80
- {
81
- const sqlQueriesFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'canonical.sqlNormalized.json');
82
- const sqlQueries = JSON.parse(await (0, promises_1.readFile)(sqlQueriesFile, 'utf-8'));
83
- const sqlQueryCount = String(sqlQueries.length);
84
- if (!appmapCountBySQLQueryCount[sqlQueryCount])
85
- appmapCountBySQLQueryCount[sqlQueryCount] = 1;
86
- else
87
- appmapCountBySQLQueryCount[sqlQueryCount] = appmapCountBySQLQueryCount[sqlQueryCount] + 1;
88
- }
89
- {
90
- const sqlTablesFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'canonical.sqlTables.json');
91
- const tables = JSON.parse(await (0, promises_1.readFile)(sqlTablesFile, 'utf-8'));
92
- for (const table of tables)
93
- sqlTables.add(table);
94
- }
95
- {
96
- const packageDependenciesFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'canonical.packageDependencies.json');
97
- const packageDependencies = JSON.parse(await (0, promises_1.readFile)(packageDependenciesFile, 'utf-8'));
98
- for (const dependency of packageDependencies)
99
- uniquePackageDependencies.addDependency(dependency);
100
- }
101
- {
102
- const classDependenciesFile = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), 'canonical.classDependencies.json');
103
- const classDependencies = JSON.parse(await (0, promises_1.readFile)(classDependenciesFile, 'utf-8'));
104
- for (const dependency of classDependencies)
105
- uniqueClassDependencies.addDependency(dependency);
106
- }
107
- }
108
- const routeCountByResource = {};
109
- const routeCountByContentType = {};
110
- const openapiFile = (0, path_1.join)(appmapDir, 'openapi.yml');
111
- if ((0, fs_1.existsSync)(openapiFile)) {
112
- const openapi = (0, js_yaml_1.load)(await (0, promises_1.readFile)(openapiFile, 'utf-8'));
113
- for (const pattern of Object.keys(openapi.paths)) {
114
- const pathItem = openapi.paths[pattern];
115
- if (!pathItem)
116
- continue;
117
- for (const method of Object.values(openapi_types_1.OpenAPIV3.HttpMethods)) {
118
- const operation = pathItem[method];
119
- if (!operation)
120
- continue;
121
- const directoryIsh = pattern.split('/').slice(0, resourceTokens).join('/');
122
- if (!routeCountByResource[directoryIsh])
123
- routeCountByResource[directoryIsh] = 1;
124
- else
125
- routeCountByResource[directoryIsh] = routeCountByResource[directoryIsh] + 1;
126
- for (const responseOption of Object.values(operation.responses)) {
127
- const response = responseOption;
128
- if (response.content) {
129
- for (const contentType of Object.keys(response.content)) {
130
- if (!routeCountByContentType[contentType])
131
- routeCountByContentType[contentType] = 1;
132
- else
133
- routeCountByContentType[contentType] = routeCountByContentType[contentType] + 1;
134
- }
135
- }
136
- }
137
- }
138
- }
139
- }
140
- return {
141
- appmapCountByRecorderName,
142
- appmapCountByHTTPServerRequestCount,
143
- appmapCountBySQLQueryCount,
144
- routeCountByResource,
145
- routeCountByContentType,
146
- clientRouteCountByResource,
147
- labels: [...labels].sort(),
148
- sqlTables: [...sqlTables].sort(),
149
- packages: [
150
- ...new Set(uniquePackageDependencies.dependencies.map((d) => [d.caller, d.callee]).flat()),
151
- ].sort(),
152
- packageDependencies: uniquePackageDependencies.dependencies,
153
- };
154
- }
16
+ const buildReport_1 = require("./buildReport");
155
17
  exports.command = 'inventory [output-file]';
156
18
  exports.describe = 'Generate a JSON report describing the contents of a repository.';
157
19
  const builder = (args) => {
@@ -197,8 +59,8 @@ const handler = async (argv) => {
197
59
  (0, console_1.warn)(`No AppMaps found in ${appmapDir}`);
198
60
  return;
199
61
  }
200
- (0, console_1.warn)(`Building repository report from ${appmaps.length} AppMaps in ${appmapDir}`);
201
- const report = await buildRepositoryReport(appmapDir, appmaps, resourceTokens + 1 /* The url '/' is actually 2 tokens, so add 1 to the user input */);
62
+ (0, console_1.warn)(`Building inventory data from ${appmaps.length} AppMaps in ${appmapDir}`);
63
+ const report = await (0, buildReport_1.buildReport)(appmapDir, appmaps, resourceTokens + 1 /* The url '/' is actually 2 tokens, so add 1 to the user input */);
202
64
  const reportJSONStr = JSON.stringify(report, null, 2);
203
65
  if (outputFile) {
204
66
  await (0, promises_1.writeFile)(outputFile, reportJSONStr);
@@ -1 +1 @@
1
- {"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../src/cmds/inventory/inventory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../../src/cmds/inventory/inventory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const promises_1 = require("fs/promises");
4
+ const path_1 = require("path");
5
+ const utils_1 = require("../../utils");
6
+ async function readIndexFile(appmap, indexFileName) {
7
+ const indexFilePath = (0, path_1.join)((0, path_1.dirname)(appmap), (0, path_1.basename)(appmap, '.appmap.json'), indexFileName);
8
+ if (!(await (0, utils_1.exists)(indexFilePath)))
9
+ return;
10
+ return JSON.parse(await (0, promises_1.readFile)(indexFilePath, 'utf-8'));
11
+ }
12
+ exports.default = readIndexFile;
13
+ //# sourceMappingURL=readIndexFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readIndexFile.js","sourceRoot":"","sources":["../../../src/cmds/inventory/readIndexFile.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AACvC,+BAA+C;AAC/C,uCAAqC;AAEtB,KAAK,UAAU,aAAa,CACzC,MAAc,EACd,aAAqB;IAErB,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,EAAE,IAAA,eAAQ,EAAC,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,CAAC;IAC7F,IAAI,CAAC,CAAC,MAAM,IAAA,cAAM,EAAC,aAAa,CAAC,CAAC;QAAE,OAAO;IAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AARD,gCAQC"}
@@ -0,0 +1,38 @@
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.TemplateDirectory = void 0;
7
+ const path_1 = require("path");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const fs_1 = require("fs");
10
+ const WelcomeReporter_1 = __importDefault(require("./WelcomeReporter"));
11
+ const SummaryReporter_1 = __importDefault(require("./SummaryReporter"));
12
+ exports.TemplateDirectory = [
13
+ '../../../resources/inventory-report',
14
+ '../../../../resources/inventory-report', // In development
15
+ ]
16
+ .map((dirName) => (0, path_1.join)(__dirname, dirName))
17
+ .find((dirName) => (0, fs_1.existsSync)(dirName));
18
+ (0, assert_1.default)(exports.TemplateDirectory, "Report template directory 'inventory-report' not found");
19
+ var TemplateName;
20
+ (function (TemplateName) {
21
+ TemplateName["Welcome"] = "welcome";
22
+ TemplateName["Summary"] = "summary";
23
+ })(TemplateName || (TemplateName = {}));
24
+ function buildReporter(templateName, appmapURL, sourceURL) {
25
+ let report;
26
+ switch (templateName) {
27
+ case TemplateName.Welcome:
28
+ report = new WelcomeReporter_1.default(appmapURL, sourceURL);
29
+ break;
30
+ case TemplateName.Summary:
31
+ const summaryReport = new SummaryReporter_1.default(appmapURL, sourceURL);
32
+ report = summaryReport;
33
+ break;
34
+ }
35
+ return report;
36
+ }
37
+ exports.default = buildReporter;
38
+ //# sourceMappingURL=Reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reporter.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/Reporter.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA4B;AAC5B,oDAA4B;AAC5B,2BAAgC;AAIhC,wEAAgD;AAChD,wEAAgD;AAEnC,QAAA,iBAAiB,GAAG;IAC/B,qCAAqC;IACrC,wCAAwC,EAAE,iBAAiB;CAC5D;KACE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KAC1C,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,CAAC,CAAC;AAE1C,IAAA,gBAAM,EAAC,yBAAiB,EAAE,wDAAwD,CAAC,CAAC;AAEpF,IAAK,YAGJ;AAHD,WAAK,YAAY;IACf,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACrB,CAAC,EAHI,YAAY,KAAZ,YAAY,QAGhB;AAED,SAAwB,aAAa,CACnC,YAA0B,EAC1B,SAAiB,EACjB,SAAkB;IAElB,IAAI,MAAgB,CAAC;IACrB,QAAQ,YAAY,EAAE;QACpB,KAAK,YAAY,CAAC,OAAO;YACvB,MAAM,GAAG,IAAI,yBAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACnD,MAAM;QACR,KAAK,YAAY,CAAC,OAAO;YACvB,MAAM,aAAa,GAAG,IAAI,yBAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,MAAM,GAAG,aAAa,CAAC;YACvB,MAAM;KACT;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAhBD,gCAgBC"}
@@ -0,0 +1,97 @@
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 path_1 = require("path");
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const Reporter_1 = require("./Reporter");
9
+ const ReportTemplate_1 = require("../../report/ReportTemplate");
10
+ const ChangeReport_1 = require("../compare-report/ChangeReport");
11
+ const readIndexFile_1 = __importDefault(require("../inventory/readIndexFile"));
12
+ const loadReportTemplate_1 = __importDefault(require("../../report/loadReportTemplate"));
13
+ const urlHelpers_1 = __importDefault(require("../../report/urlHelpers"));
14
+ const helpers_1 = __importDefault(require("../../report/helpers"));
15
+ async function buildReportData(inventoryReport, findingLimit) {
16
+ const findingCountByImpactDomain = inventoryReport.findings.reduce((acc, finding) => {
17
+ const domain = finding.impactDomain;
18
+ if (domain) {
19
+ if (!acc[domain])
20
+ acc[domain] = 1;
21
+ else
22
+ acc[domain] = acc[domain] + 1;
23
+ }
24
+ return acc;
25
+ }, {});
26
+ const findingCount = inventoryReport.findings.length;
27
+ const findings = inventoryReport.findings.slice(0, findingLimit);
28
+ const scanResultsByAppMap = new Map();
29
+ const loadScanResults = async (appmap) => {
30
+ let scanResults = scanResultsByAppMap.get(appmap);
31
+ if (scanResults)
32
+ return scanResults;
33
+ scanResults = (await (0, readIndexFile_1.default)(appmap, 'appmap-findings.json'));
34
+ scanResultsByAppMap[appmap] = scanResults;
35
+ return scanResults;
36
+ };
37
+ const lookupFinding = async (appmap, hash) => {
38
+ const scanResults = await loadScanResults(appmap);
39
+ const finding = scanResults.findings.find((finding) => finding.hash_v2 === hash);
40
+ (0, assert_1.default)(finding);
41
+ return finding;
42
+ };
43
+ const newFindings = [];
44
+ for (const findingExample of findings) {
45
+ const metadata = await (0, readIndexFile_1.default)(findingExample.appmap, 'metadata.json');
46
+ const appmap = new ChangeReport_1.AppMap(findingExample.appmap, metadata);
47
+ const finding = await lookupFinding(findingExample.appmap, findingExample.hash_v2);
48
+ newFindings.push({ appmap, finding });
49
+ }
50
+ return {
51
+ findingCount,
52
+ findingCountByImpactDomain,
53
+ findings: newFindings,
54
+ };
55
+ }
56
+ class SummaryReporter {
57
+ constructor(appmapURL, sourceURL) {
58
+ this.appmapURL = appmapURL;
59
+ this.sourceURL = sourceURL;
60
+ }
61
+ async generateReport(reportData) {
62
+ (0, assert_1.default)(Reporter_1.TemplateDirectory);
63
+ const templateText = await (0, loadReportTemplate_1.default)((0, path_1.join)(Reporter_1.TemplateDirectory, 'summary', 'summary.hbs'));
64
+ const template = new ReportTemplate_1.ReportTemplate(templateText, Object.assign(Object.assign(Object.assign({}, SummaryReporter.helpers()), helpers_1.default), (0, urlHelpers_1.default)({ appmapURL: this.appmapURL, sourceURL: this.sourceURL })));
65
+ const report = await buildReportData(reportData, 10);
66
+ return template.generateMarkdown(report);
67
+ }
68
+ static helpers() {
69
+ const time_ago = (...dates) => {
70
+ const firstDate = dates.find(Boolean);
71
+ if (!firstDate)
72
+ return 'an unknown time';
73
+ const date = firstDate instanceof Date ? firstDate : new Date(firstDate);
74
+ // Written by Copilot. Looks right to me.
75
+ const seconds = Math.floor((new Date().getTime() - date.getTime()) / 1000);
76
+ let interval = Math.floor(seconds / 31536000);
77
+ if (interval > 1)
78
+ return `${interval} years`;
79
+ interval = Math.floor(seconds / 2592000);
80
+ if (interval > 1)
81
+ return `${interval} months`;
82
+ interval = Math.floor(seconds / 86400);
83
+ if (interval > 1)
84
+ return `${interval} days`;
85
+ interval = Math.floor(seconds / 3600);
86
+ if (interval > 1)
87
+ return `${interval} hours`;
88
+ interval = Math.floor(seconds / 60);
89
+ if (interval > 1)
90
+ return `${interval} minutes`;
91
+ return `${Math.floor(seconds)} seconds`;
92
+ };
93
+ return { time_ago };
94
+ }
95
+ }
96
+ exports.default = SummaryReporter;
97
+ //# sourceMappingURL=SummaryReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SummaryReporter.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/SummaryReporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
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 path_1 = require("path");
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const Reporter_1 = require("./Reporter");
9
+ const ReportTemplate_1 = require("../../report/ReportTemplate");
10
+ const loadReportTemplate_1 = __importDefault(require("../../report/loadReportTemplate"));
11
+ const urlHelpers_1 = __importDefault(require("../../report/urlHelpers"));
12
+ const helpers_1 = __importDefault(require("../../report/helpers"));
13
+ class WelcomeReporter {
14
+ constructor(appmapURL, sourceURL) {
15
+ this.appmapURL = appmapURL;
16
+ this.sourceURL = sourceURL;
17
+ }
18
+ async generateReport(reportData, appmapConfig) {
19
+ (0, assert_1.default)(Reporter_1.TemplateDirectory);
20
+ const templateText = await (0, loadReportTemplate_1.default)((0, path_1.join)(Reporter_1.TemplateDirectory, 'welcome', 'welcome.hbs'));
21
+ const template = new ReportTemplate_1.ReportTemplate(templateText, Object.assign(Object.assign(Object.assign({}, helpers_1.default), (0, urlHelpers_1.default)({ appmapURL: this.appmapURL, sourceURL: this.sourceURL })), WelcomeReporter.helpers()));
22
+ const data = Object.assign(Object.assign({}, reportData), { appmapConfig });
23
+ return template.generateMarkdown(data);
24
+ }
25
+ static helpers() {
26
+ const select_values_by_key_range = (data, keyMin, keyMax) => {
27
+ if (typeof keyMax === 'object')
28
+ keyMax = undefined;
29
+ const result = Object.keys(data)
30
+ .map((k) => parseInt(k, 10))
31
+ .filter((k) => k >= keyMin && (keyMax === undefined || k < keyMax))
32
+ .map((k) => data[k]);
33
+ return result;
34
+ };
35
+ const sum_values_by_key_range = (data, keyMin, keyMax) => {
36
+ const values = select_values_by_key_range(data, keyMin, keyMax);
37
+ return values.reduce((a, b) => a + (b || 0), 0);
38
+ };
39
+ const packages_matching_configuration = (packages, configuredPackages) => {
40
+ const normalizePackage = (pkg) => pkg.replace(/\//g, '.').toLowerCase();
41
+ return packages.filter((pkg) => {
42
+ return configuredPackages.find((configuredPackage) => configuredPackage.path &&
43
+ normalizePackage(pkg).startsWith(normalizePackage(configuredPackage.path)));
44
+ });
45
+ };
46
+ return {
47
+ packages_matching_configuration,
48
+ select_values_by_key_range,
49
+ sum_values_by_key_range,
50
+ };
51
+ }
52
+ }
53
+ exports.default = WelcomeReporter;
54
+ //# sourceMappingURL=WelcomeReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WelcomeReporter.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/WelcomeReporter.ts"],"names":[],"mappings":";;;;;AAAA,+BAA4B;AAC5B,oDAA4B;AAG5B,yCAA8E;AAC9E,gEAA6D;AAC7D,yFAAiE;AACjE,yEAAiD;AACjD,mEAA2C;AAE3C,MAAqB,eAAe;IAClC,YAAmB,SAAiB,EAAS,SAAkB;QAA5C,cAAS,GAAT,SAAS,CAAQ;QAAS,cAAS,GAAT,SAAS,CAAS;IAAG,CAAC;IAEnE,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,YAA0B;QACjE,IAAA,gBAAM,EAAC,4BAAiB,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,IAAA,4BAAkB,EAC3C,IAAA,WAAI,EAAC,4BAAiB,EAAE,SAAS,EAAE,aAAa,CAAC,CAClD,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,+BAAc,CAAC,YAAY,gDAC3C,iBAAO,GACP,IAAA,oBAAU,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,GACpE,eAAe,CAAC,OAAO,EAAE,EAC5B,CAAC;QACH,MAAM,IAAI,mCAA6B,UAAU,KAAE,YAAY,GAAE,CAAC;QAClE,OAAO,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,MAAM,0BAA0B,GAAG,CACjC,IAA4B,EAC5B,MAAc,EACd,MAAe,EACL,EAAE;YACZ,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,MAAM,GAAG,SAAS,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;iBAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,uBAAuB,GAAG,CAC9B,IAA4B,EAC5B,MAAc,EACd,MAAe,EACP,EAAE;YACV,MAAM,MAAM,GAAG,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,MAAM,+BAA+B,GAAG,CACtC,QAAkB,EAClB,kBAAuC,EACvC,EAAE;YACF,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAEhF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7B,OAAO,kBAAkB,CAAC,IAAI,CAC5B,CAAC,iBAAiB,EAAE,EAAE,CACpB,iBAAiB,CAAC,IAAI;oBACtB,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAC7E,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO;YACL,+BAA+B;YAC/B,0BAA0B;YAC1B,uBAAuB;SACxB,CAAC;IACJ,CAAC;CACF;AA7DD,kCA6DC"}
@@ -7,12 +7,12 @@ exports.handler = exports.builder = exports.describe = exports.command = void 0;
7
7
  const utils_1 = require("../../utils");
8
8
  const handleWorkingDirectory_1 = require("../../lib/handleWorkingDirectory");
9
9
  const promises_1 = require("fs/promises");
10
- const MarkdownReport_1 = __importDefault(require("./MarkdownReport"));
11
10
  const console_1 = require("console");
12
11
  const process_1 = require("process");
13
12
  const path_1 = require("path");
14
13
  const assert_1 = __importDefault(require("assert"));
15
14
  const loadAppMapConfig_1 = __importDefault(require("../../lib/loadAppMapConfig"));
15
+ const Reporter_1 = __importDefault(require("./Reporter"));
16
16
  exports.command = 'inventory-report <report-json-file> [output-file]';
17
17
  exports.describe = 'Generate a report document describing the current state of a repository.';
18
18
  const builder = (args) => {
@@ -21,13 +21,6 @@ const builder = (args) => {
21
21
  describe: `JSON report file to read. This file is generated by the 'inventory' command.`,
22
22
  demandOption: true,
23
23
  });
24
- args.positional('template-name', {
25
- type: 'string',
26
- describe: `Template name.`,
27
- default: 'welcome',
28
- choices: ['welcome'],
29
- alias: 't',
30
- });
31
24
  args.positional('output-file', {
32
25
  type: 'string',
33
26
  describe: `Markdown output file. If not specified, the report is written to stdout.`,
@@ -38,6 +31,21 @@ const builder = (args) => {
38
31
  type: 'string',
39
32
  alias: 'd',
40
33
  });
34
+ args.option('template-name', {
35
+ type: 'string',
36
+ describe: `Template name.`,
37
+ default: 'welcome',
38
+ choices: ['welcome', 'summary'],
39
+ alias: 't',
40
+ });
41
+ args.option('source-url', {
42
+ describe: `Base URL to link to a source file. The relative path to the source file will be added to the URL path.`,
43
+ type: 'string',
44
+ });
45
+ args.option('appmap-url', {
46
+ describe: `Base URL to link to AppMaps. A 'path' parameter will be added with the relative path from the report directory to the AppMap JSON file.`,
47
+ type: 'string',
48
+ });
41
49
  return args.strict();
42
50
  };
43
51
  exports.builder = builder;
@@ -45,14 +53,15 @@ const handler = async (argv) => {
45
53
  (0, utils_1.verbose)(argv.verbose);
46
54
  const { directory } = argv;
47
55
  (0, handleWorkingDirectory_1.handleWorkingDirectory)(directory);
48
- const { reportJsonFile, outputFile, templateName } = argv;
56
+ const { reportJsonFile, outputFile, templateName, appmapUrl, sourceUrl } = argv;
49
57
  (0, assert_1.default)(reportJsonFile);
50
58
  (0, assert_1.default)(templateName);
51
59
  const appmapConfig = await (0, loadAppMapConfig_1.default)();
52
60
  if (!appmapConfig)
53
61
  throw new Error('Unable to load appmap.yml');
54
62
  const report = JSON.parse(await (0, promises_1.readFile)(reportJsonFile, 'utf-8'));
55
- const reportMD = await (0, MarkdownReport_1.default)(templateName, report, appmapConfig);
63
+ const reporter = (0, Reporter_1.default)(templateName, appmapUrl, sourceUrl);
64
+ const reportMD = await reporter.generateReport(report, appmapConfig);
56
65
  if (outputFile) {
57
66
  await (0, promises_1.writeFile)(outputFile, reportMD);
58
67
  (0, console_1.warn)(`Report written to ${(0, path_1.join)((0, process_1.cwd)(), outputFile)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"inventoryReport.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/inventoryReport.ts"],"names":[],"mappings":";;;;;;AACA,uCAAsC;AACtC,6EAA0E;AAC1E,0CAAkD;AAClD,sEAA8C;AAC9C,qCAA+B;AAC/B,qCAA8B;AAC9B,+BAA4B;AAE5B,oDAA4B;AAC5B,kFAA0D;AAE7C,QAAA,OAAO,GAAG,mDAAmD,CAAC;AAC9D,QAAA,QAAQ,GAAG,0EAA0E,CAAC;AAE5F,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;QAClC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,8EAA8E;QACxF,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;QAC/B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;QAC7B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,0EAA0E;QACpF,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QACvB,QAAQ,EAAE,2BAA2B;QACrC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC,CAAC;AA5BW,QAAA,OAAO,WA4BlB;AAEK,MAAM,OAAO,GAAG,KAAK,EAAE,IAAS,EAAE,EAAE;IACzC,IAAA,eAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC3B,IAAA,+CAAsB,EAAC,SAAS,CAAC,CAAC;IAElC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC1D,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC;IACvB,IAAA,gBAAM,EAAC,YAAY,CAAC,CAAC;IAErB,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAgB,GAAE,CAAC;IAC9C,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAc,EAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1E,IAAI,UAAU,EAAE;QACd,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAA,cAAI,EAAC,qBAAqB,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;KACtD;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACvB;AACH,CAAC,CAAC;AArBW,QAAA,OAAO,WAqBlB"}
1
+ {"version":3,"file":"inventoryReport.js","sourceRoot":"","sources":["../../../src/cmds/inventory-report/inventoryReport.ts"],"names":[],"mappings":";;;;;;AACA,uCAAsC;AACtC,6EAA0E;AAC1E,0CAAkD;AAClD,qCAA+B;AAC/B,qCAA8B;AAC9B,+BAA4B;AAE5B,oDAA4B;AAC5B,kFAA0D;AAC1D,0DAAuC;AAE1B,QAAA,OAAO,GAAG,mDAAmD,CAAC;AAC9D,QAAA,QAAQ,GAAG,0EAA0E,CAAC;AAE5F,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;QAClC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,8EAA8E;QACxF,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;QAC7B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,0EAA0E;QACpF,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QACvB,QAAQ,EAAE,2BAA2B;QACrC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;QAC3B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC/B,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QACxB,QAAQ,EAAE,wGAAwG;QAClH,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QACxB,QAAQ,EAAE,yIAAyI;QACnJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC,CAAC;AAtCW,QAAA,OAAO,WAsClB;AAEK,MAAM,OAAO,GAAG,KAAK,EAAE,IAAS,EAAE,EAAE;IACzC,IAAA,eAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC3B,IAAA,+CAAsB,EAAC,SAAS,CAAC,CAAC;IAElC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAChF,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC;IACvB,IAAA,gBAAM,EAAC,YAAY,CAAC,CAAC;IAErB,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAgB,GAAE,CAAC;IAC9C,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,IAAA,kBAAa,EAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrE,IAAI,UAAU,EAAE;QACd,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAA,cAAI,EAAC,qBAAqB,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;KACtD;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACvB;AACH,CAAC,CAAC;AAtBW,QAAA,OAAO,WAsBlB"}
@@ -151,8 +151,10 @@ class ChangeAnalysisImpl {
151
151
  for (const revisionName of [RevisionName_1.RevisionName.Base, RevisionName_1.RevisionName.Head]) {
152
152
  const metadataByPath = appMapMetadata[revisionName];
153
153
  for (const appmap of metadataByPath.keys()) {
154
- if (!(await sequenceDiagramExists(revisionName, appmap)))
154
+ if (!(await sequenceDiagramExists(revisionName, appmap))) {
155
+ (0, console_1.warn)(`No sequence diagram found for ${revisionName} AppMap ${appmap}`);
155
156
  metadataByPath.delete(appmap);
157
+ }
156
158
  }
157
159
  }
158
160
  }