@servicenow/sdk-build-core 4.4.1 → 4.6.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/dist/compression.d.ts +2 -1
- package/dist/compression.js +5 -2
- package/dist/compression.js.map +1 -1
- package/dist/keys-registry.d.ts +2 -1
- package/dist/keys-registry.js +15 -15
- package/dist/keys-registry.js.map +1 -1
- package/dist/now-config.d.ts +476 -5
- package/dist/now-config.js +165 -1
- package/dist/now-config.js.map +1 -1
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.js +1 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/plugin.d.ts +17 -18
- package/dist/plugins/plugin.js +52 -31
- package/dist/plugins/plugin.js.map +1 -1
- package/dist/plugins/post-install.d.ts +31 -0
- package/dist/plugins/post-install.js +3 -0
- package/dist/plugins/post-install.js.map +1 -0
- package/dist/plugins/shape.js +4 -1
- package/dist/plugins/shape.js.map +1 -1
- package/dist/taxonomy.js +50 -0
- package/dist/taxonomy.js.map +1 -1
- package/dist/telemetry/clients/abstract-client.d.ts +23 -2
- package/dist/telemetry/clients/abstract-client.js +80 -0
- package/dist/telemetry/clients/abstract-client.js.map +1 -1
- package/dist/telemetry/clients/browser-client.d.ts +15 -9
- package/dist/telemetry/clients/browser-client.js +8 -82
- package/dist/telemetry/clients/browser-client.js.map +1 -1
- package/dist/telemetry/clients/node-client.d.ts +28 -6
- package/dist/telemetry/clients/node-client.js +37 -101
- package/dist/telemetry/clients/node-client.js.map +1 -1
- package/dist/telemetry/factory.js +4 -6
- package/dist/telemetry/factory.js.map +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/typescript.d.ts +8 -0
- package/dist/typescript.js +12 -1
- package/dist/typescript.js.map +1 -1
- package/dist/xml.js +3 -1
- package/dist/xml.js.map +1 -1
- package/now.config.schema.json +386 -2
- package/package.json +5 -6
- package/src/compression.ts +7 -2
- package/src/keys-registry.ts +14 -12
- package/src/now-config.ts +204 -1
- package/src/plugins/index.ts +1 -0
- package/src/plugins/plugin.ts +86 -63
- package/src/plugins/post-install.ts +34 -0
- package/src/plugins/shape.ts +4 -1
- package/src/taxonomy.ts +53 -0
- package/src/telemetry/clients/abstract-client.ts +104 -3
- package/src/telemetry/clients/browser-client.ts +12 -95
- package/src/telemetry/clients/node-client.ts +39 -114
- package/src/telemetry/factory.ts +5 -8
- package/src/telemetry/types.ts +2 -1
- package/src/typescript.ts +12 -1
- package/src/xml.ts +4 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AbstractAppSeeClient = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
4
5
|
const util_1 = require("./util");
|
|
5
6
|
class AbstractAppSeeClient {
|
|
6
7
|
config;
|
|
@@ -10,6 +11,7 @@ class AbstractAppSeeClient {
|
|
|
10
11
|
hostname;
|
|
11
12
|
session;
|
|
12
13
|
startPromise;
|
|
14
|
+
userId;
|
|
13
15
|
constructor(config, telemetryAttributes) {
|
|
14
16
|
this.config = config;
|
|
15
17
|
this.telemetryAttributes = telemetryAttributes;
|
|
@@ -50,6 +52,84 @@ class AbstractAppSeeClient {
|
|
|
50
52
|
},
|
|
51
53
|
]);
|
|
52
54
|
}
|
|
55
|
+
doSendEvent(events) {
|
|
56
|
+
try {
|
|
57
|
+
if (!this.session) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const defaultValues = this.getDefaultDataValues();
|
|
61
|
+
const eventData = Array.isArray(events) ? events : [events];
|
|
62
|
+
const now = Date.now();
|
|
63
|
+
const hostname = this.hostname ? { hostname: this.hostname } : {};
|
|
64
|
+
const dataPoints = eventData.map((d) => ({
|
|
65
|
+
t: types_1.DatapointType.Event,
|
|
66
|
+
d: now,
|
|
67
|
+
n: d.name,
|
|
68
|
+
p: { scopeId: d.appInfo?.scopeId, ...hostname, ...defaultValues, ...d.data },
|
|
69
|
+
}));
|
|
70
|
+
dataPoints.push({
|
|
71
|
+
t: types_1.DatapointType.User,
|
|
72
|
+
d: now,
|
|
73
|
+
n: this.userId ?? 'unknown',
|
|
74
|
+
p: this.getUserProps(hostname),
|
|
75
|
+
});
|
|
76
|
+
const body = {
|
|
77
|
+
SessionId: this.session.SessionId,
|
|
78
|
+
DataPoints: dataPoints,
|
|
79
|
+
TabId: this.session.TabId || '0',
|
|
80
|
+
ClientTime: new Date().toISOString(),
|
|
81
|
+
ConfigReceivedTime: new Date().toISOString(),
|
|
82
|
+
};
|
|
83
|
+
fetch(new URL('/web/heartbeat', this.config.BaseUrl), {
|
|
84
|
+
method: 'POST',
|
|
85
|
+
headers: this.getHeaders(),
|
|
86
|
+
body: JSON.stringify(body),
|
|
87
|
+
signal: AbortSignal.timeout(types_1.NETWORK_TIMEOUT_MS),
|
|
88
|
+
}).catch(() => { });
|
|
89
|
+
}
|
|
90
|
+
catch (_error) { }
|
|
91
|
+
}
|
|
92
|
+
getHeaders() {
|
|
93
|
+
return {
|
|
94
|
+
APIKey: this.config.APIKey,
|
|
95
|
+
APIAuth: this.config.APIAuth,
|
|
96
|
+
BrowserId: '0',
|
|
97
|
+
ClientId: this.session?.ClientId || '0',
|
|
98
|
+
Version: this.sdkVersion || 'unknown',
|
|
99
|
+
'Content-Type': 'application/json',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
async doStart() {
|
|
103
|
+
try {
|
|
104
|
+
if (this.session) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this.userId = await this.getUserHash();
|
|
108
|
+
const tabId = this.generateHexString();
|
|
109
|
+
const body = {
|
|
110
|
+
RequestId: this.generateHexString(),
|
|
111
|
+
TabId: tabId,
|
|
112
|
+
AppUserId: this.userId,
|
|
113
|
+
ClientTime: new Date().toISOString(),
|
|
114
|
+
TrackingLevel: 'Full',
|
|
115
|
+
...this.getEnvironmentInfo(),
|
|
116
|
+
};
|
|
117
|
+
const response = await fetch(new URL('/web/config', this.config.BaseUrl), {
|
|
118
|
+
method: 'POST',
|
|
119
|
+
headers: this.getHeaders(),
|
|
120
|
+
body: JSON.stringify(body),
|
|
121
|
+
signal: AbortSignal.timeout(types_1.NETWORK_TIMEOUT_MS),
|
|
122
|
+
});
|
|
123
|
+
const bodyResponse = await response.json();
|
|
124
|
+
if (response.ok) {
|
|
125
|
+
this.session = { ...bodyResponse, TabId: tabId };
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
throw new Error(`Failed to start session with status ${response.status}: ${bodyResponse.Error}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (_error) { }
|
|
132
|
+
}
|
|
53
133
|
}
|
|
54
134
|
exports.AbstractAppSeeClient = AbstractAppSeeClient;
|
|
55
135
|
//# sourceMappingURL=abstract-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-client.js","sourceRoot":"","sources":["../../../src/telemetry/clients/abstract-client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"abstract-client.js","sourceRoot":"","sources":["../../../src/telemetry/clients/abstract-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type InstanceSettings } from '../types';
|
|
1
|
+
import type { TelemetryEventData, InstanceSettings } from '../types';
|
|
3
2
|
import { AbstractAppSeeClient } from './abstract-client';
|
|
4
3
|
export declare class BrowserTelemetryClient extends AbstractAppSeeClient {
|
|
5
4
|
constructor(config: InstanceSettings, telemetryAttributes?: {
|
|
@@ -9,12 +8,19 @@ export declare class BrowserTelemetryClient extends AbstractAppSeeClient {
|
|
|
9
8
|
ideVersion?: string;
|
|
10
9
|
});
|
|
11
10
|
private readonly ideVersion;
|
|
12
|
-
|
|
13
|
-
private getUserHash;
|
|
11
|
+
getUserHash(): Promise<string>;
|
|
14
12
|
private getUserIdentifier;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
generateHexString(): string;
|
|
14
|
+
getEnvironmentInfo(): {
|
|
15
|
+
SystemLocale: string;
|
|
16
|
+
ScreenHeight: number;
|
|
17
|
+
ScreenWidth: number;
|
|
18
|
+
};
|
|
19
|
+
getDefaultDataValues(): {
|
|
20
|
+
browser: string;
|
|
21
|
+
version: string;
|
|
22
|
+
clientName: string;
|
|
23
|
+
ideVersion: string;
|
|
24
|
+
};
|
|
25
|
+
getUserProps(hostname: Record<string, string>): TelemetryEventData;
|
|
20
26
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BrowserTelemetryClient = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
5
4
|
const abstract_client_1 = require("./abstract-client");
|
|
6
5
|
class BrowserTelemetryClient extends abstract_client_1.AbstractAppSeeClient {
|
|
7
6
|
constructor(config, telemetryAttributes) {
|
|
@@ -13,7 +12,6 @@ class BrowserTelemetryClient extends abstract_client_1.AbstractAppSeeClient {
|
|
|
13
12
|
this.ideVersion = ideVersion;
|
|
14
13
|
}
|
|
15
14
|
ideVersion;
|
|
16
|
-
userId;
|
|
17
15
|
async getUserHash() {
|
|
18
16
|
const userUniqueId = await this.getUserIdentifier();
|
|
19
17
|
const bytes = new TextEncoder().encode(userUniqueId);
|
|
@@ -41,95 +39,23 @@ class BrowserTelemetryClient extends abstract_client_1.AbstractAppSeeClient {
|
|
|
41
39
|
generateHexString() {
|
|
42
40
|
return crypto.randomUUID();
|
|
43
41
|
}
|
|
44
|
-
|
|
45
|
-
try {
|
|
46
|
-
if (this.session) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
this.userId = await this.getUserHash();
|
|
50
|
-
const tabId = this.generateHexString();
|
|
51
|
-
const body = {
|
|
52
|
-
RequestId: this.generateHexString(),
|
|
53
|
-
TabId: tabId,
|
|
54
|
-
SystemLocale: navigator.language ?? 'unknown',
|
|
55
|
-
AppUserId: this.userId,
|
|
56
|
-
ScreenHeight: typeof screen !== 'undefined' ? screen.height : 0,
|
|
57
|
-
ScreenWidth: typeof screen !== 'undefined' ? screen.width : 0,
|
|
58
|
-
ClientTime: new Date().toISOString(),
|
|
59
|
-
TrackingLevel: 'Full',
|
|
60
|
-
};
|
|
61
|
-
const response = await fetch(new URL('/web/config', this.config.BaseUrl), {
|
|
62
|
-
method: 'POST',
|
|
63
|
-
headers: this.getHeaders(),
|
|
64
|
-
body: JSON.stringify(body),
|
|
65
|
-
signal: AbortSignal.timeout(types_1.NETWORK_TIMEOUT_MS),
|
|
66
|
-
});
|
|
67
|
-
const bodyResponse = await response.json();
|
|
68
|
-
if (response.ok) {
|
|
69
|
-
this.session = { ...bodyResponse, TabId: tabId };
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
throw new Error(`Failed to start session with status ${response.status}: ${bodyResponse.Error}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (_error) { }
|
|
76
|
-
}
|
|
77
|
-
doSendEvent(events) {
|
|
78
|
-
try {
|
|
79
|
-
if (!this.session) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const defaultValues = this.getDefaultDataValues();
|
|
83
|
-
const eventData = Array.isArray(events) ? events : [events];
|
|
84
|
-
const now = Date.now();
|
|
85
|
-
const hostname = this.hostname ? { hostname: this.hostname } : {};
|
|
86
|
-
const dataPoints = eventData.map((d) => ({
|
|
87
|
-
t: types_1.DatapointType.Event,
|
|
88
|
-
d: now,
|
|
89
|
-
n: d.name,
|
|
90
|
-
p: { scopeId: d.appInfo?.scopeId, ...hostname, ...defaultValues, ...d.data },
|
|
91
|
-
}));
|
|
92
|
-
const userProps = { hostname }; //does CI make sense for browser environment ??
|
|
93
|
-
dataPoints.push({
|
|
94
|
-
t: types_1.DatapointType.User,
|
|
95
|
-
d: now,
|
|
96
|
-
n: this.userId,
|
|
97
|
-
p: userProps,
|
|
98
|
-
});
|
|
99
|
-
const body = {
|
|
100
|
-
SessionId: this.session.SessionId,
|
|
101
|
-
DataPoints: dataPoints,
|
|
102
|
-
TabId: this.session.TabId || '0',
|
|
103
|
-
ClientTime: new Date().toISOString(),
|
|
104
|
-
ConfigReceivedTime: new Date().toISOString(),
|
|
105
|
-
};
|
|
106
|
-
fetch(new URL('/web/heartbeat', this.config.BaseUrl), {
|
|
107
|
-
method: 'POST',
|
|
108
|
-
headers: this.getHeaders(),
|
|
109
|
-
body: JSON.stringify(body),
|
|
110
|
-
signal: AbortSignal.timeout(types_1.NETWORK_TIMEOUT_MS),
|
|
111
|
-
}).catch(() => { });
|
|
112
|
-
}
|
|
113
|
-
catch (_error) { }
|
|
114
|
-
}
|
|
115
|
-
getHeaders() {
|
|
42
|
+
getEnvironmentInfo() {
|
|
116
43
|
return {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
ClientId: this.session?.ClientId || '0',
|
|
121
|
-
Version: this.sdkVersion || 'unknown',
|
|
122
|
-
'Content-Type': 'application/json',
|
|
44
|
+
SystemLocale: navigator.language ?? 'unknown',
|
|
45
|
+
ScreenHeight: typeof screen !== 'undefined' ? screen.height : 0,
|
|
46
|
+
ScreenWidth: typeof screen !== 'undefined' ? screen.width : 0,
|
|
123
47
|
};
|
|
124
48
|
}
|
|
125
49
|
getDefaultDataValues() {
|
|
126
|
-
|
|
50
|
+
return {
|
|
127
51
|
browser: navigator.userAgent || 'unknown',
|
|
128
52
|
version: this.sdkVersion || 'unknown',
|
|
129
53
|
clientName: this.clientName,
|
|
130
54
|
ideVersion: this.ideVersion || 'unknown',
|
|
131
55
|
};
|
|
132
|
-
|
|
56
|
+
}
|
|
57
|
+
getUserProps(hostname) {
|
|
58
|
+
return { ...hostname };
|
|
133
59
|
}
|
|
134
60
|
}
|
|
135
61
|
exports.BrowserTelemetryClient = BrowserTelemetryClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../../src/telemetry/clients/browser-client.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../../src/telemetry/clients/browser-client.ts"],"names":[],"mappings":";;;AACA,uDAAwD;AAExD,MAAa,sBAAuB,SAAQ,sCAAoB;IAC5D,YACI,MAAwB,EACxB,mBAKC;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,GAAG,mBAAmB,IAAI,EAAE,CAAA;QACnE,KAAK,CAAC,MAAM,EAAE;YACV,GAAG,cAAc;YACjB,UAAU,EAAE,mBAAmB,EAAE,UAAU,IAAI,KAAK;SACvD,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAChC,CAAC;IAEgB,UAAU,CAAoB;IAEtC,KAAK,CAAC,WAAW;QACtB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACnD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACzE,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC3B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,MAAM,UAAU,GAAG,uBAAuB,CAAA;QAC1C,IAAI,CAAC;YACD,IAAI,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;gBAC5E,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAC5C,CAAC;YAED,OAAO,MAAM,CAAA;QACjB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;QAChE,CAAC;IACL,CAAC;IAEQ,iBAAiB;QACtB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAC9B,CAAC;IAEQ,kBAAkB;QACvB,OAAO;YACH,YAAY,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS;YAC7C,YAAY,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/D,WAAW,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAChE,CAAA;IACL,CAAC;IAEQ,oBAAoB;QACzB,OAAO;YACH,OAAO,EAAE,SAAS,CAAC,SAAS,IAAI,SAAS;YACzC,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;SAC3C,CAAA;IACL,CAAC;IAEQ,YAAY,CAAC,QAAgC;QAClD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC1B,CAAC;CACJ;AAzED,wDAyEC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TelemetryEventData, InstanceSettings } from '../types';
|
|
2
2
|
import { AbstractAppSeeClient } from './abstract-client';
|
|
3
3
|
export declare class NodeTelemetryClient extends AbstractAppSeeClient {
|
|
4
4
|
constructor(config: InstanceSettings, telemetryAttributes?: {
|
|
@@ -6,10 +6,32 @@ export declare class NodeTelemetryClient extends AbstractAppSeeClient {
|
|
|
6
6
|
clientName?: 'cli' | string;
|
|
7
7
|
hostname?: string;
|
|
8
8
|
});
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
getUserHash(): Promise<string>;
|
|
10
|
+
generateHexString(): string;
|
|
11
|
+
getEnvironmentInfo(): {
|
|
12
|
+
SystemLocale: string;
|
|
13
|
+
ScreenHeight: number;
|
|
14
|
+
ScreenWidth: number;
|
|
15
|
+
};
|
|
16
|
+
getDefaultDataValues(): {
|
|
17
|
+
ci: boolean;
|
|
18
|
+
ciName: string | null;
|
|
19
|
+
ciPR: boolean | null;
|
|
20
|
+
codingAgent?: string;
|
|
21
|
+
os: string;
|
|
22
|
+
version: string;
|
|
23
|
+
nodeVersion: string;
|
|
24
|
+
clientName: string;
|
|
25
|
+
} | {
|
|
26
|
+
ci?: never;
|
|
27
|
+
ciName?: never;
|
|
28
|
+
ciPR?: never;
|
|
29
|
+
codingAgent?: string;
|
|
30
|
+
os: string;
|
|
31
|
+
version: string;
|
|
32
|
+
nodeVersion: string;
|
|
33
|
+
clientName: string;
|
|
34
|
+
};
|
|
35
|
+
getUserProps(hostname: Record<string, string>): TelemetryEventData;
|
|
14
36
|
private applyCITelemetry;
|
|
15
37
|
}
|
|
@@ -29,22 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.NodeTelemetryClient = void 0;
|
|
30
30
|
const os = __importStar(require("os"));
|
|
31
31
|
const ci_info_1 = __importDefault(require("ci-info"));
|
|
32
|
-
const types_1 = require("../types");
|
|
33
32
|
const abstract_client_1 = require("./abstract-client");
|
|
34
|
-
function generateHexString() {
|
|
35
|
-
// biome-ignore lint/style/noRestrictedImports: <explanation>
|
|
36
|
-
const crypto = require('node:crypto');
|
|
37
|
-
return crypto.randomBytes(16).toString('hex');
|
|
38
|
-
}
|
|
39
|
-
async function getUserHash() {
|
|
40
|
-
const user = `${os.userInfo().username}:${os.hostname()}`;
|
|
41
|
-
if (!user) {
|
|
42
|
-
return 'unknown';
|
|
43
|
-
}
|
|
44
|
-
const bytes = new TextEncoder().encode(user);
|
|
45
|
-
const byteHash = await crypto.subtle.digest('SHA-256', bytes);
|
|
46
|
-
return Buffer.from(byteHash).toString('hex');
|
|
47
|
-
}
|
|
48
33
|
class NodeTelemetryClient extends abstract_client_1.AbstractAppSeeClient {
|
|
49
34
|
constructor(config, telemetryAttributes) {
|
|
50
35
|
super(config, {
|
|
@@ -52,107 +37,58 @@ class NodeTelemetryClient extends abstract_client_1.AbstractAppSeeClient {
|
|
|
52
37
|
clientName: telemetryAttributes?.clientName ?? 'cli',
|
|
53
38
|
});
|
|
54
39
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
this.userId = await getUserHash();
|
|
62
|
-
const tabId = generateHexString();
|
|
63
|
-
const body = {
|
|
64
|
-
RequestId: generateHexString(),
|
|
65
|
-
TabId: tabId,
|
|
66
|
-
SystemLocale: (process.env['LANG'] || 'unknown').split('.')[0],
|
|
67
|
-
AppUserId: this.userId,
|
|
68
|
-
ScreenHeight: 0,
|
|
69
|
-
ScreenWidth: 0,
|
|
70
|
-
ClientTime: new Date().toISOString(),
|
|
71
|
-
TrackingLevel: 'Full',
|
|
72
|
-
};
|
|
73
|
-
const response = await fetch(new URL('/web/config', this.config.BaseUrl), {
|
|
74
|
-
method: 'POST',
|
|
75
|
-
headers: this.getHeaders(),
|
|
76
|
-
body: JSON.stringify(body),
|
|
77
|
-
signal: AbortSignal.timeout(types_1.NETWORK_TIMEOUT_MS),
|
|
78
|
-
});
|
|
79
|
-
const bodyResponse = await response.json();
|
|
80
|
-
if (response.ok) {
|
|
81
|
-
this.session = { ...bodyResponse, TabId: tabId };
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
throw new Error(`Failed to start session with status ${response.status}: ${bodyResponse.Error}`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
catch (_error) {
|
|
88
|
-
//ignore
|
|
40
|
+
async getUserHash() {
|
|
41
|
+
const user = `${os.userInfo().username}:${os.hostname()}`;
|
|
42
|
+
if (!user) {
|
|
43
|
+
return 'unknown';
|
|
89
44
|
}
|
|
45
|
+
const bytes = new TextEncoder().encode(user);
|
|
46
|
+
const byteHash = await crypto.subtle.digest('SHA-256', bytes);
|
|
47
|
+
return Buffer.from(byteHash).toString('hex');
|
|
90
48
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const defaultValues = this.getDefaultDataValues();
|
|
98
|
-
const eventData = Array.isArray(events) ? events : [events];
|
|
99
|
-
const now = Date.now();
|
|
100
|
-
const hostname = this.hostname ? { hostname: this.hostname } : {};
|
|
101
|
-
const dataPoints = eventData.map((d) => ({
|
|
102
|
-
t: types_1.DatapointType.Event,
|
|
103
|
-
d: now,
|
|
104
|
-
n: d.name,
|
|
105
|
-
p: { scopeId: d.appInfo?.scopeId, ...hostname, ...defaultValues, ...d.data },
|
|
106
|
-
}));
|
|
107
|
-
const userProps = this.applyCITelemetry({ ...hostname });
|
|
108
|
-
dataPoints.push({
|
|
109
|
-
t: types_1.DatapointType.User,
|
|
110
|
-
d: now,
|
|
111
|
-
n: this.userId,
|
|
112
|
-
p: userProps,
|
|
113
|
-
});
|
|
114
|
-
const body = {
|
|
115
|
-
SessionId: this.session.SessionId,
|
|
116
|
-
DataPoints: dataPoints,
|
|
117
|
-
TabId: this.session.TabId || '0',
|
|
118
|
-
ClientTime: new Date().toISOString(),
|
|
119
|
-
ConfigReceivedTime: new Date().toISOString(),
|
|
120
|
-
};
|
|
121
|
-
fetch(new URL('/web/heartbeat', this.config.BaseUrl), {
|
|
122
|
-
method: 'POST',
|
|
123
|
-
headers: this.getHeaders(),
|
|
124
|
-
body: JSON.stringify(body),
|
|
125
|
-
signal: AbortSignal.timeout(types_1.NETWORK_TIMEOUT_MS),
|
|
126
|
-
}).catch(() => { });
|
|
127
|
-
}
|
|
128
|
-
catch (_error) {
|
|
129
|
-
//ignore errors from telemetry
|
|
130
|
-
}
|
|
49
|
+
generateHexString() {
|
|
50
|
+
// biome-ignore lint/style/noRestrictedImports: node:crypto is not available via sdk-build-core
|
|
51
|
+
const nodeCrypto = require('node:crypto');
|
|
52
|
+
return nodeCrypto.randomBytes(16).toString('hex');
|
|
131
53
|
}
|
|
132
|
-
|
|
54
|
+
getEnvironmentInfo() {
|
|
133
55
|
return {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
ClientId: this.session?.ClientId || '0',
|
|
138
|
-
Version: this.sdkVersion || 'unknown',
|
|
139
|
-
'Content-Type': 'application/json',
|
|
56
|
+
SystemLocale: (process.env['LANG'] || 'unknown').split('.')[0] ?? 'unknown',
|
|
57
|
+
ScreenHeight: 0,
|
|
58
|
+
ScreenWidth: 0,
|
|
140
59
|
};
|
|
141
60
|
}
|
|
142
61
|
getDefaultDataValues() {
|
|
143
|
-
const
|
|
62
|
+
const codingAgentData = {};
|
|
63
|
+
if (process.env['GEMINI_CLI']) {
|
|
64
|
+
codingAgentData.codingAgent = 'gemini';
|
|
65
|
+
}
|
|
66
|
+
else if (process.env['CLAUDECODE']) {
|
|
67
|
+
codingAgentData.codingAgent = 'claudecode';
|
|
68
|
+
}
|
|
69
|
+
else if (process.env['CODEX_CI']) {
|
|
70
|
+
codingAgentData.codingAgent = 'codex';
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
144
73
|
os: os.type(),
|
|
145
74
|
version: this.sdkVersion || 'unknown',
|
|
146
75
|
nodeVersion: process.version,
|
|
147
76
|
clientName: this.clientName,
|
|
77
|
+
...codingAgentData,
|
|
78
|
+
...this.applyCITelemetry(),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
getUserProps(hostname) {
|
|
82
|
+
return {
|
|
83
|
+
hostname,
|
|
84
|
+
...this.applyCITelemetry(),
|
|
148
85
|
};
|
|
149
|
-
return this.applyCITelemetry(defaultValues);
|
|
150
86
|
}
|
|
151
|
-
applyCITelemetry(
|
|
87
|
+
applyCITelemetry() {
|
|
152
88
|
if (ci_info_1.default.isCI) {
|
|
153
|
-
return {
|
|
89
|
+
return { ci: true, ciName: ci_info_1.default.name, ciPR: ci_info_1.default.isPR };
|
|
154
90
|
}
|
|
155
|
-
return
|
|
91
|
+
return {};
|
|
156
92
|
}
|
|
157
93
|
}
|
|
158
94
|
exports.NodeTelemetryClient = NodeTelemetryClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-client.js","sourceRoot":"","sources":["../../../src/telemetry/clients/node-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,sDAA4B;
|
|
1
|
+
{"version":3,"file":"node-client.js","sourceRoot":"","sources":["../../../src/telemetry/clients/node-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,sDAA4B;AAE5B,uDAAwD;AAExD,MAAa,mBAAoB,SAAQ,sCAAoB;IACzD,YACI,MAAwB,EACxB,mBAA6F;QAE7F,KAAK,CAAC,MAAM,EAAE;YACV,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;YAC9B,UAAU,EAAE,mBAAmB,EAAE,UAAU,IAAI,KAAK;SACvD,CAAC,CAAA;IACN,CAAC;IAEQ,KAAK,CAAC,WAAW;QACtB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAA;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;IAEQ,iBAAiB;QACtB,+FAA+F;QAC/F,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;QACzC,OAAO,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAEQ,kBAAkB;QACvB,OAAO;YACH,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS;YAC3E,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;SACjB,CAAA;IACL,CAAC;IAEQ,oBAAoB;QACzB,MAAM,eAAe,GAAiD,EAAE,CAAA;QACxE,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,eAAe,CAAC,WAAW,GAAG,QAAQ,CAAA;QAC1C,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,eAAe,CAAC,WAAW,GAAG,YAAY,CAAA;QAC9C,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,eAAe,CAAC,WAAW,GAAG,OAAO,CAAA;QACzC,CAAC;QAED,OAAO;YACH,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;YACb,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACrC,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,eAAe;YAClB,GAAG,IAAI,CAAC,gBAAgB,EAAE;SAC7B,CAAA;IACL,CAAC;IAEQ,YAAY,CAAC,QAAgC;QAClD,OAAO;YACH,QAAQ;YACR,GAAG,IAAI,CAAC,gBAAgB,EAAE;SAC7B,CAAA;IACL,CAAC;IAEO,gBAAgB;QACpB,IAAI,iBAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAM,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAM,CAAC,IAAI,EAAE,CAAA;QAC/D,CAAC;QAED,OAAO,EAAE,CAAA;IACb,CAAC;CACJ;AAtED,kDAsEC"}
|
|
@@ -7,13 +7,11 @@ const browser_client_1 = require("./clients/browser-client");
|
|
|
7
7
|
const config_1 = require("./config");
|
|
8
8
|
class TelemetryFactory {
|
|
9
9
|
static create(options) {
|
|
10
|
+
if (process.env['NODE_ENV'] === 'test' || !options || !options.type) {
|
|
11
|
+
return new noop_client_1.NoOpTelemetry();
|
|
12
|
+
}
|
|
10
13
|
const config = (0, config_1.getAppSeeConfig)();
|
|
11
|
-
if (
|
|
12
|
-
!options ||
|
|
13
|
-
!options.type ||
|
|
14
|
-
!config.APIKey ||
|
|
15
|
-
!config.APIAuth ||
|
|
16
|
-
!config.BaseUrl) {
|
|
14
|
+
if (!config.APIKey || !config.APIAuth || !config.BaseUrl) {
|
|
17
15
|
return new noop_client_1.NoOpTelemetry();
|
|
18
16
|
}
|
|
19
17
|
if (options.type === 'node') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/telemetry/factory.ts"],"names":[],"mappings":";;;AAEA,uDAAqD;AACrD,uDAA2D;AAC3D,6DAAiE;AACjE,qCAA0C;AAE1C,MAAa,gBAAgB;IACzB,MAAM,CAAC,MAAM,CAAC,OAGb;QACG,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/telemetry/factory.ts"],"names":[],"mappings":";;;AAEA,uDAAqD;AACrD,uDAA2D;AAC3D,6DAAiE;AACjE,qCAA0C;AAE1C,MAAa,gBAAgB;IACzB,MAAM,CAAC,MAAM,CAAC,OAGb;QACG,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClE,OAAO,IAAI,2BAAa,EAAE,CAAA;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,wBAAe,GAAE,CAAA;QAEhC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,OAAO,IAAI,2BAAa,EAAE,CAAA;QAC9B,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,IAAI,iCAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QAC9D,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,IAAI,uCAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;CACJ;AAvBD,4CAuBC"}
|
|
@@ -45,7 +45,7 @@ export interface Telemetry {
|
|
|
45
45
|
export interface TimerMetric {
|
|
46
46
|
end(eventData?: Pick<TelemetryEvent, 'appInfo' | 'data'>): TelemetryEvent;
|
|
47
47
|
}
|
|
48
|
-
export type TelemetryEventData = Record<string, unknown>;
|
|
48
|
+
export type TelemetryEventData<T extends Record<string, unknown> = Record<string, unknown>> = T & Record<string, unknown>;
|
|
49
49
|
export type TelemetryEvent = {
|
|
50
50
|
name: string;
|
|
51
51
|
appInfo?: {
|
package/dist/typescript.d.ts
CHANGED
|
@@ -79,6 +79,10 @@ export declare const SupportedKinds: {
|
|
|
79
79
|
name: "FunctionExpression";
|
|
80
80
|
node: ts.FunctionExpression;
|
|
81
81
|
};
|
|
82
|
+
217: {
|
|
83
|
+
name: "ParenthesizedExpression";
|
|
84
|
+
node: ts.ParenthesizedExpression;
|
|
85
|
+
};
|
|
82
86
|
262: {
|
|
83
87
|
name: "FunctionDeclaration";
|
|
84
88
|
node: ts.FunctionDeclaration;
|
|
@@ -271,6 +275,10 @@ export declare const SupportedKinds: {
|
|
|
271
275
|
name: "PrefixUnaryExpression";
|
|
272
276
|
node: ts.PrefixUnaryExpression;
|
|
273
277
|
};
|
|
278
|
+
253: {
|
|
279
|
+
name: "ReturnStatement";
|
|
280
|
+
node: ts.ReturnStatement;
|
|
281
|
+
};
|
|
274
282
|
};
|
|
275
283
|
export type SupportedKind = keyof typeof SupportedKinds;
|
|
276
284
|
export type SupportedKindName = (typeof SupportedKinds)[SupportedKind]['name'];
|
package/dist/typescript.js
CHANGED
|
@@ -157,6 +157,10 @@ exports.SupportedKinds = {
|
|
|
157
157
|
name: 'FunctionExpression',
|
|
158
158
|
node: {},
|
|
159
159
|
},
|
|
160
|
+
[ts.SyntaxKind.ParenthesizedExpression]: {
|
|
161
|
+
name: 'ParenthesizedExpression',
|
|
162
|
+
node: {},
|
|
163
|
+
},
|
|
160
164
|
[ts.SyntaxKind.FunctionDeclaration]: {
|
|
161
165
|
name: 'FunctionDeclaration',
|
|
162
166
|
node: {},
|
|
@@ -349,6 +353,10 @@ exports.SupportedKinds = {
|
|
|
349
353
|
name: 'PrefixUnaryExpression',
|
|
350
354
|
node: {},
|
|
351
355
|
},
|
|
356
|
+
[ts.SyntaxKind.ReturnStatement]: {
|
|
357
|
+
name: 'ReturnStatement',
|
|
358
|
+
node: {},
|
|
359
|
+
},
|
|
352
360
|
};
|
|
353
361
|
function isSupportedKind(kind) {
|
|
354
362
|
return kind in exports.SupportedKinds;
|
|
@@ -434,7 +442,10 @@ function remove(target) {
|
|
|
434
442
|
return;
|
|
435
443
|
}
|
|
436
444
|
}
|
|
437
|
-
|
|
445
|
+
// It is possible that multiple plugins could attempt to remove the same node. To support this, only error if target is unsupported
|
|
446
|
+
if (!isSupportedNode(target)) {
|
|
447
|
+
throw new Error(`Unable to remove "${getUnsupportedKindName(target)}" node: ${target.getText()}`);
|
|
448
|
+
}
|
|
438
449
|
}
|
|
439
450
|
/**
|
|
440
451
|
* Recursively walks up the tree removing references to this node and any ancestors
|