@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.
Files changed (56) hide show
  1. package/dist/compression.d.ts +2 -1
  2. package/dist/compression.js +5 -2
  3. package/dist/compression.js.map +1 -1
  4. package/dist/keys-registry.d.ts +2 -1
  5. package/dist/keys-registry.js +15 -15
  6. package/dist/keys-registry.js.map +1 -1
  7. package/dist/now-config.d.ts +476 -5
  8. package/dist/now-config.js +165 -1
  9. package/dist/now-config.js.map +1 -1
  10. package/dist/plugins/index.d.ts +1 -0
  11. package/dist/plugins/index.js +1 -0
  12. package/dist/plugins/index.js.map +1 -1
  13. package/dist/plugins/plugin.d.ts +17 -18
  14. package/dist/plugins/plugin.js +52 -31
  15. package/dist/plugins/plugin.js.map +1 -1
  16. package/dist/plugins/post-install.d.ts +31 -0
  17. package/dist/plugins/post-install.js +3 -0
  18. package/dist/plugins/post-install.js.map +1 -0
  19. package/dist/plugins/shape.js +4 -1
  20. package/dist/plugins/shape.js.map +1 -1
  21. package/dist/taxonomy.js +50 -0
  22. package/dist/taxonomy.js.map +1 -1
  23. package/dist/telemetry/clients/abstract-client.d.ts +23 -2
  24. package/dist/telemetry/clients/abstract-client.js +80 -0
  25. package/dist/telemetry/clients/abstract-client.js.map +1 -1
  26. package/dist/telemetry/clients/browser-client.d.ts +15 -9
  27. package/dist/telemetry/clients/browser-client.js +8 -82
  28. package/dist/telemetry/clients/browser-client.js.map +1 -1
  29. package/dist/telemetry/clients/node-client.d.ts +28 -6
  30. package/dist/telemetry/clients/node-client.js +37 -101
  31. package/dist/telemetry/clients/node-client.js.map +1 -1
  32. package/dist/telemetry/factory.js +4 -6
  33. package/dist/telemetry/factory.js.map +1 -1
  34. package/dist/telemetry/types.d.ts +1 -1
  35. package/dist/typescript.d.ts +8 -0
  36. package/dist/typescript.js +12 -1
  37. package/dist/typescript.js.map +1 -1
  38. package/dist/xml.js +3 -1
  39. package/dist/xml.js.map +1 -1
  40. package/now.config.schema.json +386 -2
  41. package/package.json +5 -6
  42. package/src/compression.ts +7 -2
  43. package/src/keys-registry.ts +14 -12
  44. package/src/now-config.ts +204 -1
  45. package/src/plugins/index.ts +1 -0
  46. package/src/plugins/plugin.ts +86 -63
  47. package/src/plugins/post-install.ts +34 -0
  48. package/src/plugins/shape.ts +4 -1
  49. package/src/taxonomy.ts +53 -0
  50. package/src/telemetry/clients/abstract-client.ts +104 -3
  51. package/src/telemetry/clients/browser-client.ts +12 -95
  52. package/src/telemetry/clients/node-client.ts +39 -114
  53. package/src/telemetry/factory.ts +5 -8
  54. package/src/telemetry/types.ts +2 -1
  55. package/src/typescript.ts +12 -1
  56. 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":";;;AACA,iCAA0C;AAE1C,MAAsB,oBAAoB;IAQf;IACT;IARK,UAAU,CAAqB;IAC/B,UAAU,CAAwB;IAClC,QAAQ,CAAqB;IACtC,OAAO,CAAU;IACjB,YAAY,CAAgB;IAEtC,YACuB,MAAwB,EACjC,mBAIT;QALkB,WAAM,GAAN,MAAM,CAAkB;QACjC,wBAAmB,GAAnB,mBAAmB,CAI5B;QAED,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAA;QAChD,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAA;QAChD,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAA;IAChD,CAAC;IAED,eAAe,CAAC,IAA4B;QACxC,OAAO,IAAI,wBAAiB,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC5B,CAAC;IAEM,SAAS,CAAC,MAAyC;QACtD,yCAAyC;QACzC,IAAI,CAAC,KAAK,EAAE;aACP,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACpC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,KAAa,EAAE,KAAc,EAAE,IAAyB;QACjE,IAAI,CAAC,SAAS,CAAC;YACX;gBACI,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE;oBACF,KAAK;oBACL,GAAG,CAAC,KAAK,YAAY,KAAK;wBACtB,CAAC,CAAC;4BACI,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,KAAK,EAAE,KAAK,CAAC,KAAK;yBACrB;wBACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;oBACrC,GAAG,IAAI;iBACV;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;CAIJ;AA3DD,oDA2DC"}
1
+ {"version":3,"file":"abstract-client.js","sourceRoot":"","sources":["../../../src/telemetry/clients/abstract-client.ts"],"names":[],"mappings":";;;AAUA,oCAA4D;AAC5D,iCAA0C;AAE1C,MAAsB,oBAAoB;IASf;IACT;IATK,UAAU,CAAqB;IAC/B,UAAU,CAAwB;IAClC,QAAQ,CAAqB;IACtC,OAAO,CAAU;IACjB,YAAY,CAAgB;IAC5B,MAAM,CAAS;IAEzB,YACuB,MAAwB,EACjC,mBAIT;QALkB,WAAM,GAAN,MAAM,CAAkB;QACjC,wBAAmB,GAAnB,mBAAmB,CAI5B;QAED,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAA;QAChD,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAA;QAChD,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAA;IAChD,CAAC;IAED,eAAe,CAAC,IAA4B;QACxC,OAAO,IAAI,wBAAiB,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC5B,CAAC;IAEM,SAAS,CAAC,MAAyC;QACtD,yCAAyC;QACzC,IAAI,CAAC,KAAK,EAAE;aACP,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACpC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,KAAa,EAAE,KAAc,EAAE,IAAyB;QACjE,IAAI,CAAC,SAAS,CAAC;YACX;gBACI,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE;oBACF,KAAK;oBACL,GAAG,CAAC,KAAK,YAAY,KAAK;wBACtB,CAAC,CAAC;4BACI,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,KAAK,EAAE,KAAK,CAAC,KAAK;yBACrB;wBACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;oBACrC,GAAG,IAAI;iBACV;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;IAES,WAAW,CAAC,MAAyC;QAC3D,IAAI,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,OAAM;YACV,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;YACjD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAEjE,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChD,CAAC,EAAE,qBAAa,CAAC,KAAK;gBACtB,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,CAAC,CAAC,IAAI;gBACT,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;aAC/E,CAAC,CAAC,CAAA;YAEH,UAAU,CAAC,IAAI,CAAC;gBACZ,CAAC,EAAE,qBAAa,CAAC,IAAI;gBACrB,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;gBAC3B,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aACjC,CAAC,CAAA;YAEF,MAAM,IAAI,GAAkB;gBACxB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG;gBAChC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,kBAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC/C,CAAA;YAED,KAAK,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAClD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,0BAAkB,CAAC;aAClD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtB,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC,CAAA,CAAC;IACvB,CAAC;IAES,UAAU;QAChB,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG;YACvC,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACrC,cAAc,EAAE,kBAAkB;SACrC,CAAA;IACL,CAAC;IAES,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,OAAM;YACV,CAAC;YAED,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACtC,MAAM,IAAI,GAAG;gBACT,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBACnC,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,aAAa,EAAE,MAAM;gBACrB,GAAG,IAAI,CAAC,kBAAkB,EAAE;aAC/B,CAAA;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACtE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,0BAAkB,CAAC;aAClD,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC1C,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;YACpG,CAAC;QACL,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC,CAAA,CAAC;IACvB,CAAC;CAOJ;AAtJD,oDAsJC"}
@@ -1,5 +1,4 @@
1
- import type { TelemetryEvent } from '../types';
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
- private userId?;
13
- private getUserHash;
11
+ getUserHash(): Promise<string>;
14
12
  private getUserIdentifier;
15
- private generateHexString;
16
- doStart(): Promise<void>;
17
- doSendEvent(events: TelemetryEvent | TelemetryEvent[]): void;
18
- private getHeaders;
19
- private getDefaultDataValues;
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
- async doStart() {
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
- APIKey: this.config.APIKey,
118
- APIAuth: this.config.APIAuth,
119
- BrowserId: '0',
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
- const defaultValues = {
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
- return defaultValues;
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,oCAAmF;AACnF,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;IACvC,MAAM,CAAS;IAEf,KAAK,CAAC,WAAW;QACrB,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;IAEO,iBAAiB;QACrB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAA;IAC9B,CAAC;IAEQ,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,OAAM;YACV,CAAC;YAED,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACtC,MAAM,IAAI,GAAG;gBACT,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBACnC,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS;gBAC7C,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/D,WAAW,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7D,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,aAAa,EAAE,MAAM;aACxB,CAAA;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACtE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,0BAAkB,CAAC;aAClD,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC1C,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;YACpG,CAAC;QACL,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC,CAAA,CAAC;IACvB,CAAC;IAEQ,WAAW,CAAC,MAAyC;QAC1D,IAAI,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,OAAM;YACV,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;YACjD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAEjE,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChD,CAAC,EAAE,qBAAa,CAAC,KAAK;gBACtB,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,CAAC,CAAC,IAAI;gBACT,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;aAC/E,CAAC,CAAC,CAAA;YAEH,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,CAAA,CAAC,+CAA+C;YAE9E,UAAU,CAAC,IAAI,CAAC;gBACZ,CAAC,EAAE,qBAAa,CAAC,IAAI;gBACrB,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,IAAI,CAAC,MAAO;gBACf,CAAC,EAAE,SAAS;aACf,CAAC,CAAA;YAEF,MAAM,IAAI,GAAkB;gBACxB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG;gBAChC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,kBAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC/C,CAAA;YAED,KAAK,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAClD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,0BAAkB,CAAC;aAClD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtB,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC,CAAA,CAAC;IACvB,CAAC;IAEO,UAAU;QACd,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG;YACvC,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACrC,cAAc,EAAE,kBAAkB;SACrC,CAAA;IACL,CAAC;IAEO,oBAAoB;QACxB,MAAM,aAAa,GAAuB;YACtC,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;QAED,OAAO,aAAa,CAAA;IACxB,CAAC;CACJ;AA3JD,wDA2JC"}
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 { TelemetryEvent, InstanceSettings } from '../types';
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
- private userId?;
10
- doStart(): Promise<void>;
11
- doSendEvent(events: TelemetryEvent | TelemetryEvent[]): void;
12
- private getHeaders;
13
- private getDefaultDataValues;
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
- userId;
56
- async doStart() {
57
- try {
58
- if (this.session) {
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
- doSendEvent(events) {
92
- try {
93
- //Check if we have a session
94
- if (!this.session) {
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
- getHeaders() {
54
+ getEnvironmentInfo() {
133
55
  return {
134
- APIKey: this.config.APIKey,
135
- APIAuth: this.config.APIAuth,
136
- BrowserId: '0',
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 defaultValues = {
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(data) {
87
+ applyCITelemetry() {
152
88
  if (ci_info_1.default.isCI) {
153
- return { ...data, ci: true, ciName: ci_info_1.default.name, ciPR: ci_info_1.default.isPR };
89
+ return { ci: true, ciName: ci_info_1.default.name, ciPR: ci_info_1.default.isPR };
154
90
  }
155
- return data;
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":"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"}
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 (process.env['NODE_ENV'] === 'test' ||
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,MAAM,MAAM,GAAG,IAAA,wBAAe,GAAE,CAAA;QAEhC,IACI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM;YAClC,CAAC,OAAO;YACR,CAAC,OAAO,CAAC,IAAI;YACb,CAAC,MAAM,CAAC,MAAM;YACd,CAAC,MAAM,CAAC,OAAO;YACf,CAAC,MAAM,CAAC,OAAO,EACjB,CAAC;YACC,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;AA1BD,4CA0BC"}
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?: {
@@ -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'];
@@ -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
- throw new Error(`Unable to remove "${getUnsupportedKindName(target)}" node: ${target.getText()}`);
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