@appland/appmap 3.84.2 → 3.86.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 (96) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/built/appMapCatalog.js +2 -5
  3. package/built/appMapCatalog.js.map +1 -1
  4. package/built/cli.js +4 -0
  5. package/built/cli.js.map +1 -1
  6. package/built/cmds/archive/analyze.js +63 -15
  7. package/built/cmds/archive/analyze.js.map +1 -1
  8. package/built/cmds/archive/analyzeWorker.js +63 -0
  9. package/built/cmds/archive/analyzeWorker.js.map +1 -0
  10. package/built/cmds/archive/analyzeWorkerWrapper.js +8 -0
  11. package/built/cmds/archive/analyzeWorkerWrapper.js.map +1 -0
  12. package/built/cmds/archive/archive.js +8 -2
  13. package/built/cmds/archive/archive.js.map +1 -1
  14. package/built/cmds/archive/indexAppMaps.js +2 -2
  15. package/built/cmds/archive/indexAppMaps.js.map +1 -1
  16. package/built/cmds/archive/scan.js.map +1 -1
  17. package/built/cmds/checkSize.js +14 -0
  18. package/built/cmds/checkSize.js.map +1 -0
  19. package/built/cmds/compare/ArchiveAnalyzer.js +69 -0
  20. package/built/cmds/compare/ArchiveAnalyzer.js.map +1 -0
  21. package/built/cmds/compare/ChangeReport.js +3 -0
  22. package/built/cmds/compare/ChangeReport.js.map +1 -0
  23. package/built/cmds/compare/ChangeReporter.js +398 -0
  24. package/built/cmds/compare/ChangeReporter.js.map +1 -0
  25. package/built/cmds/compare/Digests.js +50 -0
  26. package/built/cmds/compare/Digests.js.map +1 -0
  27. package/built/cmds/compare/Paths.js +45 -0
  28. package/built/cmds/compare/Paths.js.map +1 -0
  29. package/built/cmds/compare/RevisionName.js +10 -0
  30. package/built/cmds/compare/RevisionName.js.map +1 -0
  31. package/built/cmds/compare/SequenceDiagramDigest.js +20 -0
  32. package/built/cmds/compare/SequenceDiagramDigest.js.map +1 -0
  33. package/built/cmds/compare/ValidationError.js +7 -0
  34. package/built/cmds/compare/ValidationError.js.map +1 -0
  35. package/built/cmds/compare/checkout.js +36 -0
  36. package/built/cmds/compare/checkout.js.map +1 -0
  37. package/built/cmds/compare/compare.js +121 -0
  38. package/built/cmds/compare/compare.js.map +1 -0
  39. package/built/cmds/compare/detectRevisions.js +19 -0
  40. package/built/cmds/compare/detectRevisions.js.map +1 -0
  41. package/built/cmds/compare/loadFindings.js +45 -0
  42. package/built/cmds/compare/loadFindings.js.map +1 -0
  43. package/built/cmds/compare/loadSequenceDiagram.js +11 -0
  44. package/built/cmds/compare/loadSequenceDiagram.js.map +1 -0
  45. package/built/cmds/compare/mapToRecord.js +11 -0
  46. package/built/cmds/compare/mapToRecord.js.map +1 -0
  47. package/built/cmds/compare/prepareOutputDir.js +34 -0
  48. package/built/cmds/compare/prepareOutputDir.js.map +1 -0
  49. package/built/cmds/compare/ui.js +38 -0
  50. package/built/cmds/compare/ui.js.map +1 -0
  51. package/built/cmds/compare-report/MarkdownReport.js +197 -0
  52. package/built/cmds/compare-report/MarkdownReport.js.map +1 -0
  53. package/built/cmds/compare-report/Report.js +3 -0
  54. package/built/cmds/compare-report/Report.js.map +1 -0
  55. package/built/cmds/compare-report/compareReport.js +47 -0
  56. package/built/cmds/compare-report/compareReport.js.map +1 -0
  57. package/built/cmds/record/action/countAppMaps.js +3 -1
  58. package/built/cmds/record/action/countAppMaps.js.map +1 -1
  59. package/built/cmds/scan/ScanResult.js +3 -0
  60. package/built/cmds/scan/ScanResult.js.map +1 -0
  61. package/built/cmds/scan/ScanTask.js +8 -0
  62. package/built/cmds/scan/ScanTask.js.map +1 -0
  63. package/built/cmds/sequenceDiagram/SequenceDiagramResult.js +3 -0
  64. package/built/cmds/sequenceDiagram/SequenceDiagramResult.js.map +1 -0
  65. package/built/cmds/sequenceDiagram/SequenceDiagramTask.js +8 -0
  66. package/built/cmds/sequenceDiagram/SequenceDiagramTask.js.map +1 -0
  67. package/built/cmds/stats/directory/statsForDirectory.js +2 -2
  68. package/built/cmds/stats/directory/statsForDirectory.js.map +1 -1
  69. package/built/cmds/upload.js +5 -11
  70. package/built/cmds/upload.js.map +1 -1
  71. package/built/fingerprint/fingerprintDirectoryCommand.js +2 -2
  72. package/built/fingerprint/fingerprintDirectoryCommand.js.map +1 -1
  73. package/built/fingerprint/fingerprinter.js +8 -0
  74. package/built/fingerprint/fingerprinter.js.map +1 -1
  75. package/built/html/appmap.js +6 -6
  76. package/built/html/appmap.js.map +1 -1
  77. package/built/html/sequenceDiagram.js +6 -6
  78. package/built/html/sequenceDiagram.js.map +1 -1
  79. package/built/inventoryCommand.js +2 -2
  80. package/built/inventoryCommand.js.map +1 -1
  81. package/built/lib/processAppMapDir.js +35 -0
  82. package/built/lib/processAppMapDir.js.map +1 -0
  83. package/built/lib/workerPool.js +135 -0
  84. package/built/lib/workerPool.js.map +1 -0
  85. package/built/search/findCodeObjects.js +2 -2
  86. package/built/search/findCodeObjects.js.map +1 -1
  87. package/built/sequenceDiagram/analyzeAppMaps.js +2 -3
  88. package/built/sequenceDiagram/analyzeAppMaps.js.map +1 -1
  89. package/built/utils.js +50 -27
  90. package/built/utils.js.map +1 -1
  91. package/package.json +8 -5
  92. package/resources/change-report.hbs +259 -0
  93. package/built/cmds/archive/updateSequenceDiagrams.js +0 -49
  94. package/built/cmds/archive/updateSequenceDiagrams.js.map +0 -1
  95. package/built/cmds/sequenceDiagram/buildSequenceDiagramFromAppMap.js +0 -11
  96. package/built/cmds/sequenceDiagram/buildSequenceDiagramFromAppMap.js.map +0 -1
@@ -0,0 +1,259 @@
1
+ # AppMap
2
+
3
+ {{#*inline "api-change"}}
4
+ {{title}} {{#each sourceSpecEntityDetails}}`{{location}}`{{/each}} {{#each destinationSpecEntityDetails}}`{{location}}`{{/each}}
5
+ {{~/inline}}
6
+
7
+ {{#*inline "sequence-diagram-diff-link"}}
8
+ {{#if sequenceDiagramDiff}}[{{sequenceDiagramDiff}}]({{ appmap_diff_url sequenceDiagramDiff}}){{/if}}{{#unless sequenceDiagramDiff}}No structural changes detected{{/unless}}
9
+ {{~/inline}}
10
+
11
+ {{#*inline "finding-source-diff"}}
12
+ {{#if (has_source_diff appmap) }}
13
+
14
+ The following code changes are related to this finding:
15
+
16
+ ```diff
17
+ {{{source_diff appmap}}}
18
+ ```
19
+ {{else}}
20
+
21
+ No relevant code changes found.
22
+ {{/if}}
23
+ {{/inline}}
24
+
25
+ {{#*inline "finding-stack" }}
26
+ {{#with stack }}
27
+ {{#each this }}
28
+ {{#if (source_url this)}}
29
+ * [{{this}}]({{ source_url this }})
30
+ {{else}}
31
+ * {{ this }}
32
+ {{/if}}
33
+ {{/each}}
34
+ {{/with}}
35
+
36
+ {{/inline}}
37
+
38
+ {{#*inline "finding"}}
39
+
40
+ ### {{ ruleTitle }}
41
+
42
+ <details>
43
+ <summary>
44
+ Finding details
45
+ </summary>
46
+
47
+ | Field | Value |
48
+ | --- | --- |
49
+ | Message | {{ message }} |
50
+ | AppMap | [{{appmap}}]({{~ appmap_url 'head' appmap }}) |
51
+
52
+ ##### Related code changes
53
+
54
+ {{~> finding-source-diff}}
55
+
56
+ ##### Stack trace
57
+
58
+ {{> finding-stack}}
59
+
60
+ </details>
61
+ {{/inline}}
62
+
63
+ | Summary | Status |
64
+ | --- | --- |
65
+ | [Test failures](#test-failures) | {{#if testFailures.length}}:warning: {{testFailures.length}} failed{{else}}:white_check_mark: All tests passed{{/if}} |
66
+ | [API changes](#api-changes) |
67
+ {{~#unless apiDiff.differenceCount }}
68
+ :white_check_mark: No API changes
69
+ {{~/unless}}
70
+ {{~#if apiDiff.differenceCount }}
71
+ {{~#if apiDiff.breakingDifferenceCount }}🚧 {{apiDiff.breakingDifferenceCount}} breaking{{~/if}}
72
+ {{~#if apiDiff.nonBreakingDifferenceCount }}{{#if apiDiff.breakingDifferenceCount }},&nbsp;{{~/if}}:wrench: {{apiDiff.nonBreakingDifferenceCount}} non-breaking{{~/if}}
73
+ {{~/if}}
74
+ |
75
+ | [Findings](#findings) |
76
+ {{~#with findingDiff}}
77
+ {{~#unless (length new resolved) }}
78
+ :white_check_mark: None
79
+ {{~/unless}}
80
+ {{~#if (length new) }}
81
+ :beetle: {{length new}} new
82
+ {{~/if}}
83
+ {{~#if (length resolved) }}
84
+ :tada: {{length resolved}} resolved
85
+ {{~/if}}
86
+ {{~/with}}
87
+ |
88
+ | [New AppMaps](#new-appmaps) |
89
+ {{~#unless newAppMaps.length }}
90
+ :white_check_mark: None
91
+ {{~else}}
92
+ :star: {{newAppMaps.length}} new
93
+ {{~/unless}}
94
+ |
95
+ | [Changed code behavior](#changed-code-behavior) |
96
+ {{~#unless sequenceDiagramDiffSnippetCount }}
97
+ :white_check_mark: No changes
98
+ {{~else}}
99
+ :twisted_rightwards_arrows: {{sequenceDiagramDiffSnippetCount}} changes
100
+ {{~/unless}}
101
+ |
102
+
103
+ {{#if testFailures.length}}
104
+ ## :warning: Test failures
105
+
106
+ {{#each testFailures}}
107
+
108
+ <details>
109
+ <summary>
110
+ {{ testLocation }}
111
+ </summary>
112
+
113
+ <p/>
114
+
115
+ [{{testLocation}}]({{ source_url testLocation }}) failed with error:
116
+
117
+ ```
118
+ {{{failureMessage}}}
119
+ ```
120
+
121
+ {{#if failureLocation}}
122
+ The error occurred at [{{failureLocation}}]({{ source_url failureLocation }}):
123
+ {{/if}}
124
+
125
+ {{#if testSnippet}}
126
+ {{#with testSnippet}}
127
+ ```{{language}}
128
+ {{{codeFragment}}}
129
+ ```
130
+ {{/with}}
131
+ {{/if}}
132
+
133
+ {{#if (has_source_diff appmap)}}
134
+
135
+ The following code changes may be related to this test failure:
136
+
137
+ ```diff
138
+ {{{source_diff appmap}}}
139
+ ```
140
+ {{else}}
141
+
142
+ No relevant code changes found.
143
+ {{/if}}
144
+
145
+ | Diagram | Link |
146
+ | --- | --- |
147
+ {{#if changedAppMap}}
148
+ {{#with changedAppMap}}
149
+ | Sequence diagram diff | {{> sequence-diagram-diff-link }} |
150
+ {{/with}}
151
+ {{/if}}
152
+ | AppMap | [{{appmap}}]({{ appmap_url 'head' appmap }}) |
153
+
154
+ </details>
155
+
156
+ {{/each}}
157
+ {{/if}}
158
+
159
+ {{#if apiDiff.differenceCount }}
160
+
161
+ ## 🔄 API changes
162
+
163
+ {{#if apiDiff.breakingDifferences}}
164
+ ### 🚧 Breaking changes
165
+
166
+ {{#each apiDiff.breakingDifferences}}
167
+ - {{> api-change }}
168
+ {{/each}}
169
+ {{/if}}
170
+
171
+ {{#if apiDiff.nonBreakingDifferences}}
172
+ ### :wrench: Non-breaking changes
173
+
174
+ {{#each apiDiff.nonBreakingDifferences}}
175
+ - {{> api-change }}
176
+ {{/each}}
177
+ {{/if}}
178
+
179
+ {{#if apiDiff.unclassifiedDifferences}}
180
+ ### Unclassified changes
181
+
182
+ {{#each apiDiff.unclassifiedDifferences}}
183
+ - {{> api-change }}
184
+ {{/each}}
185
+ {{/if}}
186
+
187
+ <details>
188
+ <summary>
189
+ Detailed OpenAPI diff
190
+ </summary>
191
+
192
+ ```diff
193
+ {{{apiDiff.sourceDiff}}}
194
+ ```
195
+ </details>
196
+
197
+ {{/if}}
198
+
199
+ {{#with findingDiff}}
200
+ {{#if (length new resolved)}}
201
+
202
+ <h2 id="findings">Findings</h2>
203
+
204
+ {{#with new}}
205
+ ### :beetle: New findings ({{ length this}})
206
+
207
+ {{#each this}}
208
+ {{> finding}}
209
+ {{/each}}
210
+
211
+ {{/with}}
212
+
213
+ {{#with resolved}}
214
+ ### :tada: Resolved findings ({{ length this}})
215
+
216
+ {{#each this}}
217
+ {{> finding}}
218
+ {{/each}}
219
+
220
+ {{/with}}
221
+
222
+ {{/if}}
223
+ {{/with}}
224
+
225
+ {{#if newAppMaps.length }}
226
+
227
+ <h2 id="new-appmaps">New AppMaps</h2>
228
+
229
+ {{#each newAppMaps}}
230
+
231
+ [{{this}}]({{ appmap_url 'head' this }})
232
+
233
+ {{/each}}
234
+
235
+ {{/if}}
236
+
237
+ {{#if sequenceDiagramDiffSnippetCount }}
238
+ ## :twisted_rightwards_arrows: Changed code behavior
239
+
240
+ <details>
241
+
242
+ <summary>
243
+ Review {{ sequenceDiagramDiffSnippetCount }} changes
244
+ </summary>
245
+
246
+ {{#each sequenceDiagramDiff}}
247
+
248
+ ```
249
+ {{{@key}}}
250
+ ```
251
+
252
+ {{#each this}}
253
+ - [{{.}}]({{ appmap_diff_url . }})
254
+ {{/each}}
255
+
256
+ {{/each}}
257
+
258
+ </details>
259
+ {{/if}}
@@ -1,49 +0,0 @@
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
@@ -1 +0,0 @@
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,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildSequenceDiagramFromAppMapFile = void 0;
4
- const sequence_diagram_1 = require("@appland/sequence-diagram");
5
- const models_1 = require("@appland/models");
6
- function buildSequenceDiagramFromAppMapFile(fileName, appMapData) {
7
- const appmap = (0, models_1.buildAppMap)(appMapData).build();
8
- return (0, sequence_diagram_1.buildDiagram)(fileName, appmap, sequence_diagram_1.Specification.build(appmap, {}));
9
- }
10
- exports.buildSequenceDiagramFromAppMapFile = buildSequenceDiagramFromAppMapFile;
11
- //# sourceMappingURL=buildSequenceDiagramFromAppMap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildSequenceDiagramFromAppMap.js","sourceRoot":"","sources":["../../../src/cmds/sequenceDiagram/buildSequenceDiagramFromAppMap.ts"],"names":[],"mappings":";;;AAAA,gEAAiF;AACjF,4CAA8C;AAE9C,SAAgB,kCAAkC,CAAC,QAAgB,EAAE,UAAe;IAClF,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,OAAO,IAAA,+BAAY,EAAC,QAAQ,EAAE,MAAM,EAAE,gCAAa,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAHD,gFAGC"}