From 5478cdd38eb057a1e86c15cf418eeb90486470b2 Mon Sep 17 00:00:00 2001 From: Stef Date: Mon, 16 May 2022 09:29:10 +0100 Subject: [PATCH] feat: add diagnostics channel type defs (#1444) --- index.d.ts | 1 + test/types/diagnostics-channel.test-d.ts | 72 ++++++++++++++++++++++++ types/diagnostics-channel.d.ts | 66 ++++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 test/types/diagnostics-channel.test-d.ts create mode 100644 types/diagnostics-channel.d.ts diff --git a/index.d.ts b/index.d.ts index 44ab285041f..e4aa8f62cdb 100644 --- a/index.d.ts +++ b/index.d.ts @@ -16,6 +16,7 @@ import { request, pipeline, stream, connect, upgrade } from './types/api' export * from './types/fetch' export * from './types/file' export * from './types/formdata' +export * from './types/diagnostics-channel' export { Interceptable } from './types/mock-interceptor' export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent } diff --git a/test/types/diagnostics-channel.test-d.ts b/test/types/diagnostics-channel.test-d.ts new file mode 100644 index 00000000000..334404c385f --- /dev/null +++ b/test/types/diagnostics-channel.test-d.ts @@ -0,0 +1,72 @@ +import { Socket } from "net"; +import { expectAssignable } from "tsd"; +import { DiagnosticsChannel, buildConnector } from "../.."; + +const request = { + origin: "", + completed: true, + method: "GET" as const, + path: "", + headers: "", + addHeader: (key: string, value: string) => { + return request; + }, +}; + +const response = { + statusCode: 200, + statusText: "OK", + headers: [Buffer.from(""), Buffer.from("")], +}; + +const connectParams = { + host: "", + hostname: "", + protocol: "", + port: "", + servername: "", +}; + +expectAssignable({ request }); +expectAssignable({ request }); +expectAssignable({ + request, + response, +}); +expectAssignable({ + request, + trailers: [Buffer.from(""), Buffer.from("")], +}); +expectAssignable({ + request, + error: new Error("Error"), +}); +expectAssignable({ + request, + headers: "", + socket: new Socket(), +}); +expectAssignable({ + connectParams, + connector: ( + options: buildConnector.Options, + callback: buildConnector.Callback + ) => new Socket(), +}); +expectAssignable({ + socket: new Socket(), + connectParams, + connector: ( + options: buildConnector.Options, + callback: buildConnector.Callback + ) => new Socket(), +}); +expectAssignable({ + error: new Error("Error"), + socket: new Socket(), + connectParams, + connector: ( + options: buildConnector.Options, + callback: buildConnector.Callback + ) => new Socket(), +}); diff --git a/types/diagnostics-channel.d.ts b/types/diagnostics-channel.d.ts new file mode 100644 index 00000000000..8bb1926506e --- /dev/null +++ b/types/diagnostics-channel.d.ts @@ -0,0 +1,66 @@ +import { Socket } from "net"; +import { connector } from "./connector"; +import { HttpMethod } from "./dispatcher"; + +declare namespace DiagnosticsChannel { + interface Request { + origin?: string | URL; + completed: boolean; + method?: HttpMethod; + path: string; + headers: string; + addHeader(key: string, value: string): Request; + } + interface Response { + statusCode: number; + statusText: string; + headers: Array; + } + type Error = unknown; + interface ConnectParams { + host: URL["host"]; + hostname: URL["hostname"]; + protocol: URL["protocol"]; + port: URL["port"]; + servername: string | null; + } + type Connector = typeof connector; + export interface RequestCreateMessage { + request: Request; + } + export interface RequestBodySentMessage { + request: Request; + } + export interface RequestHeadersMessage { + request: Request; + response: Response; + } + export interface RequestTrailersMessage { + request: Request; + trailers: Array; + } + export interface RequestErrorMessage { + request: Request; + error: Error; + } + export interface ClientSendHeadersMessage { + request: Request; + headers: string; + socket: Socket; + } + export interface ClientBeforeConnectMessage { + connectParams: ConnectParams; + connector: Connector; + } + export interface ClientConnectedMessage { + socket: Socket; + connectParams: ConnectParams; + connector: Connector; + } + export interface ClientConnectErrorMessage { + error: Error; + socket: Socket; + connectParams: ConnectParams; + connector: Connector; + } +}