From f1e2e9990be8c559ee078faeafffbe146f6c0a97 Mon Sep 17 00:00:00 2001 From: Logan Ramos Date: Thu, 7 Apr 2022 14:23:27 -0400 Subject: [PATCH] Update GDPR typings to allow for top level metadata. (#146943) * Update gdpr typings * Try out new typing --- src/vs/platform/telemetry/common/gdprTypings.ts | 11 ++++++++--- src/vs/workbench/api/browser/mainThreadTelemetry.ts | 2 +- .../services/editor/browser/editorResolverService.ts | 4 +++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/vs/platform/telemetry/common/gdprTypings.ts b/src/vs/platform/telemetry/common/gdprTypings.ts index 316c84fca8d..d014944112a 100644 --- a/src/vs/platform/telemetry/common/gdprTypings.ts +++ b/src/vs/platform/telemetry/common/gdprTypings.ts @@ -13,11 +13,16 @@ export interface IPropertyData { } export interface IGDPRProperty { - readonly [name: string]: IPropertyData | undefined | IGDPRProperty; + owner?: string; + comment?: string; + expiration?: string; + readonly [name: string]: IPropertyData | undefined | IGDPRProperty | string; } +export type IGDPRPropertyWithoutMetadata = Omit; + export type ClassifiedEvent = { - [k in keyof T]: any + [k in keyof IGDPRPropertyWithoutMetadata]: any }; export type StrictPropertyChecker = keyof TEvent extends keyof TClassifiedEvent ? keyof TClassifiedEvent extends keyof TEvent ? TEvent : TError : TError; @@ -26,4 +31,4 @@ export type StrictPropertyCheckError = 'Type of classified event does not match export type StrictPropertyCheck = StrictPropertyChecker, StrictPropertyCheckError>; -export type GDPRClassification = { [_ in keyof T]: IPropertyData | IGDPRProperty | undefined }; +export type GDPRClassification = { [_ in keyof T]: IPropertyData | IGDPRProperty | undefined | string }; diff --git a/src/vs/workbench/api/browser/mainThreadTelemetry.ts b/src/vs/workbench/api/browser/mainThreadTelemetry.ts index 58a919fc1e6..6e13fa13053 100644 --- a/src/vs/workbench/api/browser/mainThreadTelemetry.ts +++ b/src/vs/workbench/api/browser/mainThreadTelemetry.ts @@ -55,7 +55,7 @@ export class MainThreadTelemetry extends Disposable implements MainThreadTelemet this._telemetryService.publicLog(eventName, data); } - $publicLog2 = never, T extends GDPRClassification = never>(eventName: string, data: StrictPropertyCheck): void { + $publicLog2 = never, T extends GDPRClassification = never>(eventName: string, data?: StrictPropertyCheck): void { this.$publicLog(eventName, data as any); } } diff --git a/src/vs/workbench/services/editor/browser/editorResolverService.ts b/src/vs/workbench/services/editor/browser/editorResolverService.ts index 9edd90ea440..9e6f8db55e6 100644 --- a/src/vs/workbench/services/editor/browser/editorResolverService.ts +++ b/src/vs/workbench/services/editor/browser/editorResolverService.ts @@ -746,7 +746,9 @@ export class EditorResolverService extends Disposable implements IEditorResolver private sendEditorResolutionTelemetry(chosenInput: EditorInput): void { type editorResolutionClassification = { - viewType: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; owner: 'lramos15'; comment: 'The id of the editor opened. Used to gain an undertsanding of what editors are most popular' }; + viewType: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; comment: 'The id of the editor opened. Used to gain an undertsanding of what editors are most popular' }; + owner: 'lramos15'; + comment: 'Event sent when an editor type is determined.'; }; type editorResolutionEvent = { viewType: string;