UNPKG

@revolugo/booking-api-client

Version:

Javascript Revolugo Booking API Client (browser + server)

47 lines (46 loc) 2.09 kB
export interface IPollerResponse<T = any> { data?: T; meta?: { status: 'IN_PROGRESS' | 'COMPLETE'; }; } export type TPollerRequestCallback<V> = () => Promise<V>; export type TPollerEventCallbackArg<V extends IPollerResponse = IPollerResponse> = V | Error; export type TPollerEventName = 'data' | 'error' | 'complete'; export type TPollerEventCallback<V extends IPollerResponse = IPollerResponse> = (arg?: TPollerEventCallbackArg<V>) => void; export type TPollerEvents<V extends IPollerResponse = IPollerResponse> = { [k in TPollerEventName]: TPollerEventCallback<V>; }; export interface IPollerOptions<U> { callCount?: number; interval?: number; maxCallCount?: number; minCallCount?: number; request: TPollerRequestCallback<Partial<U>>; type?: string; uuid?: string; } export type TRequest<R> = TPollerRequestCallback<R>; export type TOptions<R> = Partial<IPollerOptions<R>>; export declare class Poller<V extends IPollerResponse> { static instance: Poller<IPollerResponse> | null; readonly defaultOptions: Partial<IPollerOptions<V>>; private pollings; private events; static getInstance<R extends IPollerResponse>(): Poller<R>; poll(request: TRequest<V>, options: TOptions<V>): Poller<V>; on(eventName: TPollerEventName, eventCallback: TPollerEventCallback<V>): void; private dispatch; private onRequest; private onComplete; private isInProgress; private buildPollerOptions; private storeCurrentPolling; private isActivePoller; private pause; private removeCurrentPolling; } export type PollerReturn<R extends IPollerResponse = IPollerResponse> = Poller<R>; export type TPollerCallback<T extends IPollerResponse = IPollerResponse> = (err: Error | null, result?: T) => void; export declare function pollRequest<R extends IPollerResponse>(request: TRequest<R>, options: TOptions<R>, pollerCallback: TPollerCallback): Promise<PollerReturn>; export declare function pollRequest<R extends IPollerResponse>(request: TRequest<R>, options: TOptions<R>): Promise<R | undefined>;