@appland/appmap 3.68.1 → 3.70.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 (30) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/built/cmds/open/openers.js +3 -3
  3. package/built/cmds/open/openers.js.map +1 -1
  4. package/built/cmds/open/showAppMap.js +1 -8
  5. package/built/cmds/open/showAppMap.js.map +1 -1
  6. package/built/cmds/sequenceDiagram/browserRenderer.js +42 -0
  7. package/built/cmds/sequenceDiagram/browserRenderer.js.map +1 -0
  8. package/built/cmds/sequenceDiagram.js +57 -18
  9. package/built/cmds/sequenceDiagram.js.map +1 -1
  10. package/built/cmds/stats/directory/statsForDirectory.js +261 -0
  11. package/built/cmds/stats/directory/statsForDirectory.js.map +1 -0
  12. package/built/cmds/stats/directory/statsForMap.js +121 -0
  13. package/built/cmds/stats/directory/statsForMap.js.map +1 -0
  14. package/built/cmds/stats/stats.js +69 -247
  15. package/built/cmds/stats/stats.js.map +1 -1
  16. package/built/html/{page.css → appmap.css} +1 -1
  17. package/built/html/appmap.html +1 -1
  18. package/built/html/appmap.js +357 -0
  19. package/built/html/appmap.js.map +7 -0
  20. package/built/html/sequenceDiagram.css +2 -0
  21. package/built/html/sequenceDiagram.css.map +7 -0
  22. package/built/html/sequenceDiagram.html +1 -0
  23. package/built/html/{page.js → sequenceDiagram.js} +49 -49
  24. package/built/html/{page.js.map → sequenceDiagram.js.map} +4 -4
  25. package/built/lib/serveAndOpen.js +124 -0
  26. package/built/lib/serveAndOpen.js.map +1 -0
  27. package/package.json +9 -6
  28. package/built/cmds/open/serveAndOpenAppMap.js +0 -91
  29. package/built/cmds/open/serveAndOpenAppMap.js.map +0 -1
  30. /package/built/html/{page.css.map → appmap.css.map} +0 -0
@@ -0,0 +1,124 @@
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.serveAndOpenAppMap = exports.serveAndOpenSequenceDiagram = void 0;
7
+ const fs_1 = require("fs");
8
+ const http_1 = require("http");
9
+ const open_1 = __importDefault(require("open"));
10
+ const path_1 = require("path");
11
+ const url_1 = require("url");
12
+ const utils_1 = require("../utils");
13
+ const userInteraction_1 = __importDefault(require("../cmds/userInteraction"));
14
+ function mimeTypeOfName(filename) {
15
+ return ({
16
+ js: 'application/javascript',
17
+ css: 'text/css',
18
+ json: 'application/json',
19
+ map: 'application/json',
20
+ }[(0, path_1.extname)(filename)] || 'application/octet-stream');
21
+ }
22
+ async function serveAndOpen(file, resources, verifyInSubdir, onListen) {
23
+ userInteraction_1.default.progress(`Opening ${file}`);
24
+ const baseDir = (0, path_1.join)(__dirname, '..', '..', 'built', 'html');
25
+ if (!(await (0, utils_1.exists)((0, path_1.join)(baseDir, file))))
26
+ throw new Error(`File ${file} does not exist`);
27
+ const server = (0, http_1.createServer)(async (req, res) => {
28
+ const send404 = () => {
29
+ res.writeHead(404);
30
+ res.end();
31
+ };
32
+ const serveStaticFile = (dir, fileName, contentType) => {
33
+ const path = (0, path_1.isAbsolute)(fileName) ? fileName : (0, path_1.join)(dir, fileName);
34
+ if (verifyInSubdir && !path.startsWith(dir))
35
+ return send404();
36
+ if (!contentType)
37
+ contentType = mimeTypeOfName(fileName);
38
+ res.writeHead(200, 'OK', { 'Content-Type': contentType });
39
+ const fileStream = (0, fs_1.createReadStream)(path);
40
+ fileStream.pipe(res);
41
+ fileStream.on('open', function () {
42
+ if ((0, utils_1.verbose)()) {
43
+ console.log(`${path}: 200`);
44
+ }
45
+ res.writeHead(200);
46
+ });
47
+ fileStream.on('error', function (e) {
48
+ if ((0, utils_1.verbose)()) {
49
+ console.log(`${path}: 404 (${e})`);
50
+ }
51
+ send404();
52
+ });
53
+ };
54
+ try {
55
+ if ((0, utils_1.verbose)()) {
56
+ console.log(req.url);
57
+ }
58
+ const requestUrl = (0, url_1.parse)(req.url);
59
+ const pathname = requestUrl.pathname;
60
+ if (pathname === '/') {
61
+ return serveStaticFile(baseDir, file, 'text/html');
62
+ }
63
+ else if (pathname === '/resource') {
64
+ const pathname = requestUrl.query;
65
+ if (pathname)
66
+ serveStaticFile(process.cwd(), decodeURIComponent(pathname));
67
+ else
68
+ send404();
69
+ }
70
+ else {
71
+ serveStaticFile(baseDir, (pathname || '/').slice(1));
72
+ }
73
+ }
74
+ catch (e) {
75
+ console.log(e.stack);
76
+ res.writeHead(500);
77
+ res.end(); // end the response so browsers don't hang
78
+ }
79
+ })
80
+ .listen(0, '127.0.0.1', () => {
81
+ const port = server.address().port;
82
+ const params = new URLSearchParams();
83
+ for (const [key, value] of Object.entries(resources)) {
84
+ params.append(key, value);
85
+ }
86
+ const url = new URL(`http://localhost:${port}/?${params.toString()}`);
87
+ onListen(url.toString());
88
+ })
89
+ .on('connection', function (socket) {
90
+ // Don't let the open socket keep the process alive.
91
+ socket.unref();
92
+ })
93
+ .unref();
94
+ }
95
+ exports.default = serveAndOpen;
96
+ async function serveAndOpenSequenceDiagram(diagramFile, verifyInSubdir, onListen) {
97
+ return new Promise((resolve) => {
98
+ serveAndOpen('sequenceDiagram.html', {
99
+ diagram: diagramFile,
100
+ }, verifyInSubdir, async (url) => {
101
+ onListen(url);
102
+ resolve(url);
103
+ });
104
+ });
105
+ }
106
+ exports.serveAndOpenSequenceDiagram = serveAndOpenSequenceDiagram;
107
+ async function serveAndOpenAppMap(appMapFile, verifyInSubdir) {
108
+ return new Promise((resolve) => {
109
+ serveAndOpen('appmap.html', {
110
+ appmap: appMapFile,
111
+ }, verifyInSubdir, async (url) => {
112
+ await tryOpen(url);
113
+ resolve(url);
114
+ });
115
+ });
116
+ }
117
+ exports.serveAndOpenAppMap = serveAndOpenAppMap;
118
+ async function tryOpen(url) {
119
+ const showMessage = () => userInteraction_1.default.warn(`\nWe could not open the browser automatically.\nOpen ${url} to view the content.\n`);
120
+ const cp = await (0, open_1.default)(url);
121
+ cp.once('error', showMessage);
122
+ cp.once('exit', (code, signal) => (code || signal) && showMessage());
123
+ }
124
+ //# sourceMappingURL=serveAndOpen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serveAndOpen.js","sourceRoot":"","sources":["../../src/lib/serveAndOpen.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appland/appmap",
3
- "version": "3.68.1",
3
+ "version": "3.70.0",
4
4
  "description": "",
5
5
  "bin": "built/cli.js",
6
6
  "publishConfig": {
@@ -26,14 +26,14 @@
26
26
  "prettier --write"
27
27
  ]
28
28
  },
29
- "author": "",
29
+ "author": "AppLand, Inc",
30
30
  "license": "MIT",
31
31
  "devDependencies": {
32
32
  "@craftamap/esbuild-plugin-html": "^0.4.0",
33
33
  "@types/fs-extra": "^9.0.13",
34
34
  "@types/gitconfiglocal": "^2.0.1",
35
35
  "@types/inquirer": "^9.0.3",
36
- "@types/jest": "^27.0.1",
36
+ "@types/jest": "^29.4.1",
37
37
  "@types/jest-sinon": "^1.0.2",
38
38
  "@types/jsdom": "^16.2.13",
39
39
  "@types/node": "^16",
@@ -48,8 +48,8 @@
48
48
  "eslint-config-prettier": "^8.3.0",
49
49
  "eslint-plugin-import": "^2.22.1",
50
50
  "eslint-plugin-prettier": "^3.4.0",
51
- "jest": "^27.4.7",
52
- "jest-sinon": "^1.0.4",
51
+ "jest": "^29.5.0",
52
+ "jest-sinon": "^1.1.0",
53
53
  "lint-staged": "^10.5.4",
54
54
  "memfs": "^3.4.13",
55
55
  "openapi-types": "^12.1.0",
@@ -57,7 +57,7 @@
57
57
  "sinon": "^11.1.2",
58
58
  "tmp": "^0.2.1",
59
59
  "tmp-promise": "^3.0.3",
60
- "ts-jest": "^27.1.4",
60
+ "ts-jest": "^29.0.5",
61
61
  "ts-node": "^10.9.1",
62
62
  "ts-sinon": "^2.0.2",
63
63
  "tsc": "^2.0.3",
@@ -132,5 +132,8 @@
132
132
  "built/appmap.html"
133
133
  ],
134
134
  "outputPath": "dist"
135
+ },
136
+ "optionalDependencies": {
137
+ "puppeteer": "^19.7.5"
135
138
  }
136
139
  }
@@ -1,91 +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 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
@@ -1 +0,0 @@
1
- {"version":3,"file":"serveAndOpenAppMap.js","sourceRoot":"","sources":["../../../src/cmds/open/serveAndOpenAppMap.ts"],"names":[],"mappings":"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"}
File without changes