split-testing
Version:
Lightweight split-testing library (A/B or multivariant)
32 lines (31 loc) • 808 B
TypeScript
export interface WeightedItem {
weight: number;
[name: string]: any;
}
export interface Variant {
name: string;
weight?: number;
data?: any;
}
export interface WeightedVariant extends Variant {
weight: number;
}
export interface Storage {
setItem: (key: string, value: string) => void;
getItem: (key: string) => string | null;
removeItem: (key: string) => void;
}
export interface ExperimentOptions {
name: string;
variants: Variant[];
seed?: string;
onFirstPicking?: (variant: Variant) => void;
storage?: Storage;
isDebugMode?: boolean;
isResolvingSeedConflictAllowed?: boolean;
}
export interface SafeExperimentOptions extends ExperimentOptions {
storage: Storage;
isDebugMode: boolean;
isResolvingSeedConflictAllowed: boolean;
}