mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-18 01:25:37 -05:00
VS Code merge to df8fe74bd55313de0dd2303bc47a4aab0ca56b0e (#17979)
* Merge from vscode 504f934659740e9d41501cad9f162b54d7745ad9 * delete unused folders * distro * Bump build node version * update chokidar * FIx hygiene errors * distro * Fix extension lint issues * Remove strict-vscode * Add copyright header exemptions * Bump vscode-extension-telemetry to fix webpacking issue with zone.js * distro * Fix failing tests (revert marked.js back to current one until we decide to update) * Skip searchmodel test * Fix mac build * temp debug script loading * Try disabling coverage * log error too * Revert "log error too" This reverts commit af0183e5d4ab458fdf44b88fbfab9908d090526f. * Revert "temp debug script loading" This reverts commit 3d687d541c76db2c5b55626c78ae448d3c25089c. * Add comments explaining coverage disabling * Fix ansi_up loading issue * Merge latest from ads * Use newer option * Fix compile * add debug logging warn * Always log stack * log more * undo debug * Update to use correct base path (+cleanup) * distro * fix compile errors * Remove strict-vscode * Fix sql editors not showing * Show db dropdown input & fix styling * Fix more info in gallery * Fix gallery asset requests * Delete unused workflow * Fix tapable resolutions for smoke test compile error * Fix smoke compile * Disable crash reporting * Disable interactive Co-authored-by: ADS Merger <karlb@microsoft.com>
This commit is contained in:
@@ -9,10 +9,41 @@ import { getExperimentationService, IExperimentationService, IExperimentationTel
|
||||
|
||||
export class ExperimentationTelemetry implements IExperimentationTelemetry {
|
||||
private sharedProperties: Record<string, string> = {};
|
||||
private experimentationServicePromise: Promise<IExperimentationService> | undefined;
|
||||
|
||||
constructor(private baseReporter: TelemetryReporter) { }
|
||||
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;
|
||||
|
||||
sendTelemetryEvent(eventName: string, properties?: Record<string, string>, measurements?: Record<string, number>) {
|
||||
this.baseReporter.sendTelemetryEvent(
|
||||
eventName,
|
||||
{
|
||||
@@ -23,11 +54,19 @@ export class ExperimentationTelemetry implements IExperimentationTelemetry {
|
||||
);
|
||||
}
|
||||
|
||||
sendTelemetryErrorEvent(
|
||||
/**
|
||||
* @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>,
|
||||
_measurements?: Record<string, number>
|
||||
) {
|
||||
if (!this.experimentationServicePromise) {
|
||||
this.experimentationServicePromise = this.createExperimentationService();
|
||||
}
|
||||
await this.experimentationServicePromise;
|
||||
|
||||
this.baseReporter.sendTelemetryErrorEvent(eventName, {
|
||||
...this.sharedProperties,
|
||||
...properties,
|
||||
@@ -50,24 +89,3 @@ export class ExperimentationTelemetry implements IExperimentationTelemetry {
|
||||
return this.baseReporter.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
function getTargetPopulation(): TargetPopulation {
|
||||
switch (vscode.env.uriScheme) {
|
||||
case 'vscode':
|
||||
return TargetPopulation.Public;
|
||||
case 'vscode-insiders':
|
||||
return TargetPopulation.Insiders;
|
||||
case 'vscode-exploration':
|
||||
return TargetPopulation.Internal;
|
||||
case 'code-oss':
|
||||
return TargetPopulation.Team;
|
||||
default:
|
||||
return TargetPopulation.Public;
|
||||
}
|
||||
}
|
||||
|
||||
export async function createExperimentationService(context: vscode.ExtensionContext, telemetry: ExperimentationTelemetry): Promise<IExperimentationService> {
|
||||
const id = context.extension.id;
|
||||
const version = context.extension.packageJSON.version;
|
||||
return getExperimentationService(id, version, getTargetPopulation(), telemetry, context.globalState);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user