src/telemetry.ts (33 lines of code) (raw):

import TelemetryReporter from '@vscode/extension-telemetry'; import { BaseLanguageClient, ClientCapabilities, StaticFeature } from 'vscode-languageclient'; import { ExperimentalClientCapabilities } from './types'; const TELEMETRY_VERSION = 1; type TelemetryEvent = { v: number; name: string; properties: { [key: string]: string }; }; export class TelemetryFeature implements StaticFeature { constructor(private client: BaseLanguageClient, reporter: TelemetryReporter) { this.client.onTelemetry((event: TelemetryEvent) => { if (event.v != TELEMETRY_VERSION) { console.log(`unsupported telemetry event: ${event}`); return; } reporter.sendRawTelemetryEvent(event.name, event.properties); console.log('Telemetry event:', event); }); } public fillClientCapabilities(capabilities: ClientCapabilities & ExperimentalClientCapabilities): void { if (!capabilities['experimental']) { capabilities['experimental'] = {}; } capabilities['experimental']['telemetryVersion'] = TELEMETRY_VERSION; } public initialize(): void { return; } public dispose(): void { return; } }