@flagship.io/js-sdk
Version:
146 lines (145 loc) • 7.23 kB
TypeScript
import { IConfigManager, IFlagshipConfig } from '../config/index';
import { IHit, NewVisitor, primitive, VisitorCacheDTO, FlagDTO, IFSFlagMetadata, sdkInitialData, VisitorCacheStatus, FlagsStatus, SerializedFlagMetadata, CampaignDTO, VisitorVariations, EAIScore } from '../types';
import { IVisitor } from './IVisitor';
import { FSSdkStatus } from '../enum/index';
import { type HitAbstract } from '../hit/HitAbstract';
import { StrategyAbstract } from './StrategyAbstract';
import { EventEmitter } from '../depsNode.native';
import { MurmurHash } from '../utils/MurmurHash';
import { type Troubleshooting } from '../hit/Troubleshooting';
import { IFSFlag } from '../flag/IFSFlag';
import { GetFlagMetadataParam, GetFlagValueParam, IVisitorProfileCache, VisitorExposedParam, VisitorVariationState } from '../type.local';
import { IFSFlagCollection } from '../flag/IFSFlagCollection';
import { IEmotionAI } from '../emotionAI/IEmotionAI';
import { IVisitorEvent } from '../emotionAI/hit/IVisitorEvent';
import { IPageView } from '../emotionAI/hit/IPageView';
import { type UsageHit } from '../hit/UsageHit';
export declare abstract class VisitorAbstract extends EventEmitter implements IVisitor {
protected _visitorId: string;
protected _context: Record<string, primitive>;
protected _flags: Map<string, FlagDTO>;
protected _configManager: IConfigManager;
protected _campaigns: CampaignDTO[];
protected _hasConsented: boolean;
protected _anonymousId: string | null;
deDuplicationCache: Record<string, number>;
protected _isCleaningDeDuplicationCache: boolean;
visitorCache?: VisitorCacheDTO;
protected _exposedVariations: Record<string, VisitorVariations>;
protected _sendExposedVariationTimeoutId?: NodeJS.Timeout;
private _instanceId;
private _traffic;
protected _sdkInitialData?: sdkInitialData;
private _consentHitTroubleshooting?;
private _segmentHitTroubleshooting?;
private _fetchStatus;
private _onFetchFlagsStatusChanged?;
private _getCampaignsPromise?;
private _hasContextBeenUpdated;
private _emotionAi;
private _analyticTraffic;
private _murmurHash;
private _visitorProfileCache?;
private _isClientSuppliedID;
private _visitorVariationState;
get visitorVariationState(): VisitorVariationState;
get isClientSuppliedID(): boolean;
get hasContextBeenUpdated(): boolean;
set hasContextBeenUpdated(v: boolean);
get getCampaignsPromise(): Promise<CampaignDTO[] | null> | undefined;
set getCampaignsPromise(v: Promise<CampaignDTO[] | null> | undefined);
get onFetchFlagsStatusChanged(): (({ status, reason }: FlagsStatus) => void) | undefined;
set onFetchFlagsStatusChanged(v: (({ status, reason }: FlagsStatus) => void) | undefined);
get flagsStatus(): FlagsStatus;
set flagsStatus(v: FlagsStatus);
get segmentHitTroubleshooting(): Troubleshooting | undefined;
set segmentHitTroubleshooting(v: Troubleshooting | undefined);
get consentHitTroubleshooting(): Troubleshooting | undefined;
set consentHitTroubleshooting(v: Troubleshooting | undefined);
get sdkInitialData(): sdkInitialData | undefined;
static SdkStatus?: FSSdkStatus;
getSdkStatus(): FSSdkStatus | undefined;
lastFetchFlagsTimestamp: number;
private _visitorCacheStatus?;
get visitorCacheStatus(): VisitorCacheStatus | undefined;
set visitorCacheStatus(v: VisitorCacheStatus | undefined);
get emotionAi(): IEmotionAI;
get analyticTraffic(): number;
private initBaseProperties;
/**
* Attempts to retrieve a visitor ID from the ABTasty tag in browser environments
* @returns The ABTasty visitor ID if available, otherwise undefined
*/
private getVisitorIdFromTag;
private hasVisitorProfileClientSuppliedId;
private initVisitorId;
constructor(param: NewVisitor & {
visitorId?: string;
configManager: IConfigManager;
context: Record<string, primitive>;
monitoringData?: sdkInitialData;
emotionAi: IEmotionAI;
murmurHash?: MurmurHash;
visitorProfileCache?: IVisitorProfileCache;
visitorVariationState?: VisitorVariationState;
});
protected updateFlagsStatus(): void;
protected updateCache(): void;
get traffic(): number;
set traffic(v: number);
get instanceId(): string;
getCurrentDateTime(): Date;
protected initAnalyticTraffic(): void;
protected generateVisitorId(): string;
clearDeDuplicationCache(deDuplicationTime: number): void;
protected setInitialFlags(flags?: SerializedFlagMetadata[], strategy?: StrategyAbstract): void;
protected setInitializeCampaigns(campaigns?: CampaignDTO[], hasInitialFlags?: boolean, strategy?: StrategyAbstract): void;
loadPredefinedContext(): void;
get visitorId(): string;
set visitorId(v: string);
get hasConsented(): boolean;
set hasConsented(v: boolean);
setConsent(hasConsented: boolean): void;
get context(): Record<string, primitive>;
set context(v: Record<string, primitive>);
get flagsData(): Map<string, FlagDTO>;
set flagsData(v: Map<string, FlagDTO>);
get configManager(): IConfigManager;
get config(): IFlagshipConfig;
get campaigns(): CampaignDTO[];
set campaigns(v: CampaignDTO[]);
get anonymousId(): string | null;
set anonymousId(v: string | null);
protected getStrategy(): StrategyAbstract;
sendExposedVariation(flag?: FlagDTO): Promise<void>;
collectEAIEventsAsync(currentPage?: Omit<IPageView, 'toApiKeys'>): Promise<void>;
sendEaiVisitorEvent(event: IVisitorEvent): void;
sendEaiPageView(pageView: IPageView): void;
onEAICollectStatusChange(callback: (status: boolean) => void): void;
cleanup(): void;
getCachedEAIScore(): Promise<EAIScore | undefined>;
isEAIDataCollected(): Promise<boolean>;
setCachedEAIScore(eAIScore: EAIScore): Promise<void>;
setIsEAIDataCollected(isEAIDataCollected: boolean): Promise<void>;
sendTroubleshooting(hit: Troubleshooting): Promise<void>;
sendUsageHit(hit: UsageHit): Promise<void>;
addInTrackingManager(hit: HitAbstract): Promise<void>;
abstract updateContext(key: string, value: primitive): void;
abstract updateContext(context: Record<string, primitive>): void;
abstract updateContext(context: Record<string, primitive> | string, value?: primitive): void;
abstract clearContext(): void;
abstract getFlag(key: string): IFSFlag;
abstract getFlags(): IFSFlagCollection;
abstract sendHit(hit: HitAbstract): Promise<void>;
abstract sendHit(hit: IHit): Promise<void>;
abstract sendHit(hit: IHit | HitAbstract): Promise<void>;
abstract sendHits(hit: HitAbstract[]): Promise<void>;
abstract sendHits(hit: IHit[]): Promise<void>;
abstract sendHits(hit: HitAbstract[] | IHit[]): Promise<void>;
abstract authenticate(visitorId: string): void;
abstract unauthenticate(): void;
abstract visitorExposed(param: VisitorExposedParam): Promise<void>;
abstract getFlagValue<T>(param: GetFlagValueParam<T>): T extends null ? unknown : T;
abstract fetchFlags(): Promise<void>;
abstract getFlagMetadata(param: GetFlagMetadataParam): IFSFlagMetadata;
}