You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import {finished} from 'node:stream/promises';import {isStreamAbort} from '../resolve/wait-stream.js';
export const safeWaitForSubprocessStdin = async subprocessStdin => { if (subprocessStdin === undefined) { return; }
try { await waitForSubprocessStdin(subprocessStdin); } catch {}};
export const safeWaitForSubprocessStdout = async subprocessStdout => { if (subprocessStdout === undefined) { return; }
try { await waitForSubprocessStdout(subprocessStdout); } catch {}};
export const waitForSubprocessStdin = async subprocessStdin => { await finished(subprocessStdin, {cleanup: true, readable: false, writable: true});};
export const waitForSubprocessStdout = async subprocessStdout => { await finished(subprocessStdout, {cleanup: true, readable: true, writable: false});};
// When `readable` or `writable` aborts/errors, awaits the subprocess, for the reason mentioned above
export const waitForSubprocess = async (subprocess, error) => { await subprocess; if (error) { throw error; }};
export const destroyOtherStream = (stream, isOpen, error) => { if (error && !isStreamAbort(error)) { stream.destroy(error); } else if (isOpen) { stream.destroy(); }};
|