///
///
///
import type { DebugProtocolServer } from './DebugProtocolServer';
import type { Socket } from 'net';
import type { ProtocolRequest, ProtocolResponse } from '../events/ProtocolEvent';
export interface ProtocolServerPlugin {
onServerStart?: Handler;
onClientConnected?: Handler;
provideRequest?: Handler;
provideResponse?: Handler;
beforeSendResponse?: Handler;
afterSendResponse?: Handler;
}
export interface OnServerStartEvent {
server: DebugProtocolServer;
}
export interface OnClientConnectedEvent {
server: DebugProtocolServer;
client: Socket;
}
export interface ProvideRequestEvent {
server: DebugProtocolServer;
buffer: Buffer;
/**
* The plugin should provide this property
*/
request?: ProtocolRequest;
}
export interface ProvideResponseEvent {
server: DebugProtocolServer;
request: ProtocolRequest;
/**
* The plugin should provide this property
*/
response?: ProtocolResponse;
}
export interface BeforeSendResponseEvent {
server: DebugProtocolServer;
response: ProtocolResponse;
}
export type AfterSendResponseEvent = BeforeSendResponseEvent;
export type Handler = (event: T) => R;