@appland/appmap 3.75.1 → 3.77.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 +18 -0
- package/built/cli.js +4 -179
- package/built/cli.js.map +1 -1
- package/built/cmds/openapi.js +4 -23
- package/built/cmds/openapi.js.map +1 -1
- package/built/cmds/prune/prune.js +8 -7
- package/built/cmds/prune/prune.js.map +1 -1
- package/built/cmds/prune/pruneAppMap.js +13 -47
- package/built/cmds/prune/pruneAppMap.js.map +1 -1
- package/built/cmds/sequenceDiagram.js +13 -3
- package/built/cmds/sequenceDiagram.js.map +1 -1
- package/built/depends.js +1 -1
- package/built/depends.js.map +1 -1
- package/built/fingerprint/canonicalize.js +0 -3
- package/built/fingerprint/canonicalize.js.map +1 -1
- package/built/fingerprint/fingerprintDirectoryCommand.js +2 -1
- package/built/fingerprint/fingerprintDirectoryCommand.js.map +1 -1
- package/built/fingerprint/fingerprintQueue.js +2 -2
- package/built/fingerprint/fingerprintQueue.js.map +1 -1
- package/built/fingerprint/fingerprinter.js +18 -29
- package/built/fingerprint/fingerprinter.js.map +1 -1
- package/built/html/appmap.js +83 -80
- package/built/html/appmap.js.map +4 -4
- package/built/html/sequenceDiagram.js +83 -80
- package/built/html/sequenceDiagram.js.map +4 -4
- package/built/lib/fileSizeFilter.js +26 -0
- package/built/lib/fileSizeFilter.js.map +1 -0
- package/built/lib/filterAppMap.js +9 -0
- package/built/lib/filterAppMap.js.map +1 -0
- package/built/lib/flattenMetadata.js +1 -1
- package/built/lib/serveAndOpen.js +3 -3
- package/built/lib/serveAndOpen.js.map +1 -1
- package/built/lib/sqlErrorLog.js +24 -0
- package/built/lib/sqlErrorLog.js.map +1 -0
- package/package.json +1 -1
- package/built/fingerprint/canonicalize/info.js +0 -48
- package/built/fingerprint/canonicalize/info.js.map +0 -1
- package/built/fingerprint/canonicalize/trace.js +0 -51
- package/built/fingerprint/canonicalize/trace.js.map +0 -1
- package/built/fingerprint/canonicalize/update.js +0 -67
- package/built/fingerprint/canonicalize/update.js.map +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fileSizeFilter = exports.DefaultMaxAppMapSizeInMB = void 0;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
exports.DefaultMaxAppMapSizeInMB = 50;
|
|
6
|
+
// Skip files that are larger than a specified max size.
|
|
7
|
+
function fileSizeFilter(maxFileSize) {
|
|
8
|
+
return async (file) => {
|
|
9
|
+
let fileStat;
|
|
10
|
+
try {
|
|
11
|
+
fileStat = await (0, promises_1.stat)(file);
|
|
12
|
+
}
|
|
13
|
+
catch (_a) {
|
|
14
|
+
return { enable: false, message: `File ${file} not found` };
|
|
15
|
+
}
|
|
16
|
+
if (fileStat.size <= maxFileSize)
|
|
17
|
+
return { enable: true };
|
|
18
|
+
else
|
|
19
|
+
return {
|
|
20
|
+
enable: false,
|
|
21
|
+
message: `Skipping ${file} as its file size of ${fileStat.size} bytes is larger than the maximum configured file size of ${maxFileSize} bytes`,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.fileSizeFilter = fileSizeFilter;
|
|
26
|
+
//# sourceMappingURL=fileSizeFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSizeFilter.js","sourceRoot":"","sources":["../../src/lib/fileSizeFilter.ts"],"names":[],"mappings":";;;AACA,0CAAmC;AAGtB,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAE3C,wDAAwD;AACxD,SAAgB,cAAc,CAAC,WAAmB;IAChD,OAAO,KAAK,EAAE,IAAY,EAAkD,EAAE;QAC5E,IAAI,QAAe,CAAC;QACpB,IAAI;YACF,QAAQ,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,CAAC;SAC7B;QAAC,WAAM;YACN,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,CAAC;SAC7D;QAED,IAAI,QAAQ,CAAC,IAAI,IAAI,WAAW;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;YAExD,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,YAAY,IAAI,wBAAwB,QAAQ,CAAC,IAAI,6DAA6D,WAAW,QAAQ;aAC/I,CAAC;IACN,CAAC,CAAC;AACJ,CAAC;AAhBD,wCAgBC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("@appland/models");
|
|
4
|
+
function filterAppMap(appMap, serializedFilter) {
|
|
5
|
+
const appmapFilter = (0, models_1.deserializeFilter)((0, models_1.filterStringToFilterState)(serializedFilter));
|
|
6
|
+
return appmapFilter.filter(appMap, []);
|
|
7
|
+
}
|
|
8
|
+
exports.default = filterAppMap;
|
|
9
|
+
//# sourceMappingURL=filterAppMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterAppMap.js","sourceRoot":"","sources":["../../src/lib/filterAppMap.ts"],"names":[],"mappings":";;AAAA,4CAAuF;AAEvF,SAAwB,YAAY,CAAC,MAAc,EAAE,gBAAwB;IAC3E,MAAM,YAAY,GAAG,IAAA,0BAAiB,EAAC,IAAA,kCAAyB,EAAC,gBAAgB,CAAC,CAAC,CAAC;IACpF,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAHD,+BAGC"}
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const repositoryInfo_1 = __importDefault(require("./repositoryInfo"));
|
|
7
7
|
/** Flattens metadata into a string-string map suitable for use in telemetry.
|
|
8
|
-
* Ignores git
|
|
8
|
+
* Ignores git and exception.
|
|
9
9
|
*/
|
|
10
10
|
function flattenMetadata(metadata) {
|
|
11
11
|
var _a;
|
|
@@ -60,7 +60,7 @@ async function serveAndOpen(file, resources, verifyInSubdir, onListen) {
|
|
|
60
60
|
if (pathname === '/') {
|
|
61
61
|
return serveStaticFile(baseDir, file, 'text/html');
|
|
62
62
|
}
|
|
63
|
-
else if (pathname
|
|
63
|
+
else if (pathname && pathname.startsWith('/resource')) {
|
|
64
64
|
const pathname = requestUrl.query;
|
|
65
65
|
if (pathname)
|
|
66
66
|
serveStaticFile(process.cwd(), decodeURIComponent(pathname));
|
|
@@ -96,7 +96,7 @@ exports.default = serveAndOpen;
|
|
|
96
96
|
async function serveAndOpenSequenceDiagram(diagramFile, verifyInSubdir, onListen) {
|
|
97
97
|
return new Promise((resolve) => {
|
|
98
98
|
serveAndOpen('sequenceDiagram.html', {
|
|
99
|
-
diagram: diagramFile,
|
|
99
|
+
diagram: ['resource', encodeURIComponent(diagramFile)].join('?'),
|
|
100
100
|
}, verifyInSubdir, async (url) => {
|
|
101
101
|
onListen(url);
|
|
102
102
|
resolve(url);
|
|
@@ -107,7 +107,7 @@ exports.serveAndOpenSequenceDiagram = serveAndOpenSequenceDiagram;
|
|
|
107
107
|
async function serveAndOpenAppMap(appMapFile, verifyInSubdir) {
|
|
108
108
|
return new Promise((resolve) => {
|
|
109
109
|
serveAndOpen('appmap.html', {
|
|
110
|
-
appmap: appMapFile,
|
|
110
|
+
appmap: ['resource', encodeURIComponent(appMapFile)].join('?'),
|
|
111
111
|
}, verifyInSubdir, async (url) => {
|
|
112
112
|
await tryOpen(url);
|
|
113
113
|
resolve(url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serveAndOpen.js","sourceRoot":"","sources":["../../src/lib/serveAndOpen.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"serveAndOpen.js","sourceRoot":"","sources":["../../src/lib/serveAndOpen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const promises_1 = require("fs/promises");
|
|
4
|
+
const SqlErrors = new Set();
|
|
5
|
+
const SqlParseErrorFileName = 'sql_warning.txt';
|
|
6
|
+
let SqlParseErrorFile;
|
|
7
|
+
async function writeErrorToFile(error) {
|
|
8
|
+
if (!SqlParseErrorFile)
|
|
9
|
+
SqlParseErrorFile = await (0, promises_1.open)(SqlParseErrorFileName, 'w');
|
|
10
|
+
SqlParseErrorFile.write([error.toString(), ''].join('\n'));
|
|
11
|
+
}
|
|
12
|
+
process.on('exit', () => {
|
|
13
|
+
if (SqlParseErrorFile)
|
|
14
|
+
SqlParseErrorFile.close();
|
|
15
|
+
SqlParseErrorFile = undefined;
|
|
16
|
+
});
|
|
17
|
+
function sqlErrorLog(parseError) {
|
|
18
|
+
if (!SqlErrors.has(parseError.sql)) {
|
|
19
|
+
writeErrorToFile(parseError);
|
|
20
|
+
SqlErrors.add(parseError.sql);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.default = sqlErrorLog;
|
|
24
|
+
//# sourceMappingURL=sqlErrorLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlErrorLog.js","sourceRoot":"","sources":["../../src/lib/sqlErrorLog.ts"],"names":[],"mappings":";;AACA,0CAA+C;AAE/C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAChD,IAAI,iBAAyC,CAAC;AAE9C,KAAK,UAAU,gBAAgB,CAAC,KAAiB;IAC/C,IAAI,CAAC,iBAAiB;QAAE,iBAAiB,GAAG,MAAM,IAAA,eAAI,EAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAEnF,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,IAAI,iBAAiB;QAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAEjD,iBAAiB,GAAG,SAAS,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,SAAwB,WAAW,CAAC,UAAsB;IACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAClC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC7B,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC/B;AACH,CAAC;AALD,8BAKC"}
|
package/package.json
CHANGED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* eslint-disable class-methods-use-this */
|
|
3
|
-
const { analyzeSQL } = require('@appland/models');
|
|
4
|
-
const EventTree = require('./eventTree');
|
|
5
|
-
/**
|
|
6
|
-
* At INFO level, the order of labeled function calls matters. SQL query strings
|
|
7
|
-
* are collected, sorted and made unique.
|
|
8
|
-
*/
|
|
9
|
-
class Canonicalize extends EventTree {
|
|
10
|
-
sql(event) {
|
|
11
|
-
return {
|
|
12
|
-
kind: 'sql',
|
|
13
|
-
sql: {
|
|
14
|
-
analyzed_query: analyzeSQL(event.sqlQuery),
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
httpClientRequest(event) {
|
|
19
|
-
return {
|
|
20
|
-
kind: 'http_client_request',
|
|
21
|
-
route: event.route,
|
|
22
|
-
parameter_names: event.message ? event.message.map((m) => m.name) : null,
|
|
23
|
-
status_code: event.httpClientResponse ? event.httpClientResponse.status_code : null,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
httpServerRequest(event) {
|
|
27
|
-
return {
|
|
28
|
-
kind: 'http_server_request',
|
|
29
|
-
route: event.route,
|
|
30
|
-
parameter_names: event.message ? event.message.map((m) => m.name) : null,
|
|
31
|
-
status_code: event.httpServerResponse
|
|
32
|
-
? event.httpServerResponse.status || event.httpServerResponse.status_code
|
|
33
|
-
: null,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
functionCall(event) {
|
|
37
|
-
const labels = this.whitelistedLabels(event.codeObject.labels);
|
|
38
|
-
if (labels.length === 0) {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
kind: 'function',
|
|
43
|
-
labels,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
module.exports = (appmap) => new Canonicalize(appmap).execute();
|
|
48
|
-
//# sourceMappingURL=info.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/fingerprint/canonicalize/info.js"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzC;;;GAGG;AACH,MAAM,YAAa,SAAQ,SAAS;IAClC,GAAG,CAAC,KAAK;QACP,OAAO;YACL,IAAI,EAAE,KAAK;YACX,GAAG,EAAE;gBACH,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC3C;SACF,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,KAAK;QACrB,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;SACpF,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,KAAK;QACrB,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,WAAW,EAAE,KAAK,CAAC,kBAAkB;gBACnC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,WAAW;gBACzE,CAAC,CAAC,IAAI;SACT,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAAK;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM;SACP,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* eslint-disable class-methods-use-this */
|
|
3
|
-
const { normalizeSQL, analyzeSQL } = require('@appland/models');
|
|
4
|
-
const EventTree = require('./eventTree');
|
|
5
|
-
/**
|
|
6
|
-
* At TRACE level, the order of labeled function calls matters, and all function class
|
|
7
|
-
* and method names are retained. SQL queries are also retained in order. HTTP
|
|
8
|
-
* server and client request parameters are retained.
|
|
9
|
-
*/
|
|
10
|
-
class Canonicalize extends EventTree {
|
|
11
|
-
sql(event) {
|
|
12
|
-
const analyzedQuery = analyzeSQL(event.sqlQuery);
|
|
13
|
-
const result = {
|
|
14
|
-
kind: 'sql',
|
|
15
|
-
sql: {
|
|
16
|
-
normalized_query: normalizeSQL(event.sqlQuery, event.sql.database_type),
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
if (analyzedQuery && typeof analyzedQuery === 'object') {
|
|
20
|
-
result.analyzed_query = analyzedQuery;
|
|
21
|
-
}
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
httpClientRequest(event) {
|
|
25
|
-
return {
|
|
26
|
-
kind: 'http_client_request',
|
|
27
|
-
route: event.route,
|
|
28
|
-
parameter_names: event.message ? event.message.map((m) => m.name) : null,
|
|
29
|
-
status_code: event.httpClientResponse ? event.httpClientResponse.status_code : null,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
httpServerRequest(event) {
|
|
33
|
-
return {
|
|
34
|
-
kind: 'http_server_request',
|
|
35
|
-
route: event.route,
|
|
36
|
-
parameter_names: event.message ? event.message.map((m) => m.name) : null,
|
|
37
|
-
status_code: event.httpServerResponse
|
|
38
|
-
? event.httpServerResponse.status || event.httpServerResponse.status_code
|
|
39
|
-
: null,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
functionCall(event) {
|
|
43
|
-
return {
|
|
44
|
-
kind: 'function',
|
|
45
|
-
function: event.codeObject.id,
|
|
46
|
-
labels: [...event.codeObject.labels],
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
module.exports = (appmap) => new Canonicalize(appmap).execute();
|
|
51
|
-
//# sourceMappingURL=trace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/fingerprint/canonicalize/trace.js"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzC;;;;GAIG;AACH,MAAM,YAAa,SAAQ,SAAS;IAClC,GAAG,CAAC,KAAK;QACP,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,KAAK;YACX,GAAG,EAAE;gBACH,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;aACxE;SACF,CAAC;QACF,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACtD,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC;SACvC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iBAAiB,CAAC,KAAK;QACrB,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;SACpF,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,KAAK;QACrB,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,WAAW,EAAE,KAAK,CAAC,kBAAkB;gBACnC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,WAAW;gBACzE,CAAC,CAAC,IAAI;SACT,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAAK;QAChB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;SACrC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* eslint-disable class-methods-use-this */
|
|
3
|
-
const { analyzeSQL, normalizeSQL } = require('@appland/models');
|
|
4
|
-
const EventTree = require('./eventTree');
|
|
5
|
-
/**
|
|
6
|
-
* At UPDATE level, the order of events is not important, and the amount of data
|
|
7
|
-
* retained about events is minimal. Function labels are retained. HTTP server
|
|
8
|
-
* and client request method, route, and status code are retained; but not parameter
|
|
9
|
-
* names.
|
|
10
|
-
*/
|
|
11
|
-
class Canonicalize extends EventTree {
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* @param {Event} event
|
|
15
|
-
*/
|
|
16
|
-
sql(event) {
|
|
17
|
-
const analyzedQuery = analyzeSQL(event.sqlQuery);
|
|
18
|
-
if (typeof analyzedQuery === 'string') {
|
|
19
|
-
const sqlLower = event.sqlQuery.toLowerCase();
|
|
20
|
-
if (sqlLower.indexOf('insert') !== -1 || sqlLower.indexOf('update') !== -1) {
|
|
21
|
-
return {
|
|
22
|
-
kind: 'sql',
|
|
23
|
-
sql: {
|
|
24
|
-
normalized_query: normalizeSQL(event.sqlQuery, event.sql.database_type),
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
else if (analyzedQuery && analyzedQuery.actions) {
|
|
30
|
-
if (['insert', 'update', 'delete'].find((x) => analyzedQuery.actions.includes(x))) {
|
|
31
|
-
return {
|
|
32
|
-
kind: 'sql',
|
|
33
|
-
sql: {
|
|
34
|
-
analyzed_query: analyzedQuery,
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
httpClientRequest(event) {
|
|
42
|
-
return {
|
|
43
|
-
kind: 'http_client_request',
|
|
44
|
-
route: event.route,
|
|
45
|
-
status_code: event.httpClientResponse ? event.httpClientResponse.status_code : null,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
httpServerRequest(event) {
|
|
49
|
-
return {
|
|
50
|
-
kind: 'http_server_request',
|
|
51
|
-
route: event.route,
|
|
52
|
-
status_code: event.httpServerResponse ? event.httpServerResponse.status_code : null,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
functionCall(event) {
|
|
56
|
-
const labels = this.whitelistedLabels(event.codeObject.labels);
|
|
57
|
-
if (labels.length === 0) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
kind: 'function',
|
|
62
|
-
labels,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
module.exports = (appmap) => new Canonicalize(appmap).execute();
|
|
67
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/fingerprint/canonicalize/update.js"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,YAAa,SAAQ,SAAS;IAClC;;;OAGG;IACH,GAAG,CAAC,KAAK;QACP,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC1E,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE;wBACH,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;qBACxE;iBACF,CAAC;aACH;SACF;aAAM,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,EAAE;YACjD,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjF,OAAO;oBACL,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE;wBACH,cAAc,EAAE,aAAa;qBAC9B;iBACF,CAAC;aACH;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,KAAK;QACrB,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;SACpF,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,KAAK;QACrB,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;SACpF,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAAK;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM;SACP,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC"}
|