@devcycle/js-client-sdk
Version:
The Javascript Client SDK for DevCycle
29 lines (28 loc) • 1.17 kB
TypeScript
import type { BucketedUserConfig } from '@devcycle/types';
import { DVCPopulatedUser } from './User';
type PromiseResolver = {
resolve: (value: BucketedUserConfig) => void;
reject: (err?: any) => void;
};
type RequestParams = {
sse: boolean;
lastModified?: number;
etag?: string;
};
/**
* Ensures we only have one active config request at a time
* any calls made while another is ongoing will be merged together by using the latest user object provided
*/
export declare class ConfigRequestConsolidator {
private requestConfigFunction;
private handleConfigReceivedFunction;
private nextUser;
currentPromise: Promise<BucketedUserConfig> | null;
resolvers: PromiseResolver[];
requestParams: RequestParams | null;
constructor(requestConfigFunction: (user: DVCPopulatedUser, params?: RequestParams) => Promise<BucketedUserConfig>, handleConfigReceivedFunction: (config: BucketedUserConfig, user: DVCPopulatedUser) => void, nextUser: DVCPopulatedUser);
queue(user: DVCPopulatedUser | null, requestParams?: RequestParams): Promise<BucketedUserConfig>;
private processQueue;
private performRequest;
}
export {};