abort.js 746 B

1234567891011121314151617181920
  1. import {aborted} from 'node:util';
  2. import {createNonCommandError} from './throw.js';
  3. // When passing an `unpipeSignal` option, abort piping when the signal is aborted.
  4. // However, do not terminate the subprocesses.
  5. export const unpipeOnAbort = (unpipeSignal, unpipeContext) => unpipeSignal === undefined
  6. ? []
  7. : [unpipeOnSignalAbort(unpipeSignal, unpipeContext)];
  8. const unpipeOnSignalAbort = async (unpipeSignal, {sourceStream, mergedStream, fileDescriptors, sourceOptions, startTime}) => {
  9. await aborted(unpipeSignal, sourceStream);
  10. await mergedStream.remove(sourceStream);
  11. const error = new Error('Pipe canceled by `unpipeSignal` option.');
  12. throw createNonCommandError({
  13. error,
  14. fileDescriptors,
  15. sourceOptions,
  16. startTime,
  17. });
  18. };