48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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;
 | |
| };
 |