UNPKG

@croct/rule-engine-experiments

Version:

A rule engine extension for A/B and multivariate testing.

53 lines (52 loc) 1.81 kB
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 {};