Skip to content

Commit 5478cdd

Browse files
authored
feat: add diagnostics channel type defs (nodejs#1444)
1 parent decc98c commit 5478cdd

File tree

3 files changed

+139
-0
lines changed

3 files changed

+139
-0
lines changed

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { request, pipeline, stream, connect, upgrade } from './types/api'
1616
export * from './types/fetch'
1717
export * from './types/file'
1818
export * from './types/formdata'
19+
export * from './types/diagnostics-channel'
1920
export { Interceptable } from './types/mock-interceptor'
2021

2122
export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent }
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import { Socket } from "net";
2+
import { expectAssignable } from "tsd";
3+
import { DiagnosticsChannel, buildConnector } from "../..";
4+
5+
const request = {
6+
origin: "",
7+
completed: true,
8+
method: "GET" as const,
9+
path: "",
10+
headers: "",
11+
addHeader: (key: string, value: string) => {
12+
return request;
13+
},
14+
};
15+
16+
const response = {
17+
statusCode: 200,
18+
statusText: "OK",
19+
headers: [Buffer.from(""), Buffer.from("")],
20+
};
21+
22+
const connectParams = {
23+
host: "",
24+
hostname: "",
25+
protocol: "",
26+
port: "",
27+
servername: "",
28+
};
29+
30+
expectAssignable<DiagnosticsChannel.RequestCreateMessage>({ request });
31+
expectAssignable<DiagnosticsChannel.RequestBodySentMessage>({ request });
32+
expectAssignable<DiagnosticsChannel.RequestHeadersMessage>({
33+
request,
34+
response,
35+
});
36+
expectAssignable<DiagnosticsChannel.RequestTrailersMessage>({
37+
request,
38+
trailers: [Buffer.from(""), Buffer.from("")],
39+
});
40+
expectAssignable<DiagnosticsChannel.RequestErrorMessage>({
41+
request,
42+
error: new Error("Error"),
43+
});
44+
expectAssignable<DiagnosticsChannel.ClientSendHeadersMessage>({
45+
request,
46+
headers: "",
47+
socket: new Socket(),
48+
});
49+
expectAssignable<DiagnosticsChannel.ClientBeforeConnectMessage>({
50+
connectParams,
51+
connector: (
52+
options: buildConnector.Options,
53+
callback: buildConnector.Callback
54+
) => new Socket(),
55+
});
56+
expectAssignable<DiagnosticsChannel.ClientConnectedMessage>({
57+
socket: new Socket(),
58+
connectParams,
59+
connector: (
60+
options: buildConnector.Options,
61+
callback: buildConnector.Callback
62+
) => new Socket(),
63+
});
64+
expectAssignable<DiagnosticsChannel.ClientConnectErrorMessage>({
65+
error: new Error("Error"),
66+
socket: new Socket(),
67+
connectParams,
68+
connector: (
69+
options: buildConnector.Options,
70+
callback: buildConnector.Callback
71+
) => new Socket(),
72+
});

types/diagnostics-channel.d.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import { Socket } from "net";
2+
import { connector } from "./connector";
3+
import { HttpMethod } from "./dispatcher";
4+
5+
declare namespace DiagnosticsChannel {
6+
interface Request {
7+
origin?: string | URL;
8+
completed: boolean;
9+
method?: HttpMethod;
10+
path: string;
11+
headers: string;
12+
addHeader(key: string, value: string): Request;
13+
}
14+
interface Response {
15+
statusCode: number;
16+
statusText: string;
17+
headers: Array<Buffer>;
18+
}
19+
type Error = unknown;
20+
interface ConnectParams {
21+
host: URL["host"];
22+
hostname: URL["hostname"];
23+
protocol: URL["protocol"];
24+
port: URL["port"];
25+
servername: string | null;
26+
}
27+
type Connector = typeof connector;
28+
export interface RequestCreateMessage {
29+
request: Request;
30+
}
31+
export interface RequestBodySentMessage {
32+
request: Request;
33+
}
34+
export interface RequestHeadersMessage {
35+
request: Request;
36+
response: Response;
37+
}
38+
export interface RequestTrailersMessage {
39+
request: Request;
40+
trailers: Array<Buffer>;
41+
}
42+
export interface RequestErrorMessage {
43+
request: Request;
44+
error: Error;
45+
}
46+
export interface ClientSendHeadersMessage {
47+
request: Request;
48+
headers: string;
49+
socket: Socket;
50+
}
51+
export interface ClientBeforeConnectMessage {
52+
connectParams: ConnectParams;
53+
connector: Connector;
54+
}
55+
export interface ClientConnectedMessage {
56+
socket: Socket;
57+
connectParams: ConnectParams;
58+
connector: Connector;
59+
}
60+
export interface ClientConnectErrorMessage {
61+
error: Error;
62+
socket: Socket;
63+
connectParams: ConnectParams;
64+
connector: Connector;
65+
}
66+
}

0 commit comments

Comments
 (0)