Skip to content

Commit 0995e6e

Browse files
committed
feat: new hooks API
1 parent cae5625 commit 0995e6e

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

types/dispatcher.d.ts

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,13 +215,52 @@ declare namespace Dispatcher {
215215
context: object;
216216
}
217217
export type StreamFactory = (data: StreamFactoryData) => Writable;
218+
export interface Controller {
219+
readonly aborted: boolean;
220+
readonly reason: Error;
221+
readonly paused: boolean;
222+
223+
pause(): void;
224+
resume(): void;
225+
abort(reason: Error): void;
226+
}
218227
export interface DispatchHandlers {
228+
// Existing API
229+
230+
/** Invoked when request is upgraded either due to a `Upgrade` header or `CONNECT` method. */
231+
onUpgrade?(statusCode: number, headers: Buffer[] | string[] | null, socket: Duplex): void;
232+
233+
// New API
234+
235+
/** Invoked when request is dispatched on a dispatcher */
236+
onDispatchStart?(controller: Controller): void;
237+
/** Invoked before request is starting to be processed */
238+
onRequestStart?(): void;
239+
/** Invoked before headers data is sent */
240+
onRequestHeaders?(headers: Array<Buffer|string>): void;
241+
/** Invoked before payload data is sent. */
242+
onRequestData?(chunk: Buffer | string): void;
243+
/** Invoked after request has finished sending */
244+
onRequestEnd?(): void;
245+
/** Invoked after request has errored while sending */
246+
onRequestError?(err: Error): void;
247+
/** Invoked before response is starting to be processed */
248+
onResponseStart?(): void;
249+
/** Invoked after status headers data has been received */
250+
onResponseHeaders?(headers: Array<Buffer|string>, statusCode: number, statusText: string): void;
251+
/** Invoked after response payload data is received. */
252+
onResponseData?(chunk: Buffer | string): void;
253+
/** Invoked after response has finished */
254+
onResponseEnd?(): void;
255+
/** Invoked after response has errored */
256+
onResponseError?(err: Error): void;
257+
258+
// Legacy API
259+
219260
/** Invoked before request is dispatched on socket. May be invoked multiple times when a request is retried when the request at the head of the pipeline fails. */
220261
onConnect?(abort: () => void): void;
221262
/** Invoked when an error has occurred. */
222263
onError?(err: Error): void;
223-
/** Invoked when request is upgraded either due to a `Upgrade` header or `CONNECT` method. */
224-
onUpgrade?(statusCode: number, headers: Buffer[] | string[] | null, socket: Duplex): void;
225264
/** Invoked when response is received, before headers have been read. **/
226265
onResponseStarted?(): void;
227266
/** Invoked when statusCode and headers have been received. May be invoked multiple times due to 1xx informational headers. */
@@ -232,6 +271,7 @@ declare namespace Dispatcher {
232271
onComplete?(trailers: string[] | null): void;
233272
/** Invoked when a body chunk is sent to the server. May be invoked multiple times for chunked requests */
234273
onBodySent?(chunkSize: number, totalBytesSent: number): void;
274+
235275
}
236276
export type PipelineHandler = (data: PipelineHandlerData) => Readable;
237277
export type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH';

0 commit comments

Comments
 (0)