UNPKG

14.5 kBTypeScriptView Raw
1declare module 'net' {
2 import * as stream from 'stream';
3 import EventEmitter = require('events');
4 import * as dns from 'dns';
5
6 type LookupFunction = (
7 hostname: string,
8 options: dns.LookupOneOptions,
9 callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void,
10 ) => void;
11
12 interface AddressInfo {
13 address: string;
14 family: string;
15 port: number;
16 }
17
18 interface SocketConstructorOpts {
19 fd?: number | undefined;
20 allowHalfOpen?: boolean | undefined;
21 readable?: boolean | undefined;
22 writable?: boolean | undefined;
23 }
24
25 interface OnReadOpts {
26 buffer: Uint8Array | (() => Uint8Array);
27 /**
28 * This function is called for every chunk of incoming data.
29 * Two arguments are passed to it: the number of bytes written to buffer and a reference to buffer.
30 * Return false from this function to implicitly pause() the socket.
31 */
32 callback(bytesWritten: number, buf: Uint8Array): boolean;
33 }
34
35 interface ConnectOpts {
36 /**
37 * If specified, incoming data is stored in a single buffer and passed to the supplied callback when data arrives on the socket.
38 * Note: this will cause the streaming functionality to not provide any data, however events like 'error', 'end', and 'close' will
39 * still be emitted as normal and methods like pause() and resume() will also behave as expected.
40 */
41 onread?: OnReadOpts | undefined;
42 }
43
44 interface TcpSocketConnectOpts extends ConnectOpts {
45 port: number;
46 host?: string | undefined;
47 localAddress?: string | undefined;
48 localPort?: number | undefined;
49 hints?: number | undefined;
50 family?: number | undefined;
51 lookup?: LookupFunction | undefined;
52 }
53
54 interface IpcSocketConnectOpts extends ConnectOpts {
55 path: string;
56 }
57
58 type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts;
59 type SocketReadyState = 'opening' | 'open' | 'readOnly' | 'writeOnly' | 'closed';
60
61 class Socket extends stream.Duplex {
62 constructor(options?: SocketConstructorOpts);
63
64 // Extended base methods
65 write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean;
66 write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean;
67
68 connect(options: SocketConnectOpts, connectionListener?: () => void): this;
69 connect(port: number, host: string, connectionListener?: () => void): this;
70 connect(port: number, connectionListener?: () => void): this;
71 connect(path: string, connectionListener?: () => void): this;
72
73 setEncoding(encoding?: BufferEncoding): this;
74 pause(): this;
75 resume(): this;
76 setTimeout(timeout: number, callback?: () => void): this;
77 setNoDelay(noDelay?: boolean): this;
78 setKeepAlive(enable?: boolean, initialDelay?: number): this;
79 address(): AddressInfo | {};
80 unref(): this;
81 ref(): this;
82
83 /** @deprecated since v14.6.0 - Use `writableLength` instead. */
84 readonly bufferSize: number;
85 readonly bytesRead: number;
86 readonly bytesWritten: number;
87 readonly connecting: boolean;
88 readonly destroyed: boolean;
89 readonly localAddress: string;
90 readonly localPort: number;
91 /**
92 * This property represents the state of the connection as a string.
93 * @see {https://nodejs.org/api/net.html#socketreadystate}
94 * @since v0.5.0
95 */
96 readonly readyState: SocketReadyState;
97 readonly remoteAddress?: string | undefined;
98 readonly remoteFamily?: string | undefined;
99 readonly remotePort?: number | undefined;
100 /**
101 * The socket timeout in milliseconds as set by socket.setTimeout(). It is undefined if a timeout has not been set.
102 * @since v10.7.0
103 */
104 readonly timeout?: number | undefined;
105
106 // Extended base methods
107 end(cb?: () => void): this;
108 end(buffer: Uint8Array | string, cb?: () => void): this;
109 end(str: Uint8Array | string, encoding?: BufferEncoding, cb?: () => void): this;
110
111 /**
112 * events.EventEmitter
113 * 1. close
114 * 2. connect
115 * 3. data
116 * 4. drain
117 * 5. end
118 * 6. error
119 * 7. lookup
120 * 8. timeout
121 */
122 addListener(event: string, listener: (...args: any[]) => void): this;
123 addListener(event: "close", listener: (had_error: boolean) => void): this;
124 addListener(event: "connect", listener: () => void): this;
125 addListener(event: "data", listener: (data: Buffer) => void): this;
126 addListener(event: "drain", listener: () => void): this;
127 addListener(event: "end", listener: () => void): this;
128 addListener(event: "error", listener: (err: Error) => void): this;
129 addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
130 addListener(event: "ready", listener: () => void): this;
131 addListener(event: "timeout", listener: () => void): this;
132
133 emit(event: string | symbol, ...args: any[]): boolean;
134 emit(event: "close", had_error: boolean): boolean;
135 emit(event: "connect"): boolean;
136 emit(event: "data", data: Buffer): boolean;
137 emit(event: "drain"): boolean;
138 emit(event: "end"): boolean;
139 emit(event: "error", err: Error): boolean;
140 emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;
141 emit(event: "ready"): boolean;
142 emit(event: "timeout"): boolean;
143
144 on(event: string, listener: (...args: any[]) => void): this;
145 on(event: "close", listener: (had_error: boolean) => void): this;
146 on(event: "connect", listener: () => void): this;
147 on(event: "data", listener: (data: Buffer) => void): this;
148 on(event: "drain", listener: () => void): this;
149 on(event: "end", listener: () => void): this;
150 on(event: "error", listener: (err: Error) => void): this;
151 on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
152 on(event: "ready", listener: () => void): this;
153 on(event: "timeout", listener: () => void): this;
154
155 once(event: string, listener: (...args: any[]) => void): this;
156 once(event: "close", listener: (had_error: boolean) => void): this;
157 once(event: "connect", listener: () => void): this;
158 once(event: "data", listener: (data: Buffer) => void): this;
159 once(event: "drain", listener: () => void): this;
160 once(event: "end", listener: () => void): this;
161 once(event: "error", listener: (err: Error) => void): this;
162 once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
163 once(event: "ready", listener: () => void): this;
164 once(event: "timeout", listener: () => void): this;
165
166 prependListener(event: string, listener: (...args: any[]) => void): this;
167 prependListener(event: "close", listener: (had_error: boolean) => void): this;
168 prependListener(event: "connect", listener: () => void): this;
169 prependListener(event: "data", listener: (data: Buffer) => void): this;
170 prependListener(event: "drain", listener: () => void): this;
171 prependListener(event: "end", listener: () => void): this;
172 prependListener(event: "error", listener: (err: Error) => void): this;
173 prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
174 prependListener(event: "ready", listener: () => void): this;
175 prependListener(event: "timeout", listener: () => void): this;
176
177 prependOnceListener(event: string, listener: (...args: any[]) => void): this;
178 prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;
179 prependOnceListener(event: "connect", listener: () => void): this;
180 prependOnceListener(event: "data", listener: (data: Buffer) => void): this;
181 prependOnceListener(event: "drain", listener: () => void): this;
182 prependOnceListener(event: "end", listener: () => void): this;
183 prependOnceListener(event: "error", listener: (err: Error) => void): this;
184 prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
185 prependOnceListener(event: "ready", listener: () => void): this;
186 prependOnceListener(event: "timeout", listener: () => void): this;
187 }
188
189 interface ListenOptions {
190 port?: number | undefined;
191 host?: string | undefined;
192 backlog?: number | undefined;
193 path?: string | undefined;
194 exclusive?: boolean | undefined;
195 readableAll?: boolean | undefined;
196 writableAll?: boolean | undefined;
197 /**
198 * @default false
199 */
200 ipv6Only?: boolean | undefined;
201 }
202
203 interface ServerOpts {
204 /**
205 * Indicates whether half-opened TCP connections are allowed.
206 * @default false
207 */
208 allowHalfOpen?: boolean | undefined;
209
210 /**
211 * Indicates whether the socket should be paused on incoming connections.
212 * @default false
213 */
214 pauseOnConnect?: boolean | undefined;
215 }
216
217 // https://github.com/nodejs/node/blob/master/lib/net.js
218 class Server extends EventEmitter {
219 constructor(connectionListener?: (socket: Socket) => void);
220 constructor(options?: ServerOpts, connectionListener?: (socket: Socket) => void);
221
222 listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
223 listen(port?: number, hostname?: string, listeningListener?: () => void): this;
224 listen(port?: number, backlog?: number, listeningListener?: () => void): this;
225 listen(port?: number, listeningListener?: () => void): this;
226 listen(path: string, backlog?: number, listeningListener?: () => void): this;
227 listen(path: string, listeningListener?: () => void): this;
228 listen(options: ListenOptions, listeningListener?: () => void): this;
229 listen(handle: any, backlog?: number, listeningListener?: () => void): this;
230 listen(handle: any, listeningListener?: () => void): this;
231 close(callback?: (err?: Error) => void): this;
232 address(): AddressInfo | string | null;
233 getConnections(cb: (error: Error | null, count: number) => void): void;
234 ref(): this;
235 unref(): this;
236 maxConnections: number;
237 connections: number;
238 listening: boolean;
239
240 /**
241 * events.EventEmitter
242 * 1. close
243 * 2. connection
244 * 3. error
245 * 4. listening
246 */
247 addListener(event: string, listener: (...args: any[]) => void): this;
248 addListener(event: "close", listener: () => void): this;
249 addListener(event: "connection", listener: (socket: Socket) => void): this;
250 addListener(event: "error", listener: (err: Error) => void): this;
251 addListener(event: "listening", listener: () => void): this;
252
253 emit(event: string | symbol, ...args: any[]): boolean;
254 emit(event: "close"): boolean;
255 emit(event: "connection", socket: Socket): boolean;
256 emit(event: "error", err: Error): boolean;
257 emit(event: "listening"): boolean;
258
259 on(event: string, listener: (...args: any[]) => void): this;
260 on(event: "close", listener: () => void): this;
261 on(event: "connection", listener: (socket: Socket) => void): this;
262 on(event: "error", listener: (err: Error) => void): this;
263 on(event: "listening", listener: () => void): this;
264
265 once(event: string, listener: (...args: any[]) => void): this;
266 once(event: "close", listener: () => void): this;
267 once(event: "connection", listener: (socket: Socket) => void): this;
268 once(event: "error", listener: (err: Error) => void): this;
269 once(event: "listening", listener: () => void): this;
270
271 prependListener(event: string, listener: (...args: any[]) => void): this;
272 prependListener(event: "close", listener: () => void): this;
273 prependListener(event: "connection", listener: (socket: Socket) => void): this;
274 prependListener(event: "error", listener: (err: Error) => void): this;
275 prependListener(event: "listening", listener: () => void): this;
276
277 prependOnceListener(event: string, listener: (...args: any[]) => void): this;
278 prependOnceListener(event: "close", listener: () => void): this;
279 prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;
280 prependOnceListener(event: "error", listener: (err: Error) => void): this;
281 prependOnceListener(event: "listening", listener: () => void): this;
282 }
283
284 interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {
285 timeout?: number | undefined;
286 }
287
288 interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {
289 timeout?: number | undefined;
290 }
291
292 type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;
293
294 function createServer(connectionListener?: (socket: Socket) => void): Server;
295 function createServer(options?: ServerOpts, connectionListener?: (socket: Socket) => void): Server;
296 function connect(options: NetConnectOpts, connectionListener?: () => void): Socket;
297 function connect(port: number, host?: string, connectionListener?: () => void): Socket;
298 function connect(path: string, connectionListener?: () => void): Socket;
299 function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket;
300 function createConnection(port: number, host?: string, connectionListener?: () => void): Socket;
301 function createConnection(path: string, connectionListener?: () => void): Socket;
302 function isIP(input: string): number;
303 function isIPv4(input: string): boolean;
304 function isIPv6(input: string): boolean;
305}
306declare module 'node:net' {
307 export * from 'net';
308}
309
\No newline at end of file