UNPKG

@openshift-console/dynamic-plugin-sdk

Version:

Provides core APIs, types and utilities used by dynamic plugins at runtime.

74 lines (73 loc) 2.22 kB
export type WSOptions = { host: string; path: string; subprotocols: string[]; reconnect?: boolean; jsonParse?: boolean; bufferMax?: number; bufferFlushInterval?: number; timeout?: number; }; type GenericHandler<T = any> = (data: T) => void; export type OpenHandler = GenericHandler<undefined>; export type CloseHandler = GenericHandler<CloseEvent>; export type ErrorHandler = GenericHandler<Event>; /** * The WebSocket can send JSON that is parsed, or we just send it through as-is */ export type MessageDataType = object | any; export type MessageHandler = GenericHandler<MessageDataType>; /** * Data is provided potentially by .destroy() caller. */ export type DestroyHandler = GenericHandler<unknown | undefined>; export type BulkMessageHandler = GenericHandler<MessageDataType>; /** * @class WebSocket factory and utility wrapper. */ export declare class WSFactory { private readonly id; private paused; private handlers; private state; private messageBuffer; private connectionAttempt; private readonly flushCanceler; private options; private bufferMax; private ws; /** * @param id - unique id for the WebSocket. * @param options - websocket options to initate the WebSocket with. */ constructor(id: string, options: WSOptions); private reconnect; private connect; private registerHandler; /** * Invoke all registered handler callbacks for a given event type. */ private invokeHandlers; /** * Triggers event to be buffered or invoked depending on config. */ private triggerEvent; onmessage(fn: MessageHandler): this; onbulkmessage(fn: BulkMessageHandler): this; onerror(fn: ErrorHandler): this; onopen(fn: OpenHandler): this; onclose(fn: CloseHandler): this; ondestroy(fn: DestroyHandler): this; flushMessageBuffer(): void; /** * Pausing prevents any buffer flushing until unpaused. */ pause(): void; unpause(): void; isPaused(): boolean; getState(): string; bufferSize(): number; destroy(eventData?: unknown): void; send(data: Parameters<typeof WebSocket.prototype.send>[0]): void; } export {};