@appland/appmap 3.67.2 → 3.68.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.
@@ -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.67.2",
3
+ "version": "3.68.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",
@@ -108,6 +108,7 @@
108
108
  "port-pid": "^0.0.7",
109
109
  "pretty-bytes": "^5.6.0",
110
110
  "ps-node": "^0.1.6",
111
+ "puppeteer": "^19.7.5",
111
112
  "read-pkg-up": "^7.0.1",
112
113
  "semver": "^7.3.5",
113
114
  "strip-ansi": "^6.0.0",
@@ -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":";;;;;AAAA,2BAAsC;AACtC,+BAAoD;AAEpD,gDAAwB;AACxB,+BAAqC;AACrC,6BAA4B;AAC5B,uCAA8C;AAC9C,yEAAoC;AAEpC,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,CACL;QACE,EAAE,EAAE,wBAAwB;QAC5B,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,kBAAkB;KACxB,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,IAAI,0BAA0B,CACnD,CAAC;AACJ,CAAC;AAEc,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACjE,yBAAE,CAAC,QAAQ,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAE,EAAE;YAChE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;YAE1D,MAAM,UAAU,GAAG,IAAA,qBAAgB,EAAC,QAAQ,CAAC,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;gBACpB,IAAI,IAAA,eAAO,GAAE,EAAE;oBACb,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC;iBACjC;gBACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;gBAChC,IAAI,IAAA,eAAO,GAAE,EAAE;oBACb,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC;iBACjC;gBACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI;YACF,IAAI,IAAA,eAAO,GAAE,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACtB;YAED,IAAI,UAAU,GAAG,IAAA,WAAK,EAAC,GAAG,CAAC,GAAI,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YAErC,IAAI,QAAQ,KAAK,GAAG,EAAE;gBACpB,OAAO,eAAe,CAAC,IAAA,WAAI,EAAC,OAAO,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;aACnE;iBAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,KAAM,CAAC,CAAC;gBACzD,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,UAAU,EAAE;oBACd,OAAO,eAAe,CAAC,UAAW,EAAE,kBAAkB,CAAC,CAAC;iBACzD;aACF;iBAAM,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAChD,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrC,OAAO,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;aACpD;YAED,IAAI,IAAA,eAAO,GAAE,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC;aACjC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;SACX;QAAC,OAAO,CAAM,EAAE;YACf,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,0CAA0C;SACtD;IACH,CAAC,CAAC;SACC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAI,MAAO,CAAC,OAAO,EAAkB,CAAC,IAAI,CAAC;QACrD,OAAO,CAAC,oBAAoB,IAAI,YAAY,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;SACD,EAAE,CAAC,YAAY,EAAE,UAAU,MAAM;QAChC,oDAAoD;QACpD,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACb,CAAC;AAnED,qCAmEC;AAED,KAAK,UAAU,OAAO,CAAC,GAAW;IAChC,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,yBAAE,CAAC,IAAI,CAAC,wDAAwD,GAAG,uBAAuB,CAAC,CAAC;IAC9F,MAAM,EAAE,GAAG,MAAM,IAAA,cAAI,EAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9B,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC"}