@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.
- package/README.md +66 -0
- package/lib/browser/browser-telemetry-service.d.ts +16 -0
- package/lib/browser/browser-telemetry-service.d.ts.map +1 -0
- package/lib/browser/browser-telemetry-service.js +68 -0
- package/lib/browser/browser-telemetry-service.js.map +1 -0
- package/lib/browser/browser-telemetry-service.spec.d.ts +2 -0
- package/lib/browser/browser-telemetry-service.spec.d.ts.map +1 -0
- package/lib/browser/browser-telemetry-service.spec.js +163 -0
- package/lib/browser/browser-telemetry-service.spec.js.map +1 -0
- package/lib/browser/index.d.ts +2 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +20 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/telemetry-frontend-module.d.ts +4 -0
- package/lib/browser/telemetry-frontend-module.d.ts.map +1 -0
- package/lib/browser/telemetry-frontend-module.js +35 -0
- package/lib/browser/telemetry-frontend-module.js.map +1 -0
- package/lib/browser-only/browser-only-telemetry-service.d.ts +5 -0
- package/lib/browser-only/browser-only-telemetry-service.d.ts.map +1 -0
- package/lib/browser-only/browser-only-telemetry-service.js +28 -0
- package/lib/browser-only/browser-only-telemetry-service.js.map +1 -0
- package/lib/browser-only/browser-only-telemetry-service.spec.d.ts +2 -0
- package/lib/browser-only/browser-only-telemetry-service.spec.d.ts.map +1 -0
- package/lib/browser-only/browser-only-telemetry-service.spec.js +42 -0
- package/lib/browser-only/browser-only-telemetry-service.spec.js.map +1 -0
- package/lib/browser-only/telemetry-frontend-only-module.d.ts +4 -0
- package/lib/browser-only/telemetry-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/telemetry-frontend-only-module.js +30 -0
- package/lib/browser-only/telemetry-frontend-only-module.js.map +1 -0
- package/lib/common/index.d.ts +7 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +25 -0
- package/lib/common/index.js.map +1 -0
- package/lib/common/telemetry-consent-provider.d.ts +24 -0
- package/lib/common/telemetry-consent-provider.d.ts.map +1 -0
- package/lib/common/telemetry-consent-provider.js +73 -0
- package/lib/common/telemetry-consent-provider.js.map +1 -0
- package/lib/common/telemetry-consent-provider.spec.d.ts +2 -0
- package/lib/common/telemetry-consent-provider.spec.d.ts.map +1 -0
- package/lib/common/telemetry-consent-provider.spec.js +87 -0
- package/lib/common/telemetry-consent-provider.spec.js.map +1 -0
- package/lib/common/telemetry-preferences.d.ts +29 -0
- package/lib/common/telemetry-preferences.d.ts.map +1 -0
- package/lib/common/telemetry-preferences.js +77 -0
- package/lib/common/telemetry-preferences.js.map +1 -0
- package/lib/common/telemetry-preferences.spec.d.ts +2 -0
- package/lib/common/telemetry-preferences.spec.d.ts.map +1 -0
- package/lib/common/telemetry-preferences.spec.js +50 -0
- package/lib/common/telemetry-preferences.spec.js.map +1 -0
- package/lib/common/telemetry-protocol.d.ts +30 -0
- package/lib/common/telemetry-protocol.d.ts.map +1 -0
- package/lib/common/telemetry-protocol.js +78 -0
- package/lib/common/telemetry-protocol.js.map +1 -0
- package/lib/common/telemetry-service.d.ts +28 -0
- package/lib/common/telemetry-service.d.ts.map +1 -0
- package/lib/common/telemetry-service.js +65 -0
- package/lib/common/telemetry-service.js.map +1 -0
- package/lib/common/telemetry-service.spec.d.ts +2 -0
- package/lib/common/telemetry-service.spec.d.ts.map +1 -0
- package/lib/common/telemetry-service.spec.js +128 -0
- package/lib/common/telemetry-service.spec.js.map +1 -0
- package/lib/common/telemetry-topic.d.ts +9 -0
- package/lib/common/telemetry-topic.d.ts.map +1 -0
- package/lib/common/telemetry-topic.js +61 -0
- package/lib/common/telemetry-topic.js.map +1 -0
- package/lib/common/telemetry-topic.spec.d.ts +2 -0
- package/lib/common/telemetry-topic.spec.d.ts.map +1 -0
- package/lib/common/telemetry-topic.spec.js +67 -0
- package/lib/common/telemetry-topic.spec.js.map +1 -0
- package/lib/common/telemetry-types.d.ts +5 -0
- package/lib/common/telemetry-types.d.ts.map +1 -0
- package/lib/common/telemetry-types.js +21 -0
- package/lib/common/telemetry-types.js.map +1 -0
- package/lib/common/test/recording-logger.d.ts +9 -0
- package/lib/common/test/recording-logger.d.ts.map +1 -0
- package/lib/common/test/recording-logger.js +36 -0
- package/lib/common/test/recording-logger.js.map +1 -0
- package/lib/node/index.d.ts +3 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +21 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/telemetry-backend-module.d.ts +4 -0
- package/lib/node/telemetry-backend-module.d.ts.map +1 -0
- package/lib/node/telemetry-backend-module.js +37 -0
- package/lib/node/telemetry-backend-module.js.map +1 -0
- package/lib/node/telemetry-service-impl.d.ts +36 -0
- package/lib/node/telemetry-service-impl.d.ts.map +1 -0
- package/lib/node/telemetry-service-impl.js +208 -0
- package/lib/node/telemetry-service-impl.js.map +1 -0
- package/lib/node/telemetry-service-impl.spec.d.ts +2 -0
- package/lib/node/telemetry-service-impl.spec.d.ts.map +1 -0
- package/lib/node/telemetry-service-impl.spec.js +411 -0
- package/lib/node/telemetry-service-impl.spec.js.map +1 -0
- package/lib/node/telemetry-sink.d.ts +31 -0
- package/lib/node/telemetry-sink.d.ts.map +1 -0
- package/lib/node/telemetry-sink.js +21 -0
- package/lib/node/telemetry-sink.js.map +1 -0
- package/package.json +52 -0
- package/src/browser/browser-telemetry-service.spec.ts +193 -0
- package/src/browser/browser-telemetry-service.ts +69 -0
- package/src/browser/index.ts +17 -0
- package/src/browser/telemetry-frontend-module.ts +34 -0
- package/src/browser-only/browser-only-telemetry-service.spec.ts +44 -0
- package/src/browser-only/browser-only-telemetry-service.ts +23 -0
- package/src/browser-only/telemetry-frontend-only-module.ts +28 -0
- package/src/common/index.ts +22 -0
- package/src/common/telemetry-consent-provider.spec.ts +95 -0
- package/src/common/telemetry-consent-provider.ts +72 -0
- package/src/common/telemetry-preferences.spec.ts +56 -0
- package/src/common/telemetry-preferences.ts +91 -0
- package/src/common/telemetry-protocol.ts +100 -0
- package/src/common/telemetry-service.spec.ts +152 -0
- package/src/common/telemetry-service.ts +90 -0
- package/src/common/telemetry-topic.spec.ts +78 -0
- package/src/common/telemetry-topic.ts +60 -0
- package/src/common/telemetry-types.ts +21 -0
- package/src/common/test/recording-logger.ts +33 -0
- package/src/node/index.ts +18 -0
- package/src/node/telemetry-backend-module.ts +40 -0
- package/src/node/telemetry-service-impl.spec.ts +500 -0
- package/src/node/telemetry-service-impl.ts +214 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|