@appland/telemetry 1.1.0 → 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 +14 -0
- package/dist/backends/application-insights.d.ts +8 -2
- package/dist/backends/application-insights.js +91 -24
- package/dist/backends/application-insights.js.map +1 -1
- 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 +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
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
|
+
|
|
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)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Make sure application insights telemetry quits gracefully ([a5ffd12](https://github.com/getappmap/appmap-js/commit/a5ffd12333561be117254587ace8f32553e00983))
|
|
14
|
+
|
|
1
15
|
# [@appland/telemetry-v1.1.0](https://github.com/getappmap/appmap-js/compare/@appland/telemetry-v1.0.0...@appland/telemetry-v1.1.0) (2025-10-07)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import { ApplicationInsightsBackendConfiguration, FlushCallback, TelemetryBackend, TelemetryData } from '../types';
|
|
1
|
+
import type { ApplicationInsightsBackendConfiguration, FlushCallback, TelemetryBackend, TelemetryData } from '../types';
|
|
2
2
|
export declare class ApplicationInsightsBackend implements TelemetryBackend {
|
|
3
3
|
private readonly config;
|
|
4
|
-
private readonly
|
|
4
|
+
private readonly instrumentationKey;
|
|
5
|
+
private readonly userId;
|
|
6
|
+
private readonly sessionId;
|
|
7
|
+
private readonly productName;
|
|
8
|
+
private readonly hostname;
|
|
9
|
+
private readonly uname;
|
|
5
10
|
constructor(userId: string, sessionId: string, productName: string, config: ApplicationInsightsBackendConfiguration);
|
|
6
11
|
sendEvent(event: TelemetryData): void;
|
|
7
12
|
flush(callback?: FlushCallback): void;
|
|
13
|
+
private _post;
|
|
8
14
|
}
|
|
@@ -1,7 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
2
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
39
|
exports.ApplicationInsightsBackend = void 0;
|
|
4
|
-
const
|
|
40
|
+
const https = __importStar(require("node:https"));
|
|
41
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
5
42
|
// This key is meant to be publically shared. However, I'm adding a simple
|
|
6
43
|
// obfuscation to mitigate key scraping bots on GitHub. The key is split on
|
|
7
44
|
// hypens and base64 encoded without padding.
|
|
@@ -9,38 +46,68 @@ const applicationinsights_1 = require("applicationinsights");
|
|
|
9
46
|
const INSTRUMENTATION_KEY = ['NTBjMWE1YzI', 'NDliNA', 'NDkxMw', 'YjdjYw', 'ODZhNzhkNDA3NDVm']
|
|
10
47
|
.map((x) => Buffer.from(x, 'base64').toString('utf8'))
|
|
11
48
|
.join('-');
|
|
49
|
+
const AI_ENDPOINT = 'dc.services.visualstudio.com';
|
|
50
|
+
const AI_PATH = '/v2/track';
|
|
12
51
|
class ApplicationInsightsBackend {
|
|
13
52
|
constructor(userId, sessionId, productName, config) {
|
|
14
53
|
this.config = config;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
.setAutoCollectExceptions(false)
|
|
22
|
-
.setAutoCollectDependencies(false)
|
|
23
|
-
.setAutoCollectHeartbeat(false)
|
|
24
|
-
.setAutoDependencyCorrelation(false)
|
|
25
|
-
.setAutoCollectConsole(false)
|
|
26
|
-
.setInternalLogging(false, false)
|
|
27
|
-
.setSendLiveMetrics(false)
|
|
28
|
-
.setUseDiskRetryCaching(true);
|
|
29
|
-
const client = new applicationinsights_1.TelemetryClient(instrumentationKey);
|
|
30
|
-
client.context.tags[client.context.keys.userId] = userId;
|
|
31
|
-
client.context.tags[client.context.keys.sessionId] = sessionId;
|
|
32
|
-
client.context.tags[client.context.keys.cloudRole] = productName;
|
|
33
|
-
client.setAutoPopulateAzureProperties(false);
|
|
34
|
-
this.client = client;
|
|
54
|
+
this.instrumentationKey = this.config.instrumentationKey || INSTRUMENTATION_KEY;
|
|
55
|
+
this.userId = userId;
|
|
56
|
+
this.sessionId = sessionId;
|
|
57
|
+
this.productName = productName;
|
|
58
|
+
this.hostname = node_os_1.default.hostname();
|
|
59
|
+
this.uname = node_os_1.default.type() + ' ' + node_os_1.default.release();
|
|
35
60
|
}
|
|
36
61
|
sendEvent(event) {
|
|
37
|
-
|
|
38
|
-
|
|
62
|
+
const envelope = {
|
|
63
|
+
name: 'Microsoft.ApplicationInsights.Event',
|
|
64
|
+
time: new Date().toISOString(),
|
|
65
|
+
iKey: this.instrumentationKey,
|
|
66
|
+
tags: {
|
|
67
|
+
'ai.user.id': this.userId,
|
|
68
|
+
'ai.session.id': this.sessionId,
|
|
69
|
+
'ai.cloud.role': this.productName,
|
|
70
|
+
'ai.cloud.roleInstance': this.hostname,
|
|
71
|
+
'ai.device.osVersion': this.uname
|
|
72
|
+
},
|
|
73
|
+
data: {
|
|
74
|
+
baseType: 'EventData',
|
|
75
|
+
baseData: event,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
this._post([envelope]);
|
|
39
79
|
}
|
|
40
80
|
flush(callback) {
|
|
41
|
-
|
|
81
|
+
// No batching, so nothing to flush. Just call callback.
|
|
42
82
|
callback === null || callback === void 0 ? void 0 : callback();
|
|
43
83
|
}
|
|
84
|
+
_post(envelopes) {
|
|
85
|
+
const body = JSON.stringify(envelopes);
|
|
86
|
+
const options = {
|
|
87
|
+
hostname: AI_ENDPOINT,
|
|
88
|
+
path: AI_PATH,
|
|
89
|
+
method: 'POST',
|
|
90
|
+
headers: {
|
|
91
|
+
'Content-Type': 'application/json',
|
|
92
|
+
'Content-Length': Buffer.byteLength(body),
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
const req = https.request(options, (res) => {
|
|
96
|
+
// drain response to avoid memory leak
|
|
97
|
+
res
|
|
98
|
+
.on('data', () => { })
|
|
99
|
+
.on('end', () => {
|
|
100
|
+
if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
|
|
101
|
+
console.warn(`ApplicationInsightsBackend: Failed to send telemetry event. Status: ${res.statusCode}`);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
req.on('error', (e) => {
|
|
106
|
+
console.warn('Error sending telemetry data to Application Insights', e);
|
|
107
|
+
});
|
|
108
|
+
req.write(body);
|
|
109
|
+
req.end();
|
|
110
|
+
}
|
|
44
111
|
}
|
|
45
112
|
exports.ApplicationInsightsBackend = ApplicationInsightsBackend;
|
|
46
113
|
//# sourceMappingURL=application-insights.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-insights.js","sourceRoot":"","sources":["../../src/backends/application-insights.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"application-insights.js","sourceRoot":"","sources":["../../src/backends/application-insights.ts"],"names":[],"mappings":"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"}
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appland/telemetry",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
"**/*": "prettier --write --ignore-unknown"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"applicationinsights": "^2.1.4",
|
|
26
25
|
"conf": "<11",
|
|
27
26
|
"read-pkg-up": "^7.0.1"
|
|
28
27
|
},
|
|
@@ -35,6 +34,7 @@
|
|
|
35
34
|
"eslint-config-prettier": "^10.1.8",
|
|
36
35
|
"jest": "^29.5.0",
|
|
37
36
|
"lint-staged": "^10.5.4",
|
|
37
|
+
"nock": "^13.2.2",
|
|
38
38
|
"prettier": "^2.7.1",
|
|
39
39
|
"sinon": "^13.0.1",
|
|
40
40
|
"ts-jest": "^29.0.5",
|