import {getStreamOutput} from '../io/contents.js'; import {waitForStream, isInputFileDescriptor} from './wait-stream.js'; // Read the contents of `subprocess.std*` and|or wait for its completion export const waitForStdioStreams = ({subprocess, encoding, buffer, maxBuffer, lines, stripFinalNewline, verboseInfo, streamInfo}) => subprocess.stdio.map((stream, fdNumber) => waitForSubprocessStream({ stream, fdNumber, encoding, buffer: buffer[fdNumber], maxBuffer: maxBuffer[fdNumber], lines: lines[fdNumber], allMixed: false, stripFinalNewline, verboseInfo, streamInfo, })); // Read the contents of `subprocess.std*` or `subprocess.all` and|or wait for its completion export const waitForSubprocessStream = async ({stream, fdNumber, encoding, buffer, maxBuffer, lines, allMixed, stripFinalNewline, verboseInfo, streamInfo}) => { if (!stream) { return; } const onStreamEnd = waitForStream(stream, fdNumber, streamInfo); if (isInputFileDescriptor(streamInfo, fdNumber)) { await onStreamEnd; return; } const [output] = await Promise.all([ getStreamOutput({ stream, onStreamEnd, fdNumber, encoding, buffer, maxBuffer, lines, allMixed, stripFinalNewline, verboseInfo, streamInfo, }), onStreamEnd, ]); return output; };