@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
45 lines (43 loc) • 1.64 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* 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 {};