UNPKG

1.54 kBTypeScriptView Raw
1/// <reference types="node" />
2import { Readable, Writable } from 'stream';
3import { ShellOptions } from './index';
4declare enum Pipe {
5 STDOUT = 1,
6 STDERR = 2
7}
8export declare type Stdio = [any, any, any];
9export declare type ProcessImplementation = (stdio: Stdio) => {
10 stdin: Writable;
11 promise: Promise<number>;
12};
13export declare function makeProcess(name: string, args: Array<string>, opts: ShellOptions, spawnOpts: any): ProcessImplementation;
14export declare function makeBuiltin(builtin: (opts: any) => Promise<number>): ProcessImplementation;
15interface StreamLock<StreamType> {
16 close(): void;
17 get(): StreamType;
18}
19export declare class ProtectedStream<StreamType> implements StreamLock<StreamType> {
20 private stream;
21 constructor(stream: StreamType);
22 close(): void;
23 get(): StreamType;
24}
25declare type StartOptions = {
26 stdin: StreamLock<Readable>;
27 stdout: StreamLock<Writable>;
28 stderr: StreamLock<Writable>;
29};
30export 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}
43export declare function start(p: ProcessImplementation, opts: StartOptions): Handle;
44export {};