Completed
Push — master ( cdadad...8d09a6 )
by Dimas
36:02 queued 17:12
created

libs/typings/node/child_process.d.ts   F

Complexity

Total Complexity 78
Complexity/F 1

Size

Lines of Code 505
Function Count 78

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 420
dl 0
loc 505
rs 2.16
c 0
b 0
f 0
wmc 78
mnd 0
bc 0
fnc 78
bpm 0
cpm 1
noi 0

8 Functions

Rating   Name   Duplication   Size   Complexity  
A child_process.d.ts ➔ exec 0 3 1
A child_process.d.ts ➔ ___promisify__ 0 1 1
A child_process.d.ts ➔ spawnSync 0 1 1
A child_process.d.ts ➔ spawn 0 3 1
A child_process.d.ts ➔ fork 0 1 1
A child_process.d.ts ➔ execFileSync 0 1 1
A child_process.d.ts ➔ execSync 0 1 1
A child_process.d.ts ➔ execFile 0 2 1

How to fix   Complexity   

Complexity

Complex classes like libs/typings/node/child_process.d.ts often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
declare module "child_process" {
2
    import { BaseEncodingOptions } from 'fs';
3
    import * as events from "events";
4
    import * as net from "net";
5
    import { Writable, Readable, Stream, Pipe } from "stream";
6
7
    type Serializable = string | object | number | boolean;
8
    type SendHandle = net.Socket | net.Server;
9
10
    interface ChildProcess extends events.EventEmitter {
11
        stdin: Writable | null;
12
        stdout: Readable | null;
13
        stderr: Readable | null;
14
        readonly channel?: Pipe | null;
15
        readonly stdio: [
16
            Writable | null, // stdin
17
            Readable | null, // stdout
18
            Readable | null, // stderr
19
            Readable | Writable | null | undefined, // extra
20
            Readable | Writable | null | undefined // extra
21
        ];
22
        readonly killed: boolean;
23
        readonly pid: number;
24
        readonly connected: boolean;
25
        readonly exitCode: number | null;
26
        readonly signalCode: number | null;
27
        readonly spawnargs: string[];
28
        readonly spawnfile: string;
29
        kill(signal?: NodeJS.Signals | number): boolean;
30
        send(message: Serializable, callback?: (error: Error | null) => void): boolean;
31
        send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
32
        send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
33
        disconnect(): void;
34
        unref(): void;
35
        ref(): void;
36
37
        /**
38
         * events.EventEmitter
39
         * 1. close
40
         * 2. disconnect
41
         * 3. error
42
         * 4. exit
43
         * 5. message
44
         */
45
46
        addListener(event: string, listener: (...args: any[]) => void): this;
47
        addListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
48
        addListener(event: "disconnect", listener: () => void): this;
49
        addListener(event: "error", listener: (err: Error) => void): this;
50
        addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
51
        addListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
52
53
        emit(event: string | symbol, ...args: any[]): boolean;
54
        emit(event: "close", code: number, signal: NodeJS.Signals): boolean;
55
        emit(event: "disconnect"): boolean;
56
        emit(event: "error", err: Error): boolean;
57
        emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean;
58
        emit(event: "message", message: Serializable, sendHandle: SendHandle): boolean;
59
60
        on(event: string, listener: (...args: any[]) => void): this;
61
        on(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
62
        on(event: "disconnect", listener: () => void): this;
63
        on(event: "error", listener: (err: Error) => void): this;
64
        on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
65
        on(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
66
67
        once(event: string, listener: (...args: any[]) => void): this;
68
        once(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
69
        once(event: "disconnect", listener: () => void): this;
70
        once(event: "error", listener: (err: Error) => void): this;
71
        once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
72
        once(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
73
74
        prependListener(event: string, listener: (...args: any[]) => void): this;
75
        prependListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
76
        prependListener(event: "disconnect", listener: () => void): this;
77
        prependListener(event: "error", listener: (err: Error) => void): this;
78
        prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
79
        prependListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
80
81
        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
82
        prependOnceListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
83
        prependOnceListener(event: "disconnect", listener: () => void): this;
84
        prependOnceListener(event: "error", listener: (err: Error) => void): this;
85
        prependOnceListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
86
        prependOnceListener(event: "message", listener: (message: Serializable, sendHandle: SendHandle) => void): this;
87
    }
88
89
    // return this object when stdio option is undefined or not specified
90
    interface ChildProcessWithoutNullStreams extends ChildProcess {
91
        stdin: Writable;
92
        stdout: Readable;
93
        stderr: Readable;
94
        readonly stdio: [
95
            Writable, // stdin
96
            Readable, // stdout
97
            Readable, // stderr
98
            Readable | Writable | null | undefined, // extra, no modification
99
            Readable | Writable | null | undefined // extra, no modification
100
        ];
101
    }
102
103
    // return this object when stdio option is a tuple of 3
104
    interface ChildProcessByStdio<
105
        I extends null | Writable,
106
        O extends null | Readable,
107
        E extends null | Readable,
108
    > extends ChildProcess {
109
        stdin: I;
110
        stdout: O;
111
        stderr: E;
112
        readonly stdio: [
113
            I,
114
            O,
115
            E,
116
            Readable | Writable | null | undefined, // extra, no modification
117
            Readable | Writable | null | undefined // extra, no modification
118
        ];
119
    }
120
121
    interface MessageOptions {
122
        keepOpen?: boolean;
123
    }
124
125
    type StdioOptions = "pipe" | "ignore" | "inherit" | Array<("pipe" | "ipc" | "ignore" | "inherit" | Stream | number | null | undefined)>;
126
127
    type SerializationType = 'json' | 'advanced';
128
129
    interface MessagingOptions {
130
        /**
131
         * Specify the kind of serialization used for sending messages between processes.
132
         * @default 'json'
133
         */
134
        serialization?: SerializationType;
135
    }
136
137
    interface ProcessEnvOptions {
138
        uid?: number;
139
        gid?: number;
140
        cwd?: string;
141
        env?: NodeJS.ProcessEnv;
142
    }
143
144
    interface CommonOptions extends ProcessEnvOptions {
145
        /**
146
         * @default true
147
         */
148
        windowsHide?: boolean;
149
        /**
150
         * @default 0
151
         */
152
        timeout?: number;
153
    }
154
155
    interface CommonSpawnOptions extends CommonOptions, MessagingOptions {
156
        argv0?: string;
157
        stdio?: StdioOptions;
158
        shell?: boolean | string;
159
        windowsVerbatimArguments?: boolean;
160
    }
161
162
    interface SpawnOptions extends CommonSpawnOptions {
163
        detached?: boolean;
164
    }
165
166
    interface SpawnOptionsWithoutStdio extends SpawnOptions {
167
        stdio?: 'pipe' | Array<null | undefined | 'pipe'>;
168
    }
169
170
    type StdioNull = 'inherit' | 'ignore' | Stream;
171
    type StdioPipe = undefined | null | 'pipe';
172
173
    interface SpawnOptionsWithStdioTuple<
174
        Stdin extends StdioNull | StdioPipe,
175
        Stdout extends StdioNull | StdioPipe,
176
        Stderr extends StdioNull | StdioPipe,
177
    > extends SpawnOptions {
178
        stdio: [Stdin, Stdout, Stderr];
179
    }
180
181
    // overloads of spawn without 'args'
182
    function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
183
184
    function spawn(
185
        command: string,
186
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
187
    ): ChildProcessByStdio<Writable, Readable, Readable>;
188
    function spawn(
189
        command: string,
190
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
191
    ): ChildProcessByStdio<Writable, Readable, null>;
192
    function spawn(
193
        command: string,
194
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
195
    ): ChildProcessByStdio<Writable, null, Readable>;
196
    function spawn(
197
        command: string,
198
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
199
    ): ChildProcessByStdio<null, Readable, Readable>;
200
    function spawn(
201
        command: string,
202
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
203
    ): ChildProcessByStdio<Writable, null, null>;
204
    function spawn(
205
        command: string,
206
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
207
    ): ChildProcessByStdio<null, Readable, null>;
208
    function spawn(
209
        command: string,
210
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
211
    ): ChildProcessByStdio<null, null, Readable>;
212
    function spawn(
213
        command: string,
214
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
215
    ): ChildProcessByStdio<null, null, null>;
216
217
    function spawn(command: string, options: SpawnOptions): ChildProcess;
218
219
    // overloads of spawn with 'args'
220
    function spawn(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
221
222
    function spawn(
223
        command: string,
224
        args: ReadonlyArray<string>,
225
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
226
    ): ChildProcessByStdio<Writable, Readable, Readable>;
227
    function spawn(
228
        command: string,
229
        args: ReadonlyArray<string>,
230
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
231
    ): ChildProcessByStdio<Writable, Readable, null>;
232
    function spawn(
233
        command: string,
234
        args: ReadonlyArray<string>,
235
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
236
    ): ChildProcessByStdio<Writable, null, Readable>;
237
    function spawn(
238
        command: string,
239
        args: ReadonlyArray<string>,
240
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
241
    ): ChildProcessByStdio<null, Readable, Readable>;
242
    function spawn(
243
        command: string,
244
        args: ReadonlyArray<string>,
245
        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
246
    ): ChildProcessByStdio<Writable, null, null>;
247
    function spawn(
248
        command: string,
249
        args: ReadonlyArray<string>,
250
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
251
    ): ChildProcessByStdio<null, Readable, null>;
252
    function spawn(
253
        command: string,
254
        args: ReadonlyArray<string>,
255
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
256
    ): ChildProcessByStdio<null, null, Readable>;
257
    function spawn(
258
        command: string,
259
        args: ReadonlyArray<string>,
260
        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
261
    ): ChildProcessByStdio<null, null, null>;
262
263
    function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptions): ChildProcess;
264
265
    interface ExecOptions extends CommonOptions {
266
        shell?: string;
267
        maxBuffer?: number;
268
        killSignal?: NodeJS.Signals | number;
269
    }
270
271
    interface ExecOptionsWithStringEncoding extends ExecOptions {
272
        encoding: BufferEncoding;
273
    }
274
275
    interface ExecOptionsWithBufferEncoding extends ExecOptions {
276
        encoding: BufferEncoding | null; // specify `null`.
277
    }
278
279
    interface ExecException extends Error {
280
        cmd?: string;
281
        killed?: boolean;
282
        code?: number;
283
        signal?: NodeJS.Signals;
284
    }
285
286
    // no `options` definitely means stdout/stderr are `string`.
287
    function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
288
289
    // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
290
    function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
291
292
    // `options` with well known `encoding` means stdout/stderr are definitely `string`.
293
    function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
294
295
    // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
296
    // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
297
    function exec(
298
        command: string,
299
        options: { encoding: BufferEncoding } & ExecOptions,
300
        callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
301
    ): ChildProcess;
302
303
    // `options` without an `encoding` means stdout/stderr are definitely `string`.
304
    function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
305
306
    // fallback if nothing else matches. Worst case is always `string | Buffer`.
307
    function exec(
308
        command: string,
309
        options: (BaseEncodingOptions & ExecOptions) | undefined | null,
310
        callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
311
    ): ChildProcess;
312
313
    interface PromiseWithChild<T> extends Promise<T> {
314
        child: ChildProcess;
315
    }
316
317
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
318
    namespace exec {
319
        function __promisify__(command: string): PromiseWithChild<{ stdout: string, stderr: string }>;
320
        function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
321
        function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
322
        function __promisify__(command: string, options: ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
323
        function __promisify__(command: string, options?: (BaseEncodingOptions & ExecOptions) | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
324
    }
325
326
    interface ExecFileOptions extends CommonOptions {
327
        maxBuffer?: number;
328
        killSignal?: NodeJS.Signals | number;
329
        windowsVerbatimArguments?: boolean;
330
        shell?: boolean | string;
331
    }
332
    interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
333
        encoding: BufferEncoding;
334
    }
335
    interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
336
        encoding: 'buffer' | null;
337
    }
338
    interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
339
        encoding: BufferEncoding;
340
    }
341
342
    function execFile(file: string): ChildProcess;
343
    function execFile(file: string, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
344
    function execFile(file: string, args?: ReadonlyArray<string> | null): ChildProcess;
345
    function execFile(file: string, args: ReadonlyArray<string> | undefined | null, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
346
347
    // no `options` definitely means stdout/stderr are `string`.
348
    function execFile(file: string, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
349
    function execFile(file: string, args: ReadonlyArray<string> | undefined | null, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
350
351
    // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
352
    function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
353
    function execFile(
354
        file: string,
355
        args: ReadonlyArray<string> | undefined | null,
356
        options: ExecFileOptionsWithBufferEncoding,
357
        callback: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void,
358
    ): ChildProcess;
359
360
    // `options` with well known `encoding` means stdout/stderr are definitely `string`.
361
    function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
362
    function execFile(
363
        file: string,
364
        args: ReadonlyArray<string> | undefined | null,
365
        options: ExecFileOptionsWithStringEncoding,
366
        callback: (error: ExecException | null, stdout: string, stderr: string) => void,
367
    ): ChildProcess;
368
369
    // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
370
    // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
371
    function execFile(
372
        file: string,
373
        options: ExecFileOptionsWithOtherEncoding,
374
        callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
375
    ): ChildProcess;
376
    function execFile(
377
        file: string,
378
        args: ReadonlyArray<string> | undefined | null,
379
        options: ExecFileOptionsWithOtherEncoding,
380
        callback: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
381
    ): ChildProcess;
382
383
    // `options` without an `encoding` means stdout/stderr are definitely `string`.
384
    function execFile(file: string, options: ExecFileOptions, callback: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
385
    function execFile(
386
        file: string,
387
        args: ReadonlyArray<string> | undefined | null,
388
        options: ExecFileOptions,
389
        callback: (error: ExecException | null, stdout: string, stderr: string) => void
390
    ): ChildProcess;
391
392
    // fallback if nothing else matches. Worst case is always `string | Buffer`.
393
    function execFile(
394
        file: string,
395
        options: (BaseEncodingOptions & ExecFileOptions) | undefined | null,
396
        callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
397
    ): ChildProcess;
398
    function execFile(
399
        file: string,
400
        args: ReadonlyArray<string> | undefined | null,
401
        options: (BaseEncodingOptions & ExecFileOptions) | undefined | null,
402
        callback: ((error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
403
    ): ChildProcess;
404
405
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
406
    namespace execFile {
407
        function __promisify__(file: string): PromiseWithChild<{ stdout: string, stderr: string }>;
408
        function __promisify__(file: string, args: string[] | undefined | null): PromiseWithChild<{ stdout: string, stderr: string }>;
409
        function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
410
        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
411
        function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
412
        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
413
        function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
414
        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
415
        function __promisify__(file: string, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
416
        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
417
        function __promisify__(file: string, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
418
        function __promisify__(
419
            file: string,
420
            args: string[] | undefined | null,
421
            options: (BaseEncodingOptions & ExecFileOptions) | undefined | null,
422
        ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
423
    }
424
425
    interface ForkOptions extends ProcessEnvOptions, MessagingOptions {
426
        execPath?: string;
427
        execArgv?: string[];
428
        silent?: boolean;
429
        stdio?: StdioOptions;
430
        detached?: boolean;
431
        windowsVerbatimArguments?: boolean;
432
    }
433
    function fork(modulePath: string, args?: ReadonlyArray<string>, options?: ForkOptions): ChildProcess;
434
435
    interface SpawnSyncOptions extends CommonSpawnOptions {
436
        input?: string | NodeJS.ArrayBufferView;
437
        killSignal?: NodeJS.Signals | number;
438
        maxBuffer?: number;
439
        encoding?: BufferEncoding | 'buffer' | null;
440
    }
441
    interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
442
        encoding: BufferEncoding;
443
    }
444
    interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
445
        encoding?: 'buffer' | null;
446
    }
447
    interface SpawnSyncReturns<T> {
448
        pid: number;
449
        output: string[];
450
        stdout: T;
451
        stderr: T;
452
        status: number | null;
453
        signal: NodeJS.Signals | null;
454
        error?: Error;
455
    }
456
    function spawnSync(command: string): SpawnSyncReturns<Buffer>;
457
    function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
458
    function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
459
    function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
460
    function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
461
    function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
462
    function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
463
464
    interface ExecSyncOptions extends CommonOptions {
465
        input?: string | Uint8Array;
466
        stdio?: StdioOptions;
467
        shell?: string;
468
        killSignal?: NodeJS.Signals | number;
469
        maxBuffer?: number;
470
        encoding?: BufferEncoding | 'buffer' | null;
471
    }
472
    interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
473
        encoding: BufferEncoding;
474
    }
475
    interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
476
        encoding?: 'buffer' | null;
477
    }
478
    function execSync(command: string): Buffer;
479
    function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;
480
    function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;
481
    function execSync(command: string, options?: ExecSyncOptions): Buffer;
482
483
    interface ExecFileSyncOptions extends CommonOptions {
484
        input?: string | NodeJS.ArrayBufferView;
485
        stdio?: StdioOptions;
486
        killSignal?: NodeJS.Signals | number;
487
        maxBuffer?: number;
488
        encoding?: BufferEncoding;
489
        shell?: boolean | string;
490
    }
491
    interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
492
        encoding: BufferEncoding;
493
    }
494
    interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
495
        encoding: BufferEncoding; // specify `null`.
496
    }
497
    function execFileSync(command: string): Buffer;
498
    function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string;
499
    function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
500
    function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer;
501
    function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithStringEncoding): string;
502
    function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
503
    function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptions): Buffer;
504
}
505