/// /// /// 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;