@absmartly/javascript-sdk
Version:
A/B Smartly Javascript SDK
177 lines • 5.41 kB
TypeScript
import SDK, { EventLogger } from "./sdk";
import { ContextPublisher } from "./publisher";
import { ContextDataProvider } from "./provider";
import { ClientRequestOptions } from "./client";
type JSONPrimitive = string | number | boolean | null;
type JSONObject = {
[key: string]: JSONValue;
};
type JSONArray = JSONValue[];
type JSONValue = JSONPrimitive | JSONObject | JSONArray;
type CustomFieldValueType = "text" | "string" | "number" | "json" | "boolean";
type CustomFieldValue = {
name: string;
value: string;
type: CustomFieldValueType;
};
export type ExperimentData = {
id: number;
name: string;
unitType: string | null;
iteration: number;
fullOnVariant: number;
trafficSplit: number[];
trafficSeedHi: number;
trafficSeedLo: number;
audience: string;
audienceStrict: boolean;
split: number[];
seedHi: number;
seedLo: number;
variants: {
config: null | string;
}[];
variables: Record<string, unknown>;
variant: number;
overridden: boolean;
assigned: boolean;
exposed: boolean;
eligible: boolean;
fullOn: boolean;
custom: boolean;
audienceMismatch: boolean;
customFieldValues: CustomFieldValue[] | null;
};
export type Experiment = {
data: ExperimentData;
variables: Record<string, unknown>[];
};
export type Unit = {
type: string;
uid: string | null;
};
export type Exposure = {
id: number;
name: string;
exposedAt: number;
unit: string | null;
variant: number;
assigned: boolean;
eligible: boolean;
overridden: boolean;
fullOn: boolean;
custom: boolean;
audienceMismatch: boolean;
};
export type Attribute = {
name: string;
value: unknown;
setAt: number;
};
export type Units = {
[key: string]: string | number;
};
export type Goal = {
name: string;
properties: Record<string, unknown> | null;
achievedAt: number;
};
export type ContextParams = {
units: Record<string, string | number>;
};
export type ContextOptions = {
publisher?: ContextPublisher;
dataProvider?: ContextDataProvider;
eventLogger?: EventLogger;
refreshPeriod: number;
publishDelay: number;
};
export type ContextData = {
experiments?: ExperimentData[];
};
export default class Context {
private readonly _assigners;
private readonly _attrs;
private readonly _audienceMatcher;
private readonly _cassignments;
private readonly _dataProvider;
private readonly _eventLogger;
private readonly _opts;
private readonly _publisher;
private readonly _sdk;
private readonly _units;
private _assignments;
private _data;
private _exposures;
private _failed;
private _finalized;
private _finalizing;
private _goals;
private _index;
private _indexVariables;
private _overrides;
private _pending;
private _hashes?;
private _promise?;
private _publishTimeout?;
private _refreshInterval?;
constructor(sdk: SDK, options: ContextOptions, params: ContextParams, promise: ContextData | Promise<ContextData>);
isReady(): boolean;
isFinalizing(): boolean;
isFinalized(): boolean;
isFailed(): boolean;
ready(): Promise<unknown>;
pending(): number;
data(): ContextData;
eventLogger(): EventLogger;
publisher(): ContextPublisher;
provider(): ContextDataProvider;
publish(requestOptions?: ClientRequestOptions): Promise<void>;
refresh(requestOptions?: ClientRequestOptions): Promise<void>;
getUnit(unitType: string): string | number;
unit(unitType: string, uid: string | number): void;
getUnits(): Units;
units(units: Record<string, number | string>): void;
getAttribute(attrName: string): undefined;
attribute(attrName: string, value: unknown): void;
getAttributes(): Record<string, unknown>;
attributes(attrs: Record<string, unknown>): void;
peek(experimentName: string): number;
treatment(experimentName: string): number;
track(goalName: string, properties?: Record<string, unknown>): void;
finalize(requestOptions?: ClientRequestOptions): true | Promise<void>;
experiments(): string[] | undefined;
variableValue(key: string, defaultValue: string): string;
peekVariableValue(key: string, defaultValue: string): string;
variableKeys(): Record<string, unknown[]>;
override(experimentName: string, variant: number): void;
overrides(experimentVariants: Record<string, number>): void;
customAssignment(experimentName: string, variant: number): void;
customAssignments(experimentVariants: Record<string, number>): void;
private _checkNotFinalized;
private _checkReady;
private _assign;
private _peek;
private _treatment;
private _queueExposure;
private _customFieldKeys;
customFieldKeys(): string[];
private _customFieldValue;
customFieldValue(experimentName: string, key: string): JSONValue;
private _customFieldValueType;
customFieldValueType(experimentName: string, key: string): CustomFieldValueType | null;
private _variableValue;
private _peekVariable;
private _validateGoal;
private _track;
private _setTimeout;
private _flush;
private _refresh;
private _logEvent;
private _logError;
private _unitHash;
private _init;
private _finalize;
}
export {};
//# sourceMappingURL=context.d.ts.map