Skip to content

Commit fefb2f6

Browse files
committed
Add AppTelemetry interface
1 parent 0878605 commit fefb2f6

3 files changed

Lines changed: 24 additions & 10 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { RedactableError } from "../pure/errors";
2+
3+
export interface AppTelemetry {
4+
sendCommandUsage(name: string, executionTime: number, error?: Error): void;
5+
sendUIInteraction(name: string): void;
6+
sendError(
7+
error: RedactableError,
8+
extraProperties?: { [key: string]: string },
9+
): void;
10+
}

extensions/ql-vscode/src/common/vscode/telemetry.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { UserCancellationException } from "./progress";
2020
import { showBinaryChoiceWithUrlDialog } from "./dialog";
2121
import { RedactableError } from "../../pure/errors";
2222
import { SemVer } from "semver";
23+
import { AppTelemetry } from "../telemetry";
2324

2425
// Key is injected at build time through the APP_INSIGHTS_KEY environment variable.
2526
const key = "REPLACE-APP-INSIGHTS-KEY";
@@ -54,7 +55,10 @@ const baseDataPropertiesToRemove = [
5455

5556
const NOT_SET_CLI_VERSION = "not-set";
5657

57-
export class TelemetryListener extends ConfigListener {
58+
export class ExtensionTelemetryListener
59+
extends ConfigListener
60+
implements AppTelemetry
61+
{
5862
static relevantSettings = [ENABLE_TELEMETRY, CANARY_FEATURES];
5963

6064
private reporter?: TelemetryReporter;
@@ -152,7 +156,7 @@ export class TelemetryListener extends ConfigListener {
152156
void this.reporter?.dispose();
153157
}
154158

155-
sendCommandUsage(name: string, executionTime: number, error?: Error) {
159+
sendCommandUsage(name: string, executionTime: number, error?: Error): void {
156160
if (!this.reporter) {
157161
return;
158162
}
@@ -174,7 +178,7 @@ export class TelemetryListener extends ConfigListener {
174178
);
175179
}
176180

177-
sendUIInteraction(name: string) {
181+
sendUIInteraction(name: string): void {
178182
if (!this.reporter) {
179183
return;
180184
}
@@ -193,7 +197,7 @@ export class TelemetryListener extends ConfigListener {
193197
sendError(
194198
error: RedactableError,
195199
extraProperties?: { [key: string]: string },
196-
) {
200+
): void {
197201
if (!this.reporter) {
198202
return;
199203
}
@@ -272,16 +276,16 @@ export class TelemetryListener extends ConfigListener {
272276
/**
273277
* The global Telemetry instance
274278
*/
275-
export let telemetryListener: TelemetryListener | undefined;
279+
export let telemetryListener: ExtensionTelemetryListener | undefined;
276280

277281
export async function initializeTelemetry(
278282
extension: Extension<any>,
279283
ctx: ExtensionContext,
280-
): Promise<TelemetryListener> {
284+
): Promise<ExtensionTelemetryListener> {
281285
if (telemetryListener !== undefined) {
282286
throw new Error("Telemetry is already initialized");
283287
}
284-
telemetryListener = new TelemetryListener(
288+
telemetryListener = new ExtensionTelemetryListener(
285289
extension.id,
286290
extension.packageJSON.version,
287291
key,

extensions/ql-vscode/test/vscode-tests/no-workspace/telemetry.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
window,
77
} from "vscode";
88
import {
9-
TelemetryListener,
9+
ExtensionTelemetryListener,
1010
telemetryListener as globalTelemetryListener,
1111
} from "../../../src/common/vscode/telemetry";
1212
import { UserCancellationException } from "../../../src/common/vscode/progress";
@@ -25,7 +25,7 @@ describe("telemetry reporting", () => {
2525
let originalTelemetryGlobal: boolean | undefined;
2626
let isCanary: string;
2727
let ctx: ExtensionContext;
28-
let telemetryListener: TelemetryListener;
28+
let telemetryListener: ExtensionTelemetryListener;
2929

3030
let sendTelemetryEventSpy: jest.SpiedFunction<
3131
typeof TelemetryReporter.prototype.sendTelemetryEvent
@@ -81,7 +81,7 @@ describe("telemetry reporting", () => {
8181
await enableTelemetry("telemetry", true);
8282
await enableTelemetry("codeQL.telemetry", true);
8383

84-
telemetryListener = new TelemetryListener(
84+
telemetryListener = new ExtensionTelemetryListener(
8585
"my-id",
8686
"1.2.3",
8787
"fake-key",

0 commit comments

Comments
 (0)