unleash-client
Version:
Unleash Client for Node
93 lines • 3.51 kB
TypeScript
import { EventEmitter } from 'events';
import { ClientFeaturesDelta, ClientFeaturesResponse, EnhancedFeatureInterface, FeatureInterface } from '../feature';
import { CustomHeaders, CustomHeadersFunction } from '../headers';
import { HttpOptions } from '../http-options';
import { TagFilter } from '../tags';
import { BootstrapProvider } from './bootstrap-provider';
import { StorageProvider } from './storage-provider';
import { Segment } from '../strategy/strategy';
import { Mode } from '../unleash-config';
export declare const SUPPORTED_SPEC_VERSION = "5.2.0";
export interface RepositoryInterface extends EventEmitter {
getToggle(name: string): FeatureInterface | undefined;
getToggles(): FeatureInterface[];
getTogglesWithSegmentData(): EnhancedFeatureInterface[];
getSegment(id: number): Segment | undefined;
stop(): void;
start(): Promise<void>;
}
export interface RepositoryOptions {
url: string;
appName: string;
instanceId: string;
connectionId: string;
projectName?: string;
refreshInterval: number;
timeout?: number;
headers?: CustomHeaders;
customHeadersFunction?: CustomHeadersFunction;
httpOptions?: HttpOptions;
namePrefix?: string;
tags?: Array<TagFilter>;
bootstrapProvider: BootstrapProvider;
bootstrapOverride?: boolean;
storageProvider: StorageProvider<ClientFeaturesResponse>;
eventSource?: EventSource;
mode: Mode;
}
export default class Repository extends EventEmitter implements EventEmitter {
private timer;
private url;
private etag;
private appName;
private instanceId;
private connectionId;
private refreshInterval;
private headers?;
private failures;
private customHeadersFunction?;
private timeout?;
private stopped;
private projectName?;
private httpOptions?;
private readonly namePrefix?;
private readonly tags?;
private bootstrapProvider;
private bootstrapOverride;
private storageProvider;
private ready;
private connected;
private data;
private segments;
private eventSource;
private mode;
constructor({ url, appName, instanceId, connectionId, projectName, refreshInterval, timeout, headers, customHeadersFunction, httpOptions, namePrefix, tags, bootstrapProvider, bootstrapOverride, storageProvider, eventSource, mode, }: RepositoryOptions);
private handleFlagsFromStream;
timedFetch(interval: number): void;
validateFeature(feature: FeatureInterface): void;
start(): Promise<void>;
loadBackup(): Promise<void>;
setReady(): void;
createSegmentLookup(segments: Segment[] | undefined): Map<number, Segment>;
save(response: ClientFeaturesResponse, fromApi: boolean): Promise<void>;
saveDelta(delta: ClientFeaturesDelta): Promise<void>;
notEmpty(content: ClientFeaturesResponse): boolean;
loadBootstrap(): Promise<void>;
private convertToMap;
getFailures(): number;
nextFetch(): number;
private backoff;
private countSuccess;
private configurationError;
private recoverableError;
private handleErrorCases;
fetch(): Promise<void>;
mergeTagsToStringArray(tags: Array<TagFilter>): Array<string>;
stop(): void;
getSegment(segmentId: number): Segment | undefined;
getToggle(name: string): FeatureInterface | undefined;
getToggles(): FeatureInterface[];
getTogglesWithSegmentData(): EnhancedFeatureInterface[];
private enhanceStrategies;
}
//# sourceMappingURL=index.d.ts.map