@mcp-abap-adt/connection
Version:
ABAP connection layer for MCP ABAP ADT server
46 lines • 1.87 kB
TypeScript
import type { IWebSocketCloseInfo, IWebSocketConnectOptions, IWebSocketMessageEnvelope, IWebSocketMessageHandler, IWebSocketTransport } from '@mcp-abap-adt/interfaces';
/**
* Minimal WS-like instance contract to avoid hard dependency on a specific WS library.
*/
interface IWebSocketLike {
readyState: number;
send(data: string): void;
close(code?: number, reason?: string): void;
onopen: ((event: unknown) => void) | null;
onmessage: ((event: {
data: unknown;
}) => void) | null;
onerror: ((event: unknown) => void) | null;
onclose: ((event: {
code?: number;
reason?: string;
wasClean?: boolean;
}) => void) | null;
}
interface IWebSocketFactory {
create(url: string, protocols?: string | string[], options?: IWebSocketConnectOptions): IWebSocketLike;
}
export declare class GenericWebSocketTransport implements IWebSocketTransport {
private readonly factory;
private socket;
private messageHandlers;
private openHandlers;
private errorHandlers;
private closeHandlers;
constructor(factory: IWebSocketFactory);
connect(url: string, options?: IWebSocketConnectOptions): Promise<void>;
disconnect(code?: number, reason?: string): Promise<void>;
send<T = unknown>(message: IWebSocketMessageEnvelope<T>): Promise<void>;
onMessage<T = unknown>(handler: IWebSocketMessageHandler<T>): void;
onOpen(handler: () => void | Promise<void>): void;
onError(handler: (error: Error) => void | Promise<void>): void;
onClose(handler: (info: IWebSocketCloseInfo) => void | Promise<void>): void;
isConnected(): boolean;
private handleIncomingMessage;
private normalizeError;
private emitOpen;
private emitError;
private emitClose;
}
export type { IWebSocketFactory, IWebSocketLike };
//# sourceMappingURL=GenericWebSocketTransport.d.ts.map