UNPKG

@kameleoon/javascript-sdk-core

Version:
81 lines (80 loc) 5.55 kB
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 {};