@croct/rule-engine-experiments
Version:
A rule engine extension for A/B and multivariate testing.
53 lines (52 loc) • 1.81 kB
TypeScript
import { Logger } from '@croct/plug/sdk';
import { Tracker } from '@croct/plug/sdk/tracking';
import { Predicate } from '@croct/plug-rule-engine/predicate';
import { VariableMap } from '@croct/plug-rule-engine/context';
import { Extension } from '@croct/plug-rule-engine/extension';
import { Rule } from '@croct/plug-rule-engine/rule';
declare type AbCustomSplitGroups = {
[key: string]: {
weight: number;
};
};
declare type AbEvenlySplitGroups = string[];
declare type AbTestGroups = AbCustomSplitGroups | AbEvenlySplitGroups;
export declare type AbExperiment = {
type: 'ab';
traffic?: number;
audience?: string;
groups: AbTestGroups;
};
export declare type MultivariateExperiment = {
type: 'multivariate';
traffic?: number;
audience?: string;
groups: string[][];
};
export declare type Experiment = AbExperiment | MultivariateExperiment;
export declare type ExperimentProperties = {
testId: string;
groupId: string;
};
export declare type ExperimentDefinitions = {
[key: string]: Experiment;
};
export default class ExperimentsExtension implements Extension {
private readonly experiments;
private readonly tracker;
private readonly browserStorage;
private readonly tabStorage;
private readonly logger;
constructor(experiments: ExperimentDefinitions, tracker: Tracker, browserStorage: Storage, tagStorage: Storage, logger: Logger);
getVariables(): VariableMap;
getPredicate({ name, properties: { experiment } }: Rule): Predicate | null;
private getGroupCondition;
private assignGroup;
private assignAbGroup;
private trackAssignedAbGroup;
private selectAbGroup;
private assignMultivariateGroups;
private trackAssignedMultivariateGroup;
private selectMultivariateGroups;
}
export {};