mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -05:00
* Fix initial build breaks from 1.67 merge (#2514) * Update yarn lock files * Update build scripts * Fix tsconfig * Build breaks * WIP * Update yarn lock files * Misc breaks * Updates to package.json * Breaks * Update yarn * Fix breaks * Breaks * Build breaks * Breaks * Breaks * Breaks * Breaks * Breaks * Missing file * Breaks * Breaks * Breaks * Breaks * Breaks * Fix several runtime breaks (#2515) * Missing files * Runtime breaks * Fix proxy ordering issue * Remove commented code * Fix breaks with opening query editor * Fix post merge break * Updates related to setup build and other breaks (#2516) * Fix bundle build issues * Update distro * Fix distro merge and update build JS files * Disable pipeline steps * Remove stats call * Update license name * Make new RPM dependencies a warning * Fix extension manager version checks * Update JS file * Fix a few runtime breaks * Fixes * Fix runtime issues * Fix build breaks * Update notebook tests (part 1) * Fix broken tests * Linting errors * Fix hygiene * Disable lint rules * Bump distro * Turn off smoke tests * Disable integration tests * Remove failing "activate" test * Remove failed test assertion * Disable other broken test * Disable query history tests * Disable extension unit tests * Disable failing tasks
92 lines
3.1 KiB
TypeScript
92 lines
3.1 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import * as vscode from 'vscode';
|
|
import TelemetryReporter from '@vscode/extension-telemetry';
|
|
import { getExperimentationService, IExperimentationService, IExperimentationTelemetry, TargetPopulation } from 'vscode-tas-client';
|
|
|
|
export class ExperimentationTelemetry implements IExperimentationTelemetry {
|
|
private sharedProperties: Record<string, string> = {};
|
|
private experimentationServicePromise: Promise<IExperimentationService> | undefined;
|
|
|
|
constructor(private readonly context: vscode.ExtensionContext, private baseReporter: TelemetryReporter) { }
|
|
|
|
private async createExperimentationService(): Promise<IExperimentationService> {
|
|
let targetPopulation: TargetPopulation;
|
|
switch (vscode.env.uriScheme) {
|
|
case 'vscode':
|
|
targetPopulation = TargetPopulation.Public;
|
|
case 'vscode-insiders':
|
|
targetPopulation = TargetPopulation.Insiders;
|
|
case 'vscode-exploration':
|
|
targetPopulation = TargetPopulation.Internal;
|
|
case 'code-oss':
|
|
targetPopulation = TargetPopulation.Team;
|
|
default:
|
|
targetPopulation = TargetPopulation.Public;
|
|
}
|
|
|
|
const id = this.context.extension.id;
|
|
const version = this.context.extension.packageJSON.version;
|
|
const experimentationService = getExperimentationService(id, version, targetPopulation, this, this.context.globalState);
|
|
await experimentationService.initialFetch;
|
|
return experimentationService;
|
|
}
|
|
|
|
/**
|
|
* @returns A promise that you shouldn't need to await because this is just telemetry.
|
|
*/
|
|
async sendTelemetryEvent(eventName: string, properties?: Record<string, string>, measurements?: Record<string, number>) {
|
|
if (!this.experimentationServicePromise) {
|
|
this.experimentationServicePromise = this.createExperimentationService();
|
|
}
|
|
await this.experimentationServicePromise;
|
|
|
|
this.baseReporter.sendTelemetryEvent(
|
|
eventName,
|
|
{
|
|
...this.sharedProperties,
|
|
...properties,
|
|
},
|
|
measurements,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @returns A promise that you shouldn't need to await because this is just telemetry.
|
|
*/
|
|
async sendTelemetryErrorEvent(
|
|
eventName: string,
|
|
properties?: Record<string, string>,
|
|
_measurements?: Record<string, number>
|
|
) {
|
|
if (!this.experimentationServicePromise) {
|
|
this.experimentationServicePromise = this.createExperimentationService();
|
|
}
|
|
await this.experimentationServicePromise;
|
|
|
|
this.baseReporter.sendTelemetryErrorEvent(eventName, {
|
|
...this.sharedProperties,
|
|
...properties,
|
|
});
|
|
}
|
|
|
|
setSharedProperty(name: string, value: string): void {
|
|
this.sharedProperties[name] = value;
|
|
}
|
|
|
|
postEvent(eventName: string, props: Map<string, string>): void {
|
|
const event: Record<string, string> = {};
|
|
for (const [key, value] of props) {
|
|
event[key] = value;
|
|
}
|
|
this.sendTelemetryEvent(eventName, event);
|
|
}
|
|
|
|
dispose(): Promise<any> {
|
|
return this.baseReporter.dispose();
|
|
}
|
|
}
|