airdcpp-apisocket
Version:
Javascript connector for AirDC++ Web API
48 lines (47 loc) • 2.27 kB
TypeScript
import { WebSocket } from 'mock-socket';
import { OutgoingRequest, RequestSuccessResponse, RequestErrorResponse } from '../../types/api_internal.js';
import { EventEmitter } from 'events';
import { LoggerOptions } from '../../NodeSocket.js';
interface MockFunctionCreator {
fn: (...args: any[]) => any;
}
type RequestCallback = (requestData: object) => void;
type DelayF = () => number;
export interface MockServerOptions {
url: string;
reportMissingListeners?: boolean;
mockF: MockFunctionCreator;
delayMs: number | DelayF;
loggerOptions: LoggerOptions;
}
type MockRequestResponseDataObject<DataT extends object | undefined> = Omit<RequestSuccessResponse<DataT>, 'callback_id'> | Omit<RequestErrorResponse, 'callback_id'>;
type MockRequestResponseDataHandler<DataT extends object | undefined> = (request: OutgoingRequest, s: WebSocket) => MockRequestResponseDataObject<DataT>;
declare const getMockServer: (initialOptions?: Partial<MockServerOptions>) => {
addRequestHandler: <DataT extends object | undefined>(method: string, path: string, data?: DataT | MockRequestResponseDataHandler<DataT>, subscriptionCallback?: RequestCallback) => () => EventEmitter<[never]>;
addErrorHandler: (method: string, path: string, errorStr: string | null, errorCode: number, subscriptionCallback?: RequestCallback) => () => EventEmitter<[never]>;
addSubscriptionHandler: (moduleName: string, listenerName: string, entityId?: string | number) => {
fire: (data: object, entityId?: string | number) => void;
remove: () => void;
subscribeFn: any;
unsubscribeFn: any;
path: string;
};
addHookHandler: (moduleName: string, listenerName: string) => {
fire: (data: object, entityId?: string | number) => void;
remove: () => void;
subscribeFn: any;
unsubscribeFn: any;
path: string;
addResolver: (completionId: number) => {
fire: (data: object) => void;
remove: () => void;
resolveFn: any;
rejectFn: any;
};
};
ignoreMissingHandler: (method: string, path: string) => () => EventEmitter<[never]>;
stop: () => void;
send: (data: object) => void;
url: string;
};
export { getMockServer };