@theia/telemetry 1.74.0-next.68

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 (122) hide show
  1. package/README.md +66 -0
  2. package/lib/browser/browser-telemetry-service.d.ts +16 -0
  3. package/lib/browser/browser-telemetry-service.d.ts.map +1 -0
  4. package/lib/browser/browser-telemetry-service.js +68 -0
  5. package/lib/browser/browser-telemetry-service.js.map +1 -0
  6. package/lib/browser/browser-telemetry-service.spec.d.ts +2 -0
  7. package/lib/browser/browser-telemetry-service.spec.d.ts.map +1 -0
  8. package/lib/browser/browser-telemetry-service.spec.js +163 -0
  9. package/lib/browser/browser-telemetry-service.spec.js.map +1 -0
  10. package/lib/browser/index.d.ts +2 -0
  11. package/lib/browser/index.d.ts.map +1 -0
  12. package/lib/browser/index.js +20 -0
  13. package/lib/browser/index.js.map +1 -0
  14. package/lib/browser/telemetry-frontend-module.d.ts +4 -0
  15. package/lib/browser/telemetry-frontend-module.d.ts.map +1 -0
  16. package/lib/browser/telemetry-frontend-module.js +35 -0
  17. package/lib/browser/telemetry-frontend-module.js.map +1 -0
  18. package/lib/browser-only/browser-only-telemetry-service.d.ts +5 -0
  19. package/lib/browser-only/browser-only-telemetry-service.d.ts.map +1 -0
  20. package/lib/browser-only/browser-only-telemetry-service.js +28 -0
  21. package/lib/browser-only/browser-only-telemetry-service.js.map +1 -0
  22. package/lib/browser-only/browser-only-telemetry-service.spec.d.ts +2 -0
  23. package/lib/browser-only/browser-only-telemetry-service.spec.d.ts.map +1 -0
  24. package/lib/browser-only/browser-only-telemetry-service.spec.js +42 -0
  25. package/lib/browser-only/browser-only-telemetry-service.spec.js.map +1 -0
  26. package/lib/browser-only/telemetry-frontend-only-module.d.ts +4 -0
  27. package/lib/browser-only/telemetry-frontend-only-module.d.ts.map +1 -0
  28. package/lib/browser-only/telemetry-frontend-only-module.js +30 -0
  29. package/lib/browser-only/telemetry-frontend-only-module.js.map +1 -0
  30. package/lib/common/index.d.ts +7 -0
  31. package/lib/common/index.d.ts.map +1 -0
  32. package/lib/common/index.js +25 -0
  33. package/lib/common/index.js.map +1 -0
  34. package/lib/common/telemetry-consent-provider.d.ts +24 -0
  35. package/lib/common/telemetry-consent-provider.d.ts.map +1 -0
  36. package/lib/common/telemetry-consent-provider.js +73 -0
  37. package/lib/common/telemetry-consent-provider.js.map +1 -0
  38. package/lib/common/telemetry-consent-provider.spec.d.ts +2 -0
  39. package/lib/common/telemetry-consent-provider.spec.d.ts.map +1 -0
  40. package/lib/common/telemetry-consent-provider.spec.js +87 -0
  41. package/lib/common/telemetry-consent-provider.spec.js.map +1 -0
  42. package/lib/common/telemetry-preferences.d.ts +29 -0
  43. package/lib/common/telemetry-preferences.d.ts.map +1 -0
  44. package/lib/common/telemetry-preferences.js +77 -0
  45. package/lib/common/telemetry-preferences.js.map +1 -0
  46. package/lib/common/telemetry-preferences.spec.d.ts +2 -0
  47. package/lib/common/telemetry-preferences.spec.d.ts.map +1 -0
  48. package/lib/common/telemetry-preferences.spec.js +50 -0
  49. package/lib/common/telemetry-preferences.spec.js.map +1 -0
  50. package/lib/common/telemetry-protocol.d.ts +30 -0
  51. package/lib/common/telemetry-protocol.d.ts.map +1 -0
  52. package/lib/common/telemetry-protocol.js +78 -0
  53. package/lib/common/telemetry-protocol.js.map +1 -0
  54. package/lib/common/telemetry-service.d.ts +28 -0
  55. package/lib/common/telemetry-service.d.ts.map +1 -0
  56. package/lib/common/telemetry-service.js +65 -0
  57. package/lib/common/telemetry-service.js.map +1 -0
  58. package/lib/common/telemetry-service.spec.d.ts +2 -0
  59. package/lib/common/telemetry-service.spec.d.ts.map +1 -0
  60. package/lib/common/telemetry-service.spec.js +128 -0
  61. package/lib/common/telemetry-service.spec.js.map +1 -0
  62. package/lib/common/telemetry-topic.d.ts +9 -0
  63. package/lib/common/telemetry-topic.d.ts.map +1 -0
  64. package/lib/common/telemetry-topic.js +61 -0
  65. package/lib/common/telemetry-topic.js.map +1 -0
  66. package/lib/common/telemetry-topic.spec.d.ts +2 -0
  67. package/lib/common/telemetry-topic.spec.d.ts.map +1 -0
  68. package/lib/common/telemetry-topic.spec.js +67 -0
  69. package/lib/common/telemetry-topic.spec.js.map +1 -0
  70. package/lib/common/telemetry-types.d.ts +5 -0
  71. package/lib/common/telemetry-types.d.ts.map +1 -0
  72. package/lib/common/telemetry-types.js +21 -0
  73. package/lib/common/telemetry-types.js.map +1 -0
  74. package/lib/common/test/recording-logger.d.ts +9 -0
  75. package/lib/common/test/recording-logger.d.ts.map +1 -0
  76. package/lib/common/test/recording-logger.js +36 -0
  77. package/lib/common/test/recording-logger.js.map +1 -0
  78. package/lib/node/index.d.ts +3 -0
  79. package/lib/node/index.d.ts.map +1 -0
  80. package/lib/node/index.js +21 -0
  81. package/lib/node/index.js.map +1 -0
  82. package/lib/node/telemetry-backend-module.d.ts +4 -0
  83. package/lib/node/telemetry-backend-module.d.ts.map +1 -0
  84. package/lib/node/telemetry-backend-module.js +37 -0
  85. package/lib/node/telemetry-backend-module.js.map +1 -0
  86. package/lib/node/telemetry-service-impl.d.ts +36 -0
  87. package/lib/node/telemetry-service-impl.d.ts.map +1 -0
  88. package/lib/node/telemetry-service-impl.js +208 -0
  89. package/lib/node/telemetry-service-impl.js.map +1 -0
  90. package/lib/node/telemetry-service-impl.spec.d.ts +2 -0
  91. package/lib/node/telemetry-service-impl.spec.d.ts.map +1 -0
  92. package/lib/node/telemetry-service-impl.spec.js +411 -0
  93. package/lib/node/telemetry-service-impl.spec.js.map +1 -0
  94. package/lib/node/telemetry-sink.d.ts +31 -0
  95. package/lib/node/telemetry-sink.d.ts.map +1 -0
  96. package/lib/node/telemetry-sink.js +21 -0
  97. package/lib/node/telemetry-sink.js.map +1 -0
  98. package/package.json +52 -0
  99. package/src/browser/browser-telemetry-service.spec.ts +193 -0
  100. package/src/browser/browser-telemetry-service.ts +69 -0
  101. package/src/browser/index.ts +17 -0
  102. package/src/browser/telemetry-frontend-module.ts +34 -0
  103. package/src/browser-only/browser-only-telemetry-service.spec.ts +44 -0
  104. package/src/browser-only/browser-only-telemetry-service.ts +23 -0
  105. package/src/browser-only/telemetry-frontend-only-module.ts +28 -0
  106. package/src/common/index.ts +22 -0
  107. package/src/common/telemetry-consent-provider.spec.ts +95 -0
  108. package/src/common/telemetry-consent-provider.ts +72 -0
  109. package/src/common/telemetry-preferences.spec.ts +56 -0
  110. package/src/common/telemetry-preferences.ts +91 -0
  111. package/src/common/telemetry-protocol.ts +100 -0
  112. package/src/common/telemetry-service.spec.ts +152 -0
  113. package/src/common/telemetry-service.ts +90 -0
  114. package/src/common/telemetry-topic.spec.ts +78 -0
  115. package/src/common/telemetry-topic.ts +60 -0
  116. package/src/common/telemetry-types.ts +21 -0
  117. package/src/common/test/recording-logger.ts +33 -0
  118. package/src/node/index.ts +18 -0
  119. package/src/node/telemetry-backend-module.ts +40 -0
  120. package/src/node/telemetry-service-impl.spec.ts +500 -0
  121. package/src/node/telemetry-service-impl.ts +214 -0
  122. package/src/node/telemetry-sink.ts +48 -0
package/README.md ADDED
@@ -0,0 +1,66 @@
1
+ <div align='center'>
2
+
3
+ <br />
4
+
5
+ <img src='https://raw.githubusercontent.com/eclipse-theia/theia/master/logo/theia.svg?sanitize=true' alt='theia-ext-logo' width='100px' />
6
+
7
+ <h2>ECLIPSE THEIA - TELEMETRY EXTENSION</h2>
8
+
9
+ <hr />
10
+
11
+ </div>
12
+
13
+ ## Description
14
+
15
+ The experimental `@theia/telemetry` extension provides a typed service for reporting usage, error, and crash events from Theia frontends and backends. Applications decide where events go by contributing local or remote backend sinks; without a sink, the framework sends data nowhere.
16
+
17
+ Remote sinks are gated by the user-scoped `telemetry.telemetryLevel` preference, which defaults to `off`. Local sinks keep data on the machine and bypass consent, but all sinks respect `telemetry.filters`. A missing filter entry allows all declared sink interests, an empty array disables that sink, and a non-empty array restricts delivery to matching topics.
18
+
19
+ ```typescript
20
+ import { TelemetryEvent } from '@theia/telemetry/lib/common';
21
+ import { TelemetrySink } from '@theia/telemetry/lib/node';
22
+ import { injectable } from '@theia/core/shared/inversify';
23
+
24
+ @injectable()
25
+ class ApplicationTelemetrySink implements TelemetrySink {
26
+ readonly id = 'example/backend';
27
+ readonly interests: readonly string[] = ['example/build/*'];
28
+ readonly scope: 'local' | 'remote' = 'remote';
29
+
30
+ handle(event: TelemetryEvent): void {
31
+ // Forward the permitted event using an application-owned transport.
32
+ }
33
+ }
34
+ ```
35
+
36
+ Producers inject `TelemetryService` and report events with slash-separated topics:
37
+
38
+ ```typescript
39
+ telemetryService.report('example/build/completed', {
40
+ duration: 1200,
41
+ successful: true
42
+ });
43
+ ```
44
+
45
+ See the [API samples](../../examples/api-samples) for a complete command and sink example, and the generated [`@theia/telemetry` API documentation](https://eclipse-theia.github.io/theia/docs/next/modules/_theia_telemetry.html) for the public contracts.
46
+
47
+ ## Customize consent
48
+
49
+ The frontend and backend modules bind the preference-backed `TelemetryConsentProvider` by default. Applications may rebind it to source consent from their own opt-in mechanism. `TelemetryConsentProvider.onDidChangeTelemetryLevel` is the hook for application-owned reactions to consent changes; the framework does not send opt-out notifications.
50
+
51
+ Applications that override defaults for `telemetry.telemetryLevel` or `telemetry.filters` must register equivalent `PreferenceContribution` overrides in both frontend and backend containers. This keeps the frontend forwarding optimization aligned with the backend-authoritative policy. `theia.frontend.config.preferences` configures frontend defaults only and is insufficient by itself for backend telemetry policy.
52
+
53
+ ## Additional Information
54
+
55
+ - [Theia - GitHub](https://github.com/eclipse-theia/theia)
56
+ - [Theia - Website](https://theia-ide.org/)
57
+
58
+ ## License
59
+
60
+ - [Eclipse Public License 2.0](http://www.eclipse.org/legal/epl-2.0/)
61
+ - [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](https://projects.eclipse.org/license/secondary-gpl-2.0-cp)
62
+
63
+ ## Trademark
64
+
65
+ "Theia" is a trademark of the Eclipse Foundation
66
+ <https://www.eclipse.org/theia>
@@ -0,0 +1,16 @@
1
+ import { FrontendIdProvider } from '@theia/core/lib/browser/messaging/frontend-id-provider';
2
+ import { ILogger } from '@theia/core/lib/common';
3
+ import { TelemetryConsentProvider } from '../common/telemetry-consent-provider';
4
+ import { TelemetryRpc } from '../common/telemetry-protocol';
5
+ import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
6
+ export declare class BrowserTelemetryService implements TelemetryService {
7
+ protected localSinkInterests: readonly string[] | undefined;
8
+ protected localSinkInterestsPromise: Promise<void> | undefined;
9
+ protected readonly rpc: TelemetryRpc;
10
+ protected readonly frontendIdProvider: FrontendIdProvider;
11
+ protected readonly consentProvider: TelemetryConsentProvider;
12
+ protected readonly logger: ILogger;
13
+ report<T extends object>(topic: string, data?: TelemetryData<T>, options?: TelemetryReportOptions): void;
14
+ protected fetchLocalSinkInterests(): void;
15
+ }
16
+ //# sourceMappingURL=browser-telemetry-service.d.ts.map
@@ -0,0 +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,EAAwB,MAAM,sCAAsC,CAAC;AACtG,OAAO,EACH,YAAY,EACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGtG,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"}
@@ -0,0 +1,68 @@
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
+ exports.BrowserTelemetryService = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const frontend_id_provider_1 = require("@theia/core/lib/browser/messaging/frontend-id-provider");
21
+ const common_1 = require("@theia/core/lib/common");
22
+ const inversify_1 = require("@theia/core/shared/inversify");
23
+ const telemetry_consent_provider_1 = require("../common/telemetry-consent-provider");
24
+ const telemetry_protocol_1 = require("../common/telemetry-protocol");
25
+ const telemetry_topic_1 = require("../common/telemetry-topic");
26
+ let BrowserTelemetryService = class BrowserTelemetryService {
27
+ report(topic, data, options) {
28
+ const event = (0, telemetry_protocol_1.createTelemetryEvent)(topic, this.frontendIdProvider.getId(), data, options);
29
+ if (!(0, telemetry_protocol_1.isValidTelemetryEvent)(event)) {
30
+ this.logger.warn(`Ignoring malformed telemetry event for topic '${(0, telemetry_protocol_1.describeTelemetryTopic)(topic)}'.`);
31
+ return;
32
+ }
33
+ this.fetchLocalSinkInterests();
34
+ if (!(0, telemetry_consent_provider_1.isKindAllowedByLevel)(this.consentProvider.level, event.kind)
35
+ && this.localSinkInterests !== undefined
36
+ && !this.localSinkInterests.some(pattern => (0, telemetry_topic_1.matchesTelemetryTopic)(pattern, event.topic))) {
37
+ return;
38
+ }
39
+ this.rpc.notifyEvent((0, telemetry_protocol_1.snapshotTelemetryEvent)(event));
40
+ }
41
+ fetchLocalSinkInterests() {
42
+ if (!this.localSinkInterestsPromise) {
43
+ this.localSinkInterestsPromise = this.rpc.getLocalSinkInterests().then(interests => { this.localSinkInterests = interests; }, () => { this.localSinkInterests = []; });
44
+ }
45
+ }
46
+ };
47
+ exports.BrowserTelemetryService = BrowserTelemetryService;
48
+ tslib_1.__decorate([
49
+ (0, inversify_1.inject)(telemetry_protocol_1.TelemetryRpc),
50
+ tslib_1.__metadata("design:type", Object)
51
+ ], BrowserTelemetryService.prototype, "rpc", void 0);
52
+ tslib_1.__decorate([
53
+ (0, inversify_1.inject)(frontend_id_provider_1.FrontendIdProvider),
54
+ tslib_1.__metadata("design:type", Object)
55
+ ], BrowserTelemetryService.prototype, "frontendIdProvider", void 0);
56
+ tslib_1.__decorate([
57
+ (0, inversify_1.inject)(telemetry_consent_provider_1.TelemetryConsentProvider),
58
+ tslib_1.__metadata("design:type", Object)
59
+ ], BrowserTelemetryService.prototype, "consentProvider", void 0);
60
+ tslib_1.__decorate([
61
+ (0, inversify_1.inject)(common_1.ILogger),
62
+ (0, inversify_1.named)('telemetry:BrowserTelemetryService'),
63
+ tslib_1.__metadata("design:type", Object)
64
+ ], BrowserTelemetryService.prototype, "logger", void 0);
65
+ exports.BrowserTelemetryService = BrowserTelemetryService = tslib_1.__decorate([
66
+ (0, inversify_1.injectable)()
67
+ ], BrowserTelemetryService);
68
+ //# sourceMappingURL=browser-telemetry-service.js.map
@@ -0,0 +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,qFAAsG;AACtG,qEAEsC;AAEtC,+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,iDAAoB,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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=browser-telemetry-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-telemetry-service.spec.d.ts","sourceRoot":"","sources":["../../src/browser/browser-telemetry-service.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,163 @@
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 frontend_id_provider_1 = require("@theia/core/lib/browser/messaging/frontend-id-provider");
20
+ const common_1 = require("@theia/core/lib/common");
21
+ const sinon = require("sinon");
22
+ const inversify_1 = require("@theia/core/shared/inversify");
23
+ const telemetry_consent_provider_1 = require("../common/telemetry-consent-provider");
24
+ const telemetry_protocol_1 = require("../common/telemetry-protocol");
25
+ const recording_logger_1 = require("../common/test/recording-logger");
26
+ const browser_telemetry_service_1 = require("./browser-telemetry-service");
27
+ const FRONTEND_ID = 'test-frontend-id';
28
+ function createConsentProvider(initialLevel) {
29
+ const emitter = new common_1.Emitter();
30
+ let level = initialLevel;
31
+ return {
32
+ get level() {
33
+ return level;
34
+ },
35
+ onDidChangeTelemetryLevel: emitter.event,
36
+ setLevel: newLevel => {
37
+ level = newLevel;
38
+ emitter.fire(level);
39
+ }
40
+ };
41
+ }
42
+ function createRpc(events, localSinkInterests = Promise.resolve([])) {
43
+ return {
44
+ notifyEvent: event => { events.push(event); },
45
+ getLocalSinkInterests: () => localSinkInterests
46
+ };
47
+ }
48
+ function createService(rpc, consentProvider, logger = new recording_logger_1.RecordingLogger()) {
49
+ const container = new inversify_1.Container();
50
+ container.bind(telemetry_protocol_1.TelemetryRpc).toConstantValue(rpc);
51
+ container.bind(frontend_id_provider_1.FrontendIdProvider).toConstantValue({ getId: () => FRONTEND_ID });
52
+ container.bind(telemetry_consent_provider_1.TelemetryConsentProvider).toConstantValue(consentProvider);
53
+ container.bind(common_1.ILogger).toConstantValue(logger).whenTargetNamed('telemetry:BrowserTelemetryService');
54
+ container.bind(browser_telemetry_service_1.BrowserTelemetryService).toSelf();
55
+ return container.get(browser_telemetry_service_1.BrowserTelemetryService);
56
+ }
57
+ describe('BrowserTelemetryService', () => {
58
+ let clock;
59
+ beforeEach(() => {
60
+ clock = sinon.useFakeTimers({ now: 1234 });
61
+ });
62
+ afterEach(() => clock.restore());
63
+ it('assigns report-time timestamps and forwards valid events when allowed', () => {
64
+ const events = [];
65
+ const service = createService(createRpc(events), createConsentProvider('all'));
66
+ service.report('company/action', { enabled: true });
67
+ clock.tick(10);
68
+ service.report('company/other', { count: 3 });
69
+ (0, chai_1.expect)(events).to.have.length(2);
70
+ (0, chai_1.expect)(events[0]).to.deep.include({ topic: 'company/action', kind: 'usage', data: { enabled: true }, timestamp: 1234 });
71
+ (0, chai_1.expect)(events[1]).to.deep.include({ topic: 'company/other', kind: 'usage', data: { count: 3 }, timestamp: 1244 });
72
+ (0, chai_1.expect)(events.map(event => event.session)).to.deep.equal([FRONTEND_ID, FRONTEND_ID]);
73
+ });
74
+ it('forwards optimistically until local interests are ready, then applies consent and local interests', async () => {
75
+ const events = [];
76
+ let resolveInterests;
77
+ const interests = new Promise(resolve => resolveInterests = resolve);
78
+ const consentProvider = createConsentProvider('off');
79
+ const service = createService(createRpc(events, interests), consentProvider);
80
+ service.report('company/optimistic');
81
+ resolveInterests(['company/local/*']);
82
+ await interests;
83
+ await Promise.resolve();
84
+ service.report('company/remote');
85
+ service.report('company/local/action');
86
+ consentProvider.setLevel('all');
87
+ service.report('company/enabled');
88
+ (0, chai_1.expect)(events.map(event => event.topic)).to.deep.equal(['company/optimistic', 'company/local/action', 'company/enabled']);
89
+ });
90
+ it('fetches local interests once and treats RPC failure as no local interests', async () => {
91
+ const events = [];
92
+ const rpc = createRpc(events, Promise.reject(new Error('connection failed')));
93
+ const getLocalSinkInterests = sinon.spy(rpc, 'getLocalSinkInterests');
94
+ const service = createService(rpc, createConsentProvider('off'));
95
+ service.report('company/optimistic');
96
+ await Promise.resolve();
97
+ await Promise.resolve();
98
+ service.report('company/dropped');
99
+ (0, chai_1.expect)(getLocalSinkInterests.calledOnce).to.be.true;
100
+ (0, chai_1.expect)(events.map(event => event.topic)).to.deep.equal(['company/optimistic']);
101
+ });
102
+ it('forwards immutable snapshots of data and attributes with report options', () => {
103
+ const events = [];
104
+ const service = createService(createRpc(events), createConsentProvider('all'));
105
+ const data = {
106
+ text: 'value',
107
+ count: 3,
108
+ enabled: true,
109
+ strings: ['first', 'second'],
110
+ numbers: [1, 2],
111
+ booleans: [true, false],
112
+ empty: []
113
+ };
114
+ const attributes = { source: 'browser', labels: ['stable'] };
115
+ service.report('company/action', data, { kind: 'error', attributes });
116
+ (0, chai_1.expect)(events).to.have.length(1);
117
+ (0, chai_1.expect)(events[0].kind).to.equal('error');
118
+ (0, chai_1.expect)(events[0].session).to.equal(FRONTEND_ID);
119
+ (0, chai_1.expect)(events[0].data).to.deep.equal(data);
120
+ (0, chai_1.expect)(events[0].attributes).to.deep.equal(attributes);
121
+ (0, chai_1.expect)(events[0].attributes).not.to.equal(attributes);
122
+ (0, chai_1.expect)(events[0].attributes?.labels).not.to.equal(attributes.labels);
123
+ (0, chai_1.expect)(events[0].data).not.to.equal(data);
124
+ (0, chai_1.expect)(events[0].data?.strings).not.to.equal(data.strings);
125
+ (0, chai_1.expect)(events[0].data?.numbers).not.to.equal(data.numbers);
126
+ (0, chai_1.expect)(events[0].data?.booleans).not.to.equal(data.booleans);
127
+ (0, chai_1.expect)(events[0].data?.empty).not.to.equal(data.empty);
128
+ (0, chai_1.expect)(Object.isFrozen(events[0])).to.be.true;
129
+ (0, chai_1.expect)(Object.isFrozen(events[0].data)).to.be.true;
130
+ (0, chai_1.expect)(Object.isFrozen(events[0].data?.strings)).to.be.true;
131
+ (0, chai_1.expect)(Object.isFrozen(events[0].attributes)).to.be.true;
132
+ (0, chai_1.expect)(Object.isFrozen(events[0].attributes?.labels)).to.be.true;
133
+ data.text = 'changed';
134
+ attributes.source = 'changed';
135
+ attributes.labels.push('changed');
136
+ data.strings.push('changed');
137
+ (0, chai_1.expect)(events[0].data?.text).to.equal('value');
138
+ (0, chai_1.expect)(events[0].data?.strings).to.deep.equal(['first', 'second']);
139
+ (0, chai_1.expect)(events[0].attributes).to.deep.equal({ source: 'browser', labels: ['stable'] });
140
+ });
141
+ it('does not forward invalid topics or payloads', () => {
142
+ const events = [];
143
+ const logger = new recording_logger_1.RecordingLogger();
144
+ const service = createService(createRpc(events), createConsentProvider('all'), logger);
145
+ const sparse = new Array(2);
146
+ sparse[1] = 'value';
147
+ const invalidCases = [
148
+ ['invalid', { value: true }],
149
+ ['company/action', ['value']],
150
+ ['company/action', { values: ['value', 1] }],
151
+ ['company/action', { values: [['value']] }],
152
+ ['company/action', { values: sparse }]
153
+ ];
154
+ for (const [topic, data] of invalidCases) {
155
+ service.report(topic, data);
156
+ }
157
+ service.report('company/action', undefined, { kind: 'invalid' });
158
+ service.report('company/action', undefined, { attributes: { nested: {} } });
159
+ (0, chai_1.expect)(events).to.be.empty;
160
+ (0, chai_1.expect)(logger.warnings).to.have.length(invalidCases.length + 2);
161
+ });
162
+ });
163
+ //# sourceMappingURL=browser-telemetry-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-telemetry-service.spec.js","sourceRoot":"","sources":["../../src/browser/browser-telemetry-service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './browser-telemetry-service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAgBA,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,20 @@
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 tslib_1 = require("tslib");
19
+ tslib_1.__exportStar(require("./browser-telemetry-service"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.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,sEAA4C"}
@@ -0,0 +1,4 @@
1
+ import { ContainerModule } from '@theia/core/shared/inversify';
2
+ declare const _default: ContainerModule;
3
+ export default _default;
4
+ //# sourceMappingURL=telemetry-frontend-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/telemetry-frontend-module.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAO/D,wBASG"}
@@ -0,0 +1,35 @@
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 browser_1 = require("@theia/core/lib/browser");
19
+ const inversify_1 = require("@theia/core/shared/inversify");
20
+ const telemetry_consent_provider_1 = require("../common/telemetry-consent-provider");
21
+ const telemetry_preferences_1 = require("../common/telemetry-preferences");
22
+ const telemetry_protocol_1 = require("../common/telemetry-protocol");
23
+ const telemetry_service_1 = require("../common/telemetry-service");
24
+ const browser_telemetry_service_1 = require("./browser-telemetry-service");
25
+ exports.default = new inversify_1.ContainerModule(bind => {
26
+ (0, telemetry_preferences_1.bindTelemetryPreferences)(bind);
27
+ bind(telemetry_consent_provider_1.TelemetryConsentProvider).to(telemetry_consent_provider_1.PreferenceTelemetryConsentProvider).inSingletonScope();
28
+ bind(telemetry_protocol_1.TelemetryRpc).toDynamicValue(ctx => {
29
+ const connectionProvider = ctx.container.get(browser_1.RemoteConnectionProvider);
30
+ return connectionProvider.createProxy(telemetry_protocol_1.telemetryServicePath);
31
+ }).inSingletonScope();
32
+ bind(browser_telemetry_service_1.BrowserTelemetryService).toSelf().inSingletonScope();
33
+ bind(telemetry_service_1.TelemetryService).toService(browser_telemetry_service_1.BrowserTelemetryService);
34
+ });
35
+ //# sourceMappingURL=telemetry-frontend-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-frontend-module.js","sourceRoot":"","sources":["../../src/browser/telemetry-frontend-module.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,qDAA8F;AAC9F,4DAA+D;AAC/D,qFAAoH;AACpH,2EAA2E;AAC3E,qEAAkF;AAClF,mEAA+D;AAC/D,2EAAsE;AAEtE,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAA,gDAAwB,EAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,qDAAwB,CAAC,CAAC,EAAE,CAAC,+DAAkC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACzF,IAAI,CAAC,iCAAY,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QACpC,MAAM,kBAAkB,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAA4B,kCAAwB,CAAC,CAAC;QAClG,OAAO,kBAAkB,CAAC,WAAW,CAAe,yCAAoB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,mDAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,oCAAgB,CAAC,CAAC,SAAS,CAAC,mDAAuB,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { TelemetryData, TelemetryReportOptions, TelemetryService } from '../common/telemetry-service';
2
+ export declare class BrowserOnlyTelemetryService implements TelemetryService {
3
+ report<T extends object>(_topic: string, _data?: TelemetryData<T>, _options?: TelemetryReportOptions): void;
4
+ }
5
+ //# sourceMappingURL=browser-only-telemetry-service.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,28 @@
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
+ exports.BrowserOnlyTelemetryService = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ let BrowserOnlyTelemetryService = class BrowserOnlyTelemetryService {
22
+ report(_topic, _data, _options) { }
23
+ };
24
+ exports.BrowserOnlyTelemetryService = BrowserOnlyTelemetryService;
25
+ exports.BrowserOnlyTelemetryService = BrowserOnlyTelemetryService = tslib_1.__decorate([
26
+ (0, inversify_1.injectable)()
27
+ ], BrowserOnlyTelemetryService);
28
+ //# sourceMappingURL=browser-only-telemetry-service.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=browser-only-telemetry-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-only-telemetry-service.spec.d.ts","sourceRoot":"","sources":["../../src/browser-only/browser-only-telemetry-service.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
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 inversify_1 = require("@theia/core/shared/inversify");
19
+ const chai_1 = require("chai");
20
+ const telemetry_service_1 = require("../common/telemetry-service");
21
+ const browser_only_telemetry_service_1 = require("./browser-only-telemetry-service");
22
+ const telemetry_frontend_only_module_1 = require("./telemetry-frontend-only-module");
23
+ describe('browser-only telemetry service', () => {
24
+ it('binds the no-op service when telemetry is not already bound', () => {
25
+ const container = new inversify_1.Container();
26
+ container.load(telemetry_frontend_only_module_1.default);
27
+ const service = container.get(telemetry_service_1.TelemetryService);
28
+ (0, chai_1.expect)(service).to.be.instanceOf(browser_only_telemetry_service_1.BrowserOnlyTelemetryService);
29
+ (0, chai_1.expect)(() => service.report('invalid', { malformed: { nested: true } })).not.to.throw();
30
+ });
31
+ it('replaces an existing telemetry service without invoking it', () => {
32
+ const container = new inversify_1.Container();
33
+ let reports = 0;
34
+ container.bind(telemetry_service_1.TelemetryService).toConstantValue({ report: () => reports++ });
35
+ container.load(telemetry_frontend_only_module_1.default);
36
+ const service = container.get(telemetry_service_1.TelemetryService);
37
+ service.report('company/action');
38
+ (0, chai_1.expect)(service).to.be.instanceOf(browser_only_telemetry_service_1.BrowserOnlyTelemetryService);
39
+ (0, chai_1.expect)(reports).to.equal(0);
40
+ });
41
+ });
42
+ //# sourceMappingURL=browser-only-telemetry-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-only-telemetry-service.spec.js","sourceRoot":"","sources":["../../src/browser-only/browser-only-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,4DAAyD;AACzD,+BAA8B;AAC9B,mEAA+D;AAC/D,qFAA+E;AAC/E,qFAA2E;AAE3E,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,wCAA2B,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAmB,oCAAgB,CAAC,CAAC;QAClE,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,4DAA2B,CAAC,CAAC;QAC9D,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACrG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QAClE,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAClC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,SAAS,CAAC,IAAI,CAAC,oCAAgB,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9E,SAAS,CAAC,IAAI,CAAC,wCAA2B,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAmB,oCAAgB,CAAC,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,4DAA2B,CAAC,CAAC;QAC9D,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ContainerModule } from '@theia/core/shared/inversify';
2
+ declare const _default: ContainerModule;
3
+ export default _default;
4
+ //# sourceMappingURL=telemetry-frontend-only-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-frontend-only-module.d.ts","sourceRoot":"","sources":["../../src/browser-only/telemetry-frontend-only-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAI/D,wBAOG"}
@@ -0,0 +1,30 @@
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 inversify_1 = require("@theia/core/shared/inversify");
19
+ const telemetry_service_1 = require("../common/telemetry-service");
20
+ const browser_only_telemetry_service_1 = require("./browser-only-telemetry-service");
21
+ exports.default = new inversify_1.ContainerModule((bind, _unbind, isBound, rebind) => {
22
+ bind(browser_only_telemetry_service_1.BrowserOnlyTelemetryService).toSelf().inSingletonScope();
23
+ if (isBound(telemetry_service_1.TelemetryService)) {
24
+ rebind(telemetry_service_1.TelemetryService).toService(browser_only_telemetry_service_1.BrowserOnlyTelemetryService);
25
+ }
26
+ else {
27
+ bind(telemetry_service_1.TelemetryService).toService(browser_only_telemetry_service_1.BrowserOnlyTelemetryService);
28
+ }
29
+ });
30
+ //# sourceMappingURL=telemetry-frontend-only-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-frontend-only-module.js","sourceRoot":"","sources":["../../src/browser-only/telemetry-frontend-only-module.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,4DAA+D;AAC/D,mEAA+D;AAC/D,qFAA+E;AAE/E,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAClE,IAAI,CAAC,4DAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,OAAO,CAAC,oCAAgB,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,oCAAgB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,oCAAgB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IAClE,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './telemetry-consent-provider';
2
+ export * from './telemetry-preferences';
3
+ export * from './telemetry-protocol';
4
+ export * from './telemetry-service';
5
+ export * from './telemetry-topic';
6
+ export * from './telemetry-types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAgBA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}