@devcycle/nodejs-server-sdk
Version:
The DevCycle NodeJS Server SDK used for feature management.
49 lines (48 loc) • 2.26 kB
TypeScript
import { ConfigBody, DVCLogger, ConfigSource } from '@devcycle/types';
import { ResponseError } from "../server-request/src";
type ConfigPollingOptions = {
configPollingIntervalMS?: number;
sseConfigPollingIntervalMS?: number;
configPollingTimeoutMS?: number;
configCDNURI?: string;
clientMode?: boolean;
disableRealTimeUpdates?: boolean;
};
type SetIntervalInterface = (handler: () => void, timeout?: number) => any;
type ClearIntervalInterface = (intervalTimeout: any) => void;
type SetConfigBufferInterface = (sdkKey: string, projectConfig: string) => void;
type TrackSDKConfigEventInterface = (url: string, responseTimeMS: number, retrievalMetadata?: Record<string, unknown>, err?: ResponseError, reqEtag?: string, reqLastModified?: string, sseConnected?: boolean) => void;
export declare class EnvironmentConfigManager {
private readonly logger;
private readonly sdkKey;
private readonly setConfigBuffer;
private readonly setInterval;
private readonly clearInterval;
private readonly trackSDKConfigEvent;
private _hasConfig;
configSSE?: ConfigBody<string>['sse'];
private currentPollingInterval;
private readonly configPollingIntervalMS;
private readonly sseConfigPollingIntervalMS;
private readonly enableRealtimeUpdates;
fetchConfigPromise: Promise<void>;
private intervalTimeout?;
private clientMode;
private sseConnection?;
private readonly requestTimeoutMS;
private configSource;
constructor(logger: DVCLogger, sdkKey: string, setConfigBuffer: SetConfigBufferInterface, setInterval: SetIntervalInterface, clearInterval: ClearIntervalInterface, trackSDKConfigEvent: TrackSDKConfigEventInterface, { configPollingIntervalMS, sseConfigPollingIntervalMS, // 10 minutes
configPollingTimeoutMS, configCDNURI, clientMode, disableRealTimeUpdates, }: ConfigPollingOptions, configSource?: ConfigSource);
private startSSE;
private onSSEMessage;
private stopSSE;
private startPolling;
get hasConfig(): boolean;
get configEtag(): string | undefined;
private stopPolling;
cleanup(): void;
_fetchConfig(sseLastModified?: string): Promise<void>;
private isLastModifiedHeaderOld;
private handleSSEConfig;
}
export {};