airdcpp-apisocket
Version:
Javascript connector for AirDC++ Web API
21 lines (20 loc) • 1.76 kB
TypeScript
import * as API from './api.js';
export type SubscriptionRemoveHandler = (sendApi?: boolean) => Promise<void>;
export type SubscriptionCallback<DataT extends object | void = object, EntityIdT = API.EntityId | undefined> = (data: DataT, entityId: EntityIdT) => void;
export interface HookSubscriberInfo {
id: string;
name: string;
}
export type HookRejectHandler = (rejectId: string, rejectMessage: string) => void;
export type HookAcceptHandler<DataT extends object | undefined> = (data: DataT) => void;
export type HookCallback<DataT extends object = object, CompletionDataT extends object | undefined = object | undefined> = (data: DataT, accept: HookAcceptHandler<CompletionDataT>, reject: HookRejectHandler) => void;
export interface SocketSubscriptions {
addHook: <DataT extends object, CompletionDataT extends object | undefined>(apiModule: string, event: string, callback: HookCallback<DataT, CompletionDataT>, subscriberInfo: HookSubscriberInfo) => Promise<SubscriptionRemoveHandler>;
addListener: <DataT extends object | void, EntityIdT extends API.EntityId | undefined = undefined>(apiModule: string, event: string, callback: SubscriptionCallback<DataT, EntityIdT>, entityId?: API.EntityId) => Promise<SubscriptionRemoveHandler>;
addViewUpdateListener: <DataT extends object | void, EntityIdT extends API.EntityId | undefined = undefined>(viewName: string, callback: SubscriptionCallback<DataT, EntityIdT>, entityId?: API.EntityId) => () => void;
hasListeners: () => boolean;
getPendingSubscriptionCount: () => number;
}
export type AddHook = SocketSubscriptions['addHook'];
export type AddListener = SocketSubscriptions['addListener'];
export type AddViewUpdateListener = SocketSubscriptions['addViewUpdateListener'];