@appland/appmap 3.94.0 → 3.95.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 +8 -0
- package/built/cmds/archive/analyzeWorker.js +7 -3
- package/built/cmds/archive/analyzeWorker.js.map +1 -1
- package/built/cmds/archive/index.js +11 -1
- package/built/cmds/archive/index.js.map +1 -1
- package/built/lib/emitUsage.js +16 -13
- package/built/lib/emitUsage.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
# [@appland/appmap-v3.95.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.94.0...@appland/appmap-v3.95.0) (2023-09-11)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* Index emits run stats under `.appmap/run-stats` ([0b359b1](https://github.com/getappmap/appmap-js/commit/0b359b130225246da3fce9f9e4d8ba992e95b050))
|
|
7
|
+
* Index worker emits metadata upon completion ([e4fd699](https://github.com/getappmap/appmap-js/commit/e4fd699dc7cca5dab9d92b6575d5b9646191534b))
|
|
8
|
+
|
|
1
9
|
# [@appland/appmap-v3.94.0](https://github.com/getappmap/appmap-js/compare/@appland/appmap-v3.93.1...@appland/appmap-v3.94.0) (2023-09-11)
|
|
2
10
|
|
|
3
11
|
|
|
@@ -38,8 +38,12 @@ worker_threads_1.parentPort.on('message', async (task) => {
|
|
|
38
38
|
if ((0, IndexTask_1.isIndexTask)(task)) {
|
|
39
39
|
const handler = new fingerprinter_1.default();
|
|
40
40
|
handler.maxFileSizeInBytes = undefined; // This has already been checked
|
|
41
|
-
await
|
|
42
|
-
|
|
41
|
+
result = await new Promise((resolve) => {
|
|
42
|
+
handler.on('index', ({ metadata, numEvents }) => {
|
|
43
|
+
resolve({ metadata, numEvents });
|
|
44
|
+
});
|
|
45
|
+
handler.fingerprint(task.appmapFile);
|
|
46
|
+
});
|
|
43
47
|
}
|
|
44
48
|
else if ((0, ScanTask_1.isScanTask)(task)) {
|
|
45
49
|
const scanResults = await (0, scanner_1.scan)(task.appmapFile, 'appmap-scanner.yml');
|
|
@@ -62,7 +66,7 @@ worker_threads_1.parentPort.on('message', async (task) => {
|
|
|
62
66
|
else {
|
|
63
67
|
throw new Error(`Unknown task`);
|
|
64
68
|
}
|
|
65
|
-
worker_threads_1.parentPort.postMessage(result);
|
|
69
|
+
worker_threads_1.parentPort.postMessage({ result });
|
|
66
70
|
}
|
|
67
71
|
catch (err) {
|
|
68
72
|
worker_threads_1.parentPort.postMessage({ error: err });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeWorker.js","sourceRoot":"","sources":["../../../src/cmds/archive/analyzeWorker.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,mDAA4C;AAC5C,IAAA,gBAAM,EAAC,2BAAU,CAAC,CAAC;AAEnB,4CAAkE;AAElE,wEAAgD;AAChD,uCAAsC;AACtC,+CAAwD;AACxD,gFAAoG;AAGpG,0CAAwD;AACxD,8CAAwC;AACxC,+BAA+C;AAC/C,gEAAsD;AACtD,gEAA4F;AAC5F,kDAA4D;AAE5D,oFAA4D;AAE5D,IAAA,2BAAkB,EAAC,qBAAW,CAAC,CAAC;AAEhC,2BAAU,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAgD,EAAE,EAAE;;IAClF,IAAA,gBAAM,EAAC,2BAAU,CAAC,CAAC;IACnB,IAAI,IAAI,CAAC,OAAO;QAAE,IAAA,eAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,cAAc,GAAG,KAAK,EAAE,IAAY,EAAE,QAAgB,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAA,eAAQ,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3F,MAAM,IAAA,oBAAS,EAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAC7B,2BAAU,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO;SACR;QAED,IAAI,MAAwD,CAAC;QAC7D,IAAI,IAAA,uBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,MAAM,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;YACpC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC,gCAAgC;YACxE,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzeWorker.js","sourceRoot":"","sources":["../../../src/cmds/archive/analyzeWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const processAppMapDir_1 = __importDefault(require("../../lib/processAppMapDir")
|
|
|
8
8
|
const utils_1 = require("../../utils");
|
|
9
9
|
const path_1 = require("path");
|
|
10
10
|
const promises_1 = require("fs/promises");
|
|
11
|
+
const emitUsage_1 = __importDefault(require("../../lib/emitUsage"));
|
|
11
12
|
async function index(workerPool, maxAppMapSizeInBytes, appMapDir, oversizedAppMaps, failedTests) {
|
|
12
13
|
const task = (file) => ({
|
|
13
14
|
name: 'index',
|
|
@@ -16,7 +17,16 @@ async function index(workerPool, maxAppMapSizeInBytes, appMapDir, oversizedAppMa
|
|
|
16
17
|
maxSize: maxAppMapSizeInBytes,
|
|
17
18
|
});
|
|
18
19
|
const startTime = new Date().getTime();
|
|
19
|
-
|
|
20
|
+
let sampleMetadata;
|
|
21
|
+
let totalEvents = 0;
|
|
22
|
+
const result = await (0, processAppMapDir_1.default)('Indexing AppMaps', workerPool, task, appMapDir, undefined, async (_appmap, { result: { metadata, numEvents } }) => {
|
|
23
|
+
if (!sampleMetadata)
|
|
24
|
+
sampleMetadata = metadata;
|
|
25
|
+
totalEvents += numEvents;
|
|
26
|
+
});
|
|
27
|
+
if (sampleMetadata) {
|
|
28
|
+
await (0, emitUsage_1.default)(appMapDir, totalEvents, result.numProcessed, sampleMetadata);
|
|
29
|
+
}
|
|
20
30
|
const elapsed = new Date().getTime() - startTime;
|
|
21
31
|
console.log(`Indexed ${result.numProcessed} AppMaps in ${elapsed}ms`);
|
|
22
32
|
for (const file of result.oversized)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/archive/index.ts"],"names":[],"mappings":";;;;;;AACA,kFAA0D;AAC1D,uCAAiD;AAGjD,+BAA+C;AAC/C,0CAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/archive/index.ts"],"names":[],"mappings":";;;;;;AACA,kFAA0D;AAC1D,uCAAiD;AAGjD,+BAA+C;AAC/C,0CAAuC;AAEvC,oEAA4C;AAErC,KAAK,UAAU,KAAK,CACzB,UAAsB,EACtB,oBAA4B,EAC5B,SAAiB,EACjB,gBAA6B,EAC7B,WAAwB;IAExB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAa,EAAE,CAAC,CAAC;QACzC,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAA,eAAO,GAAE;QAClB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,oBAAoB;KAC9B,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAEvC,IAAI,cAAoC,CAAC;IACzC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAgB,EACnC,kBAAkB,EAClB,UAAU,EACV,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;QACrD,IAAI,CAAC,cAAc;YAAE,cAAc,GAAG,QAAQ,CAAC;QAC/C,WAAW,IAAI,SAAS,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,IAAI,cAAc,EAAE;QAClB,MAAM,IAAA,mBAAS,EAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;KAC9E;IAED,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,YAAY,eAAe,OAAO,IAAI,CAAC,CAAC;IACtE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS;QAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEhE,MAAM,aAAa,GAAG,MAAM,IAAA,iBAAS,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,KAAK,eAAe,CAAC,CAAC;IAC/F,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,OAAO,CAAC,CAAa,CAAC;QACvE,MAAM,UAAU,GAAG,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ;YAAE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACpE;AACH,CAAC;AA5CD,sBA4CC"}
|
package/built/lib/emitUsage.js
CHANGED
|
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const client_1 = require("@appland/client");
|
|
7
6
|
const telemetry_1 = require("../telemetry");
|
|
8
7
|
const repositoryInfo_1 = __importDefault(require("./repositoryInfo"));
|
|
9
|
-
const
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
10
|
async function buildMetadata(appmapDir, metadata) {
|
|
11
11
|
const repository = await telemetry_1.Git.repository(appmapDir);
|
|
12
12
|
const branch = await telemetry_1.Git.branch(appmapDir);
|
|
@@ -25,24 +25,27 @@ async function buildMetadata(appmapDir, metadata) {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
async function emitUsage(appmapDir, numEvents, numAppMaps, sampleMetadata) {
|
|
28
|
-
const contributors = await telemetry_1.Git.contributors(90);
|
|
29
28
|
const dto = {
|
|
30
29
|
events: numEvents,
|
|
31
30
|
appmaps: numAppMaps,
|
|
32
|
-
contributors: contributors.length,
|
|
33
31
|
metadata: await buildMetadata(appmapDir, sampleMetadata),
|
|
34
32
|
ci: process.env.CI !== undefined,
|
|
35
33
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
try {
|
|
35
|
+
const stats = await (0, promises_1.stat)('.appmap');
|
|
36
|
+
if (stats.isDirectory()) {
|
|
37
|
+
const runStatsDirectory = (0, node_path_1.join)('.appmap', 'run-stats');
|
|
38
|
+
await (0, promises_1.mkdir)(runStatsDirectory, { recursive: true });
|
|
39
|
+
const statsFilePath = (0, node_path_1.join)(runStatsDirectory, `${Date.now().toString()}.json`);
|
|
40
|
+
await (0, promises_1.writeFile)(statsFilePath, JSON.stringify(dto));
|
|
41
|
+
return statsFilePath;
|
|
43
42
|
}
|
|
44
|
-
}
|
|
45
|
-
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
if (e instanceof Error && 'code' in e && e.code !== 'ENOENT') {
|
|
46
|
+
console.warn(`Unable to write run stats: ${e}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
46
49
|
}
|
|
47
50
|
exports.default = emitUsage;
|
|
48
51
|
//# sourceMappingURL=emitUsage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitUsage.js","sourceRoot":"","sources":["../../src/lib/emitUsage.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"emitUsage.js","sourceRoot":"","sources":["../../src/lib/emitUsage.ts"],"names":[],"mappings":";;;;;AAEA,4CAAmC;AAEnC,sEAA2C;AAC3C,+CAA0D;AAC1D,yCAAiC;AAEjC,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,QAAmB;IACjE,MAAM,UAAU,GAAG,MAAM,eAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,eAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,eAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,GAAG,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG;QAClB,QAAQ,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ;QAC5B,MAAM,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM;QACxB,UAAU,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU;QAChC,GAAG,EAAE;YACH,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAA,wBAAW,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5D,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;SACf;QACD,QAAQ,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ;KAC7B,CAAC,CAAC;AACL,CAAC;AAEc,KAAK,UAAU,SAAS,CACrC,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,cAAyB;IAEzB,MAAM,GAAG,GAAmB;QAC1B,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,MAAM,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC;QACxD,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS;KACjC,CAAC;IAEF,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,IAAA,eAAI,EAAC,SAAS,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;YACvB,MAAM,iBAAiB,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACvD,MAAM,IAAA,gBAAK,EAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpD,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/E,MAAM,IAAA,oBAAS,EAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,OAAO,aAAa,CAAC;SACtB;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5D,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;SACjD;KACF;AACH,CAAC;AA5BD,4BA4BC"}
|