diff --git a/node/node-tests.ts b/node/node-tests.ts index da3721c3aa..4fea9ff750 100644 --- a/node/node-tests.ts +++ b/node/node-tests.ts @@ -70,7 +70,7 @@ namespace assert_tests { namespace events_tests { let emitter: events.EventEmitter; - let event: string|symbol; + let event: string | symbol; let listener: Function; let any: any; @@ -114,7 +114,7 @@ namespace events_tests { } { - let result: (string|symbol)[]; + let result: (string | symbol)[]; result = emitter.eventNames(); } @@ -969,7 +969,7 @@ namespace child_process_tests { /// cluster tests: https://nodejs.org/api/cluster.html /// ////////////////////////////////////////////////////////////////////// -namespace cluster_tests  { +namespace cluster_tests { { cluster.fork(); Object.keys(cluster.workers).forEach(key => { @@ -1151,6 +1151,232 @@ namespace net_tests { // Make sure .listen() and .close() retuern a Server instance net.createServer().listen(0).close().address(); } + + { + /** + * net.Socket - events.EventEmitter + * 1. close + * 2. connect + * 3. data + * 4. drain + * 5. end + * 6. error + * 7. lookup + * 8. timeout + */ + let _socket: net.Socket; + + let bool: boolean; + let buffer: Buffer; + let error: Error; + let str: string; + let num: number; + + /// addListener + + _socket = _socket.addListener("close", had_error => { + bool = had_error; + }) + _socket = _socket.addListener("connect", () => { }) + _socket = _socket.addListener("data", data => { + buffer = data; + }) + _socket = _socket.addListener("drain", () => { }) + _socket = _socket.addListener("end", () => { }) + _socket = _socket.addListener("error", err => { + error = err; + }) + _socket = _socket.addListener("lookup", (err, address, family, host) => { + error = err; + + if (typeof family === 'string') { + str = family; + } else if (typeof family === 'number') { + num = family; + } + + str = host; + }) + _socket = _socket.addListener("timeout", () => { }) + + /// emit + bool = _socket.emit("close", bool); + bool = _socket.emit("connect"); + bool = _socket.emit("data", buffer); + bool = _socket.emit("drain"); + bool = _socket.emit("end"); + bool = _socket.emit("error", error); + bool = _socket.emit("lookup", error, str, str, str); + bool = _socket.emit("lookup", error, str, num, str); + bool = _socket.emit("timeout"); + + /// on + _socket = _socket.on("close", had_error => { + bool = had_error; + }) + _socket = _socket.on("connect", () => { }) + _socket = _socket.on("data", data => { + buffer = data; + }) + _socket = _socket.on("drain", () => { }) + _socket = _socket.on("end", () => { }) + _socket = _socket.on("error", err => { + error = err; + }) + _socket = _socket.on("lookup", (err, address, family, host) => { + error = err; + + if (typeof family === 'string') { + str = family; + } else if (typeof family === 'number') { + num = family; + } + + str = host; + }) + _socket = _socket.on("timeout", () => { }) + + /// once + _socket = _socket.once("close", had_error => { + bool = had_error; + }) + _socket = _socket.once("connect", () => { }) + _socket = _socket.once("data", data => { + buffer = data; + }) + _socket = _socket.once("drain", () => { }) + _socket = _socket.once("end", () => { }) + _socket = _socket.once("error", err => { + error = err; + }) + _socket = _socket.once("lookup", (err, address, family, host) => { + error = err; + + if (typeof family === 'string') { + str = family; + } else if (typeof family === 'number') { + num = family; + } + + str = host; + }) + _socket = _socket.once("timeout", () => { }) + + /// prependListener + _socket = _socket.prependListener("close", had_error => { + bool = had_error; + }) + _socket = _socket.prependListener("connect", () => { }) + _socket = _socket.prependListener("data", data => { + buffer = data; + }) + _socket = _socket.prependListener("drain", () => { }) + _socket = _socket.prependListener("end", () => { }) + _socket = _socket.prependListener("error", err => { + error = err; + }) + _socket = _socket.prependListener("lookup", (err, address, family, host) => { + error = err; + + if (typeof family === 'string') { + str = family; + } else if (typeof family === 'number') { + num = family; + } + + str = host; + }) + _socket = _socket.prependListener("timeout", () => { }) + + /// prependOnceListener + _socket = _socket.prependOnceListener("close", had_error => { + bool = had_error; + }) + _socket = _socket.prependOnceListener("connect", () => { }) + _socket = _socket.prependOnceListener("data", data => { + buffer = data; + }) + _socket = _socket.prependOnceListener("drain", () => { }) + _socket = _socket.prependOnceListener("end", () => { }) + _socket = _socket.prependOnceListener("error", err => { + error = err; + }) + _socket = _socket.prependOnceListener("lookup", (err, address, family, host) => { + error = err; + + if (typeof family === 'string') { + str = family; + } else if (typeof family === 'number') { + num = family; + } + + str = host; + }) + _socket = _socket.prependOnceListener("timeout", () => { }) + } + + { + /** + * net.Server - events.EventEmitter + * 1. close + * 2. connection + * 3. error + * 4. listening + */ + let _server: net.Server; + + let _socket: net.Socket; + let bool: boolean; + let error: Error; + + /// addListener + _server = _server.addListener("close", () => { }) + _server = _server.addListener("connection", socket => { + _socket = socket + }) + _server = _server.addListener("error", err => { + error = err; + }) + _server = _server.addListener("listening", () => { }) + + /// emit + bool = _server.emit("close") + bool = _server.emit("connection", _socket) + bool = _server.emit("error", error) + bool = _server.emit("listening") + + /// once + _server = _server.once("close", () => { }) + _server = _server.once("connection", socket => { + _socket = socket + }) + _server = _server.once("error", err => { + error = err; + }) + _server = _server.once("listening", () => { }) + + /// prependListener + _server = _server.prependListener("close", () => { }) + _server = _server.prependListener("connection", socket => { + _socket = socket + }) + _server = _server.prependListener("error", err => { + error = err; + }) + _server = _server.prependListener("listening", () => { }) + + /// prependOnceListener + _server = _server.prependOnceListener("close", () => { }) + _server = _server.prependOnceListener("connection", socket => { + _socket = socket + }) + _server = _server.prependOnceListener("error", err => { + error = err; + }) + _server = _server.prependOnceListener("listening", () => { }) + + } + } /***************************************************************************** diff --git a/node/node.d.ts b/node/node.d.ts index 7f228e1765..a3456370e3 100644 --- a/node/node.d.ts +++ b/node/node.d.ts @@ -241,20 +241,20 @@ declare namespace NodeJS { } export class EventEmitter { - addListener(event: string|symbol, listener: Function): this; - on(event: string|symbol, listener: Function): this; - once(event: string|symbol, listener: Function): this; - removeListener(event: string|symbol, listener: Function): this; - removeAllListeners(event?: string|symbol): this; + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; setMaxListeners(n: number): this; getMaxListeners(): number; - listeners(event: string|symbol): Function[]; - emit(event: string|symbol, ...args: any[]): boolean; - listenerCount(type: string|symbol): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + listenerCount(type: string | symbol): number; // Added in Node 6... - prependListener(event: string|symbol, listener: Function): this; - prependOnceListener(event: string|symbol, listener: Function): this; - eventNames(): (string|symbol)[]; + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + eventNames(): (string | symbol)[]; } export interface ReadableStream extends EventEmitter { @@ -464,7 +464,7 @@ interface IterableIterator { } interface NodeBuffer extends Uint8Array { write(string: string, offset?: number, length?: number, encoding?: string): number; toString(encoding?: string, start?: number, end?: number): string; - toJSON(): {type: 'Buffer', data: any[]}; + toJSON(): { type: 'Buffer', data: any[] }; equals(otherBuffer: Buffer): boolean; compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; @@ -549,22 +549,22 @@ declare module "querystring" { declare module "events" { export class EventEmitter extends NodeJS.EventEmitter { static EventEmitter: EventEmitter; - static listenerCount(emitter: EventEmitter, event: string|symbol): number; // deprecated + static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated static defaultMaxListeners: number; - addListener(event: string|symbol, listener: Function): this; - on(event: string|symbol, listener: Function): this; - once(event: string|symbol, listener: Function): this; - prependListener(event: string|symbol, listener: Function): this; - prependOnceListener(event: string|symbol, listener: Function): this; - removeListener(event: string|symbol, listener: Function): this; - removeAllListeners(event?: string|symbol): this; + addListener(event: string | symbol, listener: Function): this; + on(event: string | symbol, listener: Function): this; + once(event: string | symbol, listener: Function): this; + prependListener(event: string | symbol, listener: Function): this; + prependOnceListener(event: string | symbol, listener: Function): this; + removeListener(event: string | symbol, listener: Function): this; + removeAllListeners(event?: string | symbol): this; setMaxListeners(n: number): this; getMaxListeners(): number; - listeners(event: string|symbol): Function[]; - emit(event: string|symbol, ...args: any[]): boolean; - eventNames(): (string|symbol)[]; - listenerCount(type: string|symbol): number; + listeners(event: string | symbol): Function[]; + emit(event: string | symbol, ...args: any[]): boolean; + eventNames(): (string | symbol)[]; + listenerCount(type: string | symbol): number; } } @@ -779,7 +779,7 @@ declare module "cluster" { isConnected(): boolean; isDead(): boolean; exitedAfterDisconnect: boolean; - + /** * events.EventEmitter * 1. disconnect @@ -796,7 +796,7 @@ declare module "cluster" { addListener(event: "listening", listener: (address: Address) => void): this; addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. addListener(event: "online", listener: () => void): this; - + on(event: string, listener: Function): this; on(event: "disconnect", listener: () => void): this; on(event: "error", listener: (code: number, signal: string) => void): this; @@ -804,7 +804,7 @@ declare module "cluster" { on(event: "listening", listener: (address: Address) => void): this; on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. on(event: "online", listener: () => void): this; - + once(event: string, listener: Function): this; once(event: "disconnect", listener: () => void): this; once(event: "error", listener: (code: number, signal: string) => void): this; @@ -812,7 +812,7 @@ declare module "cluster" { once(event: "listening", listener: (address: Address) => void): this; once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. once(event: "online", listener: () => void): this; - + prependListener(event: string, listener: Function): this; prependListener(event: "disconnect", listener: () => void): this; prependListener(event: "error", listener: (code: number, signal: string) => void): this; @@ -820,7 +820,7 @@ declare module "cluster" { prependListener(event: "listening", listener: (address: Address) => void): this; prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined. prependListener(event: "online", listener: () => void): this; - + prependOnceListener(event: string, listener: Function): this; prependOnceListener(event: "disconnect", listener: () => void): this; prependOnceListener(event: "error", listener: (code: number, signal: string) => void): this; @@ -901,7 +901,7 @@ declare module "cluster" { } - export function disconnect(callback ?: Function): void; + export function disconnect(callback?: Function): void; export function fork(env?: any): Worker; export var isMaster: boolean; export var isWorker: boolean; @@ -1591,7 +1591,7 @@ declare module "dns" { export function resolve(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; export function resolve4(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; export function resolve6(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; - export function resolveMx(domain: string, callback: (err: Error, addresses: MxRecord[]) =>void ): string[]; + export function resolveMx(domain: string, callback: (err: Error, addresses: MxRecord[]) => void): string[]; export function resolveTxt(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; export function resolveSrv(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; export function resolveNs(domain: string, callback: (err: Error, addresses: string[]) => void): string[]; @@ -1666,6 +1666,77 @@ declare module "net" { end(str: string, cb?: Function): void; end(str: string, encoding?: string, cb?: Function): void; end(data?: any, encoding?: string): void; + + /** + * events.EventEmitter + * 1. close + * 2. connect + * 3. data + * 4. drain + * 5. end + * 6. error + * 7. lookup + * 8. timeout + */ + addListener(event: string, listener: Function): 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, ...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: Function): 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: Function): 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: Function): 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: Function): 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; } export var Socket: { @@ -1697,6 +1768,49 @@ declare module "net" { unref(): Server; maxConnections: number; connections: number; + + /** + * events.EventEmitter + * 1. close + * 2. connection + * 3. error + * 4. listening + */ + addListener(event: string, listener: Function): 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, ...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: Function): 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: Function): 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: Function): 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: Function): 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; } export function createServer(connectionListener?: (socket: Socket) => void): Server; export function createServer(options?: { allowHalfOpen?: boolean; }, connectionListener?: (socket: Socket) => void): Server; @@ -1788,7 +1902,7 @@ declare module "fs" { interface FSWatcher extends events.EventEmitter { close(): void; - + /** * events.EventEmitter * 1. change @@ -1797,19 +1911,19 @@ declare module "fs" { addListener(event: string, listener: Function): this; addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; addListener(event: "error", listener: (code: number, signal: string) => void): this; - + on(event: string, listener: Function): this; on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; on(event: "error", listener: (code: number, signal: string) => void): this; - + once(event: string, listener: Function): this; once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; once(event: "error", listener: (code: number, signal: string) => void): this; - + prependListener(event: string, listener: Function): this; prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; prependListener(event: "error", listener: (code: number, signal: string) => void): this; - + prependOnceListener(event: string, listener: Function): this; prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this; prependOnceListener(event: "error", listener: (code: number, signal: string) => void): this; @@ -1818,7 +1932,7 @@ declare module "fs" { export interface ReadStream extends stream.Readable { close(): void; destroy(): void; - + /** * events.EventEmitter * 1. open @@ -1827,19 +1941,19 @@ declare module "fs" { addListener(event: string, listener: Function): this; addListener(event: "open", listener: (fd: number) => void): this; addListener(event: "close", listener: () => void): this; - + on(event: string, listener: Function): this; on(event: "open", listener: (fd: number) => void): this; on(event: "close", listener: () => void): this; - + once(event: string, listener: Function): this; once(event: "open", listener: (fd: number) => void): this; once(event: "close", listener: () => void): this; - + prependListener(event: string, listener: Function): this; prependListener(event: "open", listener: (fd: number) => void): this; prependListener(event: "close", listener: () => void): this; - + prependOnceListener(event: string, listener: Function): this; prependOnceListener(event: "open", listener: (fd: number) => void): this; prependOnceListener(event: "close", listener: () => void): this; @@ -1849,7 +1963,7 @@ declare module "fs" { close(): void; bytesWritten: number; path: string | Buffer; - + /** * events.EventEmitter * 1. open @@ -1858,19 +1972,19 @@ declare module "fs" { addListener(event: string, listener: Function): this; addListener(event: "open", listener: (fd: number) => void): this; addListener(event: "close", listener: () => void): this; - + on(event: string, listener: Function): this; on(event: "open", listener: (fd: number) => void): this; on(event: "close", listener: () => void): this; - + once(event: string, listener: Function): this; once(event: "open", listener: (fd: number) => void): this; once(event: "close", listener: () => void): this; - + prependListener(event: string, listener: Function): this; prependListener(event: "open", listener: (fd: number) => void): this; prependListener(event: "close", listener: () => void): this; - + prependOnceListener(event: string, listener: Function): this; prependOnceListener(event: "open", listener: (fd: number) => void): this; prependOnceListener(event: "close", listener: () => void): this;