2023-05-18 10:38:59 +02:00
|
|
|
export enum PayloadType {
|
|
|
|
STRING = 'string',
|
|
|
|
JSON = 'json',
|
|
|
|
CSV = 'csv',
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Payload {
|
|
|
|
type: PayloadType;
|
|
|
|
value: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Variant {
|
|
|
|
name: string;
|
|
|
|
enabled: boolean;
|
|
|
|
payload?: Payload;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const getVariantValue = <T = string>(
|
|
|
|
variant: Variant | undefined
|
|
|
|
): T | undefined => {
|
2023-05-18 18:04:55 +02:00
|
|
|
if (variant?.enabled) {
|
|
|
|
if (!variant.payload) return variant.name as T;
|
2023-05-18 10:38:59 +02:00
|
|
|
if (variant.payload.type === PayloadType.JSON) {
|
|
|
|
return JSON.parse(variant.payload.value) as T;
|
|
|
|
}
|
|
|
|
|
|
|
|
return variant.payload.value as T;
|
|
|
|
}
|
|
|
|
};
|