| | |
| | | * ```js |
| | | * const net = require('net'); |
| | | * ``` |
| | | * @see [source](https://github.com/nodejs/node/blob/v16.9.0/lib/net.js) |
| | | * @see [source](https://github.com/nodejs/node/blob/v17.0.0/lib/net.js) |
| | | */ |
| | | declare module 'net' { |
| | | import * as stream from 'node:stream'; |
| | |
| | | allowHalfOpen?: boolean | undefined; |
| | | readable?: boolean | undefined; |
| | | writable?: boolean | undefined; |
| | | signal?: AbortSignal; |
| | | } |
| | | interface OnReadOpts { |
| | | buffer: Uint8Array | (() => Uint8Array); |
| | |
| | | path: string; |
| | | } |
| | | type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts; |
| | | type SocketReadyState = 'opening' | 'open' | 'readOnly' | 'writeOnly' | 'closed'; |
| | | /** |
| | | * This class is an abstraction of a TCP socket or a streaming `IPC` endpoint |
| | | * (uses named pipes on Windows, and Unix domain sockets otherwise). It is also |
| | |
| | | * connects on `'192.168.1.1'`, the value of `socket.localAddress` would be`'192.168.1.1'`. |
| | | * @since v0.9.6 |
| | | */ |
| | | readonly localAddress: string; |
| | | readonly localAddress?: string; |
| | | /** |
| | | * The numeric representation of the local port. For example, `80` or `21`. |
| | | * @since v0.9.6 |
| | | */ |
| | | readonly localPort: number; |
| | | readonly localPort?: number; |
| | | /** |
| | | * This property represents the state of the connection as a string. |
| | | * @see {https://nodejs.org/api/net.html#socketreadystate} |
| | | * @since v0.5.0 |
| | | */ |
| | | readonly readyState: SocketReadyState; |
| | | /** |
| | | * The string representation of the remote IP address. For example,`'74.125.127.100'` or `'2001:4860:a005::68'`. Value may be `undefined` if |
| | | * the socket is destroyed (for example, if the client disconnected). |
| | |
| | | */ |
| | | readonly remotePort?: number | undefined; |
| | | /** |
| | | * The socket timeout in milliseconds as set by socket.setTimeout(). It is undefined if a timeout has not been set. |
| | | * @since v10.7.0 |
| | | */ |
| | | readonly timeout?: number | undefined; |
| | | /** |
| | | * Half-closes the socket. i.e., it sends a FIN packet. It is possible the |
| | | * server will still send some data. |
| | | * |
| | |
| | | * @param callback Optional callback for when the socket is finished. |
| | | * @return The socket itself. |
| | | */ |
| | | end(callback?: () => void): void; |
| | | end(buffer: Uint8Array | string, callback?: () => void): void; |
| | | end(str: Uint8Array | string, encoding?: BufferEncoding, callback?: () => void): void; |
| | | end(callback?: () => void): this; |
| | | end(buffer: Uint8Array | string, callback?: () => void): this; |
| | | end(str: Uint8Array | string, encoding?: BufferEncoding, callback?: () => void): this; |
| | | /** |
| | | * events.EventEmitter |
| | | * 1. close |
| | |
| | | * The `BlockList` object can be used with some network APIs to specify rules for |
| | | * disabling inbound or outbound access to specific IP addresses, IP ranges, or |
| | | * IP subnets. |
| | | * @since v15.0.0 |
| | | * @since v15.0.0, v14.18.0 |
| | | */ |
| | | class BlockList { |
| | | /** |
| | | * Adds a rule to block the given IP address. |
| | | * @since v15.0.0 |
| | | * @since v15.0.0, v14.18.0 |
| | | * @param address An IPv4 or IPv6 address. |
| | | * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. |
| | | */ |
| | |
| | | addAddress(address: SocketAddress): void; |
| | | /** |
| | | * Adds a rule to block a range of IP addresses from `start` (inclusive) to`end` (inclusive). |
| | | * @since v15.0.0 |
| | | * @since v15.0.0, v14.18.0 |
| | | * @param start The starting IPv4 or IPv6 address in the range. |
| | | * @param end The ending IPv4 or IPv6 address in the range. |
| | | * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. |
| | |
| | | addRange(start: SocketAddress, end: SocketAddress): void; |
| | | /** |
| | | * Adds a rule to block a range of IP addresses specified as a subnet mask. |
| | | * @since v15.0.0 |
| | | * @since v15.0.0, v14.18.0 |
| | | * @param net The network IPv4 or IPv6 address. |
| | | * @param prefix The number of CIDR prefix bits. For IPv4, this must be a value between `0` and `32`. For IPv6, this must be between `0` and `128`. |
| | | * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. |
| | |
| | | * console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true |
| | | * console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true |
| | | * ``` |
| | | * @since v15.0.0 |
| | | * @since v15.0.0, v14.18.0 |
| | | * @param address The IP address to check |
| | | * @param [type='ipv4'] Either `'ipv4'` or `'ipv6'`. |
| | | */ |
| | |
| | | port?: number | undefined; |
| | | } |
| | | /** |
| | | * @since v15.14.0 |
| | | * @since v15.14.0, v14.18.0 |
| | | */ |
| | | class SocketAddress { |
| | | constructor(options: SocketAddressInitOptions); |
| | | /** |
| | | * Either \`'ipv4'\` or \`'ipv6'\`. |
| | | * @since v15.14.0 |
| | | * @since v15.14.0, v14.18.0 |
| | | */ |
| | | readonly address: string; |
| | | /** |
| | | * Either \`'ipv4'\` or \`'ipv6'\`. |
| | | * @since v15.14.0 |
| | | * @since v15.14.0, v14.18.0 |
| | | */ |
| | | readonly family: IPVersion; |
| | | /** |
| | | * @since v15.14.0 |
| | | * @since v15.14.0, v14.18.0 |
| | | */ |
| | | readonly port: number; |
| | | /** |
| | | * @since v15.14.0 |
| | | * @since v15.14.0, v14.18.0 |
| | | */ |
| | | readonly flowlabel: number; |
| | | } |