21 lines
		
	
	
		
			746 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			746 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import {aborted} from 'node:util';
 | |
| import {createNonCommandError} from './throw.js';
 | |
| 
 | |
| // When passing an `unpipeSignal` option, abort piping when the signal is aborted.
 | |
| // However, do not terminate the subprocesses.
 | |
| export const unpipeOnAbort = (unpipeSignal, unpipeContext) => unpipeSignal === undefined
 | |
| 	? []
 | |
| 	: [unpipeOnSignalAbort(unpipeSignal, unpipeContext)];
 | |
| 
 | |
| const unpipeOnSignalAbort = async (unpipeSignal, {sourceStream, mergedStream, fileDescriptors, sourceOptions, startTime}) => {
 | |
| 	await aborted(unpipeSignal, sourceStream);
 | |
| 	await mergedStream.remove(sourceStream);
 | |
| 	const error = new Error('Pipe canceled by `unpipeSignal` option.');
 | |
| 	throw createNonCommandError({
 | |
| 		error,
 | |
| 		fileDescriptors,
 | |
| 		sourceOptions,
 | |
| 		startTime,
 | |
| 	});
 | |
| };
 |