@appland/appmap 3.65.5 → 3.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ # [@appland/appmap-v3.66.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.65.6...@appland/appmap-v3.66.0) (2023-02-24)
2
+
3
+
4
+ ### Features
5
+
6
+ * Create multiple sequence diagrams with one invocation ([8e829a6](https://github.com/getappmap/appmap-js/commit/8e829a6280e78d6002327de16a11b5979d9595f1))
7
+ * Optionally skip loop rollup ([fa04ca9](https://github.com/getappmap/appmap-js/commit/fa04ca99e1950ed0a79cfe0e63cc0074ad1b3138))
8
+ * Seq diagram diff include and exclude ([fc12f5c](https://github.com/getappmap/appmap-js/commit/fc12f5c9db117030f1c7ee34a1c46d45708a5165))
9
+
10
+ # [@appland/appmap-v3.65.6](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.65.5...@appland/appmap-v3.65.6) (2023-02-24)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * Release notarized Mac OS binaries ([f13e619](https://github.com/getappmap/appmap-js/commit/f13e619648903dbb1989a72c64aab65aa1adf8dc))
16
+
1
17
  # [@appland/appmap-v3.65.5](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.65.4...@appland/appmap-v3.65.5) (2023-02-23)
2
18
 
3
19
 
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readDiagramFile = void 0;
4
+ const promises_1 = require("fs/promises");
5
+ const sequence_diagram_1 = require("@appland/sequence-diagram");
6
+ async function readDiagramFile(fileName) {
7
+ const jsonData = JSON.parse(await (0, promises_1.readFile)(fileName, 'utf-8'));
8
+ return (0, sequence_diagram_1.unparseDiagram)(jsonData);
9
+ }
10
+ exports.readDiagramFile = readDiagramFile;
11
+ //# sourceMappingURL=readDiagramFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readDiagramFile.js","sourceRoot":"","sources":["../../../src/cmds/sequenceDiagram/readDiagramFile.ts"],"names":[],"mappings":";;;AAAA,0CAAuC;AACvC,gEAAoE;AAE7D,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAQ,CAAC;IACtE,OAAO,IAAA,iCAAc,EAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAHD,0CAGC"}
@@ -7,12 +7,12 @@ const handleWorkingDirectory_1 = require("../lib/handleWorkingDirectory");
7
7
  const utils_1 = require("../utils");
8
8
  const models_1 = require("@appland/models");
9
9
  const sequence_diagram_1 = require("@appland/sequence-diagram");
10
- exports.command = 'sequence-diagram appmap';
10
+ exports.command = 'sequence-diagram <appmap...>';
11
11
  exports.describe = 'Generate a sequence diagram for an AppMap';
12
12
  const builder = (args) => {
13
13
  args.positional('appmap', {
14
14
  type: 'string',
15
- demandOption: true,
15
+ array: true,
16
16
  });
17
17
  args.option('directory', {
18
18
  describe: 'program working directory',
@@ -22,8 +22,14 @@ const builder = (args) => {
22
22
  args.option('output-dir', {
23
23
  describe: 'directory in which to save the sequence diagrams',
24
24
  });
25
+ args.option('loops', {
26
+ describe: 'identify loops and collect under a Loop object',
27
+ type: 'boolean',
28
+ default: true,
29
+ });
25
30
  args.option('format', {
26
31
  describe: 'output format',
32
+ alias: 'f',
27
33
  choices: ['plantuml', 'json'],
28
34
  default: 'plantuml',
29
35
  });
@@ -46,28 +52,36 @@ const handler = async (argv) => {
46
52
  process.exitCode = 1;
47
53
  return;
48
54
  }
49
- const appmapData = JSON.parse(await (0, promises_1.readFile)(argv.appmap, 'utf-8'));
50
- const appmap = (0, models_1.buildAppMap)().source(appmapData).build();
51
- const specOptions = {};
52
- if (argv.exclude && argv.exclude.length > 0)
53
- specOptions.exclude = argv.exclude;
54
- const specification = sequence_diagram_1.Specification.build(appmap, specOptions);
55
- const diagram = (0, sequence_diagram_1.buildDiagram)(argv.appmap, appmap, specification);
56
- const template = (0, sequence_diagram_1.format)(argv.format, diagram, argv.appmap);
57
- if (argv.outputDir)
58
- await (0, promises_1.mkdir)(argv.outputDir, { recursive: true });
59
- const outputFileName = [
60
- (0, path_1.basename)(argv.appmap, '.appmap.json'),
61
- '.sequence',
62
- template.extension,
63
- ].join('');
64
- let outputPath;
65
- if (argv.outputDir)
66
- outputPath = (0, path_1.join)(argv.outputDir, outputFileName);
67
- else
68
- outputPath = (0, path_1.join)((0, path_1.dirname)(argv.appmap), outputFileName);
69
- await (0, promises_1.writeFile)(outputPath, template.diagram);
70
- console.log(`Printed diagram ${outputPath}`);
55
+ const generateDiagram = async (appmapFileName) => {
56
+ const appmapData = JSON.parse(await (0, promises_1.readFile)(appmapFileName, 'utf-8'));
57
+ const appmap = (0, models_1.buildAppMap)().source(appmapData).build();
58
+ const specOptions = {
59
+ loops: argv.loops,
60
+ };
61
+ if (argv.exclude)
62
+ specOptions.exclude = Array.isArray(argv.exclude) ? argv.exclude : [argv.exclude];
63
+ const specification = sequence_diagram_1.Specification.build(appmap, specOptions);
64
+ const diagram = (0, sequence_diagram_1.buildDiagram)(appmapFileName, appmap, specification);
65
+ const template = (0, sequence_diagram_1.format)(argv.format, diagram, appmapFileName);
66
+ if (argv.outputDir)
67
+ await (0, promises_1.mkdir)(argv.outputDir, { recursive: true });
68
+ const outputFileName = [
69
+ (0, path_1.basename)(appmapFileName, '.appmap.json'),
70
+ '.sequence',
71
+ template.extension,
72
+ ].join('');
73
+ let outputPath;
74
+ if (argv.outputDir)
75
+ outputPath = (0, path_1.join)(argv.outputDir, outputFileName);
76
+ else
77
+ outputPath = (0, path_1.join)((0, path_1.dirname)(appmapFileName), outputFileName);
78
+ await (0, promises_1.writeFile)(outputPath, template.diagram);
79
+ console.log(`Printed diagram ${outputPath}`);
80
+ };
81
+ for (let i = 0; i < argv.appmap.length; i++) {
82
+ const appmapFile = argv.appmap[i];
83
+ await generateDiagram(appmapFile);
84
+ }
71
85
  };
72
86
  exports.handler = handler;
73
87
  //# sourceMappingURL=sequenceDiagram.js.map
@@ -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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"}
@@ -10,6 +10,8 @@ const handleWorkingDirectory_1 = require("../lib/handleWorkingDirectory");
10
10
  const sequence_diagram_1 = require("@appland/sequence-diagram");
11
11
  const utils_1 = require("../utils");
12
12
  const path_1 = require("path");
13
+ const DiffDiagrams_1 = require("../sequenceDiagramDiff/DiffDiagrams");
14
+ const readDiagramFile_1 = require("./sequenceDiagram/readDiagramFile");
13
15
  exports.command = 'sequence-diagram-diff base-diagram head-diagram';
14
16
  exports.describe = 'Diff sequence diagrams that are represented as JSON';
15
17
  const builder = (args) => {
@@ -30,48 +32,20 @@ const builder = (args) => {
30
32
  });
31
33
  args.option('format', {
32
34
  describe: 'output format',
33
- choices: ['plantuml', 'json'],
35
+ alias: 'f',
36
+ choices: ['plantuml', 'json', 'text'],
34
37
  default: 'plantuml',
35
38
  });
39
+ args.option('include', {
40
+ describe: 'code objects to include in the diagram (inclusive of descendants)',
41
+ });
42
+ args.option('exclude', {
43
+ describe: 'code objects to exclude from the diagram',
44
+ });
36
45
  return args.strict();
37
46
  };
38
47
  exports.builder = builder;
39
- async function readDiagramFile(fileName) {
40
- const diagram = JSON.parse(await (0, promises_1.readFile)(fileName, 'utf-8'));
41
- const actors = new Map();
42
- diagram.actors.forEach((actor) => actors.set(actor.id, actor));
43
- const resolveActors = (action) => {
44
- if (action.caller)
45
- action.caller = actors.get(action.caller);
46
- if (action.callee)
47
- action.callee = actors.get(action.callee);
48
- if (action.children)
49
- action.children.forEach((child) => resolveActors(child));
50
- };
51
- diagram.rootActions.forEach((action) => (0, sequence_diagram_1.setParent)(action));
52
- diagram.rootActions.forEach((action) => resolveActors(action));
53
- return diagram;
54
- }
55
- async function performDiff(format, outputFileName, baseFileName, base, head, headFileName) {
56
- const result = (0, sequence_diagram_1.diff)(base, head, {});
57
- const changes = result.moves.filter((move) => move.moveType !== sequence_diagram_1.MoveType.AdvanceBoth);
58
- if (changes.length === 0) {
59
- if (headFileName) {
60
- console.log(`${baseFileName} and ${headFileName} are identical`);
61
- }
62
- else {
63
- console.log(`${baseFileName} are identical`);
64
- }
65
- return;
66
- }
67
- const diagram = (0, sequence_diagram_1.buildDiffDiagram)(result);
68
- let description;
69
- if (headFileName) {
70
- description = `Diff ${baseFileName} with ${headFileName}`;
71
- }
72
- else {
73
- description = `Diff ${baseFileName}`;
74
- }
48
+ async function printDiff(diagram, format, outputFileName, description) {
75
49
  const template = (0, sequence_diagram_1.format)(format, diagram, description);
76
50
  const outputPath = [outputFileName, template.extension].join('');
77
51
  await (0, promises_1.writeFile)(outputPath, template.diagram);
@@ -88,14 +62,24 @@ const handler = async (argv) => {
88
62
  (0, handleWorkingDirectory_1.handleWorkingDirectory)(argv.directory);
89
63
  await (0, promises_1.mkdir)(argv.outputDir, { recursive: true });
90
64
  const { baseDiagram: baseDiagramFile, headDiagram: headDiagramFile } = argv;
65
+ const diffDiagrams = new DiffDiagrams_1.DiffDiagrams();
66
+ if (argv.include)
67
+ (Array.isArray(argv.include) ? argv.include : [argv.include]).forEach((expr) => diffDiagrams.include(expr));
68
+ if (argv.exclude)
69
+ (Array.isArray(argv.exclude) ? argv.exclude : [argv.exclude]).forEach((expr) => diffDiagrams.exclude(expr));
91
70
  [baseDiagramFile, headDiagramFile].forEach((fileName) => {
92
71
  if (!(0, fs_1.existsSync)(fileName))
93
72
  throw new Error(`${fileName} does not exist`);
94
73
  });
95
74
  const compareFiles = async () => {
96
- const baseDiagram = await readDiagramFile(baseDiagramFile);
97
- const headDiagram = await readDiagramFile(headDiagramFile);
98
- performDiff(argv.format, (0, path_1.join)(argv.outputDir, 'diff'), baseDiagramFile, baseDiagram, headDiagram, headDiagramFile);
75
+ const baseDiagram = await (0, readDiagramFile_1.readDiagramFile)(baseDiagramFile);
76
+ const headDiagram = await (0, readDiagramFile_1.readDiagramFile)(headDiagramFile);
77
+ const diffDiagram = diffDiagrams.diff(baseDiagram, headDiagram);
78
+ if (!diffDiagram) {
79
+ console.log(`${baseDiagramFile} and ${headDiagramFile} are identical`);
80
+ return;
81
+ }
82
+ printDiff(diffDiagram, argv.format, (0, path_1.join)(argv.outputDir, 'diff'), `Diff ${baseDiagramFile} with ${headDiagramFile}`);
99
83
  };
100
84
  const compareDirectories = async () => {
101
85
  const diagramData = new Map();
@@ -107,9 +91,9 @@ const handler = async (argv) => {
107
91
  });
108
92
  await Promise.all([...diagramData.keys()].map(async (dirName) => {
109
93
  const data = diagramData.get(dirName);
110
- await (0, util_1.promisify)(glob_1.glob)(`${dirName}/**/*.json`).then(async (matches) => {
94
+ await (0, util_1.promisify)(glob_1.glob)(`${dirName}/**/*.sequence.json`).then(async (matches) => {
111
95
  const loader = (0, async_1.queue)(async (matchName) => {
112
- const diagram = await readDiagramFile(matchName);
96
+ const diagram = await (0, readDiagramFile_1.readDiagramFile)(matchName);
113
97
  const relativePath = matchName.slice(dirName.length + 1);
114
98
  data.diagrams.set(relativePath, diagram);
115
99
  }, 2);
@@ -123,15 +107,22 @@ const handler = async (argv) => {
123
107
  for (const fileName of diagramData.get(headDiagramFile).diagrams.keys())
124
108
  diagramNames.add(fileName);
125
109
  for (const fileName of diagramNames) {
126
- if (diagramData.get(baseDiagramFile).diagrams.get(fileName) === undefined) {
110
+ const baseDiagram = diagramData.get(baseDiagramFile).diagrams.get(fileName);
111
+ if (baseDiagram === undefined) {
127
112
  console.log(`Diagram ${fileName} exists only in ${headDiagramFile}`);
128
113
  continue;
129
114
  }
130
- if (diagramData.get(headDiagramFile).diagrams.get(fileName) === undefined) {
115
+ const headDiagram = diagramData.get(headDiagramFile).diagrams.get(fileName);
116
+ if (headDiagram === undefined) {
131
117
  console.log(`Diagram ${fileName} exists only in ${baseDiagramFile}`);
132
118
  continue;
133
119
  }
134
- performDiff(argv.format, [fileName, 'diff'].join('.'), fileName, diagramData.get(baseDiagramFile).diagrams.get(fileName), diagramData.get(headDiagramFile).diagrams.get(fileName));
120
+ const diffDiagram = diffDiagrams.diff(baseDiagram, headDiagram);
121
+ if (!diffDiagram) {
122
+ console.log(`${fileName} is identical`);
123
+ continue;
124
+ }
125
+ printDiff(diffDiagram, argv.format, [fileName, 'diff'].join('.'), `Diff ${fileName}`);
135
126
  }
136
127
  };
137
128
  const isFile = [baseDiagramFile, headDiagramFile].map((fileName) => (0, fs_1.statSync)(fileName).isFile());
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceDiagramDiff.js","sourceRoot":"","sources":["../../src/cmds/sequenceDiagramDiff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sequenceDiagramDiff.js","sourceRoot":"","sources":["../../src/cmds/sequenceDiagramDiff.ts"],"names":[],"mappings":"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"}