1.0.0 • Published 1 month ago
@silyze/async-process-stream v1.0.0
Async Process Stream
A duplex async stream wrapper for child processes with transform support and separate stderr handling.
Install
npm install @silyze/async-process-stream
Usage
Import and use it in your project:
import { spawnAsync } from "@silyze/async-process-stream";
const { stream } = spawnAsync("echo", ["Hello, World!"]);
const stdoutAbortController = new AbortController();
process.stdout.once("close", () => stdoutAbortController.abort());
stream
.transform()
.pipe(
{
async write(input) {
await new Promise<void>((resolve, reject) => {
process.stdout.write(input, (err) => (err ? reject(err) : resolve()));
});
},
},
{ signal: stdoutAbortController.signal }
)
.then(() => process.exit(0));
This example runs the echo
command and streams its stdout to the current process's stdout using AsyncTransform.pipe()
.
API
spawnAsync(path: string, args: string[], options?: SpawnOptionsWithoutStdio)
Spawns a child process and returns:
{
stream: AsyncProcessStream,
process: ChildProcess
}
class AsyncProcessStream implements AsyncStream<Buffer, Buffer>
read(signal?: AbortSignal): AsyncIterable<Buffer>
– reads fromstdout
write(input: Buffer): Promise<void>
– writes tostdin
transform(): AsyncTransform<Buffer>
– transformsstdout
as a streamerror: AsyncReadStream<Buffer>
– reads fromstderr
only
1.0.0
1 month ago