@revolugo/booking-api-client
Version:
Javascript Revolugo Booking API Client (browser + server)
47 lines (46 loc) • 2.09 kB
TypeScript
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>;