1 |
|
2 | import { Readable, Writable } from 'stream';
|
3 | import { ShellOptions } from './index';
|
4 | declare enum Pipe {
|
5 | STDOUT = 1,
|
6 | STDERR = 2
|
7 | }
|
8 | export declare type Stdio = [any, any, any];
|
9 | export declare type ProcessImplementation = (stdio: Stdio) => {
|
10 | stdin: Writable;
|
11 | promise: Promise<number>;
|
12 | };
|
13 | export declare function makeProcess(name: string, args: Array<string>, opts: ShellOptions, spawnOpts: any): ProcessImplementation;
|
14 | export declare function makeBuiltin(builtin: (opts: any) => Promise<number>): ProcessImplementation;
|
15 | interface StreamLock<StreamType> {
|
16 | close(): void;
|
17 | get(): StreamType;
|
18 | }
|
19 | export declare class ProtectedStream<StreamType> implements StreamLock<StreamType> {
|
20 | private stream;
|
21 | constructor(stream: StreamType);
|
22 | close(): void;
|
23 | get(): StreamType;
|
24 | }
|
25 | declare type StartOptions = {
|
26 | stdin: StreamLock<Readable>;
|
27 | stdout: StreamLock<Writable>;
|
28 | stderr: StreamLock<Writable>;
|
29 | };
|
30 | export declare class Handle {
|
31 | private ancestor;
|
32 | private implementation;
|
33 | private stdin;
|
34 | private stdout;
|
35 | private stderr;
|
36 | private pipe;
|
37 | static start(implementation: ProcessImplementation, { stdin, stdout, stderr }: StartOptions): Handle;
|
38 | constructor(ancestor: Handle | null, implementation: ProcessImplementation);
|
39 | pipeTo(implementation: ProcessImplementation, source?: Pipe): Handle;
|
40 | exec(): Promise<number>;
|
41 | run(): Promise<number>;
|
42 | }
|
43 | export declare function start(p: ProcessImplementation, opts: StartOptions): Handle;
|
44 | export {};
|