@kameleoon/javascript-sdk-core
Version:
Kameleoon JS SDK Core
81 lines (80 loc) • 5.55 kB
TypeScript
import { Result } from 'ts-res';
import { KameleoonError } from '../kameleoonError';
import { VariationDataType } from '../storage';
import { BaseVariationDataType, FeatureFlagVariationType, GetVariationParametersType, UpdateDataStatusParametersType } from './types';
import { FeatureFlagVariationsType, ForcedExperimentVariationDataType, ForcedFeatureVariationDataType, ForcedFeatureVariationType, IStorage, ForcedExperimentVariationType } from '../storage/types';
import { IVisitorCodeManager } from '../visitorCodeManager';
import { ClientConfiguration } from '../clientConfiguration';
interface IVariationConfiguration {
/**
* @method getStoredVariations - obtains campaigns with according variations that are *already assigned* and *stored* in the `variationStorage`.
*/
getStoredVariations(visitorCode: string): Result<FeatureFlagVariationsType, KameleoonError>;
/**
* @method updateStoredVariations - updates stored variations for the visitor
*/
updateStoredVariations: (visitorCode: string, variationData: FeatureFlagVariationsType) => void;
/**
* @method getVariation - obtains variation for the rule of the feature flag which is both targeted and has a variation, if no such rule was found, returns empty rule with default `variationKey`, given an option `withAssignment` of `true` will also assign a new variation and save it in the storage
*/
getVariation: (params: GetVariationParametersType) => Result<FeatureFlagVariationType, KameleoonError>;
/**
* @method getUnsentData - obtains the list of unsent variations
*/
getUnsentData: (visitorCode: string) => BaseVariationDataType[];
/**
* @method getPendingData - obtains the list of pending variations
*/
getPendingData: (visitorCode: string) => BaseVariationDataType[];
/**
* @method updateDataStatus - updates the status of the variations of given experiment ids with the given status
*/
updateDataStatus: ({ visitorCode, experimentIdList, status, }: UpdateDataStatusParametersType) => void;
/**
* @method updateForcedExperimentVariation - updates the forced variation for the visitor
*/
updateForcedExperimentVariation: (visitorCode: string, experimentId: number, forcedExperimentVariation: ForcedExperimentVariationType | null) => void;
/**
* @method updateForcedFeatureVariations - updates the simulated variations for the visitor
*/
updateForcedFeatureVariations: (visitorCode: string, forcedFeatureVariations: ForcedFeatureVariationType[]) => void;
/**
* @method clearSimulatedVariations - clears the simulated feature variations for the visitor
*/
clearSimulatedVariations: (visitorCode: string) => void;
/**
* @method getForcedFeatureVariation - obtains the forced feature variation for the visitor
*/
getForcedFeatureVariation: (visitorCode: string, featureKey: string) => Result<ForcedFeatureVariationType | null, KameleoonError>;
/**
* @method getForcedExperimentVariation - obtains the forced experiment variation for the visitor
*/
getForcedExperimentVariation: (visitorCode: string, experimentId: number) => Result<ForcedExperimentVariationType | null, KameleoonError>;
}
export declare class VariationConfiguration implements IVariationConfiguration {
private storage;
private storageForcedExperimentVariations;
private storageForcedFeatureVariations;
private visitorCodeManager;
private clientConfiguration;
constructor(externalStorage: IStorage<VariationDataType>, externalStorageForcedExperimentVariations: IStorage<ForcedExperimentVariationDataType>, externalStorageForcedFeatureVariations: IStorage<ForcedFeatureVariationDataType>, visitorCodeManager: IVisitorCodeManager, clientConfiguration: ClientConfiguration);
updateDataStatus({ visitorCode, experimentIdList, status, }: UpdateDataStatusParametersType): Result<void, KameleoonError>;
getUnsentData(visitorCode: string): BaseVariationDataType[];
getVisitorsWithUnsentData(): string[];
getPendingData(visitorCode: string): BaseVariationDataType[];
getStoredVariations(visitorCode: string): Result<FeatureFlagVariationsType, KameleoonError>;
getVariation({ visitorCode, visitorIdentifier, featureFlag, targetingData, packageInfo, clientConfiguration, dataManager, legalConsent, track, withAssignment, }: GetVariationParametersType): Result<FeatureFlagVariationType, KameleoonError>;
private createAndSaveForcedTargetedVariation;
updateStoredVariations(visitorCode: string, variationData: FeatureFlagVariationsType): Result<void, KameleoonError>;
private getVariationData;
updateForcedExperimentVariation(visitorCode: string, experimentId: number, forcedExperimentVariation: ForcedExperimentVariationType | null): Result<void, KameleoonError>;
updateForcedFeatureVariations(visitorCode: string, forcedFeatureVariations: ForcedFeatureVariationType[]): Result<void, KameleoonError>;
clearSimulatedVariations(visitorCode: string): Result<void, KameleoonError>;
getForcedFeatureVariation(visitorCode: string, featureKey: string): Result<ForcedFeatureVariationType | null, KameleoonError>;
getForcedExperimentVariation(visitorCode: string, experimentId: number): Result<ForcedExperimentVariationType | null, KameleoonError>;
private parseForcedVariationData;
simulatedVariationFromJson(featureKey: string, data: any): ForcedFeatureVariationType | null;
private isSimulatedVariationJson;
private evaluateCBScores;
}
export {};