///
///
///
import type { DebugProtocolClient } from './DebugProtocolClient';
import type { Socket } from 'net';
import type { ProtocolRequest, ProtocolResponse, ProtocolUpdate } from '../events/ProtocolEvent';
export interface DebugProtocolClientPlugin {
onServerConnected?(event: OnServerConnectedEvent): void | Promise;
beforeSendRequest?(event: BeforeSendRequestEvent): void | Promise;
afterSendRequest?(event: AfterSendRequestEvent): void | Promise;
provideResponseOrUpdate?(event: ProvideResponseOrUpdateEvent): void | Promise;
onUpdate?(event: OnUpdateEvent): void | Promise;
onResponse?(event: OnResponseEvent): void | Promise;
beforeHandleUpdate?(event: BeforeHandleUpdateEvent): void | Promise;
}
export interface OnServerConnectedEvent {
client: DebugProtocolClient;
server: Socket;
}
export interface ProvideResponseOrUpdateEvent {
client: DebugProtocolClient;
activeRequests: Map;
buffer: Readonly;
/**
* The plugin should provide this property
*/
responseOrUpdate?: ProtocolResponse | ProtocolUpdate;
}
export interface BeforeSendRequestEvent {
client: DebugProtocolClient;
request: TRequest;
}
export type AfterSendRequestEvent = BeforeSendRequestEvent;
export interface OnUpdateEvent {
client: DebugProtocolClient;
update: ProtocolUpdate;
}
export interface BeforeHandleUpdateEvent {
client: DebugProtocolClient;
update: ProtocolUpdate;
}
export interface OnResponseEvent {
client: DebugProtocolClient;
response: ProtocolResponse;
}
export type Handler = (event: T) => R;