From b366d203b6e4a3735a697c9d77179801e3267fa4 Mon Sep 17 00:00:00 2001 From: Ilia Baryshnikov Date: Tue, 26 Nov 2019 01:26:42 +0300 Subject: [PATCH] NodeJS child_process signals to be Signals (#40560) * NodeJS child_process signals to be Signals * allow number as kill signal where acceptable --- types/node/child_process.d.ts | 40 ++++++++++++++++---------------- types/node/index.d.ts | 1 + types/node/test/child_process.ts | 20 ++++++++-------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/types/node/child_process.d.ts b/types/node/child_process.d.ts index c220e1966d..09eeba3b4e 100644 --- a/types/node/child_process.d.ts +++ b/types/node/child_process.d.ts @@ -18,7 +18,7 @@ declare module "child_process" { readonly killed: boolean; readonly pid: number; readonly connected: boolean; - kill(signal?: string): void; + kill(signal?: NodeJS.Signals | number): void; send(message: any, callback?: (error: Error | null) => void): boolean; send(message: any, sendHandle?: net.Socket | net.Server, callback?: (error: Error | null) => void): boolean; send(message: any, sendHandle?: net.Socket | net.Server, options?: MessageOptions, callback?: (error: Error | null) => void): boolean; @@ -36,45 +36,45 @@ declare module "child_process" { */ addListener(event: string, listener: (...args: any[]) => void): this; - addListener(event: "close", listener: (code: number, signal: string) => void): this; + addListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this; addListener(event: "disconnect", listener: () => void): this; addListener(event: "error", listener: (err: Error) => void): this; - addListener(event: "exit", listener: (code: number | null, signal: string | null) => void): this; + addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; emit(event: string | symbol, ...args: any[]): boolean; - emit(event: "close", code: number, signal: string): boolean; + emit(event: "close", code: number, signal: NodeJS.Signals): boolean; emit(event: "disconnect"): boolean; emit(event: "error", err: Error): boolean; - emit(event: "exit", code: number | null, signal: string | null): boolean; + emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean; emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean; on(event: string, listener: (...args: any[]) => void): this; - on(event: "close", listener: (code: number, signal: string) => void): this; + on(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this; on(event: "disconnect", listener: () => void): this; on(event: "error", listener: (err: Error) => void): this; - on(event: "exit", listener: (code: number | null, signal: string | null) => void): this; + on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; once(event: string, listener: (...args: any[]) => void): this; - once(event: "close", listener: (code: number, signal: string) => void): this; + once(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this; once(event: "disconnect", listener: () => void): this; once(event: "error", listener: (err: Error) => void): this; - once(event: "exit", listener: (code: number | null, signal: string | null) => void): this; + once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; prependListener(event: string, listener: (...args: any[]) => void): this; - prependListener(event: "close", listener: (code: number, signal: string) => void): this; + prependListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this; prependListener(event: "disconnect", listener: () => void): this; prependListener(event: "error", listener: (err: Error) => void): this; - prependListener(event: "exit", listener: (code: number | null, signal: string | null) => void): this; + prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; prependOnceListener(event: string, listener: (...args: any[]) => void): this; - prependOnceListener(event: "close", listener: (code: number, signal: string) => void): this; + prependOnceListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this; prependOnceListener(event: "disconnect", listener: () => void): this; prependOnceListener(event: "error", listener: (err: Error) => void): this; - prependOnceListener(event: "exit", listener: (code: number | null, signal: string | null) => void): this; + prependOnceListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this; prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this; } @@ -244,7 +244,7 @@ declare module "child_process" { interface ExecOptions extends CommonOptions { shell?: string; maxBuffer?: number; - killSignal?: string; + killSignal?: NodeJS.Signals | number; } interface ExecOptionsWithStringEncoding extends ExecOptions { @@ -259,7 +259,7 @@ declare module "child_process" { cmd?: string; killed?: boolean; code?: number; - signal?: string; + signal?: NodeJS.Signals; } // no `options` definitely means stdout/stderr are `string`. @@ -300,7 +300,7 @@ declare module "child_process" { interface ExecFileOptions extends CommonOptions { maxBuffer?: number; - killSignal?: string; + killSignal?: NodeJS.Signals | number; windowsVerbatimArguments?: boolean; shell?: boolean | string; } @@ -406,7 +406,7 @@ declare module "child_process" { argv0?: string; // Not specified in the docs input?: string | NodeJS.ArrayBufferView; stdio?: StdioOptions; - killSignal?: string | number; + killSignal?: NodeJS.Signals | number; maxBuffer?: number; encoding?: string; shell?: boolean | string; @@ -424,7 +424,7 @@ declare module "child_process" { stdout: T; stderr: T; status: number | null; - signal: string | null; + signal: NodeJS.Signals | null; error?: Error; } function spawnSync(command: string): SpawnSyncReturns; @@ -439,7 +439,7 @@ declare module "child_process" { input?: string | Uint8Array; stdio?: StdioOptions; shell?: string; - killSignal?: string | number; + killSignal?: NodeJS.Signals | number; maxBuffer?: number; encoding?: string; } @@ -457,7 +457,7 @@ declare module "child_process" { interface ExecFileSyncOptions extends CommonOptions { input?: string | NodeJS.ArrayBufferView; stdio?: StdioOptions; - killSignal?: string | number; + killSignal?: NodeJS.Signals | number; maxBuffer?: number; encoding?: string; shell?: boolean | string; diff --git a/types/node/index.d.ts b/types/node/index.d.ts index f4d3a9b9e1..60f72c9273 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -40,6 +40,7 @@ // Trivikram Kamat // Minh Son Nguyen // Junxiao Shi +// Ilia Baryshnikov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // NOTE: These definitions support NodeJS and TypeScript 3.2. diff --git a/types/node/test/child_process.ts b/types/node/test/child_process.ts index 124567d288..41580ef5f0 100644 --- a/types/node/test/child_process.ts +++ b/types/node/test/child_process.ts @@ -193,7 +193,7 @@ async function testPromisify() { cp = cp.addListener("close", (code, signal) => { const _code: number = code; - const _signal: string = signal; + const _signal: NodeJS.Signals = signal; }); cp = cp.addListener("disconnect", () => { }); cp = cp.addListener("error", (err) => { @@ -201,7 +201,7 @@ async function testPromisify() { }); cp = cp.addListener("exit", (code, signal) => { const _code: number | null = code; - const _signal: string | null = signal; + const _signal: NodeJS.Signals | null = signal; }); cp = cp.addListener("message", (message, sendHandle) => { const _message: any = message; @@ -216,7 +216,7 @@ async function testPromisify() { cp = cp.on("close", (code, signal) => { const _code: number = code; - const _signal: string = signal; + const _signal: NodeJS.Signals = signal; }); cp = cp.on("disconnect", () => { }); cp = cp.on("error", (err) => { @@ -224,7 +224,7 @@ async function testPromisify() { }); cp = cp.on("exit", (code, signal) => { const _code: number | null = code; - const _signal: string | null = signal; + const _signal: NodeJS.Signals | null = signal; }); cp = cp.on("message", (message, sendHandle) => { const _message: any = message; @@ -233,7 +233,7 @@ async function testPromisify() { cp = cp.once("close", (code, signal) => { const _code: number = code; - const _signal: string = signal; + const _signal: NodeJS.Signals = signal; }); cp = cp.once("disconnect", () => { }); cp = cp.once("error", (err) => { @@ -241,7 +241,7 @@ async function testPromisify() { }); cp = cp.once("exit", (code, signal) => { const _code: number | null = code; - const _signal: string | null = signal; + const _signal: NodeJS.Signals | null = signal; }); cp = cp.once("message", (message, sendHandle) => { const _message: any = message; @@ -250,7 +250,7 @@ async function testPromisify() { cp = cp.prependListener("close", (code, signal) => { const _code: number = code; - const _signal: string = signal; + const _signal: NodeJS.Signals = signal; }); cp = cp.prependListener("disconnect", () => { }); cp = cp.prependListener("error", (err) => { @@ -258,7 +258,7 @@ async function testPromisify() { }); cp = cp.prependListener("exit", (code, signal) => { const _code: number | null = code; - const _signal: string | null = signal; + const _signal: NodeJS.Signals | null = signal; }); cp = cp.prependListener("message", (message, sendHandle) => { const _message: any = message; @@ -267,7 +267,7 @@ async function testPromisify() { cp = cp.prependOnceListener("close", (code, signal) => { const _code: number = code; - const _signal: string = signal; + const _signal: NodeJS.Signals = signal; }); cp = cp.prependOnceListener("disconnect", () => { }); cp = cp.prependOnceListener("error", (err) => { @@ -275,7 +275,7 @@ async function testPromisify() { }); cp = cp.prependOnceListener("exit", (code, signal) => { const _code: number | null = code; - const _signal: string | null = signal; + const _signal: NodeJS.Signals | null = signal; }); cp = cp.prependOnceListener("message", (message, sendHandle) => { const _message: any = message;