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 readonly pending: boolean;
92 /**
93 * This property represents the state of the connection as a string.
94 * @see {https://nodejs.org/api/net.html#socketreadystate}
95 * @since v0.5.0
96 */
97 readonly readyState: SocketReadyState;
98 readonly remoteAddress?: string | undefined;
99 readonly remoteFamily?: string | undefined;
100 readonly remotePort?: number | undefined;
101 /**
102 * The socket timeout in milliseconds as set by socket.setTimeout(). It is undefined if a timeout has not been set.
103 * @since v10.7.0
104 */
105 readonly timeout?: number | undefined;
106
107 // Extended base methods
108 end(cb?: () => void): this;
109 end(buffer: Uint8Array | string, cb?: () => void): this;
110 end(str: Uint8Array | string, encoding?: BufferEncoding, cb?: () => void): this;
111
112 /**
113 * events.EventEmitter
114 * 1. close
115 * 2. connect
116 * 3. data
117 * 4. drain
118 * 5. end
119 * 6. error
120 * 7. lookup
121 * 8. timeout
122 */
123 addListener(event: string, listener: (...args: any[]) => void): this;
124 addListener(event: "close", listener: (had_error: boolean) => void): this;
125 addListener(event: "connect", listener: () => void): this;
126 addListener(event: "data", listener: (data: Buffer) => void): this;
127 addListener(event: "drain", listener: () => void): this;
128 addListener(event: "end", listener: () => void): this;
129 addListener(event: "error", listener: (err: Error) => void): this;
130 addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
131 addListener(event: "ready", listener: () => void): this;
132 addListener(event: "timeout", listener: () => void): this;
133
134 emit(event: string | symbol, ...args: any[]): boolean;
135 emit(event: "close", had_error: boolean): boolean;
136 emit(event: "connect"): boolean;
137 emit(event: "data", data: Buffer): boolean;
138 emit(event: "drain"): boolean;
139 emit(event: "end"): boolean;
140 emit(event: "error", err: Error): boolean;
141 emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;
142 emit(event: "ready"): boolean;
143 emit(event: "timeout"): boolean;
144
145 on(event: string, listener: (...args: any[]) => void): this;
146 on(event: "close", listener: (had_error: boolean) => void): this;
147 on(event: "connect", listener: () => void): this;
148 on(event: "data", listener: (data: Buffer) => void): this;
149 on(event: "drain", listener: () => void): this;
150 on(event: "end", listener: () => void): this;
151 on(event: "error", listener: (err: Error) => void): this;
152 on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
153 on(event: "ready", listener: () => void): this;
154 on(event: "timeout", listener: () => void): this;
155
156 once(event: string, listener: (...args: any[]) => void): this;
157 once(event: "close", listener: (had_error: boolean) => void): this;
158 once(event: "connect", listener: () => void): this;
159 once(event: "data", listener: (data: Buffer) => void): this;
160 once(event: "drain", listener: () => void): this;
161 once(event: "end", listener: () => void): this;
162 once(event: "error", listener: (err: Error) => void): this;
163 once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
164 once(event: "ready", listener: () => void): this;
165 once(event: "timeout", listener: () => void): this;
166
167 prependListener(event: string, listener: (...args: any[]) => void): this;
168 prependListener(event: "close", listener: (had_error: boolean) => void): this;
169 prependListener(event: "connect", listener: () => void): this;
170 prependListener(event: "data", listener: (data: Buffer) => void): this;
171 prependListener(event: "drain", listener: () => void): this;
172 prependListener(event: "end", listener: () => void): this;
173 prependListener(event: "error", listener: (err: Error) => void): this;
174 prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
175 prependListener(event: "ready", listener: () => void): this;
176 prependListener(event: "timeout", listener: () => void): this;
177
178 prependOnceListener(event: string, listener: (...args: any[]) => void): this;
179 prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;
180 prependOnceListener(event: "connect", listener: () => void): this;
181 prependOnceListener(event: "data", listener: (data: Buffer) => void): this;
182 prependOnceListener(event: "drain", listener: () => void): this;
183 prependOnceListener(event: "end", listener: () => void): this;
184 prependOnceListener(event: "error", listener: (err: Error) => void): this;
185 prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
186 prependOnceListener(event: "ready", listener: () => void): this;
187 prependOnceListener(event: "timeout", listener: () => void): this;
188 }
189
190 interface ListenOptions {
191 port?: number | undefined;
192 host?: string | undefined;
193 backlog?: number | undefined;
194 path?: string | undefined;
195 exclusive?: boolean | undefined;
196 readableAll?: boolean | undefined;
197 writableAll?: boolean | undefined;
198 /**
199 * @default false
200 */
201 ipv6Only?: boolean | undefined;
202 }
203
204 interface ServerOpts {
205 /**
206 * Indicates whether half-opened TCP connections are allowed.
207 * @default false
208 */
209 allowHalfOpen?: boolean | undefined;
210
211 /**
212 * Indicates whether the socket should be paused on incoming connections.
213 * @default false
214 */
215 pauseOnConnect?: boolean | undefined;
216 }
217
218 // https://github.com/nodejs/node/blob/master/lib/net.js
219 class Server extends EventEmitter {
220 constructor(connectionListener?: (socket: Socket) => void);
221 constructor(options?: ServerOpts, connectionListener?: (socket: Socket) => void);
222
223 listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
224 listen(port?: number, hostname?: string, listeningListener?: () => void): this;
225 listen(port?: number, backlog?: number, listeningListener?: () => void): this;
226 listen(port?: number, listeningListener?: () => void): this;
227 listen(path: string, backlog?: number, listeningListener?: () => void): this;
228 listen(path: string, listeningListener?: () => void): this;
229 listen(options: ListenOptions, listeningListener?: () => void): this;
230 listen(handle: any, backlog?: number, listeningListener?: () => void): this;
231 listen(handle: any, listeningListener?: () => void): this;
232 close(callback?: (err?: Error) => void): this;
233 address(): AddressInfo | string | null;
234 getConnections(cb: (error: Error | null, count: number) => void): void;
235 ref(): this;
236 unref(): this;
237 maxConnections: number;
238 connections: number;
239 listening: boolean;
240
241 /**
242 * events.EventEmitter
243 * 1. close
244 * 2. connection
245 * 3. error
246 * 4. listening
247 */
248 addListener(event: string, listener: (...args: any[]) => void): this;
249 addListener(event: "close", listener: () => void): this;
250 addListener(event: "connection", listener: (socket: Socket) => void): this;
251 addListener(event: "error", listener: (err: Error) => void): this;
252 addListener(event: "listening", listener: () => void): this;
253
254 emit(event: string | symbol, ...args: any[]): boolean;
255 emit(event: "close"): boolean;
256 emit(event: "connection", socket: Socket): boolean;
257 emit(event: "error", err: Error): boolean;
258 emit(event: "listening"): boolean;
259
260 on(event: string, listener: (...args: any[]) => void): this;
261 on(event: "close", listener: () => void): this;
262 on(event: "connection", listener: (socket: Socket) => void): this;
263 on(event: "error", listener: (err: Error) => void): this;
264 on(event: "listening", listener: () => void): this;
265
266 once(event: string, listener: (...args: any[]) => void): this;
267 once(event: "close", listener: () => void): this;
268 once(event: "connection", listener: (socket: Socket) => void): this;
269 once(event: "error", listener: (err: Error) => void): this;
270 once(event: "listening", listener: () => void): this;
271
272 prependListener(event: string, listener: (...args: any[]) => void): this;
273 prependListener(event: "close", listener: () => void): this;
274 prependListener(event: "connection", listener: (socket: Socket) => void): this;
275 prependListener(event: "error", listener: (err: Error) => void): this;
276 prependListener(event: "listening", listener: () => void): this;
277
278 prependOnceListener(event: string, listener: (...args: any[]) => void): this;
279 prependOnceListener(event: "close", listener: () => void): this;
280 prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;
281 prependOnceListener(event: "error", listener: (err: Error) => void): this;
282 prependOnceListener(event: "listening", listener: () => void): this;
283 }
284
285 interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {
286 timeout?: number | undefined;
287 }
288
289 interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {
290 timeout?: number | undefined;
291 }
292
293 type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;
294
295 function createServer(connectionListener?: (socket: Socket) => void): Server;
296 function createServer(options?: ServerOpts, connectionListener?: (socket: Socket) => void): Server;
297 function connect(options: NetConnectOpts, connectionListener?: () => void): Socket;
298 function connect(port: number, host?: string, connectionListener?: () => void): Socket;
299 function connect(path: string, connectionListener?: () => void): Socket;
300 function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket;
301 function createConnection(port: number, host?: string, connectionListener?: () => void): Socket;
302 function createConnection(path: string, connectionListener?: () => void): Socket;
303 function isIP(input: string): number;
304 function isIPv4(input: string): boolean;
305 function isIPv6(input: string): boolean;
306}
307declare module 'node:net' {
308 export * from 'net';
309}
310
\No newline at end of file