UNPKG

@sussudio/platform

Version:

Internal APIs for VS Code's service injection the base services.

45 lines (43 loc) 1.64 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ export interface IPropertyData { classification: | 'SystemMetaData' | 'CallstackOrException' | 'CustomerContent' | 'PublicNonPersonalData' | 'EndUserPseudonymizedInformation'; purpose: 'PerformanceAndHealth' | 'FeatureInsight' | 'BusinessInsight'; comment: string; expiration?: string; endpoint?: string; isMeasurement?: boolean; } export interface IGDPRProperty { owner: string; comment: string; expiration?: string; readonly [name: string]: IPropertyData | undefined | IGDPRProperty | string; } type IGDPRPropertyWithoutMetadata = Omit<IGDPRProperty, 'owner' | 'comment' | 'expiration'>; export type OmitMetadata<T> = Omit<T, 'owner' | 'comment' | 'expiration'>; export type ClassifiedEvent<T extends IGDPRPropertyWithoutMetadata> = { [k in keyof T]: any; }; export type StrictPropertyChecker<TEvent, TClassification, TError> = keyof TEvent extends keyof OmitMetadata<TClassification> ? keyof OmitMetadata<TClassification> extends keyof TEvent ? TEvent : TError : TError; export type StrictPropertyCheckError = { error: 'Type of classified event does not match event properties'; }; export type StrictPropertyCheck<T extends IGDPRProperty, E> = StrictPropertyChecker< E, ClassifiedEvent<OmitMetadata<T>>, StrictPropertyCheckError >; export {};