Telemetry API (#160902)

* First run of scaffolding out a telemetry API

* Make telemetry config up to date

* Further work on telemetry API

* Implement telemetry logging extension host

* Add logging to exthost logger

* Extract telemetry cleaning

* Add data cleaning

* Update email regex
This commit is contained in:
Logan Ramos
2022-10-11 15:44:18 -04:00
committed by GitHub
parent 53785ee45d
commit e814cb5c65
21 changed files with 375 additions and 183 deletions

View File

@@ -80,7 +80,7 @@ import { ExtHostTesting } from 'vs/workbench/api/common/extHostTesting';
import { ExtHostUriOpeners } from 'vs/workbench/api/common/extHostUriOpener';
import { IExtHostSecretState } from 'vs/workbench/api/common/extHostSecretState';
import { IExtHostEditorTabs } from 'vs/workbench/api/common/extHostEditorTabs';
import { IExtHostTelemetry } from 'vs/workbench/api/common/extHostTelemetry';
import { IExtHostTelemetry, isNewAppInstall } from 'vs/workbench/api/common/extHostTelemetry';
import { ExtHostNotebookKernels } from 'vs/workbench/api/common/extHostNotebookKernels';
import { TextSearchCompleteMessageType } from 'vs/workbench/services/search/common/searchExtTypes';
import { ExtHostNotebookRenderers } from 'vs/workbench/api/common/extHostNotebookRenderers';
@@ -92,7 +92,6 @@ import { ExtHostInteractive } from 'vs/workbench/api/common/extHostInteractive';
import { combinedDisposable } from 'vs/base/common/lifecycle';
import { checkProposedApiEnabled, ExtensionIdentifierSet, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
import { DebugConfigurationProviderTriggerKind } from 'vs/workbench/contrib/debug/common/debug';
import { IExtHostTelemetryLogService } from 'vs/workbench/api/common/extHostTelemetryLogService';
import { IExtHostLocalizationService } from 'vs/workbench/api/common/extHostLocalizationService';
export interface IExtensionRegistries {
@@ -124,7 +123,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
const extHostLoggerService = accessor.get(ILoggerService);
const extHostLogService = accessor.get(ILogService);
const extHostTunnelService = accessor.get(IExtHostTunnelService);
const extHostTelemetryLogService = accessor.get(IExtHostTelemetryLogService);
const extHostApiDeprecation = accessor.get(IExtHostApiDeprecationService);
const extHostWindow = accessor.get(IExtHostWindow);
const extHostSecretState = accessor.get(IExtHostSecretState);
@@ -330,8 +328,11 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
return extHostTelemetry.onDidChangeTelemetryConfiguration;
},
get isNewAppInstall() {
const installAge = Date.now() - new Date(initData.telemetryInfo.firstSessionDate).getTime();
return isNaN(installAge) ? false : installAge < 1000 * 60 * 60 * 24; // install age is less than a day
return isNewAppInstall(initData.telemetryInfo.firstSessionDate);
},
createTelemetryLogger(appender: vscode.TelemetryAppender): vscode.TelemetryLogger {
checkProposedApiEnabled(extension, 'telemetry');
return extHostTelemetry.instantiateLogger(extension, appender);
},
openExternal(uri: URI, options?: { allowContributedOpeners?: boolean | string }) {
return extHostWindow.openUri(uri, {
@@ -796,10 +797,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
},
get tabGroups(): vscode.TabGroups {
return extHostEditorTabs.tabGroups;
},
logTelemetryToOutputChannel(eventName: string, data: Record<string, any>): void {
checkProposedApiEnabled(extension, 'telemetryLog');
extHostTelemetryLogService.logToTelemetryOutputChannel(extension, eventName, data);
}
};