@theia/telemetry 1.77.0-next.1 → 1.77.0-next.12

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 (40) hide show
  1. package/lib/browser/browser-telemetry-service.d.ts +2 -1
  2. package/lib/browser/browser-telemetry-service.d.ts.map +1 -1
  3. package/lib/browser/browser-telemetry-service.js +1 -1
  4. package/lib/browser/browser-telemetry-service.js.map +1 -1
  5. package/lib/browser-only/browser-only-telemetry-service.d.ts +2 -1
  6. package/lib/browser-only/browser-only-telemetry-service.d.ts.map +1 -1
  7. package/lib/browser-only/browser-only-telemetry-service.js.map +1 -1
  8. package/lib/common/telemetry-protocol.d.ts +1 -2
  9. package/lib/common/telemetry-protocol.d.ts.map +1 -1
  10. package/lib/common/telemetry-protocol.js +4 -5
  11. package/lib/common/telemetry-protocol.js.map +1 -1
  12. package/lib/common/telemetry-protocol.spec.d.ts +2 -0
  13. package/lib/common/telemetry-protocol.spec.d.ts.map +1 -0
  14. package/lib/common/telemetry-protocol.spec.js +36 -0
  15. package/lib/common/telemetry-protocol.spec.js.map +1 -0
  16. package/lib/common/telemetry-service.d.ts +1 -18
  17. package/lib/common/telemetry-service.d.ts.map +1 -1
  18. package/lib/common/telemetry-service.js +0 -39
  19. package/lib/common/telemetry-service.js.map +1 -1
  20. package/lib/common/telemetry-service.spec.js +0 -88
  21. package/lib/common/telemetry-service.spec.js.map +1 -1
  22. package/lib/common/telemetry-types.d.ts +17 -0
  23. package/lib/common/telemetry-types.d.ts.map +1 -1
  24. package/lib/common/telemetry-types.js +39 -0
  25. package/lib/common/telemetry-types.js.map +1 -1
  26. package/lib/common/telemetry-types.spec.js +80 -0
  27. package/lib/common/telemetry-types.spec.js.map +1 -1
  28. package/lib/node/telemetry-service-impl.d.ts +2 -1
  29. package/lib/node/telemetry-service-impl.d.ts.map +1 -1
  30. package/lib/node/telemetry-service-impl.js.map +1 -1
  31. package/package.json +3 -3
  32. package/src/browser/browser-telemetry-service.ts +2 -2
  33. package/src/browser-only/browser-only-telemetry-service.ts +2 -1
  34. package/src/common/telemetry-protocol.spec.ts +36 -0
  35. package/src/common/telemetry-protocol.ts +3 -2
  36. package/src/common/telemetry-service.spec.ts +2 -102
  37. package/src/common/telemetry-service.ts +1 -59
  38. package/src/common/telemetry-types.spec.ts +94 -1
  39. package/src/common/telemetry-types.ts +59 -0
  40. package/src/node/telemetry-service-impl.ts +2 -2
@@ -2,7 +2,8 @@ import { FrontendIdProvider } from '@theia/core/lib/browser/messaging/frontend-i
2
2
  import { ILogger } from '@theia/core/lib/common';
3
3
  import { TelemetryConsentProvider } from '../common/telemetry-consent-provider';
4
4
  import { TelemetryRpc } from '../common/telemetry-protocol';
5
- import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
5
+ import { TelemetryService } from '../common/telemetry-service';
6
+ import { TelemetryData, TelemetryReportOptions } from '../common/telemetry-types';
6
7
  export declare class BrowserTelemetryService implements TelemetryService {
7
8
  protected localSinkInterests: readonly string[] | undefined;
8
9
  protected localSinkInterestsPromise: Promise<void> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-telemetry-service.d.ts","sourceRoot":"","sources":["../../src/browser/browser-telemetry-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EACH,YAAY,EACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAItG,qBACa,uBAAwB,YAAW,gBAAgB;IAE5D,SAAS,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5D,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAG/D,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAexG,SAAS,CAAC,uBAAuB,IAAI,IAAI;CAS5C"}
1
+ {"version":3,"file":"browser-telemetry-service.d.ts","sourceRoot":"","sources":["../../src/browser/browser-telemetry-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EACH,YAAY,EACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAwB,MAAM,2BAA2B,CAAC;AAExG,qBACa,uBAAwB,YAAW,gBAAgB;IAE5D,SAAS,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5D,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAG/D,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAGrC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAexG,SAAS,CAAC,uBAAuB,IAAI,IAAI;CAS5C"}
@@ -22,8 +22,8 @@ const common_1 = require("@theia/core/lib/common");
22
22
  const inversify_1 = require("@theia/core/shared/inversify");
23
23
  const telemetry_consent_provider_1 = require("../common/telemetry-consent-provider");
24
24
  const telemetry_protocol_1 = require("../common/telemetry-protocol");
25
- const telemetry_types_1 = require("../common/telemetry-types");
26
25
  const telemetry_topic_1 = require("../common/telemetry-topic");
26
+ const telemetry_types_1 = require("../common/telemetry-types");
27
27
  let BrowserTelemetryService = class BrowserTelemetryService {
28
28
  report(topic, data, options) {
29
29
  const event = (0, telemetry_protocol_1.createTelemetryEvent)(topic, this.frontendIdProvider.getId(), data, options);
@@ -1 +1 @@
1
- {"version":3,"file":"browser-telemetry-service.js","sourceRoot":"","sources":["../../src/browser/browser-telemetry-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,iGAA4F;AAC5F,mDAAiD;AACjD,4DAAyE;AACzE,qFAAgF;AAChF,qEAEsC;AAEtC,+DAAiE;AACjE,+DAAkE;AAG3D,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAiBhC,MAAM,CAAmB,KAAa,EAAE,IAAuB,EAAE,OAAgC;QAC7F,MAAM,KAAK,GAAG,IAAA,yCAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAA,0CAAqB,EAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAA,2CAAsB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrG,OAAO;QACX,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAA,sCAAoB,EAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;eAC1D,IAAI,CAAC,kBAAkB,KAAK,SAAS;eACrC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,uCAAqB,EAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3F,OAAO;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAA,2CAAsB,EAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAES,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAClC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAClE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC,EACrD,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,CAC1C,CAAC;QACN,CAAC;IACL,CAAC;CAEJ,CAAA;AAzCY,0DAAuB;AAMb;IADlB,IAAA,kBAAM,EAAC,iCAAY,CAAC;;oDACgB;AAGlB;IADlB,IAAA,kBAAM,EAAC,yCAAkB,CAAC;;mEAC+B;AAGvC;IADlB,IAAA,kBAAM,EAAC,qDAAwB,CAAC;;gEAC4B;AAG1C;IADlB,IAAA,kBAAM,EAAC,gBAAO,CAAC;IAAE,IAAA,iBAAK,EAAC,mCAAmC,CAAC;;uDACzB;kCAf1B,uBAAuB;IADnC,IAAA,sBAAU,GAAE;GACA,uBAAuB,CAyCnC"}
1
+ {"version":3,"file":"browser-telemetry-service.js","sourceRoot":"","sources":["../../src/browser/browser-telemetry-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,iGAA4F;AAC5F,mDAAiD;AACjD,4DAAyE;AACzE,qFAAgF;AAChF,qEAEsC;AAEtC,+DAAkE;AAClE,+DAAwG;AAGjG,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAiBhC,MAAM,CAAmB,KAAa,EAAE,IAAuB,EAAE,OAAgC;QAC7F,MAAM,KAAK,GAAG,IAAA,yCAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAA,0CAAqB,EAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAA,2CAAsB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrG,OAAO;QACX,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAA,sCAAoB,EAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;eAC1D,IAAI,CAAC,kBAAkB,KAAK,SAAS;eACrC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,uCAAqB,EAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3F,OAAO;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAA,2CAAsB,EAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAES,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAClC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAClE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC,EACrD,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,CAC1C,CAAC;QACN,CAAC;IACL,CAAC;CAEJ,CAAA;AAzCY,0DAAuB;AAMb;IADlB,IAAA,kBAAM,EAAC,iCAAY,CAAC;;oDACgB;AAGlB;IADlB,IAAA,kBAAM,EAAC,yCAAkB,CAAC;;mEAC+B;AAGvC;IADlB,IAAA,kBAAM,EAAC,qDAAwB,CAAC;;gEAC4B;AAG1C;IADlB,IAAA,kBAAM,EAAC,gBAAO,CAAC;IAAE,IAAA,iBAAK,EAAC,mCAAmC,CAAC;;uDACzB;kCAf1B,uBAAuB;IADnC,IAAA,sBAAU,GAAE;GACA,uBAAuB,CAyCnC"}
@@ -1,4 +1,5 @@
1
- import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
1
+ import { TelemetryService } from '../common/telemetry-service';
2
+ import { TelemetryData, TelemetryReportOptions } from '../common/telemetry-types';
2
3
  export declare class BrowserOnlyTelemetryService implements TelemetryService {
3
4
  report<T extends object>(_topic: string, _data?: TelemetryData<T>, _options?: TelemetryReportOptions): void;
4
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser-only-telemetry-service.d.ts","sourceRoot":"","sources":["../../src/browser-only/browser-only-telemetry-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEtG,qBACa,2BAA4B,YAAW,gBAAgB;IAChE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAC9G"}
1
+ {"version":3,"file":"browser-only-telemetry-service.d.ts","sourceRoot":"","sources":["../../src/browser-only/browser-only-telemetry-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAElF,qBACa,2BAA4B,YAAW,gBAAgB;IAChE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAC9G"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-only-telemetry-service.js","sourceRoot":"","sources":["../../src/browser-only/browser-only-telemetry-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAA0D;AAInD,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACpC,MAAM,CAAmB,MAAc,EAAE,KAAwB,EAAE,QAAiC,IAAU,CAAC;CAClH,CAAA;AAFY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,sBAAU,GAAE;GACA,2BAA2B,CAEvC"}
1
+ {"version":3,"file":"browser-only-telemetry-service.js","sourceRoot":"","sources":["../../src/browser-only/browser-only-telemetry-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAA0D;AAKnD,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACpC,MAAM,CAAmB,MAAc,EAAE,KAAwB,EAAE,QAAiC,IAAU,CAAC;CAClH,CAAA;AAFY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,sBAAU,GAAE;GACA,2BAA2B,CAEvC"}
@@ -1,5 +1,4 @@
1
- import { TelemetryData, TelemetryReportOptions, TelemetryValue } from './telemetry-service';
2
- import { TelemetryEventKind } from './telemetry-types';
1
+ import { TelemetryData, TelemetryEventKind, TelemetryReportOptions, TelemetryValue } from './telemetry-types';
3
2
  /** @experimental */
4
3
  export interface TelemetryEvent<T extends object = Record<string, TelemetryValue>> {
5
4
  readonly topic: string;
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-protocol.d.ts","sourceRoot":"","sources":["../../src/common/telemetry-protocol.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,cAAc,EAA0C,MAAM,qBAAqB,CAAC;AAEpI,OAAO,EAAE,kBAAkB,EAAwB,MAAM,mBAAmB,CAAC;AAE7E,oBAAoB;AACpB,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAED,oBAAoB;AACpB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAY7E;AAED,oBAAoB;AACpB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7D;AAED,oBAAoB;AACpB,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKlE;AAED,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACjD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,sBAAsB,GACjC,cAAc,CAAC,CAAC,CAAC,CASnB;AAED,oBAAoB;AACpB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAS5E;AAED,oBAAoB;AACpB,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAE1D,oBAAoB;AACpB,eAAO,MAAM,YAAY,eAAyB,CAAC;AAEnD,oBAAoB;AACpB,MAAM,WAAW,YAAY;IACzB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9C"}
1
+ {"version":3,"file":"telemetry-protocol.d.ts","sourceRoot":"","sources":["../../src/common/telemetry-protocol.ts"],"names":[],"mappings":"AAkBA,OAAO,EACH,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAC5E,MAAM,mBAAmB,CAAC;AAE3B,oBAAoB;AACpB,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAED,oBAAoB;AACpB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAY7E;AAED,oBAAoB;AACpB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7D;AAED,oBAAoB;AACpB,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKlE;AAED,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACjD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,sBAAsB,GACjC,cAAc,CAAC,CAAC,CAAC,CASnB;AAED,oBAAoB;AACpB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAS5E;AAED,oBAAoB;AACpB,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAE1D,oBAAoB;AACpB,eAAO,MAAM,YAAY,eAAyB,CAAC;AAEnD,oBAAoB;AACpB,MAAM,WAAW,YAAY;IACzB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9C"}
@@ -22,7 +22,6 @@ exports.describeTelemetryEventTopic = describeTelemetryEventTopic;
22
22
  exports.createTelemetryEvent = createTelemetryEvent;
23
23
  exports.snapshotTelemetryEvent = snapshotTelemetryEvent;
24
24
  const types_1 = require("@theia/core/lib/common/types");
25
- const telemetry_service_1 = require("./telemetry-service");
26
25
  const telemetry_topic_1 = require("./telemetry-topic");
27
26
  const telemetry_types_1 = require("./telemetry-types");
28
27
  /** @experimental */
@@ -36,8 +35,8 @@ function isValidTelemetryEvent(event) {
36
35
  && event.session.length > 0
37
36
  && typeof event.timestamp === 'number'
38
37
  && Number.isFinite(event.timestamp)
39
- && (event.data === undefined || (0, telemetry_service_1.isTelemetryData)(event.data))
40
- && (event.attributes === undefined || (0, telemetry_service_1.isTelemetryData)(event.attributes));
38
+ && (event.data === undefined || (0, telemetry_types_1.isTelemetryData)(event.data))
39
+ && (event.attributes === undefined || (0, telemetry_types_1.isTelemetryData)(event.attributes));
41
40
  }
42
41
  /** @experimental */
43
42
  function describeTelemetryTopic(topic) {
@@ -66,8 +65,8 @@ function snapshotTelemetryEvent(event) {
66
65
  return Object.freeze({
67
66
  topic: event.topic,
68
67
  kind: event.kind,
69
- data: (0, telemetry_service_1.snapshotTelemetryData)(event.data),
70
- attributes: (0, telemetry_service_1.snapshotTelemetryData)(event.attributes),
68
+ data: (0, telemetry_types_1.snapshotTelemetryData)(event.data),
69
+ attributes: (0, telemetry_types_1.snapshotTelemetryData)(event.attributes),
71
70
  session: event.session,
72
71
  timestamp: event.timestamp
73
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-protocol.js","sourceRoot":"","sources":["../../src/common/telemetry-protocol.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAkBhF,sDAYC;AAGD,wDAEC;AAGD,kEAKC;AAGD,oDAcC;AAGD,wDASC;AAtED,wDAAwD;AACxD,2DAAoI;AACpI,uDAA0D;AAC1D,uDAA6E;AAY7E,oBAAoB;AACpB,SAAgB,qBAAqB,CAAC,KAAc;IAChD,IAAI,CAAC,IAAA,gBAAQ,EAAiB,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAA,uCAAqB,EAAC,KAAK,CAAC,KAAK,CAAC;WAClC,IAAA,sCAAoB,EAAC,KAAK,CAAC,IAAI,CAAC;WAChC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;WACjC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;WACxB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;WACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;WAChC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,IAAA,mCAAe,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;WACzD,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,IAAA,mCAAe,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,oBAAoB;AACpB,SAAgB,sBAAsB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3D,CAAC;AAED,oBAAoB;AACpB,SAAgB,2BAA2B,CAAC,KAAc;IACtD,IAAI,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,oBAAoB;AACpB,SAAgB,oBAAoB,CAChC,KAAa,EACb,OAAe,EACf,IAAuB,EACvB,OAAgC;IAEhC,OAAO;QACH,KAAK;QACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,OAAO;QAC9B,IAAI;QACJ,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC;AACN,CAAC;AAED,oBAAoB;AACpB,SAAgB,sBAAsB,CAAC,KAAqB;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,IAAA,yCAAqB,EAAC,KAAK,CAAC,IAAI,CAAC;QACvC,UAAU,EAAE,IAAA,yCAAqB,EAAC,KAAK,CAAC,UAAU,CAAC;QACnD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC,CAAC;AACP,CAAC;AAED,oBAAoB;AACP,QAAA,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,oBAAoB;AACP,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"telemetry-protocol.js","sourceRoot":"","sources":["../../src/common/telemetry-protocol.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAmBhF,sDAYC;AAGD,wDAEC;AAGD,kEAKC;AAGD,oDAcC;AAGD,wDASC;AAvED,wDAAwD;AACxD,uDAA0D;AAC1D,uDAE2B;AAY3B,oBAAoB;AACpB,SAAgB,qBAAqB,CAAC,KAAc;IAChD,IAAI,CAAC,IAAA,gBAAQ,EAAiB,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAA,uCAAqB,EAAC,KAAK,CAAC,KAAK,CAAC;WAClC,IAAA,sCAAoB,EAAC,KAAK,CAAC,IAAI,CAAC;WAChC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;WACjC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;WACxB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;WACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;WAChC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,IAAA,iCAAe,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;WACzD,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,IAAA,iCAAe,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,oBAAoB;AACpB,SAAgB,sBAAsB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3D,CAAC;AAED,oBAAoB;AACpB,SAAgB,2BAA2B,CAAC,KAAc;IACtD,IAAI,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,oBAAoB;AACpB,SAAgB,oBAAoB,CAChC,KAAa,EACb,OAAe,EACf,IAAuB,EACvB,OAAgC;IAEhC,OAAO;QACH,KAAK;QACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,OAAO;QAC9B,IAAI;QACJ,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC;AACN,CAAC;AAED,oBAAoB;AACpB,SAAgB,sBAAsB,CAAC,KAAqB;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,IAAA,uCAAqB,EAAC,KAAK,CAAC,IAAI,CAAC;QACvC,UAAU,EAAE,IAAA,uCAAqB,EAAC,KAAK,CAAC,UAAU,CAAC;QACnD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC,CAAC;AACP,CAAC;AAED,oBAAoB;AACP,QAAA,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,oBAAoB;AACP,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=telemetry-protocol.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-protocol.spec.d.ts","sourceRoot":"","sources":["../../src/common/telemetry-protocol.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 STMicroelectronics and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const telemetry_protocol_1 = require("./telemetry-protocol");
20
+ describe('telemetry protocol', () => {
21
+ it('validates event kind, attributes, and session', () => {
22
+ const event = {
23
+ topic: 'consumer/action',
24
+ kind: 'error',
25
+ data: { action: 'open', duration: 12 },
26
+ attributes: { source: 'consumer' },
27
+ session: 'frontend-session',
28
+ timestamp: 42
29
+ };
30
+ (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)(event)).to.be.true;
31
+ (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)({ ...event, kind: 'invalid' })).to.be.false;
32
+ (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)({ ...event, session: '' })).to.be.false;
33
+ (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)({ ...event, attributes: { nested: {} } })).to.be.false;
34
+ });
35
+ });
36
+ //# sourceMappingURL=telemetry-protocol.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-protocol.spec.js","sourceRoot":"","sources":["../../src/common/telemetry-protocol.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAC9B,6DAA6D;AAE7D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG;YACV,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,OAAgB;YACtB,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtC,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YAClC,OAAO,EAAE,kBAAkB;YAC3B,SAAS,EAAE,EAAE;SAChB,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChD,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACzE,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACrE,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACxF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,21 +1,4 @@
1
- import { TelemetryEventKind } from './telemetry-types';
2
- /** @experimental */
3
- export type TelemetryPrimitive = string | number | boolean;
4
- /** @experimental */
5
- export type TelemetryValue = TelemetryPrimitive | readonly string[] | readonly number[] | readonly boolean[];
6
- /** @experimental */
7
- export type TelemetryData<T extends object> = {
8
- [K in keyof T]: T[K] extends TelemetryValue ? T[K] : never;
9
- };
10
- /** @experimental */
11
- export declare function isTelemetryData(data: unknown): data is Record<string, TelemetryValue>;
12
- /** @experimental */
13
- export declare function snapshotTelemetryData<T extends object>(data: TelemetryData<T> | undefined): TelemetryData<T> | undefined;
14
- /** @experimental */
15
- export interface TelemetryReportOptions {
16
- readonly kind?: TelemetryEventKind;
17
- readonly attributes?: TelemetryData<Record<string, TelemetryValue>>;
18
- }
1
+ import { TelemetryData, TelemetryReportOptions } from './telemetry-types';
19
2
  /** @experimental */
20
3
  export declare const TelemetryService: unique symbol;
21
4
  /** @experimental */
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-service.d.ts","sourceRoot":"","sources":["../../src/common/telemetry-service.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,oBAAoB;AACpB,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,oBAAoB;AACpB,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,OAAO,EAAE,CAAC;AAE7G,oBAAoB;AACpB,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KACzC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAC7D,CAAC;AA6BF,oBAAoB;AACpB,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAKrF;AAED,oBAAoB;AACpB,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAExH;AAED,oBAAoB;AACpB,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CACvE;AAED,oBAAoB;AACpB,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAE3D,oBAAoB;AACpB,MAAM,WAAW,gBAAgB;IAC7B,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5G"}
1
+ {"version":3,"file":"telemetry-service.d.ts","sourceRoot":"","sources":["../../src/common/telemetry-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,oBAAoB;AACpB,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAE3D,oBAAoB;AACpB,MAAM,WAAW,gBAAgB;IAC7B,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5G"}
@@ -16,45 +16,6 @@
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TelemetryService = void 0;
19
- exports.isTelemetryData = isTelemetryData;
20
- exports.snapshotTelemetryData = snapshotTelemetryData;
21
- const objects_1 = require("@theia/core/lib/common/objects");
22
- const types_1 = require("@theia/core/lib/common/types");
23
- function isTelemetryPrimitive(value) {
24
- return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
25
- }
26
- function isTelemetryArray(value) {
27
- if (!Array.isArray(value)) {
28
- return false;
29
- }
30
- if (value.length === 0) {
31
- return true;
32
- }
33
- if (!Object.prototype.hasOwnProperty.call(value, 0) || !isTelemetryPrimitive(value[0])) {
34
- return false;
35
- }
36
- const elementType = typeof value[0];
37
- for (let index = 1; index < value.length; index++) {
38
- if (!Object.prototype.hasOwnProperty.call(value, index) || !isTelemetryPrimitive(value[index]) || typeof value[index] !== elementType) {
39
- return false;
40
- }
41
- }
42
- return true;
43
- }
44
- function isTelemetryValue(value) {
45
- return isTelemetryPrimitive(value) || isTelemetryArray(value);
46
- }
47
- /** @experimental */
48
- function isTelemetryData(data) {
49
- if (!(0, types_1.isObject)(data) || Array.isArray(data) || Object.getPrototypeOf(data) !== Object.prototype) {
50
- return false;
51
- }
52
- return Object.values(data).every(isTelemetryValue);
53
- }
54
- /** @experimental */
55
- function snapshotTelemetryData(data) {
56
- return data === undefined ? undefined : (0, objects_1.deepFreeze)((0, objects_1.deepClone)(data));
57
- }
58
19
  /** @experimental */
59
20
  exports.TelemetryService = Symbol('TelemetryService');
60
21
  //# sourceMappingURL=telemetry-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-service.js","sourceRoot":"","sources":["../../src/common/telemetry-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AA4ChF,0CAKC;AAGD,sDAEC;AApDD,4DAAuE;AACvE,wDAAwD;AAaxD,SAAS,oBAAoB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;AAChG,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;YACpI,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACpC,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,oBAAoB;AACpB,SAAgB,eAAe,CAAC,IAAa;IACzC,IAAI,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7F,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,oBAAoB;AACpB,SAAgB,qBAAqB,CAAmB,IAAkC;IACtF,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,oBAAU,EAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC;AAQD,oBAAoB;AACP,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"telemetry-service.js","sourceRoot":"","sources":["../../src/common/telemetry-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAIhF,oBAAoB;AACP,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
@@ -16,9 +16,6 @@
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const chai_1 = require("chai");
19
- const uri_1 = require("@theia/core/lib/common/uri");
20
- const telemetry_protocol_1 = require("./telemetry-protocol");
21
- const telemetry_service_1 = require("./telemetry-service");
22
19
  const typedPayload = {
23
20
  action: 'open',
24
21
  duration: 12,
@@ -35,90 +32,5 @@ describe('telemetry service contract', () => {
35
32
  it('supports consumer-defined payload interfaces without an index signature', () => {
36
33
  (0, chai_1.expect)(compileTimeUsage).to.be.a('function');
37
34
  });
38
- it('validates event kind, attributes, and session', () => {
39
- const event = {
40
- topic: 'consumer/action',
41
- kind: 'error',
42
- data: typedPayload,
43
- attributes: { source: 'consumer' },
44
- session: 'frontend-session',
45
- timestamp: 42
46
- };
47
- (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)(event)).to.be.true;
48
- (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)({ ...event, kind: 'invalid' })).to.be.false;
49
- (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)({ ...event, session: '' })).to.be.false;
50
- (0, chai_1.expect)((0, telemetry_protocol_1.isValidTelemetryEvent)({ ...event, attributes: { nested: {} } })).to.be.false;
51
- });
52
- it('accepts plain flat payloads with primitive telemetry values', () => {
53
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(typedPayload)).to.be.true;
54
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({})).to.be.true;
55
- });
56
- it('accepts homogeneous primitive and empty arrays unchanged', () => {
57
- const strings = ['editor', 'open'];
58
- const numbers = [4, 8];
59
- const booleans = [true, false];
60
- const empty = [];
61
- const data = { strings, numbers, booleans, empty };
62
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(data)).to.be.true;
63
- (0, chai_1.expect)(data.strings).to.equal(strings);
64
- (0, chai_1.expect)(data.numbers).to.equal(numbers);
65
- (0, chai_1.expect)(data.booleans).to.equal(booleans);
66
- (0, chai_1.expect)(data.empty).to.equal(empty);
67
- });
68
- it('creates immutable snapshots without transforming accepted values', () => {
69
- const strings = ['editor', 'open'];
70
- const data = { action: 'open', duration: 12, successful: true, strings };
71
- const snapshot = (0, telemetry_service_1.snapshotTelemetryData)(data);
72
- (0, chai_1.expect)(snapshot).to.deep.equal(data);
73
- (0, chai_1.expect)(snapshot).not.to.equal(data);
74
- (0, chai_1.expect)(snapshot?.strings).not.to.equal(strings);
75
- (0, chai_1.expect)(Object.isFrozen(snapshot)).to.be.true;
76
- (0, chai_1.expect)(Object.isFrozen(snapshot?.strings)).to.be.true;
77
- (0, chai_1.expect)((0, telemetry_service_1.snapshotTelemetryData)(undefined)).to.be.undefined;
78
- });
79
- it('rejects non-object payloads', () => {
80
- for (const value of [undefined, 'value', 1, true]) {
81
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(value)).to.be.false;
82
- }
83
- // eslint-disable-next-line no-null/no-null
84
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(null)).to.be.false;
85
- });
86
- it('rejects top-level arrays and nested objects', () => {
87
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)([])).to.be.false;
88
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: { nested: true } })).to.be.false;
89
- });
90
- it('rejects mixed, nested, and sparse arrays', () => {
91
- const sparse = new Array(2);
92
- sparse[1] = 'value';
93
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: ['value', 1] })).to.be.false;
94
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: [['nested']] })).to.be.false;
95
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: sparse })).to.be.false;
96
- });
97
- it('rejects unsupported array elements', () => {
98
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: [{ nested: true }] })).to.be.false;
99
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: ['value', undefined] })).to.be.false;
100
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: ['value', () => 'value'] })).to.be.false;
101
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: ['value', Symbol('value')] })).to.be.false;
102
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: new Uint8Array([1, 2]) })).to.be.false;
103
- });
104
- it('rejects special and binary objects', () => {
105
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(new Error('failure'))).to.be.false;
106
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(new Date())).to.be.false;
107
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(new uri_1.default('file:///workspace'))).to.be.false;
108
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(new Uint8Array([1, 2]))).to.be.false;
109
- });
110
- it('rejects class instances even when their properties are flat', () => {
111
- class Payload {
112
- constructor() {
113
- this.value = 'value';
114
- }
115
- }
116
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)(new Payload())).to.be.false;
117
- });
118
- it('rejects unsupported values in otherwise plain payloads', () => {
119
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: undefined })).to.be.false;
120
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: () => 'value' })).to.be.false;
121
- (0, chai_1.expect)((0, telemetry_service_1.isTelemetryData)({ value: Symbol('value') })).to.be.false;
122
- });
123
35
  });
124
36
  //# sourceMappingURL=telemetry-service.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-service.spec.js","sourceRoot":"","sources":["../../src/common/telemetry-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAC9B,oDAA6C;AAC7C,6DAA6D;AAC7D,2DAA8G;AAW9G,MAAM,YAAY,GAAG;IACjB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAU;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;CACiB,CAAC;AAE3C,MAAM,gBAAgB,GAAG,CAAC,OAAyB,EAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAkB,iBAAiB,EAAE,YAAY,EAAE;IAC3H,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;CACrC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG;YACV,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,OAAgB;YACtB,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YAClC,OAAO,EAAE,kBAAkB;YAC3B,SAAS,EAAE,EAAE;SAChB,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChD,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACzE,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACrE,IAAA,aAAM,EAAC,IAAA,0CAAqB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjD,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAEnD,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzC,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,IAAA,aAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAEzE,MAAM,QAAQ,GAAG,IAAA,yCAAqB,EAAC,IAAI,CAAC,CAAC;QAE7C,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,IAAA,aAAM,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACtD,IAAA,aAAM,EAAC,IAAA,yCAAqB,EAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YAChD,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/C,CAAC;QACD,2CAA2C;QAC3C,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACxC,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QAEpB,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7D,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7D,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACnE,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACrE,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACzE,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC3E,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1D,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAChD,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,IAAI,aAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAClE,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO;YAAb;gBACI,UAAK,GAAG,OAAO,CAAC;YACpB,CAAC;SAAA;QACD,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1D,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9D,IAAA,aAAM,EAAC,IAAA,mCAAe,EAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"telemetry-service.spec.js","sourceRoot":"","sources":["../../src/common/telemetry-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAa9B,MAAM,YAAY,GAAG;IACjB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAU;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;CACiB,CAAC;AAE3C,MAAM,gBAAgB,GAAG,CAAC,OAAyB,EAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAkB,iBAAiB,EAAE,YAAY,EAAE;IAC3H,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;CACrC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -8,4 +8,21 @@ export type TelemetryLevel = 'off' | 'crash' | 'error' | 'all';
8
8
  export declare function isKindAllowedByLevel(level: TelemetryLevel, kind: TelemetryEventKind): boolean;
9
9
  /** @experimental */
10
10
  export declare const BACKEND_TELEMETRY_SESSION = "backend";
11
+ /** @experimental */
12
+ export type TelemetryPrimitive = string | number | boolean;
13
+ /** @experimental */
14
+ export type TelemetryValue = TelemetryPrimitive | readonly string[] | readonly number[] | readonly boolean[];
15
+ /** @experimental */
16
+ export type TelemetryData<T extends object> = {
17
+ [K in keyof T]: T[K] extends TelemetryValue ? T[K] : never;
18
+ };
19
+ /** @experimental */
20
+ export declare function isTelemetryData(data: unknown): data is Record<string, TelemetryValue>;
21
+ /** @experimental */
22
+ export declare function snapshotTelemetryData<T extends object>(data: TelemetryData<T> | undefined): TelemetryData<T> | undefined;
23
+ /** @experimental */
24
+ export interface TelemetryReportOptions {
25
+ readonly kind?: TelemetryEventKind;
26
+ readonly attributes?: TelemetryData<Record<string, TelemetryValue>>;
27
+ }
11
28
  //# sourceMappingURL=telemetry-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-types.d.ts","sourceRoot":"","sources":["../../src/common/telemetry-types.ts"],"names":[],"mappings":"AAgBA,oBAAoB;AACpB,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7D,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,oBAAoB;AACpB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAE/D,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAI7F;AAED,oBAAoB;AACpB,eAAO,MAAM,yBAAyB,YAAY,CAAC"}
1
+ {"version":3,"file":"telemetry-types.d.ts","sourceRoot":"","sources":["../../src/common/telemetry-types.ts"],"names":[],"mappings":"AAmBA,oBAAoB;AACpB,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7D,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,oBAAoB;AACpB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAE/D,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAI7F;AAED,oBAAoB;AACpB,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,oBAAoB;AACpB,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,oBAAoB;AACpB,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,OAAO,EAAE,CAAC;AAE7G,oBAAoB;AACpB,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KACzC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAC7D,CAAC;AA6BF,oBAAoB;AACpB,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAKrF;AAED,oBAAoB;AACpB,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAExH;AAED,oBAAoB;AACpB,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CACvE"}
@@ -18,6 +18,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.BACKEND_TELEMETRY_SESSION = void 0;
19
19
  exports.isTelemetryEventKind = isTelemetryEventKind;
20
20
  exports.isKindAllowedByLevel = isKindAllowedByLevel;
21
+ exports.isTelemetryData = isTelemetryData;
22
+ exports.snapshotTelemetryData = snapshotTelemetryData;
23
+ const objects_1 = require("@theia/core/lib/common/objects");
24
+ const types_1 = require("@theia/core/lib/common/types");
21
25
  /** @experimental */
22
26
  function isTelemetryEventKind(value) {
23
27
  return value === 'usage' || value === 'error' || value === 'crash';
@@ -30,4 +34,39 @@ function isKindAllowedByLevel(level, kind) {
30
34
  }
31
35
  /** @experimental */
32
36
  exports.BACKEND_TELEMETRY_SESSION = 'backend';
37
+ function isTelemetryPrimitive(value) {
38
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
39
+ }
40
+ function isTelemetryArray(value) {
41
+ if (!Array.isArray(value)) {
42
+ return false;
43
+ }
44
+ if (value.length === 0) {
45
+ return true;
46
+ }
47
+ if (!Object.prototype.hasOwnProperty.call(value, 0) || !isTelemetryPrimitive(value[0])) {
48
+ return false;
49
+ }
50
+ const elementType = typeof value[0];
51
+ for (let index = 1; index < value.length; index++) {
52
+ if (!Object.prototype.hasOwnProperty.call(value, index) || !isTelemetryPrimitive(value[index]) || typeof value[index] !== elementType) {
53
+ return false;
54
+ }
55
+ }
56
+ return true;
57
+ }
58
+ function isTelemetryValue(value) {
59
+ return isTelemetryPrimitive(value) || isTelemetryArray(value);
60
+ }
61
+ /** @experimental */
62
+ function isTelemetryData(data) {
63
+ if (!(0, types_1.isObject)(data) || Array.isArray(data) || Object.getPrototypeOf(data) !== Object.prototype) {
64
+ return false;
65
+ }
66
+ return Object.values(data).every(isTelemetryValue);
67
+ }
68
+ /** @experimental */
69
+ function snapshotTelemetryData(data) {
70
+ return data === undefined ? undefined : (0, objects_1.deepFreeze)((0, objects_1.deepClone)(data));
71
+ }
33
72
  //# sourceMappingURL=telemetry-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-types.js","sourceRoot":"","sources":["../../src/common/telemetry-types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAMhF,oDAEC;AAMD,oDAIC;AAbD,oBAAoB;AACpB,SAAgB,oBAAoB,CAAC,KAAc;IAC/C,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC;AACvE,CAAC;AAKD,oBAAoB;AACpB,SAAgB,oBAAoB,CAAC,KAAqB,EAAE,IAAwB;IAChF,OAAO,KAAK,KAAK,KAAK;WACf,KAAK,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC;WAC3D,KAAK,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC;AACjD,CAAC;AAED,oBAAoB;AACP,QAAA,yBAAyB,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"telemetry-types.js","sourceRoot":"","sources":["../../src/common/telemetry-types.ts"],"names":[],"mappings":"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"}
@@ -15,13 +15,93 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ const uri_1 = require("@theia/core/lib/common/uri");
18
19
  const chai_1 = require("chai");
19
20
  const telemetry_types_1 = require("./telemetry-types");
21
+ const typedPayload = {
22
+ action: 'open',
23
+ duration: 12,
24
+ successful: true,
25
+ tags: ['editor', 'open'],
26
+ measurements: [4, 8],
27
+ states: [true, false]
28
+ };
20
29
  describe('telemetry types', () => {
21
30
  it('validates telemetry event kinds', () => {
22
31
  (0, chai_1.expect)(['usage', 'error', 'crash'].every(telemetry_types_1.isTelemetryEventKind)).to.be.true;
23
32
  (0, chai_1.expect)((0, telemetry_types_1.isTelemetryEventKind)('invalid')).to.be.false;
24
33
  });
34
+ it('accepts plain flat payloads with primitive telemetry values', () => {
35
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(typedPayload)).to.be.true;
36
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({})).to.be.true;
37
+ });
38
+ it('accepts homogeneous primitive and empty arrays unchanged', () => {
39
+ const strings = ['editor', 'open'];
40
+ const numbers = [4, 8];
41
+ const booleans = [true, false];
42
+ const empty = [];
43
+ const data = { strings, numbers, booleans, empty };
44
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(data)).to.be.true;
45
+ (0, chai_1.expect)(data.strings).to.equal(strings);
46
+ (0, chai_1.expect)(data.numbers).to.equal(numbers);
47
+ (0, chai_1.expect)(data.booleans).to.equal(booleans);
48
+ (0, chai_1.expect)(data.empty).to.equal(empty);
49
+ });
50
+ it('creates immutable snapshots without transforming accepted values', () => {
51
+ const strings = ['editor', 'open'];
52
+ const data = { action: 'open', duration: 12, successful: true, strings };
53
+ const snapshot = (0, telemetry_types_1.snapshotTelemetryData)(data);
54
+ (0, chai_1.expect)(snapshot).to.deep.equal(data);
55
+ (0, chai_1.expect)(snapshot).not.to.equal(data);
56
+ (0, chai_1.expect)(snapshot?.strings).not.to.equal(strings);
57
+ (0, chai_1.expect)(Object.isFrozen(snapshot)).to.be.true;
58
+ (0, chai_1.expect)(Object.isFrozen(snapshot?.strings)).to.be.true;
59
+ (0, chai_1.expect)((0, telemetry_types_1.snapshotTelemetryData)(undefined)).to.be.undefined;
60
+ });
61
+ it('rejects non-object payloads', () => {
62
+ for (const value of [undefined, 'value', 1, true]) {
63
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(value)).to.be.false;
64
+ }
65
+ // eslint-disable-next-line no-null/no-null
66
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(null)).to.be.false;
67
+ });
68
+ it('rejects top-level arrays and nested objects', () => {
69
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)([])).to.be.false;
70
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: { nested: true } })).to.be.false;
71
+ });
72
+ it('rejects mixed, nested, and sparse arrays', () => {
73
+ const sparse = new Array(2);
74
+ sparse[1] = 'value';
75
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: ['value', 1] })).to.be.false;
76
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: [['nested']] })).to.be.false;
77
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: sparse })).to.be.false;
78
+ });
79
+ it('rejects unsupported array elements', () => {
80
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: [{ nested: true }] })).to.be.false;
81
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: ['value', undefined] })).to.be.false;
82
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: ['value', () => 'value'] })).to.be.false;
83
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: ['value', Symbol('value')] })).to.be.false;
84
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: new Uint8Array([1, 2]) })).to.be.false;
85
+ });
86
+ it('rejects special and binary objects', () => {
87
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(new Error('failure'))).to.be.false;
88
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(new Date())).to.be.false;
89
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(new uri_1.default('file:///workspace'))).to.be.false;
90
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(new Uint8Array([1, 2]))).to.be.false;
91
+ });
92
+ it('rejects class instances even when their properties are flat', () => {
93
+ class Payload {
94
+ constructor() {
95
+ this.value = 'value';
96
+ }
97
+ }
98
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)(new Payload())).to.be.false;
99
+ });
100
+ it('rejects unsupported values in otherwise plain payloads', () => {
101
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: undefined })).to.be.false;
102
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: () => 'value' })).to.be.false;
103
+ (0, chai_1.expect)((0, telemetry_types_1.isTelemetryData)({ value: Symbol('value') })).to.be.false;
104
+ });
25
105
  it('maps telemetry levels to event kinds', () => {
26
106
  const kinds = ['usage', 'error', 'crash'];
27
107
  const levels = ['off', 'crash', 'error', 'all'];
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-types.spec.js","sourceRoot":"","sources":["../../src/common/telemetry-types.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,gDAAgD;AAChD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAC9B,uDAA+F;AAE/F,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,IAAA,aAAM,EAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,sCAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC3E,IAAA,aAAM,EAAC,IAAA,sCAAoB,EAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;QACnD,MAAM,MAAM,GAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAClE,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,sCAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/F,EAAE;YACF,CAAC,OAAO,CAAC;YACT,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;SAC9B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"telemetry-types.spec.js","sourceRoot":"","sources":["../../src/common/telemetry-types.spec.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import { BackendApplicationContribution } from '@theia/core/lib/node/backend-app
3
3
  import { TelemetryConsentProvider } from '../common/telemetry-consent-provider';
4
4
  import { TelemetryPreferences } from '../common/telemetry-preferences';
5
5
  import { TelemetryEvent, TelemetryRpc } from '../common/telemetry-protocol';
6
- import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
6
+ import { TelemetryService } from '../common/telemetry-service';
7
+ import { TelemetryData, TelemetryReportOptions } from '../common/telemetry-types';
7
8
  import { TelemetrySink } from './telemetry-sink';
8
9
  interface ValidatedTelemetrySink {
9
10
  readonly sink: TelemetrySink;
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-service-impl.d.ts","sourceRoot":"","sources":["../../src/node/telemetry-service-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAqB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EACH,cAAc,EAAE,YAAY,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGtG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,UAAU,sBAAsB;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;CACtC;AAED,qBACa,oBAAqB,YAAW,gBAAgB,EAAE,YAAY,EAAE,8BAA8B;IAEvG,SAAS,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAC/D,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACtE,SAAS,CAAC,cAAc,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAa;IACrE,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,CAAM;IAC/C,SAAS,CAAC,0BAA0B,UAAS;IAG7C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAGrD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAGrE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,IAAI,IAAI,IAAI;IAyBtB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAIxG,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI3B,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,UAAQ,GAAG,IAAI;IAoB3D,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAoBjD,SAAS,CAAC,QAAQ,IAAI,SAAS,sBAAsB,EAAE;IAqCvD,SAAS,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAwB9D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAGhE"}
1
+ {"version":3,"file":"telemetry-service-impl.d.ts","sourceRoot":"","sources":["../../src/node/telemetry-service-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAqB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EACH,cAAc,EAAE,YAAY,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAA6B,aAAa,EAAE,sBAAsB,EAAwB,MAAM,2BAA2B,CAAC;AACnI,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,UAAU,sBAAsB;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;CACtC;AAED,qBACa,oBAAqB,YAAW,gBAAgB,EAAE,YAAY,EAAE,8BAA8B;IAEvG,SAAS,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAC/D,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACtE,SAAS,CAAC,cAAc,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAa;IACrE,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,CAAM;IAC/C,SAAS,CAAC,0BAA0B,UAAS;IAG7C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAGrD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAGrE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,IAAI,IAAI,IAAI;IAyBtB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAIxG,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI3B,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,UAAQ,GAAG,IAAI;IAoB3D,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAoBjD,SAAS,CAAC,QAAQ,IAAI,SAAS,sBAAsB,EAAE;IAqCvD,SAAS,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAwB9D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAGhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-service-impl.js","sourceRoot":"","sources":["../../src/node/telemetry-service-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-service-impl.js","sourceRoot":"","sources":["../../src/node/telemetry-service-impl.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@theia/telemetry",
3
- "version": "1.77.0-next.1+8b94967c4",
3
+ "version": "1.77.0-next.12+3980769cc",
4
4
  "description": "Theia - Telemetry Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.77.0-next.1+8b94967c4",
6
+ "@theia/core": "1.77.0-next.12+3980769cc",
7
7
  "tslib": "^2.8.1"
8
8
  },
9
9
  "publishConfig": {
@@ -48,5 +48,5 @@
48
48
  "nyc": {
49
49
  "extends": "../../configs/nyc.json"
50
50
  },
51
- "gitHead": "8b94967c4cfa0dcf688a345d28b3ac2e0d7e298a"
51
+ "gitHead": "3980769cc0ccf74ccac5a5a995f41dce3773d759"
52
52
  }
@@ -21,9 +21,9 @@ import { TelemetryConsentProvider } from '../common/telemetry-consent-provider';
21
21
  import {
22
22
  TelemetryRpc, createTelemetryEvent, describeTelemetryTopic, isValidTelemetryEvent, snapshotTelemetryEvent
23
23
  } from '../common/telemetry-protocol';
24
- import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
25
- import { isKindAllowedByLevel } from '../common/telemetry-types';
24
+ import { TelemetryService } from '../common/telemetry-service';
26
25
  import { matchesTelemetryTopic } from '../common/telemetry-topic';
26
+ import { TelemetryData, TelemetryReportOptions, isKindAllowedByLevel } from '../common/telemetry-types';
27
27
 
28
28
  @injectable()
29
29
  export class BrowserTelemetryService implements TelemetryService {
@@ -15,7 +15,8 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable } from '@theia/core/shared/inversify';
18
- import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
18
+ import { TelemetryService } from '../common/telemetry-service';
19
+ import { TelemetryData, TelemetryReportOptions } from '../common/telemetry-types';
19
20
 
20
21
  @injectable()
21
22
  export class BrowserOnlyTelemetryService implements TelemetryService {
@@ -0,0 +1,36 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 STMicroelectronics and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { expect } from 'chai';
18
+ import { isValidTelemetryEvent } from './telemetry-protocol';
19
+
20
+ describe('telemetry protocol', () => {
21
+ it('validates event kind, attributes, and session', () => {
22
+ const event = {
23
+ topic: 'consumer/action',
24
+ kind: 'error' as const,
25
+ data: { action: 'open', duration: 12 },
26
+ attributes: { source: 'consumer' },
27
+ session: 'frontend-session',
28
+ timestamp: 42
29
+ };
30
+
31
+ expect(isValidTelemetryEvent(event)).to.be.true;
32
+ expect(isValidTelemetryEvent({ ...event, kind: 'invalid' })).to.be.false;
33
+ expect(isValidTelemetryEvent({ ...event, session: '' })).to.be.false;
34
+ expect(isValidTelemetryEvent({ ...event, attributes: { nested: {} } })).to.be.false;
35
+ });
36
+ });
@@ -15,9 +15,10 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { isObject } from '@theia/core/lib/common/types';
18
- import { TelemetryData, TelemetryReportOptions, TelemetryValue, isTelemetryData, snapshotTelemetryData } from './telemetry-service';
19
18
  import { isValidTelemetryTopic } from './telemetry-topic';
20
- import { TelemetryEventKind, isTelemetryEventKind } from './telemetry-types';
19
+ import {
20
+ TelemetryData, TelemetryEventKind, TelemetryReportOptions, TelemetryValue, isTelemetryData, isTelemetryEventKind, snapshotTelemetryData
21
+ } from './telemetry-types';
21
22
 
22
23
  /** @experimental */
23
24
  export interface TelemetryEvent<T extends object = Record<string, TelemetryValue>> {
@@ -15,9 +15,8 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { expect } from 'chai';
18
- import URI from '@theia/core/lib/common/uri';
19
- import { isValidTelemetryEvent } from './telemetry-protocol';
20
- import { TelemetryData, TelemetryService, isTelemetryData, snapshotTelemetryData } from './telemetry-service';
18
+ import { TelemetryService } from './telemetry-service';
19
+ import { TelemetryData } from './telemetry-types';
21
20
 
22
21
  interface ConsumerPayload {
23
22
  action: string;
@@ -46,103 +45,4 @@ describe('telemetry service contract', () => {
46
45
  it('supports consumer-defined payload interfaces without an index signature', () => {
47
46
  expect(compileTimeUsage).to.be.a('function');
48
47
  });
49
-
50
- it('validates event kind, attributes, and session', () => {
51
- const event = {
52
- topic: 'consumer/action',
53
- kind: 'error' as const,
54
- data: typedPayload,
55
- attributes: { source: 'consumer' },
56
- session: 'frontend-session',
57
- timestamp: 42
58
- };
59
-
60
- expect(isValidTelemetryEvent(event)).to.be.true;
61
- expect(isValidTelemetryEvent({ ...event, kind: 'invalid' })).to.be.false;
62
- expect(isValidTelemetryEvent({ ...event, session: '' })).to.be.false;
63
- expect(isValidTelemetryEvent({ ...event, attributes: { nested: {} } })).to.be.false;
64
- });
65
-
66
- it('accepts plain flat payloads with primitive telemetry values', () => {
67
- expect(isTelemetryData(typedPayload)).to.be.true;
68
- expect(isTelemetryData({})).to.be.true;
69
- });
70
-
71
- it('accepts homogeneous primitive and empty arrays unchanged', () => {
72
- const strings = ['editor', 'open'];
73
- const numbers = [4, 8];
74
- const booleans = [true, false];
75
- const empty: string[] = [];
76
- const data = { strings, numbers, booleans, empty };
77
-
78
- expect(isTelemetryData(data)).to.be.true;
79
- expect(data.strings).to.equal(strings);
80
- expect(data.numbers).to.equal(numbers);
81
- expect(data.booleans).to.equal(booleans);
82
- expect(data.empty).to.equal(empty);
83
- });
84
-
85
- it('creates immutable snapshots without transforming accepted values', () => {
86
- const strings = ['editor', 'open'];
87
- const data = { action: 'open', duration: 12, successful: true, strings };
88
-
89
- const snapshot = snapshotTelemetryData(data);
90
-
91
- expect(snapshot).to.deep.equal(data);
92
- expect(snapshot).not.to.equal(data);
93
- expect(snapshot?.strings).not.to.equal(strings);
94
- expect(Object.isFrozen(snapshot)).to.be.true;
95
- expect(Object.isFrozen(snapshot?.strings)).to.be.true;
96
- expect(snapshotTelemetryData(undefined)).to.be.undefined;
97
- });
98
-
99
- it('rejects non-object payloads', () => {
100
- for (const value of [undefined, 'value', 1, true]) {
101
- expect(isTelemetryData(value)).to.be.false;
102
- }
103
- // eslint-disable-next-line no-null/no-null
104
- expect(isTelemetryData(null)).to.be.false;
105
- });
106
-
107
- it('rejects top-level arrays and nested objects', () => {
108
- expect(isTelemetryData([])).to.be.false;
109
- expect(isTelemetryData({ value: { nested: true } })).to.be.false;
110
- });
111
-
112
- it('rejects mixed, nested, and sparse arrays', () => {
113
- const sparse = new Array<string>(2);
114
- sparse[1] = 'value';
115
-
116
- expect(isTelemetryData({ value: ['value', 1] })).to.be.false;
117
- expect(isTelemetryData({ value: [['nested']] })).to.be.false;
118
- expect(isTelemetryData({ value: sparse })).to.be.false;
119
- });
120
-
121
- it('rejects unsupported array elements', () => {
122
- expect(isTelemetryData({ value: [{ nested: true }] })).to.be.false;
123
- expect(isTelemetryData({ value: ['value', undefined] })).to.be.false;
124
- expect(isTelemetryData({ value: ['value', () => 'value'] })).to.be.false;
125
- expect(isTelemetryData({ value: ['value', Symbol('value')] })).to.be.false;
126
- expect(isTelemetryData({ value: new Uint8Array([1, 2]) })).to.be.false;
127
- });
128
-
129
- it('rejects special and binary objects', () => {
130
- expect(isTelemetryData(new Error('failure'))).to.be.false;
131
- expect(isTelemetryData(new Date())).to.be.false;
132
- expect(isTelemetryData(new URI('file:///workspace'))).to.be.false;
133
- expect(isTelemetryData(new Uint8Array([1, 2]))).to.be.false;
134
- });
135
-
136
- it('rejects class instances even when their properties are flat', () => {
137
- class Payload {
138
- value = 'value';
139
- }
140
- expect(isTelemetryData(new Payload())).to.be.false;
141
- });
142
-
143
- it('rejects unsupported values in otherwise plain payloads', () => {
144
- expect(isTelemetryData({ value: undefined })).to.be.false;
145
- expect(isTelemetryData({ value: () => 'value' })).to.be.false;
146
- expect(isTelemetryData({ value: Symbol('value') })).to.be.false;
147
- });
148
48
  });
@@ -14,65 +14,7 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { deepClone, deepFreeze } from '@theia/core/lib/common/objects';
18
- import { isObject } from '@theia/core/lib/common/types';
19
- import { TelemetryEventKind } from './telemetry-types';
20
-
21
- /** @experimental */
22
- export type TelemetryPrimitive = string | number | boolean;
23
- /** @experimental */
24
- export type TelemetryValue = TelemetryPrimitive | readonly string[] | readonly number[] | readonly boolean[];
25
-
26
- /** @experimental */
27
- export type TelemetryData<T extends object> = {
28
- [K in keyof T]: T[K] extends TelemetryValue ? T[K] : never;
29
- };
30
-
31
- function isTelemetryPrimitive(value: unknown): value is TelemetryPrimitive {
32
- return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
33
- }
34
-
35
- function isTelemetryArray(value: unknown): value is readonly TelemetryPrimitive[] {
36
- if (!Array.isArray(value)) {
37
- return false;
38
- }
39
- if (value.length === 0) {
40
- return true;
41
- }
42
- if (!Object.prototype.hasOwnProperty.call(value, 0) || !isTelemetryPrimitive(value[0])) {
43
- return false;
44
- }
45
- const elementType = typeof value[0];
46
- for (let index = 1; index < value.length; index++) {
47
- if (!Object.prototype.hasOwnProperty.call(value, index) || !isTelemetryPrimitive(value[index]) || typeof value[index] !== elementType) {
48
- return false;
49
- }
50
- }
51
- return true;
52
- }
53
-
54
- function isTelemetryValue(value: unknown): value is TelemetryValue {
55
- return isTelemetryPrimitive(value) || isTelemetryArray(value);
56
- }
57
-
58
- /** @experimental */
59
- export function isTelemetryData(data: unknown): data is Record<string, TelemetryValue> {
60
- if (!isObject(data) || Array.isArray(data) || Object.getPrototypeOf(data) !== Object.prototype) {
61
- return false;
62
- }
63
- return Object.values(data).every(isTelemetryValue);
64
- }
65
-
66
- /** @experimental */
67
- export function snapshotTelemetryData<T extends object>(data: TelemetryData<T> | undefined): TelemetryData<T> | undefined {
68
- return data === undefined ? undefined : deepFreeze(deepClone(data));
69
- }
70
-
71
- /** @experimental */
72
- export interface TelemetryReportOptions {
73
- readonly kind?: TelemetryEventKind;
74
- readonly attributes?: TelemetryData<Record<string, TelemetryValue>>;
75
- }
17
+ import { TelemetryData, TelemetryReportOptions } from './telemetry-types';
76
18
 
77
19
  /** @experimental */
78
20
  export const TelemetryService = Symbol('TelemetryService');
@@ -14,8 +14,18 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ import URI from '@theia/core/lib/common/uri';
17
18
  import { expect } from 'chai';
18
- import { TelemetryLevel, isKindAllowedByLevel, isTelemetryEventKind } from './telemetry-types';
19
+ import { TelemetryLevel, isKindAllowedByLevel, isTelemetryData, isTelemetryEventKind, snapshotTelemetryData } from './telemetry-types';
20
+
21
+ const typedPayload = {
22
+ action: 'open',
23
+ duration: 12,
24
+ successful: true,
25
+ tags: ['editor', 'open'],
26
+ measurements: [4, 8],
27
+ states: [true, false]
28
+ };
19
29
 
20
30
  describe('telemetry types', () => {
21
31
  it('validates telemetry event kinds', () => {
@@ -23,6 +33,89 @@ describe('telemetry types', () => {
23
33
  expect(isTelemetryEventKind('invalid')).to.be.false;
24
34
  });
25
35
 
36
+ it('accepts plain flat payloads with primitive telemetry values', () => {
37
+ expect(isTelemetryData(typedPayload)).to.be.true;
38
+ expect(isTelemetryData({})).to.be.true;
39
+ });
40
+
41
+ it('accepts homogeneous primitive and empty arrays unchanged', () => {
42
+ const strings = ['editor', 'open'];
43
+ const numbers = [4, 8];
44
+ const booleans = [true, false];
45
+ const empty: string[] = [];
46
+ const data = { strings, numbers, booleans, empty };
47
+
48
+ expect(isTelemetryData(data)).to.be.true;
49
+ expect(data.strings).to.equal(strings);
50
+ expect(data.numbers).to.equal(numbers);
51
+ expect(data.booleans).to.equal(booleans);
52
+ expect(data.empty).to.equal(empty);
53
+ });
54
+
55
+ it('creates immutable snapshots without transforming accepted values', () => {
56
+ const strings = ['editor', 'open'];
57
+ const data = { action: 'open', duration: 12, successful: true, strings };
58
+
59
+ const snapshot = snapshotTelemetryData(data);
60
+
61
+ expect(snapshot).to.deep.equal(data);
62
+ expect(snapshot).not.to.equal(data);
63
+ expect(snapshot?.strings).not.to.equal(strings);
64
+ expect(Object.isFrozen(snapshot)).to.be.true;
65
+ expect(Object.isFrozen(snapshot?.strings)).to.be.true;
66
+ expect(snapshotTelemetryData(undefined)).to.be.undefined;
67
+ });
68
+
69
+ it('rejects non-object payloads', () => {
70
+ for (const value of [undefined, 'value', 1, true]) {
71
+ expect(isTelemetryData(value)).to.be.false;
72
+ }
73
+ // eslint-disable-next-line no-null/no-null
74
+ expect(isTelemetryData(null)).to.be.false;
75
+ });
76
+
77
+ it('rejects top-level arrays and nested objects', () => {
78
+ expect(isTelemetryData([])).to.be.false;
79
+ expect(isTelemetryData({ value: { nested: true } })).to.be.false;
80
+ });
81
+
82
+ it('rejects mixed, nested, and sparse arrays', () => {
83
+ const sparse = new Array<string>(2);
84
+ sparse[1] = 'value';
85
+
86
+ expect(isTelemetryData({ value: ['value', 1] })).to.be.false;
87
+ expect(isTelemetryData({ value: [['nested']] })).to.be.false;
88
+ expect(isTelemetryData({ value: sparse })).to.be.false;
89
+ });
90
+
91
+ it('rejects unsupported array elements', () => {
92
+ expect(isTelemetryData({ value: [{ nested: true }] })).to.be.false;
93
+ expect(isTelemetryData({ value: ['value', undefined] })).to.be.false;
94
+ expect(isTelemetryData({ value: ['value', () => 'value'] })).to.be.false;
95
+ expect(isTelemetryData({ value: ['value', Symbol('value')] })).to.be.false;
96
+ expect(isTelemetryData({ value: new Uint8Array([1, 2]) })).to.be.false;
97
+ });
98
+
99
+ it('rejects special and binary objects', () => {
100
+ expect(isTelemetryData(new Error('failure'))).to.be.false;
101
+ expect(isTelemetryData(new Date())).to.be.false;
102
+ expect(isTelemetryData(new URI('file:///workspace'))).to.be.false;
103
+ expect(isTelemetryData(new Uint8Array([1, 2]))).to.be.false;
104
+ });
105
+
106
+ it('rejects class instances even when their properties are flat', () => {
107
+ class Payload {
108
+ value = 'value';
109
+ }
110
+ expect(isTelemetryData(new Payload())).to.be.false;
111
+ });
112
+
113
+ it('rejects unsupported values in otherwise plain payloads', () => {
114
+ expect(isTelemetryData({ value: undefined })).to.be.false;
115
+ expect(isTelemetryData({ value: () => 'value' })).to.be.false;
116
+ expect(isTelemetryData({ value: Symbol('value') })).to.be.false;
117
+ });
118
+
26
119
  it('maps telemetry levels to event kinds', () => {
27
120
  const kinds = ['usage', 'error', 'crash'] as const;
28
121
  const levels: TelemetryLevel[] = ['off', 'crash', 'error', 'all'];
@@ -14,6 +14,9 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ import { deepClone, deepFreeze } from '@theia/core/lib/common/objects';
18
+ import { isObject } from '@theia/core/lib/common/types';
19
+
17
20
  /** @experimental */
18
21
  export type TelemetryEventKind = 'usage' | 'error' | 'crash';
19
22
 
@@ -34,3 +37,59 @@ export function isKindAllowedByLevel(level: TelemetryLevel, kind: TelemetryEvent
34
37
 
35
38
  /** @experimental */
36
39
  export const BACKEND_TELEMETRY_SESSION = 'backend';
40
+
41
+ /** @experimental */
42
+ export type TelemetryPrimitive = string | number | boolean;
43
+ /** @experimental */
44
+ export type TelemetryValue = TelemetryPrimitive | readonly string[] | readonly number[] | readonly boolean[];
45
+
46
+ /** @experimental */
47
+ export type TelemetryData<T extends object> = {
48
+ [K in keyof T]: T[K] extends TelemetryValue ? T[K] : never;
49
+ };
50
+
51
+ function isTelemetryPrimitive(value: unknown): value is TelemetryPrimitive {
52
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
53
+ }
54
+
55
+ function isTelemetryArray(value: unknown): value is readonly TelemetryPrimitive[] {
56
+ if (!Array.isArray(value)) {
57
+ return false;
58
+ }
59
+ if (value.length === 0) {
60
+ return true;
61
+ }
62
+ if (!Object.prototype.hasOwnProperty.call(value, 0) || !isTelemetryPrimitive(value[0])) {
63
+ return false;
64
+ }
65
+ const elementType = typeof value[0];
66
+ for (let index = 1; index < value.length; index++) {
67
+ if (!Object.prototype.hasOwnProperty.call(value, index) || !isTelemetryPrimitive(value[index]) || typeof value[index] !== elementType) {
68
+ return false;
69
+ }
70
+ }
71
+ return true;
72
+ }
73
+
74
+ function isTelemetryValue(value: unknown): value is TelemetryValue {
75
+ return isTelemetryPrimitive(value) || isTelemetryArray(value);
76
+ }
77
+
78
+ /** @experimental */
79
+ export function isTelemetryData(data: unknown): data is Record<string, TelemetryValue> {
80
+ if (!isObject(data) || Array.isArray(data) || Object.getPrototypeOf(data) !== Object.prototype) {
81
+ return false;
82
+ }
83
+ return Object.values(data).every(isTelemetryValue);
84
+ }
85
+
86
+ /** @experimental */
87
+ export function snapshotTelemetryData<T extends object>(data: TelemetryData<T> | undefined): TelemetryData<T> | undefined {
88
+ return data === undefined ? undefined : deepFreeze(deepClone(data));
89
+ }
90
+
91
+ /** @experimental */
92
+ export interface TelemetryReportOptions {
93
+ readonly kind?: TelemetryEventKind;
94
+ readonly attributes?: TelemetryData<Record<string, TelemetryValue>>;
95
+ }
@@ -22,9 +22,9 @@ import { TELEMETRY_FILTERS, TelemetryPreferences } from '../common/telemetry-pre
22
22
  import {
23
23
  TelemetryEvent, TelemetryRpc, createTelemetryEvent, describeTelemetryEventTopic, isValidTelemetryEvent, snapshotTelemetryEvent
24
24
  } from '../common/telemetry-protocol';
25
- import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
25
+ import { TelemetryService } from '../common/telemetry-service';
26
26
  import { isValidTelemetrySinkId, isValidTelemetryTopicPattern, matchesTelemetryTopic } from '../common/telemetry-topic';
27
- import { BACKEND_TELEMETRY_SESSION, isKindAllowedByLevel } from '../common/telemetry-types';
27
+ import { BACKEND_TELEMETRY_SESSION, TelemetryData, TelemetryReportOptions, isKindAllowedByLevel } from '../common/telemetry-types';
28
28
  import { TelemetrySink } from './telemetry-sink';
29
29
 
30
30
  const MAX_PENDING_EVENTS = 1_000;