@appland/telemetry 1.1.1 → 1.1.2
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/dist/backends/splunk.js +6 -5
- package/dist/backends/splunk.js.map +1 -1
- package/dist/identity.js +8 -1
- package/dist/identity.js.map +1 -1
- package/dist/session.js +19 -3
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [@appland/telemetry-v1.1.2](https://github.com/getappmap/appmap-js/compare/@appland/telemetry-v1.1.1...@appland/telemetry-v1.1.2) (2025-10-27)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Handle configuration save errors in session management ([566f907](https://github.com/getappmap/appmap-js/commit/566f907242598c54045cf6f2b77f7d784147d7b1))
|
|
7
|
+
|
|
1
8
|
# [@appland/telemetry-v1.1.1](https://github.com/getappmap/appmap-js/compare/@appland/telemetry-v1.1.0...@appland/telemetry-v1.1.1) (2025-10-09)
|
|
2
9
|
|
|
3
10
|
|
package/dist/backends/splunk.js
CHANGED
|
@@ -43,7 +43,7 @@ const MaxFlushTime = 5000; // 5 seconds
|
|
|
43
43
|
class SplunkBackend {
|
|
44
44
|
constructor(config = {}) {
|
|
45
45
|
var _a, _b;
|
|
46
|
-
this.pendingRequests =
|
|
46
|
+
this.pendingRequests = new Set();
|
|
47
47
|
const token = (_a = config.token) !== null && _a !== void 0 ? _a : process.env.SPLUNK_TOKEN;
|
|
48
48
|
const url = (_b = config.url) !== null && _b !== void 0 ? _b : process.env.SPLUNK_URL;
|
|
49
49
|
if (!token) {
|
|
@@ -91,7 +91,6 @@ class SplunkBackend {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
sendEvent(event) {
|
|
94
|
-
this.pendingRequests++;
|
|
95
94
|
const parsedUrl = new node_url_1.URL(this.config.url);
|
|
96
95
|
const path = parsedUrl.pathname === '/' ? DefaultSplunkPath : parsedUrl.pathname;
|
|
97
96
|
const payload = JSON.stringify({ event });
|
|
@@ -113,14 +112,15 @@ class SplunkBackend {
|
|
|
113
112
|
responseBody += chunk;
|
|
114
113
|
});
|
|
115
114
|
res.on('end', () => {
|
|
116
|
-
this.pendingRequests
|
|
115
|
+
this.pendingRequests.delete(req);
|
|
117
116
|
if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
|
|
118
117
|
console.warn(`SplunkBackend: Failed to send telemetry event. Status: ${res.statusCode}, Response: ${responseBody}`);
|
|
119
118
|
}
|
|
120
119
|
});
|
|
121
120
|
});
|
|
121
|
+
this.pendingRequests.add(req);
|
|
122
122
|
req.on('error', (e) => {
|
|
123
|
-
this.pendingRequests
|
|
123
|
+
this.pendingRequests.delete(req);
|
|
124
124
|
console.warn(`SplunkBackend: Connectivity error sending telemetry event: ${e.message}`);
|
|
125
125
|
});
|
|
126
126
|
req.write(payload);
|
|
@@ -129,7 +129,7 @@ class SplunkBackend {
|
|
|
129
129
|
flush(callback) {
|
|
130
130
|
const startTime = process.hrtime.bigint();
|
|
131
131
|
const checkPending = () => {
|
|
132
|
-
if (this.pendingRequests === 0) {
|
|
132
|
+
if (this.pendingRequests.size === 0) {
|
|
133
133
|
if (callback) {
|
|
134
134
|
callback();
|
|
135
135
|
}
|
|
@@ -139,6 +139,7 @@ class SplunkBackend {
|
|
|
139
139
|
const elapsedMs = Number(elapsedNs / BigInt(1000000));
|
|
140
140
|
if (elapsedMs > MaxFlushTime) {
|
|
141
141
|
console.warn(`SplunkBackend: Flush timed out after ${MaxFlushTime}ms`);
|
|
142
|
+
this.pendingRequests.forEach((req) => req.destroy());
|
|
142
143
|
if (callback) {
|
|
143
144
|
callback();
|
|
144
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splunk.js","sourceRoot":"","sources":["../../src/backends/splunk.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,kDAAoC;AACpC,uCAA+B;AAC/B,4CAA8B;AAS9B,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AACtD,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,YAAY;AAEvC,MAAa,aAAa;IAKxB,YAAY,SAA8C,EAAE;;QAFpD,oBAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"splunk.js","sourceRoot":"","sources":["../../src/backends/splunk.ts"],"names":[],"mappings":"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"}
|
package/dist/identity.js
CHANGED
|
@@ -27,7 +27,14 @@ function getMachineId(config) {
|
|
|
27
27
|
const machineIdHash = (0, crypto_1.createHash)('sha256')
|
|
28
28
|
.update(machineIdSource)
|
|
29
29
|
.digest('hex');
|
|
30
|
-
|
|
30
|
+
try {
|
|
31
|
+
config === null || config === void 0 ? void 0 : config.set('machineId', machineIdHash);
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
const err = e;
|
|
35
|
+
// This can happen if the config file is not writable.
|
|
36
|
+
console.warn(`Could not save machine ID: ${err.message}`);
|
|
37
|
+
}
|
|
31
38
|
return machineIdHash;
|
|
32
39
|
}
|
|
33
40
|
//# sourceMappingURL=identity.js.map
|
package/dist/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":";;AAUA,oCAiCC;AA3CD,2BAAuC;AACvC,mCAA6D;AAG7D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC,CAAC;AAEH,SAAgB,YAAY,CAAC,MAAa;IACxC,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,WAAW,CAAuB,CAAC;IACjE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,eAAuC,CAAC;IAE5C,uDAAuD;IACvD,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,sBAAiB,GAAE,CAAC;SACjD,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC;SAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACrD,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,8BAA8B;QAC9B,eAAe,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC;SACvC,MAAM,CAAC,eAA6B,CAAC;SACrC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjB,IAAI,CAAC;QACH,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAU,CAAC;QACvB,sDAAsD;QACtD,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/dist/session.js
CHANGED
|
@@ -43,12 +43,28 @@ class Session {
|
|
|
43
43
|
renew() {
|
|
44
44
|
this._id = Session.newSessionId();
|
|
45
45
|
this._expiration = Session.expirationFromNow();
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
try {
|
|
47
|
+
this.config.set({
|
|
48
|
+
sessionId: this._id,
|
|
49
|
+
sessionExpiration: this._expiration,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
const err = e;
|
|
54
|
+
// This can happen if the config file is not writable.
|
|
55
|
+
console.warn(`Could not renew session: ${err.message}`);
|
|
56
|
+
}
|
|
48
57
|
}
|
|
49
58
|
touch() {
|
|
50
59
|
this._expiration = Session.expirationFromNow();
|
|
51
|
-
|
|
60
|
+
try {
|
|
61
|
+
this.config.set('sessionExpiration', this.expiration);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
const err = e;
|
|
65
|
+
// This can happen if the config file is not writable.
|
|
66
|
+
console.warn(`Could not update session: ${err.message}`);
|
|
67
|
+
}
|
|
52
68
|
}
|
|
53
69
|
}
|
|
54
70
|
exports.Session = Session;
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";;;AACA,mCAAiD;AAEjD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa;AAExD,MAAa,OAAO;IAIlB,IAAI,EAAE;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,CACL,IAAI,CAAC,GAAG,KAAK,SAAS;YACtB,IAAI,CAAC,WAAW,KAAK,SAAS;YAC9B,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5C,CAAC;IACJ,CAAC;IAED,YAA6B,MAAY;QAAZ,WAAM,GAAN,MAAM,CAAM;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,UAAkB;QACxC,OAAO,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAuB,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAuB,CAAC;IAChF,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";;;AACA,mCAAiD;AAEjD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa;AAExD,MAAa,OAAO;IAIlB,IAAI,EAAE;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,CACL,IAAI,CAAC,GAAG,KAAK,SAAS;YACtB,IAAI,CAAC,WAAW,KAAK,SAAS;YAC9B,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5C,CAAC;IACJ,CAAC;IAED,YAA6B,MAAY;QAAZ,WAAM,GAAN,MAAM,CAAM;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,UAAkB;QACxC,OAAO,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAuB,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAuB,CAAC;IAChF,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,GAAG;gBACnB,iBAAiB,EAAE,IAAI,CAAC,WAAW;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAU,CAAC;YACvB,sDAAsD;YACtD,OAAO,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAU,CAAC;YACvB,sDAAsD;YACtD,OAAO,CAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;AAtED,0BAsEC"}
|