mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-22 01:29:04 +01:00
Split reporter out into own file
This commit is contained in:
@@ -22,9 +22,8 @@ import Logger from './utils/logger';
|
||||
import * as VersionStatus from './utils/versionStatus';
|
||||
import * as is from './utils/is';
|
||||
|
||||
import TelemetryReporter from 'vscode-extension-telemetry';
|
||||
|
||||
import * as nls from 'vscode-nls';
|
||||
import TelemetryReporter from "./utils/telemetry";
|
||||
const localize = nls.loadMessageBundle();
|
||||
|
||||
interface CallbackItem {
|
||||
@@ -43,12 +42,6 @@ interface RequestItem {
|
||||
callbacks: CallbackItem | null;
|
||||
}
|
||||
|
||||
interface IPackageInfo {
|
||||
name: string;
|
||||
version: string;
|
||||
aiKey: string;
|
||||
}
|
||||
|
||||
enum Trace {
|
||||
Off,
|
||||
Messages,
|
||||
@@ -162,7 +155,6 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
|
||||
private _onDidEndInstallTypings = new EventEmitter<Proto.EndInstallTypesEventBody>();
|
||||
private _onTypesInstallerInitializationFailed = new EventEmitter<Proto.TypesInstallerInitializationFailedEventBody>();
|
||||
|
||||
private _packageInfo: IPackageInfo | null;
|
||||
private _apiVersion: API;
|
||||
private telemetryReporter: TelemetryReporter;
|
||||
private checkJs: boolean;
|
||||
@@ -230,10 +222,8 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
|
||||
this.restartTsServer();
|
||||
}
|
||||
}));
|
||||
if (this.packageInfo && this.packageInfo.aiKey) {
|
||||
this.telemetryReporter = new TelemetryReporter(this.packageInfo.name, this.packageInfo.version, this.packageInfo.aiKey);
|
||||
disposables.push(this.telemetryReporter);
|
||||
}
|
||||
this.telemetryReporter = new TelemetryReporter();
|
||||
disposables.push(this.telemetryReporter);
|
||||
this.startService();
|
||||
}
|
||||
|
||||
@@ -341,30 +331,8 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
|
||||
this.logger.logLevel('Trace', message, data);
|
||||
}
|
||||
|
||||
private get packageInfo(): IPackageInfo | null {
|
||||
|
||||
if (this._packageInfo !== undefined) {
|
||||
return this._packageInfo;
|
||||
}
|
||||
let packagePath = path.join(__dirname, './../package.json');
|
||||
let extensionPackage = require(packagePath);
|
||||
if (extensionPackage) {
|
||||
this._packageInfo = {
|
||||
name: extensionPackage.name,
|
||||
version: extensionPackage.version,
|
||||
aiKey: extensionPackage.aiKey
|
||||
};
|
||||
} else {
|
||||
this._packageInfo = null;
|
||||
}
|
||||
|
||||
return this._packageInfo;
|
||||
}
|
||||
|
||||
public logTelemetry(eventName: string, properties?: { [prop: string]: string }) {
|
||||
if (this.telemetryReporter) {
|
||||
this.telemetryReporter.sendTelemetryEvent(eventName, properties);
|
||||
}
|
||||
this.telemetryReporter.logTelemetry(eventName, properties);
|
||||
}
|
||||
|
||||
private service(): Thenable<cp.ChildProcess> {
|
||||
|
||||
76
extensions/typescript/src/utils/telemetry.ts
Normal file
76
extensions/typescript/src/utils/telemetry.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import * as path from 'path';
|
||||
import VsCodeTelemetryReporter from 'vscode-extension-telemetry';
|
||||
import { Disposable } from "vscode";
|
||||
|
||||
|
||||
interface IPackageInfo {
|
||||
name: string;
|
||||
version: string;
|
||||
aiKey: string;
|
||||
}
|
||||
|
||||
|
||||
export default class TelemetryReporter extends Disposable {
|
||||
private _packageInfo: IPackageInfo | null;
|
||||
|
||||
private _reporter: VsCodeTelemetryReporter | null;
|
||||
|
||||
constructor() {
|
||||
super(() => this.dispose());
|
||||
}
|
||||
|
||||
dispose() {
|
||||
if (this._reporter) {
|
||||
this._reporter.dispose();
|
||||
this._reporter = null;
|
||||
}
|
||||
}
|
||||
|
||||
public logTelemetry(eventName: string, properties?: { [prop: string]: string }) {
|
||||
if (this._reporter) {
|
||||
this._reporter.sendTelemetryEvent(eventName, properties);
|
||||
}
|
||||
}
|
||||
|
||||
private get reporter(): VsCodeTelemetryReporter | null {
|
||||
if (typeof this._reporter !== 'undefined') {
|
||||
return this._reporter;
|
||||
}
|
||||
|
||||
if (this.packageInfo && this.packageInfo.aiKey) {
|
||||
this._reporter = new VsCodeTelemetryReporter(
|
||||
this.packageInfo.name,
|
||||
this.packageInfo.version,
|
||||
this.packageInfo.aiKey);
|
||||
} else {
|
||||
this._reporter = null;
|
||||
}
|
||||
return this._reporter;
|
||||
}
|
||||
|
||||
private get packageInfo(): IPackageInfo | null {
|
||||
if (this._packageInfo !== undefined) {
|
||||
return this._packageInfo;
|
||||
}
|
||||
let packagePath = path.join(__dirname, './../package.json');
|
||||
let extensionPackage = require(packagePath);
|
||||
if (extensionPackage) {
|
||||
this._packageInfo = {
|
||||
name: extensionPackage.name,
|
||||
version: extensionPackage.version,
|
||||
aiKey: extensionPackage.aiKey
|
||||
};
|
||||
} else {
|
||||
this._packageInfo = null;
|
||||
}
|
||||
|
||||
return this._packageInfo;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user