You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. declare module "net" {
  2. import * as stream from "stream";
  3. import * as events from "events";
  4. import * as dns from "dns";
  5. type LookupFunction = (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;
  6. interface AddressInfo {
  7. address: string;
  8. family: string;
  9. port: number;
  10. }
  11. interface SocketConstructorOpts {
  12. fd?: number;
  13. allowHalfOpen?: boolean;
  14. readable?: boolean;
  15. writable?: boolean;
  16. }
  17. interface TcpSocketConnectOpts {
  18. port: number;
  19. host?: string;
  20. localAddress?: string;
  21. localPort?: number;
  22. hints?: number;
  23. family?: number;
  24. lookup?: LookupFunction;
  25. }
  26. interface IpcSocketConnectOpts {
  27. path: string;
  28. }
  29. type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts;
  30. class Socket extends stream.Duplex {
  31. constructor(options?: SocketConstructorOpts);
  32. // Extended base methods
  33. write(buffer: Buffer | Uint8Array | string, cb?: (err?: Error) => void): boolean;
  34. write(str: Buffer | Uint8Array | string, encoding?: string, cb?: (err?: Error) => void): boolean;
  35. connect(options: SocketConnectOpts, connectionListener?: () => void): this;
  36. connect(port: number, host: string, connectionListener?: () => void): this;
  37. connect(port: number, connectionListener?: () => void): this;
  38. connect(path: string, connectionListener?: () => void): this;
  39. setEncoding(encoding?: string): this;
  40. pause(): this;
  41. resume(): this;
  42. setTimeout(timeout: number, callback?: () => void): this;
  43. setNoDelay(noDelay?: boolean): this;
  44. setKeepAlive(enable?: boolean, initialDelay?: number): this;
  45. address(): AddressInfo | string;
  46. unref(): void;
  47. ref(): void;
  48. readonly bufferSize: number;
  49. readonly bytesRead: number;
  50. readonly bytesWritten: number;
  51. readonly connecting: boolean;
  52. readonly destroyed: boolean;
  53. readonly localAddress: string;
  54. readonly localPort: number;
  55. readonly remoteAddress?: string;
  56. readonly remoteFamily?: string;
  57. readonly remotePort?: number;
  58. // Extended base methods
  59. end(cb?: () => void): void;
  60. end(buffer: Buffer | Uint8Array | string, cb?: () => void): void;
  61. end(str: Buffer | Uint8Array | string, encoding?: string, cb?: () => void): void;
  62. /**
  63. * events.EventEmitter
  64. * 1. close
  65. * 2. connect
  66. * 3. data
  67. * 4. drain
  68. * 5. end
  69. * 6. error
  70. * 7. lookup
  71. * 8. timeout
  72. */
  73. addListener(event: string, listener: (...args: any[]) => void): this;
  74. addListener(event: "close", listener: (had_error: boolean) => void): this;
  75. addListener(event: "connect", listener: () => void): this;
  76. addListener(event: "data", listener: (data: Buffer) => void): this;
  77. addListener(event: "drain", listener: () => void): this;
  78. addListener(event: "end", listener: () => void): this;
  79. addListener(event: "error", listener: (err: Error) => void): this;
  80. addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
  81. addListener(event: "timeout", listener: () => void): this;
  82. emit(event: string | symbol, ...args: any[]): boolean;
  83. emit(event: "close", had_error: boolean): boolean;
  84. emit(event: "connect"): boolean;
  85. emit(event: "data", data: Buffer): boolean;
  86. emit(event: "drain"): boolean;
  87. emit(event: "end"): boolean;
  88. emit(event: "error", err: Error): boolean;
  89. emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;
  90. emit(event: "timeout"): boolean;
  91. on(event: string, listener: (...args: any[]) => void): this;
  92. on(event: "close", listener: (had_error: boolean) => void): this;
  93. on(event: "connect", listener: () => void): this;
  94. on(event: "data", listener: (data: Buffer) => void): this;
  95. on(event: "drain", listener: () => void): this;
  96. on(event: "end", listener: () => void): this;
  97. on(event: "error", listener: (err: Error) => void): this;
  98. on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
  99. on(event: "timeout", listener: () => void): this;
  100. once(event: string, listener: (...args: any[]) => void): this;
  101. once(event: "close", listener: (had_error: boolean) => void): this;
  102. once(event: "connect", listener: () => void): this;
  103. once(event: "data", listener: (data: Buffer) => void): this;
  104. once(event: "drain", listener: () => void): this;
  105. once(event: "end", listener: () => void): this;
  106. once(event: "error", listener: (err: Error) => void): this;
  107. once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
  108. once(event: "timeout", listener: () => void): this;
  109. prependListener(event: string, listener: (...args: any[]) => void): this;
  110. prependListener(event: "close", listener: (had_error: boolean) => void): this;
  111. prependListener(event: "connect", listener: () => void): this;
  112. prependListener(event: "data", listener: (data: Buffer) => void): this;
  113. prependListener(event: "drain", listener: () => void): this;
  114. prependListener(event: "end", listener: () => void): this;
  115. prependListener(event: "error", listener: (err: Error) => void): this;
  116. prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
  117. prependListener(event: "timeout", listener: () => void): this;
  118. prependOnceListener(event: string, listener: (...args: any[]) => void): this;
  119. prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;
  120. prependOnceListener(event: "connect", listener: () => void): this;
  121. prependOnceListener(event: "data", listener: (data: Buffer) => void): this;
  122. prependOnceListener(event: "drain", listener: () => void): this;
  123. prependOnceListener(event: "end", listener: () => void): this;
  124. prependOnceListener(event: "error", listener: (err: Error) => void): this;
  125. prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
  126. prependOnceListener(event: "timeout", listener: () => void): this;
  127. }
  128. interface ListenOptions {
  129. port?: number;
  130. host?: string;
  131. backlog?: number;
  132. path?: string;
  133. exclusive?: boolean;
  134. readableAll?: boolean;
  135. writableAll?: boolean;
  136. /**
  137. * @default false
  138. */
  139. ipv6Only?: boolean;
  140. }
  141. // https://github.com/nodejs/node/blob/master/lib/net.js
  142. class Server extends events.EventEmitter {
  143. constructor(connectionListener?: (socket: Socket) => void);
  144. constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void);
  145. listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
  146. listen(port?: number, hostname?: string, listeningListener?: () => void): this;
  147. listen(port?: number, backlog?: number, listeningListener?: () => void): this;
  148. listen(port?: number, listeningListener?: () => void): this;
  149. listen(path: string, backlog?: number, listeningListener?: () => void): this;
  150. listen(path: string, listeningListener?: () => void): this;
  151. listen(options: ListenOptions, listeningListener?: () => void): this;
  152. listen(handle: any, backlog?: number, listeningListener?: () => void): this;
  153. listen(handle: any, listeningListener?: () => void): this;
  154. close(callback?: (err?: Error) => void): this;
  155. address(): AddressInfo | string | null;
  156. getConnections(cb: (error: Error | null, count: number) => void): void;
  157. ref(): this;
  158. unref(): this;
  159. maxConnections: number;
  160. connections: number;
  161. listening: boolean;
  162. /**
  163. * events.EventEmitter
  164. * 1. close
  165. * 2. connection
  166. * 3. error
  167. * 4. listening
  168. */
  169. addListener(event: string, listener: (...args: any[]) => void): this;
  170. addListener(event: "close", listener: () => void): this;
  171. addListener(event: "connection", listener: (socket: Socket) => void): this;
  172. addListener(event: "error", listener: (err: Error) => void): this;
  173. addListener(event: "listening", listener: () => void): this;
  174. emit(event: string | symbol, ...args: any[]): boolean;
  175. emit(event: "close"): boolean;
  176. emit(event: "connection", socket: Socket): boolean;
  177. emit(event: "error", err: Error): boolean;
  178. emit(event: "listening"): boolean;
  179. on(event: string, listener: (...args: any[]) => void): this;
  180. on(event: "close", listener: () => void): this;
  181. on(event: "connection", listener: (socket: Socket) => void): this;
  182. on(event: "error", listener: (err: Error) => void): this;
  183. on(event: "listening", listener: () => void): this;
  184. once(event: string, listener: (...args: any[]) => void): this;
  185. once(event: "close", listener: () => void): this;
  186. once(event: "connection", listener: (socket: Socket) => void): this;
  187. once(event: "error", listener: (err: Error) => void): this;
  188. once(event: "listening", listener: () => void): this;
  189. prependListener(event: string, listener: (...args: any[]) => void): this;
  190. prependListener(event: "close", listener: () => void): this;
  191. prependListener(event: "connection", listener: (socket: Socket) => void): this;
  192. prependListener(event: "error", listener: (err: Error) => void): this;
  193. prependListener(event: "listening", listener: () => void): this;
  194. prependOnceListener(event: string, listener: (...args: any[]) => void): this;
  195. prependOnceListener(event: "close", listener: () => void): this;
  196. prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;
  197. prependOnceListener(event: "error", listener: (err: Error) => void): this;
  198. prependOnceListener(event: "listening", listener: () => void): this;
  199. }
  200. interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {
  201. timeout?: number;
  202. }
  203. interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {
  204. timeout?: number;
  205. }
  206. type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;
  207. function createServer(connectionListener?: (socket: Socket) => void): Server;
  208. function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server;
  209. function connect(options: NetConnectOpts, connectionListener?: () => void): Socket;
  210. function connect(port: number, host?: string, connectionListener?: () => void): Socket;
  211. function connect(path: string, connectionListener?: () => void): Socket;
  212. function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket;
  213. function createConnection(port: number, host?: string, connectionListener?: () => void): Socket;
  214. function createConnection(path: string, connectionListener?: () => void): Socket;
  215. function isIP(input: string): number;
  216. function isIPv4(input: string): boolean;
  217. function isIPv6(input: string): boolean;
  218. }