269 lines
12 KiB
TypeScript
269 lines
12 KiB
TypeScript
declare module "net" {
|
|
import * as stream from "stream";
|
|
import * as events from "events";
|
|
import * as dns from "dns";
|
|
|
|
type LookupFunction = (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;
|
|
|
|
interface AddressInfo {
|
|
address: string;
|
|
family: string;
|
|
port: number;
|
|
}
|
|
|
|
interface SocketConstructorOpts {
|
|
fd?: number;
|
|
allowHalfOpen?: boolean;
|
|
readable?: boolean;
|
|
writable?: boolean;
|
|
}
|
|
|
|
interface OnReadOpts {
|
|
buffer: Uint8Array | (() => Uint8Array);
|
|
/**
|
|
* This function is called for every chunk of incoming data.
|
|
* Two arguments are passed to it: the number of bytes written to buffer and a reference to buffer.
|
|
* Return false from this function to implicitly pause() the socket.
|
|
*/
|
|
callback(bytesWritten: number, buf: Uint8Array): boolean;
|
|
}
|
|
|
|
interface ConnectOpts {
|
|
/**
|
|
* If specified, incoming data is stored in a single buffer and passed to the supplied callback when data arrives on the socket.
|
|
* Note: this will cause the streaming functionality to not provide any data, however events like 'error', 'end', and 'close' will
|
|
* still be emitted as normal and methods like pause() and resume() will also behave as expected.
|
|
*/
|
|
onread?: OnReadOpts;
|
|
}
|
|
|
|
interface TcpSocketConnectOpts extends ConnectOpts {
|
|
port: number;
|
|
host?: string;
|
|
localAddress?: string;
|
|
localPort?: number;
|
|
hints?: number;
|
|
family?: number;
|
|
lookup?: LookupFunction;
|
|
}
|
|
|
|
interface IpcSocketConnectOpts extends ConnectOpts {
|
|
path: string;
|
|
}
|
|
|
|
type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts;
|
|
|
|
class Socket extends stream.Duplex {
|
|
constructor(options?: SocketConstructorOpts);
|
|
|
|
// Extended base methods
|
|
write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean;
|
|
write(str: Uint8Array | string, encoding?: BufferEncoding, cb?: (err?: Error) => void): boolean;
|
|
|
|
connect(options: SocketConnectOpts, connectionListener?: () => void): this;
|
|
connect(port: number, host: string, connectionListener?: () => void): this;
|
|
connect(port: number, connectionListener?: () => void): this;
|
|
connect(path: string, connectionListener?: () => void): this;
|
|
|
|
setEncoding(encoding?: BufferEncoding): this;
|
|
pause(): this;
|
|
resume(): this;
|
|
setTimeout(timeout: number, callback?: () => void): this;
|
|
setNoDelay(noDelay?: boolean): this;
|
|
setKeepAlive(enable?: boolean, initialDelay?: number): this;
|
|
address(): AddressInfo | string;
|
|
unref(): this;
|
|
ref(): this;
|
|
|
|
readonly bufferSize: number;
|
|
readonly bytesRead: number;
|
|
readonly bytesWritten: number;
|
|
readonly connecting: boolean;
|
|
readonly destroyed: boolean;
|
|
readonly localAddress: string;
|
|
readonly localPort: number;
|
|
readonly remoteAddress?: string;
|
|
readonly remoteFamily?: string;
|
|
readonly remotePort?: number;
|
|
|
|
// Extended base methods
|
|
end(cb?: () => void): void;
|
|
end(buffer: Uint8Array | string, cb?: () => void): void;
|
|
end(str: Uint8Array | string, encoding?: BufferEncoding, cb?: () => void): void;
|
|
|
|
/**
|
|
* events.EventEmitter
|
|
* 1. close
|
|
* 2. connect
|
|
* 3. data
|
|
* 4. drain
|
|
* 5. end
|
|
* 6. error
|
|
* 7. lookup
|
|
* 8. timeout
|
|
*/
|
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
|
addListener(event: "close", listener: (had_error: boolean) => void): this;
|
|
addListener(event: "connect", listener: () => void): this;
|
|
addListener(event: "data", listener: (data: Buffer) => void): this;
|
|
addListener(event: "drain", listener: () => void): this;
|
|
addListener(event: "end", listener: () => void): this;
|
|
addListener(event: "error", listener: (err: Error) => void): this;
|
|
addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
|
|
addListener(event: "timeout", listener: () => void): this;
|
|
|
|
emit(event: string | symbol, ...args: any[]): boolean;
|
|
emit(event: "close", had_error: boolean): boolean;
|
|
emit(event: "connect"): boolean;
|
|
emit(event: "data", data: Buffer): boolean;
|
|
emit(event: "drain"): boolean;
|
|
emit(event: "end"): boolean;
|
|
emit(event: "error", err: Error): boolean;
|
|
emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;
|
|
emit(event: "timeout"): boolean;
|
|
|
|
on(event: string, listener: (...args: any[]) => void): this;
|
|
on(event: "close", listener: (had_error: boolean) => void): this;
|
|
on(event: "connect", listener: () => void): this;
|
|
on(event: "data", listener: (data: Buffer) => void): this;
|
|
on(event: "drain", listener: () => void): this;
|
|
on(event: "end", listener: () => void): this;
|
|
on(event: "error", listener: (err: Error) => void): this;
|
|
on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
|
|
on(event: "timeout", listener: () => void): this;
|
|
|
|
once(event: string, listener: (...args: any[]) => void): this;
|
|
once(event: "close", listener: (had_error: boolean) => void): this;
|
|
once(event: "connect", listener: () => void): this;
|
|
once(event: "data", listener: (data: Buffer) => void): this;
|
|
once(event: "drain", listener: () => void): this;
|
|
once(event: "end", listener: () => void): this;
|
|
once(event: "error", listener: (err: Error) => void): this;
|
|
once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
|
|
once(event: "timeout", listener: () => void): this;
|
|
|
|
prependListener(event: string, listener: (...args: any[]) => void): this;
|
|
prependListener(event: "close", listener: (had_error: boolean) => void): this;
|
|
prependListener(event: "connect", listener: () => void): this;
|
|
prependListener(event: "data", listener: (data: Buffer) => void): this;
|
|
prependListener(event: "drain", listener: () => void): this;
|
|
prependListener(event: "end", listener: () => void): this;
|
|
prependListener(event: "error", listener: (err: Error) => void): this;
|
|
prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
|
|
prependListener(event: "timeout", listener: () => void): this;
|
|
|
|
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
|
prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;
|
|
prependOnceListener(event: "connect", listener: () => void): this;
|
|
prependOnceListener(event: "data", listener: (data: Buffer) => void): this;
|
|
prependOnceListener(event: "drain", listener: () => void): this;
|
|
prependOnceListener(event: "end", listener: () => void): this;
|
|
prependOnceListener(event: "error", listener: (err: Error) => void): this;
|
|
prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
|
|
prependOnceListener(event: "timeout", listener: () => void): this;
|
|
}
|
|
|
|
interface ListenOptions {
|
|
port?: number;
|
|
host?: string;
|
|
backlog?: number;
|
|
path?: string;
|
|
exclusive?: boolean;
|
|
readableAll?: boolean;
|
|
writableAll?: boolean;
|
|
/**
|
|
* @default false
|
|
*/
|
|
ipv6Only?: boolean;
|
|
}
|
|
|
|
// https://github.com/nodejs/node/blob/master/lib/net.js
|
|
class Server extends events.EventEmitter {
|
|
constructor(connectionListener?: (socket: Socket) => void);
|
|
constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void);
|
|
|
|
listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
|
|
listen(port?: number, hostname?: string, listeningListener?: () => void): this;
|
|
listen(port?: number, backlog?: number, listeningListener?: () => void): this;
|
|
listen(port?: number, listeningListener?: () => void): this;
|
|
listen(path: string, backlog?: number, listeningListener?: () => void): this;
|
|
listen(path: string, listeningListener?: () => void): this;
|
|
listen(options: ListenOptions, listeningListener?: () => void): this;
|
|
listen(handle: any, backlog?: number, listeningListener?: () => void): this;
|
|
listen(handle: any, listeningListener?: () => void): this;
|
|
close(callback?: (err?: Error) => void): this;
|
|
address(): AddressInfo | string | null;
|
|
getConnections(cb: (error: Error | null, count: number) => void): void;
|
|
ref(): this;
|
|
unref(): this;
|
|
maxConnections: number;
|
|
connections: number;
|
|
listening: boolean;
|
|
|
|
/**
|
|
* events.EventEmitter
|
|
* 1. close
|
|
* 2. connection
|
|
* 3. error
|
|
* 4. listening
|
|
*/
|
|
addListener(event: string, listener: (...args: any[]) => void): this;
|
|
addListener(event: "close", listener: () => void): this;
|
|
addListener(event: "connection", listener: (socket: Socket) => void): this;
|
|
addListener(event: "error", listener: (err: Error) => void): this;
|
|
addListener(event: "listening", listener: () => void): this;
|
|
|
|
emit(event: string | symbol, ...args: any[]): boolean;
|
|
emit(event: "close"): boolean;
|
|
emit(event: "connection", socket: Socket): boolean;
|
|
emit(event: "error", err: Error): boolean;
|
|
emit(event: "listening"): boolean;
|
|
|
|
on(event: string, listener: (...args: any[]) => void): this;
|
|
on(event: "close", listener: () => void): this;
|
|
on(event: "connection", listener: (socket: Socket) => void): this;
|
|
on(event: "error", listener: (err: Error) => void): this;
|
|
on(event: "listening", listener: () => void): this;
|
|
|
|
once(event: string, listener: (...args: any[]) => void): this;
|
|
once(event: "close", listener: () => void): this;
|
|
once(event: "connection", listener: (socket: Socket) => void): this;
|
|
once(event: "error", listener: (err: Error) => void): this;
|
|
once(event: "listening", listener: () => void): this;
|
|
|
|
prependListener(event: string, listener: (...args: any[]) => void): this;
|
|
prependListener(event: "close", listener: () => void): this;
|
|
prependListener(event: "connection", listener: (socket: Socket) => void): this;
|
|
prependListener(event: "error", listener: (err: Error) => void): this;
|
|
prependListener(event: "listening", listener: () => void): this;
|
|
|
|
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
|
|
prependOnceListener(event: "close", listener: () => void): this;
|
|
prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;
|
|
prependOnceListener(event: "error", listener: (err: Error) => void): this;
|
|
prependOnceListener(event: "listening", listener: () => void): this;
|
|
}
|
|
|
|
interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {
|
|
timeout?: number;
|
|
}
|
|
|
|
interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {
|
|
timeout?: number;
|
|
}
|
|
|
|
type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;
|
|
|
|
function createServer(connectionListener?: (socket: Socket) => void): Server;
|
|
function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server;
|
|
function connect(options: NetConnectOpts, connectionListener?: () => void): Socket;
|
|
function connect(port: number, host?: string, connectionListener?: () => void): Socket;
|
|
function connect(path: string, connectionListener?: () => void): Socket;
|
|
function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket;
|
|
function createConnection(port: number, host?: string, connectionListener?: () => void): Socket;
|
|
function createConnection(path: string, connectionListener?: () => void): Socket;
|
|
function isIP(input: string): number;
|
|
function isIPv4(input: string): boolean;
|
|
function isIPv6(input: string): boolean;
|
|
}
|