UNPKG

hypertune

Version:

[Hypertune](https://www.hypertune.com/) is the most flexible platform for feature flags, A/B testing, analytics and app configuration. Built with full end-to-end type-safety, Git-style version control and local, synchronous, in-memory flag evaluation. Opt

68 lines 3.44 kB
import { InitData, Expression, Query, Value, ObjectValueWithVariables, UpdateListener, DehydratedState, DeepPartial, InitDataProvider, ObjectValue, InitQuery, FieldQuery, Logs } from "../shared"; import Logger from "./Logger"; import LRUCache from "../shared/helpers/LRUCache"; /** @internal: Not part of the Hypertune public API */ export default class Context { protected readonly initDataProvider: InitDataProvider | null; protected readonly initDataRefreshIntervalMs: number; protected readonly shouldSkipInitDataUpdateOnRefresh: boolean; protected readonly query: Query<ObjectValueWithVariables> | null; protected readonly initQuery: InitQuery; protected variableValues: ObjectValue; protected readonly updateListeners: Map<UpdateListener, boolean>; protected shouldClose: boolean; protected updateTimeout: NodeJS.Timeout | null; readonly logger: Logger; initData: InitData | null; lastInitDataRefreshTime: number | null; readonly getFieldCache: LRUCache<Expression> | null; readonly getItemsCache: LRUCache<Expression[]> | null; readonly evaluateCache: LRUCache<{ value: Value; logs: Logs; path: string; args: { [path: string]: ObjectValue; }; shouldLogEvaluation: boolean; }> | null; override: DeepPartial<ObjectValue> | null; constructor({ traceId, initData, lastInitDataRefreshTime, initDataProvider, initDataRefreshIntervalMs, shouldRefreshInitData, shouldRefreshInitDataOnCreate, shouldSkipInitDataUpdateOnRefresh, query, initQuery, variableValues, logger, cacheSize, override, }: { traceId: string; initData: InitData | null; lastInitDataRefreshTime: number | null; initDataProvider: InitDataProvider | null; initDataRefreshIntervalMs: number; shouldRefreshInitData: boolean; shouldRefreshInitDataOnCreate: boolean; shouldSkipInitDataUpdateOnRefresh: boolean; query: Query<ObjectValueWithVariables> | null; initQuery: InitQuery; variableValues: ObjectValue; logger: Logger; cacheSize: number; override: object | null; }); private updateInitData; initIfNeeded(traceId: string, retries: number): Promise<void>; private initFromDataProvider; private getHashData; private getInitData; private initAndStartIntervals; isReady(): boolean; close(traceId: string): Promise<void>; getStateHash(): string; addUpdateListener(listener: UpdateListener): void; removeUpdateListener(listener: UpdateListener): void; setOverride<TOverride extends ObjectValue>(traceId: string, override: DeepPartial<TOverride> | null): void; private updateOverride; dehydrate<TOverride extends ObjectValue, TVariableValues extends ObjectValue>(query?: Query<ObjectValueWithVariables>, variableValues?: TVariableValues): DehydratedState<TOverride, TVariableValues> | null; hydrate<TOverride extends ObjectValue, TVariableValues extends ObjectValue>(traceId: string, dehydratedState: DehydratedState<TOverride, TVariableValues>): void; private updateLastInitDataRefreshTime; private withUpdateNotification; private withUpdateNotificationAsync; private notifyUpdateListenersIfNeeded; reduce(fieldQuery: FieldQuery<ObjectValueWithVariables> | null, expression: Expression): Expression; private log; } //# sourceMappingURL=Context.d.ts.map