UNPKG

28 kBTypeScriptView Raw
1declare 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 | undefined;
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: NodeJS.Signals | 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 | null, signal: NodeJS.Signals | null) => 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 | null, signal: NodeJS.Signals | null): 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 | null, signal: NodeJS.Signals | null) => 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 | null, signal: NodeJS.Signals | null) => 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 | null, signal: NodeJS.Signals | null) => 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 | null, signal: NodeJS.Signals | null) => 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 | undefined;
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 | undefined;
135 }
136
137 interface ProcessEnvOptions {
138 uid?: number | undefined;
139 gid?: number | undefined;
140 cwd?: string | undefined;
141 env?: NodeJS.ProcessEnv | undefined;
142 }
143
144 interface CommonOptions extends ProcessEnvOptions {
145 /**
146 * @default false
147 */
148 windowsHide?: boolean | undefined;
149 /**
150 * @default 0
151 */
152 timeout?: number | undefined;
153 }
154
155 interface CommonSpawnOptions extends CommonOptions, MessagingOptions {
156 argv0?: string | undefined;
157 /**
158 * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings.
159 * If passed as an array, the first element is used for `stdin`, the second for
160 * `stdout`, and the third for `stderr`. A fourth element can be used to
161 * specify the `stdio` behavior beyond the standard streams. See
162 * {@link ChildProcess.stdio} for more information.
163 *
164 * @default 'pipe'
165 */
166 stdio?: StdioOptions | undefined;
167 shell?: boolean | string | undefined;
168 windowsVerbatimArguments?: boolean | undefined;
169 }
170
171 interface SpawnOptions extends CommonSpawnOptions {
172 detached?: boolean | undefined;
173 }
174
175 interface SpawnOptionsWithoutStdio extends SpawnOptions {
176 stdio?: 'pipe' | Array<null | undefined | 'pipe'> | undefined;
177 }
178
179 type StdioNull = 'inherit' | 'ignore' | Stream;
180 type StdioPipe = undefined | null | 'pipe';
181
182 interface SpawnOptionsWithStdioTuple<
183 Stdin extends StdioNull | StdioPipe,
184 Stdout extends StdioNull | StdioPipe,
185 Stderr extends StdioNull | StdioPipe,
186 > extends SpawnOptions {
187 stdio: [Stdin, Stdout, Stderr];
188 }
189
190 // overloads of spawn without 'args'
191 function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
192
193 function spawn(
194 command: string,
195 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
196 ): ChildProcessByStdio<Writable, Readable, Readable>;
197 function spawn(
198 command: string,
199 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
200 ): ChildProcessByStdio<Writable, Readable, null>;
201 function spawn(
202 command: string,
203 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
204 ): ChildProcessByStdio<Writable, null, Readable>;
205 function spawn(
206 command: string,
207 options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
208 ): ChildProcessByStdio<null, Readable, Readable>;
209 function spawn(
210 command: string,
211 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
212 ): ChildProcessByStdio<Writable, null, null>;
213 function spawn(
214 command: string,
215 options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
216 ): ChildProcessByStdio<null, Readable, null>;
217 function spawn(
218 command: string,
219 options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
220 ): ChildProcessByStdio<null, null, Readable>;
221 function spawn(
222 command: string,
223 options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
224 ): ChildProcessByStdio<null, null, null>;
225
226 function spawn(command: string, options: SpawnOptions): ChildProcess;
227
228 // overloads of spawn with 'args'
229 function spawn(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
230
231 function spawn(
232 command: string,
233 args: ReadonlyArray<string>,
234 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
235 ): ChildProcessByStdio<Writable, Readable, Readable>;
236 function spawn(
237 command: string,
238 args: ReadonlyArray<string>,
239 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
240 ): ChildProcessByStdio<Writable, Readable, null>;
241 function spawn(
242 command: string,
243 args: ReadonlyArray<string>,
244 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
245 ): ChildProcessByStdio<Writable, null, Readable>;
246 function spawn(
247 command: string,
248 args: ReadonlyArray<string>,
249 options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
250 ): ChildProcessByStdio<null, Readable, Readable>;
251 function spawn(
252 command: string,
253 args: ReadonlyArray<string>,
254 options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
255 ): ChildProcessByStdio<Writable, null, null>;
256 function spawn(
257 command: string,
258 args: ReadonlyArray<string>,
259 options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
260 ): ChildProcessByStdio<null, Readable, null>;
261 function spawn(
262 command: string,
263 args: ReadonlyArray<string>,
264 options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
265 ): ChildProcessByStdio<null, null, Readable>;
266 function spawn(
267 command: string,
268 args: ReadonlyArray<string>,
269 options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
270 ): ChildProcessByStdio<null, null, null>;
271
272 function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptions): ChildProcess;
273
274 interface ExecOptions extends CommonOptions {
275 shell?: string | undefined;
276 maxBuffer?: number | undefined;
277 killSignal?: NodeJS.Signals | number | undefined;
278 }
279
280 interface ExecOptionsWithStringEncoding extends ExecOptions {
281 encoding: BufferEncoding;
282 }
283
284 interface ExecOptionsWithBufferEncoding extends ExecOptions {
285 encoding: BufferEncoding | null; // specify `null`.
286 }
287
288 interface ExecException extends Error {
289 cmd?: string | undefined;
290 killed?: boolean | undefined;
291 code?: number | undefined;
292 signal?: NodeJS.Signals | undefined;
293 }
294
295 // no `options` definitely means stdout/stderr are `string`.
296 function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
297
298 // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
299 function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
300
301 // `options` with well known `encoding` means stdout/stderr are definitely `string`.
302 function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
303
304 // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
305 // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
306 function exec(
307 command: string,
308 options: { encoding: BufferEncoding } & ExecOptions,
309 callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
310 ): ChildProcess;
311
312 // `options` without an `encoding` means stdout/stderr are definitely `string`.
313 function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
314
315 // fallback if nothing else matches. Worst case is always `string | Buffer`.
316 function exec(
317 command: string,
318 options: (BaseEncodingOptions & ExecOptions) | undefined | null,
319 callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
320 ): ChildProcess;
321
322 interface PromiseWithChild<T> extends Promise<T> {
323 child: ChildProcess;
324 }
325
326 // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
327 namespace exec {
328 function __promisify__(command: string): PromiseWithChild<{ stdout: string, stderr: string }>;
329 function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
330 function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
331 function __promisify__(command: string, options: ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
332 function __promisify__(command: string, options?: (BaseEncodingOptions & ExecOptions) | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
333 }
334
335 interface ExecFileOptions extends CommonOptions {
336 maxBuffer?: number | undefined;
337 killSignal?: NodeJS.Signals | number | undefined;
338 windowsVerbatimArguments?: boolean | undefined;
339 shell?: boolean | string | undefined;
340 }
341 interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
342 encoding: BufferEncoding;
343 }
344 interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
345 encoding: 'buffer' | null;
346 }
347 interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
348 encoding: BufferEncoding;
349 }
350 type ExecFileException =
351 & Omit<ExecException, 'code'>
352 & Omit<NodeJS.ErrnoException, 'code'>
353 & { code?: string | number | undefined | null };
354
355 function execFile(file: string): ChildProcess;
356 function execFile(file: string, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
357 function execFile(file: string, args?: ReadonlyArray<string> | null): ChildProcess;
358 function execFile(file: string, args: ReadonlyArray<string> | undefined | null, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): ChildProcess;
359
360 // no `options` definitely means stdout/stderr are `string`.
361 function execFile(file: string, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
362 function execFile(file: string, args: ReadonlyArray<string> | undefined | null, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
363
364 // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
365 function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
366 function execFile(
367 file: string,
368 args: ReadonlyArray<string> | undefined | null,
369 options: ExecFileOptionsWithBufferEncoding,
370 callback: (error: ExecFileException | null, stdout: Buffer, stderr: Buffer) => void,
371 ): ChildProcess;
372
373 // `options` with well known `encoding` means stdout/stderr are definitely `string`.
374 function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
375 function execFile(
376 file: string,
377 args: ReadonlyArray<string> | undefined | null,
378 options: ExecFileOptionsWithStringEncoding,
379 callback: (error: ExecFileException | null, stdout: string, stderr: string) => void,
380 ): ChildProcess;
381
382 // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
383 // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
384 function execFile(
385 file: string,
386 options: ExecFileOptionsWithOtherEncoding,
387 callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
388 ): ChildProcess;
389 function execFile(
390 file: string,
391 args: ReadonlyArray<string> | undefined | null,
392 options: ExecFileOptionsWithOtherEncoding,
393 callback: (error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
394 ): ChildProcess;
395
396 // `options` without an `encoding` means stdout/stderr are definitely `string`.
397 function execFile(file: string, options: ExecFileOptions, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void): ChildProcess;
398 function execFile(
399 file: string,
400 args: ReadonlyArray<string> | undefined | null,
401 options: ExecFileOptions,
402 callback: (error: ExecFileException | null, stdout: string, stderr: string) => void
403 ): ChildProcess;
404
405 // fallback if nothing else matches. Worst case is always `string | Buffer`.
406 function execFile(
407 file: string,
408 options: (BaseEncodingOptions & ExecFileOptions) | undefined | null,
409 callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
410 ): ChildProcess;
411 function execFile(
412 file: string,
413 args: ReadonlyArray<string> | undefined | null,
414 options: (BaseEncodingOptions & ExecFileOptions) | undefined | null,
415 callback: ((error: ExecFileException | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
416 ): ChildProcess;
417
418 // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
419 namespace execFile {
420 function __promisify__(file: string): PromiseWithChild<{ stdout: string, stderr: string }>;
421 function __promisify__(file: string, args: ReadonlyArray<string> | undefined | null): PromiseWithChild<{ stdout: string, stderr: string }>;
422 function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
423 function __promisify__(file: string, args: ReadonlyArray<string> | undefined | null, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
424 function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
425 function __promisify__(file: string, args: ReadonlyArray<string> | undefined | null, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
426 function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
427 function __promisify__(
428 file: string,
429 args: ReadonlyArray<string> | undefined | null,
430 options: ExecFileOptionsWithOtherEncoding,
431 ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
432 function __promisify__(file: string, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
433 function __promisify__(file: string, args: ReadonlyArray<string> | undefined | null, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
434 function __promisify__(file: string, options: (BaseEncodingOptions & ExecFileOptions) | undefined | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
435 function __promisify__(
436 file: string,
437 args: ReadonlyArray<string> | undefined | null,
438 options: (BaseEncodingOptions & ExecFileOptions) | undefined | null,
439 ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
440 }
441
442 interface ForkOptions extends ProcessEnvOptions, MessagingOptions {
443 execPath?: string | undefined;
444 execArgv?: string[] | undefined;
445 silent?: boolean | undefined;
446 /**
447 * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings.
448 * If passed as an array, the first element is used for `stdin`, the second for
449 * `stdout`, and the third for `stderr`. A fourth element can be used to
450 * specify the `stdio` behavior beyond the standard streams. See
451 * {@link ChildProcess.stdio} for more information.
452 *
453 * @default 'pipe'
454 */
455 stdio?: StdioOptions | undefined;
456 detached?: boolean | undefined;
457 windowsVerbatimArguments?: boolean | undefined;
458 }
459 function fork(modulePath: string, options?: ForkOptions): ChildProcess;
460 function fork(modulePath: string, args?: ReadonlyArray<string>, options?: ForkOptions): ChildProcess;
461
462 interface SpawnSyncOptions extends CommonSpawnOptions {
463 input?: string | NodeJS.ArrayBufferView | undefined;
464 killSignal?: NodeJS.Signals | number | undefined;
465 maxBuffer?: number | undefined;
466 encoding?: BufferEncoding | 'buffer' | null | undefined;
467 }
468 interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
469 encoding: BufferEncoding;
470 }
471 interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
472 encoding?: 'buffer' | null | undefined;
473 }
474 interface SpawnSyncReturns<T> {
475 pid: number;
476 output: Array<T | null>;
477 stdout: T;
478 stderr: T;
479 status: number | null;
480 signal: NodeJS.Signals | null;
481 error?: Error | undefined;
482 }
483 function spawnSync(command: string): SpawnSyncReturns<Buffer>;
484 function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
485 function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
486 function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<string | Buffer>;
487 function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
488 function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
489 function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptions): SpawnSyncReturns<string | Buffer>;
490
491 interface ExecSyncOptions extends CommonOptions {
492 input?: string | Uint8Array | undefined;
493 /**
494 * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings.
495 * If passed as an array, the first element is used for `stdin`, the second for
496 * `stdout`, and the third for `stderr`. A fourth element can be used to
497 * specify the `stdio` behavior beyond the standard streams. See
498 * {@link ChildProcess.stdio} for more information.
499 *
500 * @default 'pipe'
501 */
502 stdio?: StdioOptions | undefined;
503 shell?: string | undefined;
504 killSignal?: NodeJS.Signals | number | undefined;
505 maxBuffer?: number | undefined;
506 encoding?: BufferEncoding | 'buffer' | null | undefined;
507 }
508 interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
509 encoding: BufferEncoding;
510 }
511 interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
512 encoding?: 'buffer' | null | undefined;
513 }
514 function execSync(command: string): Buffer;
515 function execSync(command: string, options: ExecSyncOptionsWithStringEncoding): string;
516 function execSync(command: string, options: ExecSyncOptionsWithBufferEncoding): Buffer;
517 function execSync(command: string, options?: ExecSyncOptions): string | Buffer;
518
519 interface ExecFileSyncOptions extends CommonOptions {
520 input?: string | NodeJS.ArrayBufferView | undefined;
521 /**
522 * Can be set to 'pipe', 'inherit', 'overlapped', or 'ignore', or an array of these strings.
523 * If passed as an array, the first element is used for `stdin`, the second for
524 * `stdout`, and the third for `stderr`. A fourth element can be used to
525 * specify the `stdio` behavior beyond the standard streams. See
526 * {@link ChildProcess.stdio} for more information.
527 *
528 * @default 'pipe'
529 */
530 stdio?: StdioOptions | undefined;
531 killSignal?: NodeJS.Signals | number | undefined;
532 maxBuffer?: number | undefined;
533 encoding?: BufferEncoding | undefined;
534 shell?: boolean | string | undefined;
535 }
536 interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
537 encoding: BufferEncoding;
538 }
539 interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
540 encoding: BufferEncoding; // specify `null`.
541 }
542 function execFileSync(command: string): Buffer;
543 function execFileSync(command: string, options: ExecFileSyncOptionsWithStringEncoding): string;
544 function execFileSync(command: string, options: ExecFileSyncOptionsWithBufferEncoding): Buffer;
545 function execFileSync(command: string, options?: ExecFileSyncOptions): string | Buffer;
546 function execFileSync(command: string, args: ReadonlyArray<string>): Buffer;
547 function execFileSync(command: string, args: ReadonlyArray<string>, options: ExecFileSyncOptionsWithStringEncoding): string;
548 function execFileSync(command: string, args: ReadonlyArray<string>, options: ExecFileSyncOptionsWithBufferEncoding): Buffer;
549 function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptions): string | Buffer;
550}
551declare module 'node:child_process' {
552 export * from 'child_process';
553}