UNPKG

@devcycle/nodejs-server-sdk

Version:

The DevCycle NodeJS Server SDK used for feature management.

49 lines (48 loc) 2.26 kB
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 {};