diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts index 3fdb055e264..a003fe9bcfb 100644 --- a/extensions/git/src/main.ts +++ b/extensions/git/src/main.ts @@ -18,11 +18,9 @@ import { toDisposable, filterEvent, mapEvent, eventToPromise } from './util'; import TelemetryReporter from 'vscode-extension-telemetry'; import { API, createApi } from './api'; -async function init(context: ExtensionContext, outputChannel: OutputChannel, disposables: Disposable[]): Promise { - const { name, version, aiKey } = require(context.asAbsolutePath('./package.json')) as { name: string, version: string, aiKey: string }; - const telemetryReporter: TelemetryReporter = new TelemetryReporter(name, version, aiKey); - disposables.push(telemetryReporter); +let telemetryReporter: TelemetryReporter; +async function init(context: ExtensionContext, outputChannel: OutputChannel, disposables: Disposable[]): Promise { const pathHint = workspace.getConfiguration('git').get('path'); const info = await findGit(pathHint, path => outputChannel.appendLine(localize('looking', "Looking for git in: {0}", path))); const askpass = new Askpass(); @@ -99,6 +97,9 @@ export function activate(context: ExtensionContext): API { const disposables: Disposable[] = []; context.subscriptions.push(new Disposable(() => Disposable.from(...disposables).dispose())); + const { name, version, aiKey } = require(context.asAbsolutePath('./package.json')) as { name: string, version: string, aiKey: string }; + telemetryReporter = new TelemetryReporter(name, version, aiKey); + let activatePromise: Promise; if (enabled) { @@ -146,3 +147,7 @@ async function checkGitVersion(info: IGit): Promise { await config.update('ignoreLegacyWarning', true, true); } } + +export function deactivate(): Promise { + return telemetryReporter ? telemetryReporter.dispose() : Promise.resolve(null); +} diff --git a/extensions/html/client/src/htmlMain.ts b/extensions/html/client/src/htmlMain.ts index a3bc91466ea..6bcce08f9d6 100644 --- a/extensions/html/client/src/htmlMain.ts +++ b/extensions/html/client/src/htmlMain.ts @@ -26,14 +26,13 @@ interface IPackageInfo { aiKey: string; } +let telemetryReporter: TelemetryReporter | null; + export function activate(context: ExtensionContext) { let toDispose = context.subscriptions; let packageInfo = getPackageInfo(context); - let telemetryReporter: TelemetryReporter | null = packageInfo && new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey); - if (telemetryReporter) { - toDispose.push(telemetryReporter); - } + telemetryReporter = packageInfo && new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey); // The server is implemented in node let serverModule = context.asAbsolutePath(path.join('server', 'out', 'htmlServerMain.js')); @@ -200,3 +199,7 @@ function getPackageInfo(context: ExtensionContext): IPackageInfo | null { } return null; } + +export function deactivate(): Promise { + return telemetryReporter ? telemetryReporter.dispose() : Promise.resolve(null); +} \ No newline at end of file diff --git a/extensions/json/client/src/jsonMain.ts b/extensions/json/client/src/jsonMain.ts index e6fe6e4253b..2ba432b2f1c 100644 --- a/extensions/json/client/src/jsonMain.ts +++ b/extensions/json/client/src/jsonMain.ts @@ -55,13 +55,14 @@ interface JSONSchemaSettings { schema?: any; } +let telemetryReporter: TelemetryReporter; + export function activate(context: ExtensionContext) { let toDispose = context.subscriptions; let packageInfo = getPackageInfo(context); - let telemetryReporter: TelemetryReporter = packageInfo && new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey); - toDispose.push(telemetryReporter); + telemetryReporter = packageInfo && new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey); // The server is implemented in node let serverModule = context.asAbsolutePath(path.join('server', 'out', 'jsonServerMain.js')); @@ -169,6 +170,10 @@ export function activate(context: ExtensionContext) { languages.setLanguageConfiguration('jsonc', languageConfiguration); } +export function deactivate(): Promise { + return telemetryReporter ? telemetryReporter.dispose() : Promise.resolve(null); +} + function getSchemaAssociation(context: ExtensionContext): ISchemaAssociations { let associations: ISchemaAssociations = {}; extensions.all.forEach(extension => {