@appland/appmap 3.68.0 → 3.68.1
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 +7 -0
- package/built/cmds/open/openers.js +3 -3
- package/built/cmds/open/openers.js.map +1 -1
- package/built/cmds/open/serveAndOpenAppMap.js +91 -0
- package/built/cmds/open/serveAndOpenAppMap.js.map +1 -0
- package/built/cmds/open/showAppMap.js +8 -1
- package/built/cmds/open/showAppMap.js.map +1 -1
- package/built/cmds/sequenceDiagram.js +18 -64
- package/built/cmds/sequenceDiagram.js.map +1 -1
- package/built/html/appmap.html +1 -1
- package/built/html/{appmap.css → page.css} +1 -1
- package/built/html/{sequenceDiagram.js → page.js} +49 -49
- package/built/html/{sequenceDiagram.js.map → page.js.map} +4 -4
- package/package.json +6 -7
- package/built/html/appmap.js +0 -357
- package/built/html/appmap.js.map +0 -7
- package/built/html/sequenceDiagram.css +0 -2
- package/built/html/sequenceDiagram.css.map +0 -7
- package/built/html/sequenceDiagram.html +0 -1
- package/built/lib/serveAndOpen.js +0 -124
- package/built/lib/serveAndOpen.js.map +0 -1
- /package/built/html/{appmap.css.map → page.css.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [@appland/appmap-v3.68.1](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.68.0...@appland/appmap-v3.68.1) (2023-03-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Revert the addition of puppeteer ([b91f57d](https://github.com/getappmap/appmap-js/commit/b91f57d3710e819c708624ea373064c75870314f))
|
|
7
|
+
|
|
1
8
|
# [@appland/appmap-v3.68.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.67.2...@appland/appmap-v3.68.0) (2023-03-16)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.openInTool = exports.openInVSCode = exports.vscodeURL = exports.openInBrowser = exports.abspath = void 0;
|
|
7
|
-
const
|
|
7
|
+
const serveAndOpenAppMap_1 = __importDefault(require("./serveAndOpenAppMap"));
|
|
8
8
|
const supports_hyperlinks_1 = __importDefault(require("supports-hyperlinks"));
|
|
9
9
|
const path_1 = require("path");
|
|
10
10
|
// See also: https://github.com/getappmap/scanner/pull/9/files#diff-3294a832ea2276e554177e0b3007cc2d401c082912c7fbde49fa09141bf1aed1R1
|
|
@@ -21,8 +21,8 @@ function abspath(file) {
|
|
|
21
21
|
return (0, path_1.resolve)(process.cwd(), file);
|
|
22
22
|
}
|
|
23
23
|
exports.abspath = abspath;
|
|
24
|
-
async function openInBrowser(appMapFile
|
|
25
|
-
await (0,
|
|
24
|
+
async function openInBrowser(appMapFile) {
|
|
25
|
+
await (0, serveAndOpenAppMap_1.default)(appMapFile);
|
|
26
26
|
}
|
|
27
27
|
exports.openInBrowser = openInBrowser;
|
|
28
28
|
function vscodeURL(appMapFile) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openers.js","sourceRoot":"","sources":["../../../src/cmds/open/openers.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"openers.js","sourceRoot":"","sources":["../../../src/cmds/open/openers.ts"],"names":[],"mappings":";;;;;;AAAA,8EAAsD;AACtD,8EAAqD;AACrD,+BAAqC;AAErC,sIAAsI;AACtI,SAAS,SAAS,CAAC,QAAgB,EAAE,IAAY;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC;IACtB,MAAM,GAAG,GAAG,QAAQ,CAAC;IACrB,MAAM,GAAG,GAAG,GAAG,CAAC;IAEhB,IAAI,CAAC,6BAAkB,CAAC,MAAM,EAAE;QAC9B,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAFD,0BAEC;AAEM,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,IAAA,4BAAkB,EAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAFD,sCAEC;AAED,SAAgB,SAAS,CAAC,UAAkB;IAC1C,OAAO,IAAA,WAAI,EAAC,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,YAAY,CAAC,UAAkB;IACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAFD,oCAEC;AAEM,KAAK,UAAU,UAAU,CAAC,UAAkB,EAAE,MAAe;IAClE,MAAM,IAAI,GAAG,GAAG,MAAM,gBAAgB,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC;AAHD,gCAGC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
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 fs_1 = require("fs");
|
|
7
|
+
const http_1 = require("http");
|
|
8
|
+
const open_1 = __importDefault(require("open"));
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const url_1 = require("url");
|
|
11
|
+
const utils_1 = require("../../utils");
|
|
12
|
+
const userInteraction_1 = __importDefault(require("../userInteraction"));
|
|
13
|
+
function mimeTypeOfName(filename) {
|
|
14
|
+
return ({
|
|
15
|
+
js: 'application/javascript',
|
|
16
|
+
css: 'text/css',
|
|
17
|
+
map: 'application/json',
|
|
18
|
+
}[(0, path_1.extname)(filename)] || 'application/octet-stream');
|
|
19
|
+
}
|
|
20
|
+
async function serveAndOpenAppMap(appMapFile) {
|
|
21
|
+
userInteraction_1.default.progress(`Opening ${appMapFile}`);
|
|
22
|
+
const baseDir = (0, path_1.join)(__dirname, '..', '..', '..', 'built', 'html');
|
|
23
|
+
const server = (0, http_1.createServer)(async (req, res) => {
|
|
24
|
+
const serveStaticFile = (fileName, contentType) => {
|
|
25
|
+
res.writeHead(200, 'OK', { 'Content-Type': contentType });
|
|
26
|
+
const fileStream = (0, fs_1.createReadStream)(fileName);
|
|
27
|
+
fileStream.pipe(res);
|
|
28
|
+
fileStream.on('open', function () {
|
|
29
|
+
if ((0, utils_1.verbose)()) {
|
|
30
|
+
console.log(`${fileName}: 200`);
|
|
31
|
+
}
|
|
32
|
+
res.writeHead(200);
|
|
33
|
+
});
|
|
34
|
+
fileStream.on('error', function (e) {
|
|
35
|
+
if ((0, utils_1.verbose)()) {
|
|
36
|
+
console.log(`${fileName}: 404`);
|
|
37
|
+
}
|
|
38
|
+
res.writeHead(404);
|
|
39
|
+
res.end();
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
if ((0, utils_1.verbose)()) {
|
|
44
|
+
console.log(req.url);
|
|
45
|
+
}
|
|
46
|
+
var requestUrl = (0, url_1.parse)(req.url);
|
|
47
|
+
const pathname = requestUrl.pathname;
|
|
48
|
+
if (pathname === '/') {
|
|
49
|
+
return serveStaticFile((0, path_1.join)(baseDir, 'appmap.html'), 'text/html');
|
|
50
|
+
}
|
|
51
|
+
else if (pathname === '/appmap') {
|
|
52
|
+
const urlParams = new URLSearchParams(requestUrl.query);
|
|
53
|
+
const appMapFile = urlParams.get('file');
|
|
54
|
+
if (appMapFile) {
|
|
55
|
+
return serveStaticFile(appMapFile, 'application/json');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (pathname && !pathname.startsWith('.')) {
|
|
59
|
+
const path = (0, path_1.join)(baseDir, pathname);
|
|
60
|
+
return serveStaticFile(path, mimeTypeOfName(path));
|
|
61
|
+
}
|
|
62
|
+
if ((0, utils_1.verbose)()) {
|
|
63
|
+
console.log(`${pathname}: 404`);
|
|
64
|
+
}
|
|
65
|
+
res.writeHead(404);
|
|
66
|
+
res.end();
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
console.log(e.stack);
|
|
70
|
+
res.writeHead(500);
|
|
71
|
+
res.end(); // end the response so browsers don't hang
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
.listen(0, '127.0.0.1', () => {
|
|
75
|
+
const port = server.address().port;
|
|
76
|
+
tryOpen(`http://localhost:${port}/?appmap=${encodeURIComponent(appMapFile)}`);
|
|
77
|
+
})
|
|
78
|
+
.on('connection', function (socket) {
|
|
79
|
+
// Don't let the open socket keep the process alive.
|
|
80
|
+
socket.unref();
|
|
81
|
+
})
|
|
82
|
+
.unref();
|
|
83
|
+
}
|
|
84
|
+
exports.default = serveAndOpenAppMap;
|
|
85
|
+
async function tryOpen(url) {
|
|
86
|
+
const showMessage = () => userInteraction_1.default.warn(`\nWe could not open the browser automatically.\nOpen ${url} to see the AppMap.\n`);
|
|
87
|
+
const cp = await (0, open_1.default)(url);
|
|
88
|
+
cp.once('error', showMessage);
|
|
89
|
+
cp.once('exit', (code, signal) => (code || signal) && showMessage());
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=serveAndOpenAppMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serveAndOpenAppMap.js","sourceRoot":"","sources":["../../../src/cmds/open/serveAndOpenAppMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const child_process_1 = require("child_process");
|
|
7
7
|
const userInteraction_1 = __importDefault(require("../userInteraction"));
|
|
8
8
|
const openers_1 = require("./openers");
|
|
9
|
+
const Openers = [
|
|
10
|
+
{ name: 'Browser tab', fn: openers_1.openInBrowser },
|
|
11
|
+
{ name: 'VS Code', fn: openers_1.openInVSCode },
|
|
12
|
+
{ name: 'IntelliJ', toolId: 'idea', fn: openers_1.openInTool },
|
|
13
|
+
{ name: 'PyCharm', toolId: 'pycharm', fn: openers_1.openInTool },
|
|
14
|
+
{ name: 'RubyMine', toolId: 'x-mine', fn: openers_1.openInTool },
|
|
15
|
+
];
|
|
9
16
|
async function showAppMap(appMapFile) {
|
|
10
17
|
const termProgram = process.env.TERM_PROGRAM;
|
|
11
18
|
if (process.platform === 'darwin' && termProgram === 'vscode') {
|
|
12
19
|
(0, child_process_1.spawn)('code', [(0, openers_1.abspath)(appMapFile)]);
|
|
13
20
|
}
|
|
14
21
|
else {
|
|
15
|
-
await (0, openers_1.openInBrowser)(appMapFile
|
|
22
|
+
await (0, openers_1.openInBrowser)(appMapFile);
|
|
16
23
|
}
|
|
17
24
|
const { action } = await userInteraction_1.default.prompt({
|
|
18
25
|
type: 'list',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showAppMap.js","sourceRoot":"","sources":["../../../src/cmds/open/showAppMap.ts"],"names":[],"mappings":";;;;;AAAA,iDAAsC;AACtC,yEAAoC;AACpC,uCAA6E;
|
|
1
|
+
{"version":3,"file":"showAppMap.js","sourceRoot":"","sources":["../../../src/cmds/open/showAppMap.ts"],"names":[],"mappings":";;;;;AAAA,iDAAsC;AACtC,yEAAoC;AACpC,uCAA6E;AAQ7E,MAAM,OAAO,GAAa;IACxB,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,uBAAa,EAAE;IAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,sBAAY,EAAE;IACrC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,oBAAU,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAU,EAAE;IACtD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,oBAAU,EAAE;CACvD,CAAC;AAEa,KAAK,UAAU,UAAU,CAAC,UAAkB;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC7C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,WAAW,KAAK,QAAQ,EAAE;QAC7D,IAAA,qBAAK,EAAC,MAAM,EAAE,CAAC,IAAA,iBAAO,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACtC;SAAM;QACL,MAAM,IAAA,uBAAa,EAAC,UAAU,CAAC,CAAC;KACjC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,yBAAE,CAAC,MAAM,CAAC;QACjC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,iCAAiC;QAC1C,OAAO,EAAE,CAAC,UAAU,UAAU,EAAE,EAAE,MAAM,CAAC;KAC1C,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC/B,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;KAC9B;AACH,CAAC;AAjBD,6BAiBC"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.handler = exports.builder = exports.describe = exports.command = void 0;
|
|
7
4
|
const promises_1 = require("fs/promises");
|
|
8
5
|
const path_1 = require("path");
|
|
9
|
-
const puppeteer_1 = __importDefault(require("puppeteer"));
|
|
10
6
|
const handleWorkingDirectory_1 = require("../lib/handleWorkingDirectory");
|
|
11
7
|
const utils_1 = require("../utils");
|
|
12
8
|
const models_1 = require("@appland/models");
|
|
13
9
|
const sequence_diagram_1 = require("@appland/sequence-diagram");
|
|
14
|
-
const serveAndOpen_1 = require("../lib/serveAndOpen");
|
|
15
|
-
const assert_1 = __importDefault(require("assert"));
|
|
16
10
|
exports.command = 'sequence-diagram <appmap...>';
|
|
17
11
|
exports.describe = 'Generate a sequence diagram for an AppMap';
|
|
18
12
|
const builder = (args) => {
|
|
@@ -28,11 +22,6 @@ const builder = (args) => {
|
|
|
28
22
|
args.option('output-dir', {
|
|
29
23
|
describe: 'directory in which to save the sequence diagrams',
|
|
30
24
|
});
|
|
31
|
-
args.option('show-browser', {
|
|
32
|
-
describe: 'when using a browser to render the diagram, show the browser window',
|
|
33
|
-
type: 'boolean',
|
|
34
|
-
default: false,
|
|
35
|
-
});
|
|
36
25
|
args.option('loops', {
|
|
37
26
|
describe: 'identify loops and collect under a Loop object',
|
|
38
27
|
type: 'boolean',
|
|
@@ -41,8 +30,8 @@ const builder = (args) => {
|
|
|
41
30
|
args.option('format', {
|
|
42
31
|
describe: 'output format',
|
|
43
32
|
alias: 'f',
|
|
44
|
-
choices: ['
|
|
45
|
-
default: '
|
|
33
|
+
choices: ['plantuml', 'json'],
|
|
34
|
+
default: 'plantuml',
|
|
46
35
|
});
|
|
47
36
|
args.option('exclude', {
|
|
48
37
|
describe: 'code objects to exclude from the diagram',
|
|
@@ -58,17 +47,11 @@ const handler = async (argv) => {
|
|
|
58
47
|
process.exitCode = 1;
|
|
59
48
|
return;
|
|
60
49
|
}
|
|
61
|
-
if (
|
|
50
|
+
if (!sequence_diagram_1.Formatters.includes(argv.format)) {
|
|
62
51
|
console.log(`Invalid format: ${argv.format}`);
|
|
63
52
|
process.exitCode = 1;
|
|
64
53
|
return;
|
|
65
54
|
}
|
|
66
|
-
let browser;
|
|
67
|
-
if (argv.format === 'png') {
|
|
68
|
-
if ((0, utils_1.verbose)())
|
|
69
|
-
console.warn(`Preparing browser for PNG rendering`);
|
|
70
|
-
browser = await puppeteer_1.default.launch({ timeout: 120 * 1000, headless: !argv.showBrowser });
|
|
71
|
-
}
|
|
72
55
|
const generateDiagram = async (appmapFileName) => {
|
|
73
56
|
const appmapData = JSON.parse(await (0, promises_1.readFile)(appmapFileName, 'utf-8'));
|
|
74
57
|
const appmap = (0, models_1.buildAppMap)().source(appmapData).build();
|
|
@@ -77,57 +60,28 @@ const handler = async (argv) => {
|
|
|
77
60
|
};
|
|
78
61
|
if (argv.exclude)
|
|
79
62
|
specOptions.exclude = Array.isArray(argv.exclude) ? argv.exclude : [argv.exclude];
|
|
80
|
-
if (argv.outputDir)
|
|
81
|
-
await (0, promises_1.mkdir)(argv.outputDir, { recursive: true });
|
|
82
63
|
const specification = sequence_diagram_1.Specification.build(appmap, specOptions);
|
|
83
64
|
const diagram = (0, sequence_diagram_1.buildDiagram)(appmapFileName, appmap, specification);
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
};
|
|
99
|
-
if (argv.format === 'png') {
|
|
100
|
-
// PNG rendering is performed by loading the sequence
|
|
101
|
-
// diagram in a browser and taking a screenshot.
|
|
102
|
-
const diagramPath = await printDiagram(sequence_diagram_1.FormatType.JSON);
|
|
103
|
-
const outputPath = await new Promise((resolve) => (0, serveAndOpen_1.serveAndOpenSequenceDiagram)(diagramPath, false, async (url) => {
|
|
104
|
-
if ((0, utils_1.verbose)())
|
|
105
|
-
console.warn(`Rendering PNG`);
|
|
106
|
-
(0, assert_1.default)(browser, 'Browser not initialized');
|
|
107
|
-
const page = await browser.newPage();
|
|
108
|
-
if (argv.verbose)
|
|
109
|
-
page.on('console', (msg) => console.log('CONSOLE: ', msg.text()));
|
|
110
|
-
const outputPath = (0, path_1.join)((0, path_1.dirname)(diagramPath), [(0, path_1.basename)(diagramPath, '.json'), '.png'].join(''));
|
|
111
|
-
await page.goto(url);
|
|
112
|
-
await page.waitForSelector('.sequence-diagram');
|
|
113
|
-
await page.screenshot({ path: outputPath, fullPage: true });
|
|
114
|
-
resolve(outputPath);
|
|
115
|
-
}));
|
|
116
|
-
console.warn(`Printed diagram ${outputPath}`);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
// Other forms of output are produced directly by the
|
|
120
|
-
// sequence diagram library.
|
|
121
|
-
const outputPath = await printDiagram(argv.format);
|
|
122
|
-
console.log(`Printed diagram ${outputPath}`);
|
|
123
|
-
}
|
|
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}`);
|
|
124
80
|
};
|
|
125
81
|
for (let i = 0; i < argv.appmap.length; i++) {
|
|
126
82
|
const appmapFile = argv.appmap[i];
|
|
127
83
|
await generateDiagram(appmapFile);
|
|
128
84
|
}
|
|
129
|
-
if (browser)
|
|
130
|
-
await browser.close();
|
|
131
85
|
};
|
|
132
86
|
exports.handler = handler;
|
|
133
87
|
//# sourceMappingURL=sequenceDiagram.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequenceDiagram.js","sourceRoot":"","sources":["../../src/cmds/sequenceDiagram.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sequenceDiagram.js","sourceRoot":"","sources":["../../src/cmds/sequenceDiagram.ts"],"names":[],"mappings":";;;AAAA,0CAAyD;AACzD,+BAA+C;AAE/C,0EAAuE;AACvE,oCAAmC;AACnC,4CAA8C;AAC9C,gEAMmC;AAEtB,QAAA,OAAO,GAAG,8BAA8B,CAAC;AACzC,QAAA,QAAQ,GAAG,2CAA2C,CAAC;AAE7D,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QACvB,QAAQ,EAAE,2BAA2B;QACrC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QACxB,QAAQ,EAAE,kDAAkD;KAC7D,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,QAAQ,EAAE,gDAAgD;QAC1D,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;QAC7B,OAAO,EAAE,UAAU;KACpB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,QAAQ,EAAE,0CAA0C;KACrD,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC,CAAC;AA9BW,QAAA,OAAO,WA8BlB;AAEK,MAAM,OAAO,GAAG,KAAK,EAAE,IAAS,EAAE,EAAE;IACzC,IAAA,eAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,IAAA,+CAAsB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;KACR;IAED,IAAI,CAAC,6BAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;KACR;IAED,MAAM,eAAe,GAAG,KAAK,EAAE,cAAsB,EAAiB,EAAE;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAA,oBAAW,GAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAExD,MAAM,WAAW,GAAG;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;SACQ,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO;YACd,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpF,MAAM,aAAa,GAAG,gCAAa,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,cAAc,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAA,yBAAa,EAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAErE,MAAM,cAAc,GAAG;YACrB,IAAA,eAAQ,EAAC,cAAc,EAAE,cAAc,CAAC;YACxC,WAAW;YACX,QAAQ,CAAC,SAAS;SACnB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEX,IAAI,UAAkB,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS;YAAE,UAAU,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;;YACjE,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC;QAEhE,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;KACnC;AACH,CAAC,CAAC;AApDW,QAAA,OAAO,WAoDlB"}
|
package/built/html/appmap.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<html><head><title>
|
|
1
|
+
<html><head><title>Appmap Viewer</title><link rel="stylesheet" href="page.css"></head><body><div id="app"></div><script src="page.js" defer=""></script></body></html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
.appmap{position:relative;width:100%;min-width:inherit;max-width:inherit;height:100%;min-height:inherit;max-height:inherit;font-size:14px;font-family:IBM Plex Mono,monospace;overflow:hidden;user-select:none}.appmap__content{display:inline-block}.appmap.appmap--theme-dark{background-color:#010306}.appmap.appmap--theme-light{background-color:#fff}.appmap.is-grabbing{cursor:grabbing}.appmap__zoom{position:absolute;top:50%;right:0;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center}.appmap__zoom-button{border:none;border-radius:.5rem;padding:.25rem .5rem;appearance:none;background:#242c41;color:#808b98;font-weight:700;cursor:pointer;opacity:.8}.appmap__zoom-button:hover{opacity:1}.appmap__zoom-bar{margin:3px 6px;position:relative;width:20px;height:90px;cursor:pointer}.appmap__zoom-bar:before{content:"";position:absolute;top:-3px;left:50%;bottom:-3px;margin-left:-3px;width:6px;background:#242c41;opacity:.8}.appmap__zoom-grab{position:absolute;border-radius:3px;left:0;width:100%;height:6px;background:#808b98;cursor:grab}.appmap__context-menu{position:absolute;top:0;left:0;user-select:none}.appmap__context-menu .dropdown-menu{background-color:#242c41;box-shadow:4px 4px 1px #010306;top:100%;left:0;z-index:1000;display:block;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none}.appmap__context-menu .dropdown-menu p{display:block;margin:0;padding:.25rem 1.5rem;color:#808b98;white-space:nowrap;font-style:italic}.appmap__context-menu .dropdown-menu .dropdown-item{display:block;border:0;width:100%;padding:.25rem 1.5rem;color:#eaeaea;cursor:pointer;white-space:nowrap;background-color:transparent}.appmap__context-menu .dropdown-menu .dropdown-item:hover{color:#e3e5e8;background-color:#364262;text-decoration:none}.appmap__component-diagram{font-size:75%}.appmap__component-diagram:not(:root){overflow:visible}.appmap__component-diagram .node.highlight rect,.appmap__component-diagram .node.highlight circle,.appmap__component-diagram .node.highlight ellipse,.appmap__component-diagram .node.highlight path,.appmap__component-diagram .node.highlight polygon{stroke-width:3px}.appmap__component-diagram .node .label{font-size:inherit;font-weight:700;line-height:1}.appmap__component-diagram .node .label__icon,.appmap__component-diagram .cluster .label__icon{cursor:pointer}.appmap__component-diagram .edgePath path{stroke-width:3px}.appmap__component-diagram .edgePath>path{fill:none}.appmap__component-diagram .edgePath marker path{stroke-width:1px;stroke-dasharray:1px,0px}.appmap__component-diagram .nodeLabels{pointer-events:none}.appmap__component-diagram .nodeLabels .package.dim{opacity:1}.appmap--theme-dark .appmap__component-diagram .node.dim .label{fill:#181a1d}.appmap--theme-dark .appmap__component-diagram .node.external-service{fill:#ebdf90}.appmap--theme-dark .appmap__component-diagram .node.external-service .label{fill:#010306}.appmap--theme-dark .appmap__component-diagram .node.external-service.dim{fill:#181914}.appmap--theme-dark .appmap__component-diagram .node.package{fill:#6fddd6}.appmap--theme-dark .appmap__component-diagram .node.package .label{fill:#010306}.appmap--theme-dark .appmap__component-diagram .node.package.dim{fill:#0c191b}.appmap--theme-dark .appmap__component-diagram .node.class{fill:#4362b1}.appmap--theme-dark .appmap__component-diagram .node.class.dim{fill:#080d17}.appmap--theme-dark .appmap__component-diagram .node.database{fill:#9c2fba}.appmap--theme-dark .appmap__component-diagram .node.database path{stroke:#010306}.appmap--theme-dark .appmap__component-diagram .node.database.dim>path{fill:#110718}.appmap--theme-dark .appmap__component-diagram .node.http,.appmap--theme-dark .appmap__component-diagram .node.route{fill:#542168}.appmap--theme-dark .appmap__component-diagram .node.http.dim,.appmap--theme-dark .appmap__component-diagram .node.route.dim{fill:#090610}.appmap--theme-dark .appmap__component-diagram .node.class[data-parent-type=http]{fill:#542168}.appmap--theme-dark .appmap__component-diagram .node.class[data-parent-type=http].dim{fill:#090610}.appmap--theme-dark .appmap__component-diagram .node.io{fill:#f92672}.appmap--theme-dark .appmap__component-diagram .node.io.dim{fill:#1a0711}.appmap--theme-dark .appmap__component-diagram .node .label{fill:#e3e5e8}.appmap--theme-dark .appmap__component-diagram .node.highlight rect,.appmap--theme-dark .appmap__component-diagram .node.highlight circle,.appmap--theme-dark .appmap__component-diagram .node.highlight ellipse,.appmap--theme-dark .appmap__component-diagram .node.highlight path,.appmap--theme-dark .appmap__component-diagram .node.highlight polygon{stroke:#ff07aa}.appmap--theme-dark .appmap__component-diagram .cluster rect{fill:none;stroke:#ff07aa;stroke-width:0}.appmap--theme-dark .appmap__component-diagram .cluster--bordered rect{stroke-width:2}.appmap--theme-dark .appmap__component-diagram .cluster--package rect{fill:#051514;stroke:#6fddd6}.appmap--theme-dark .appmap__component-diagram .cluster--http rect{fill:#000;stroke:#542168}.appmap--theme-dark .appmap__component-diagram .cluster--database rect{stroke:#9c2fba}.appmap--theme-dark .appmap__component-diagram .cluster .label{fill:#e3e5e8;font-size:1rem;font-weight:700}.appmap--theme-dark .appmap__component-diagram .edgePath.highlight path{stroke:#ff07aa}.appmap--theme-dark .appmap__component-diagram .edgePath.highlight marker{fill:#ff07aa}.appmap--theme-dark .appmap__component-diagram .edgePath.highlight--inbound path{stroke:#6fddd6}.appmap--theme-dark .appmap__component-diagram .edgePath.highlight--inbound marker{fill:#6fddd6}.appmap--theme-dark .appmap__component-diagram .edgePath.dim marker{fill:#05070c}.appmap--theme-dark .appmap__component-diagram .edgePath.dim path{stroke:#05070c}.appmap--theme-dark .appmap__component-diagram .edgePath path{stroke:#242c41}.appmap--theme-dark .appmap__component-diagram .edgePath:not(.highlight):not(.dim):hover path{stroke:#5b6fa3}.appmap--theme-dark .appmap__component-diagram .edgePath:not(.highlight):not(.dim):hover marker{fill:#5b6fa3}.appmap--theme-dark .appmap__component-diagram .edgePath marker{fill:#242c41}.appmap--theme-dark .appmap__component-diagram .nodeLabels{fill:#e3e5e8}.appmap--theme-dark .appmap__component-diagram .nodeLabels .dim{opacity:10%}.appmap--theme-dark .appmap__component-diagram .nodeLabels .package{fill:#010306}.appmap--theme-dark .appmap__component-diagram .nodeLabels .label__children-count{fill-opacity:.7}.appmap--theme-light .appmap__component-diagram .node.dim .label{fill:#fff}.appmap--theme-light .appmap__component-diagram .node.external-service{fill:#ebdf90}.appmap--theme-light .appmap__component-diagram .node.external-service .label{fill:#fff}.appmap--theme-light .appmap__component-diagram .node.external-service.dim{fill:#fdfcf4}.appmap--theme-light .appmap__component-diagram .node.package{fill:#008b69}.appmap--theme-light .appmap__component-diagram .node.package .label{fill:#fff}.appmap--theme-light .appmap__component-diagram .node.package.dim{fill:#e6f3f0}.appmap--theme-light .appmap__component-diagram .node.class{fill:#919191}.appmap--theme-light .appmap__component-diagram .node.class.dim{fill:#f4f4f4}.appmap--theme-light .appmap__component-diagram .node.database{fill:#9c2fba}.appmap--theme-light .appmap__component-diagram .node.database path{stroke:#fff}.appmap--theme-light .appmap__component-diagram .node.database.dim>path{fill:#f5eaf8}.appmap--theme-light .appmap__component-diagram .node.http,.appmap--theme-light .appmap__component-diagram .node.route{fill:#8e45aa}.appmap--theme-light .appmap__component-diagram .node.http.dim,.appmap--theme-light .appmap__component-diagram .node.route.dim{fill:#f4ecf7}.appmap--theme-light .appmap__component-diagram .node.class[data-parent-type=http]{fill:#8e45aa}.appmap--theme-light .appmap__component-diagram .node.class[data-parent-type=http].dim{fill:#f4ecf7}.appmap--theme-light .appmap__component-diagram .node.io{fill:#8685ef}.appmap--theme-light .appmap__component-diagram .node.io.dim{fill:#f3f3fd}.appmap--theme-light .appmap__component-diagram .node .label{fill:#fff}.appmap--theme-light .appmap__component-diagram .node.highlight rect,.appmap--theme-light .appmap__component-diagram .node.highlight circle,.appmap--theme-light .appmap__component-diagram .node.highlight ellipse,.appmap--theme-light .appmap__component-diagram .node.highlight path,.appmap--theme-light .appmap__component-diagram .node.highlight polygon{stroke:#474554}.appmap--theme-light .appmap__component-diagram .cluster rect{fill:none;stroke:#474554;stroke-width:0}.appmap--theme-light .appmap__component-diagram .cluster--bordered rect{stroke-width:2}.appmap--theme-light .appmap__component-diagram .cluster--package rect{fill:#000;stroke:#008b69}.appmap--theme-light .appmap__component-diagram .cluster--http rect{fill:#150a19;stroke:#8e45aa}.appmap--theme-light .appmap__component-diagram .cluster--database rect{stroke:#9c2fba}.appmap--theme-light .appmap__component-diagram .cluster .label{fill:#fff;font-size:1rem;font-weight:700}.appmap--theme-light .appmap__component-diagram .edgePath.highlight path{stroke:#474554}.appmap--theme-light .appmap__component-diagram .edgePath.highlight marker{fill:#474554}.appmap--theme-light .appmap__component-diagram .edgePath.highlight--inbound path{stroke:#008b69}.appmap--theme-light .appmap__component-diagram .edgePath.highlight--inbound marker{fill:#008b69}.appmap--theme-light .appmap__component-diagram .edgePath.dim marker{fill:#f3f5f6}.appmap--theme-light .appmap__component-diagram .edgePath.dim path{stroke:#f3f5f6}.appmap--theme-light .appmap__component-diagram .edgePath path{stroke:#889fa5}.appmap--theme-light .appmap__component-diagram .edgePath:not(.highlight):not(.dim):hover path{stroke:#dfe5e7}.appmap--theme-light .appmap__component-diagram .edgePath:not(.highlight):not(.dim):hover marker{fill:#dfe5e7}.appmap--theme-light .appmap__component-diagram .edgePath marker{fill:#889fa5}.appmap--theme-light .appmap__component-diagram .nodeLabels{fill:#fff}.appmap--theme-light .appmap__component-diagram .nodeLabels .dim{opacity:10%}.appmap--theme-light .appmap__component-diagram .nodeLabels .package{fill:#fff}.appmap--theme-light .appmap__component-diagram .nodeLabels .label__children-count{fill-opacity:.7}
|
|
2
|
-
/*# sourceMappingURL=
|
|
2
|
+
/*# sourceMappingURL=page.css.map */
|