1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-06 00:07:44 +01:00
unleash.unleash/frontend/src/utils/variants.ts

30 lines
617 B
TypeScript
Raw Normal View History

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 => {
if (variant?.enabled) {
if (!variant.payload) return variant.name as T;
if (variant.payload.type === PayloadType.JSON) {
return JSON.parse(variant.payload.value) as T;
}
return variant.payload.value as T;
}
};