featurehub-javascript-client-sdk
Version:
FeatureHub client/browser SDK
40 lines (39 loc) • 2.07 kB
TypeScript
import { ClientContext } from './client_context';
import { FeatureStateHolder } from './feature_state';
import { FeatureStateValueInterceptor } from './interceptors';
import { AnalyticsCollector } from './analytics';
import { InternalFeatureRepository } from './internal_feature_repository';
import { CatchReleaseListenerHandler, ReadinessListenerHandle } from './feature_hub_config';
export declare enum Readyness {
NotReady = "NotReady",
Ready = "Ready",
Failed = "Failed"
}
export interface ReadynessListener {
(state: Readyness, firstTimeReady: boolean): void;
}
export interface PostLoadNewFeatureStateAvailableListener {
(repo: InternalFeatureRepository): void;
}
export interface FeatureHubRepository {
readyness: Readyness;
catchAndReleaseMode: boolean;
logAnalyticsEvent(action: string, other?: Map<string, string>, ctx?: ClientContext): any;
hasFeature(key: string): undefined | FeatureStateHolder;
feature(key: string): FeatureStateHolder;
getFeatureState<T = any>(key: string): FeatureStateHolder<T>;
release(disableCatchAndRelease?: boolean): Promise<void>;
simpleFeatures(): Map<string, string | undefined>;
getFlag(key: string): boolean | undefined;
getString(key: string): string | undefined;
getJson(key: string): string | undefined;
getNumber(key: string): number | undefined;
isSet(key: string): boolean;
addValueInterceptor(interceptor: FeatureStateValueInterceptor): void;
addReadynessListener(listener: ReadynessListener): number;
addReadinessListener(listener: ReadynessListener, ignoreNotReadyOnRegister?: boolean): ReadinessListenerHandle;
removeReadinessListener(listener: ReadynessListener | ReadinessListenerHandle): any;
addAnalyticCollector(collector: AnalyticsCollector): void;
addPostLoadNewFeatureStateAvailableListener(listener: PostLoadNewFeatureStateAvailableListener): CatchReleaseListenerHandler;
removePostLoadNewFeatureStateAvailableListener(listener: PostLoadNewFeatureStateAvailableListener | CatchReleaseListenerHandler): any;
}