Path: blob/main/extensions/markdown-language-features/src/telemetryReporter.ts
3292 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/4import { default as VSCodeTelemetryReporter } from '@vscode/extension-telemetry';5import * as vscode from 'vscode';67interface IPackageInfo {8name: string;9version: string;10aiKey: string;11}1213export interface TelemetryReporter {14dispose(): void;15sendTelemetryEvent(eventName: string, properties?: {16[key: string]: string;17}): void;18}1920const nullReporter = new class NullTelemetryReporter implements TelemetryReporter {21sendTelemetryEvent() { /** noop */ }22dispose() { /** noop */ }23};2425class ExtensionReporter implements TelemetryReporter {26private readonly _reporter: VSCodeTelemetryReporter;2728constructor(29packageInfo: IPackageInfo30) {31this._reporter = new VSCodeTelemetryReporter(packageInfo.aiKey);32}33sendTelemetryEvent(eventName: string, properties?: {34[key: string]: string;35}) {36this._reporter.sendTelemetryEvent(eventName, properties);37}3839dispose() {40this._reporter.dispose();41}42}4344export function loadDefaultTelemetryReporter(): TelemetryReporter {45const packageInfo = getPackageInfo();46return packageInfo ? new ExtensionReporter(packageInfo) : nullReporter;47}4849function getPackageInfo(): IPackageInfo | null {50const extension = vscode.extensions.getExtension('Microsoft.vscode-markdown');51if (extension?.packageJSON) {52return {53name: extension.packageJSON.name,54version: extension.packageJSON.version,55aiKey: extension.packageJSON.aiKey56};57}58return null;59}606162