output-error-handler.js 980 B

123456789101112131415161718192021222324252627
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.OutputErrorHandler = void 0;
  4. const observables_1 = require("../observables");
  5. /**
  6. * Kills processes and aborts further command spawning on output stream error (namely, SIGPIPE).
  7. */
  8. class OutputErrorHandler {
  9. outputStream;
  10. abortController;
  11. constructor({ abortController, outputStream, }) {
  12. this.abortController = abortController;
  13. this.outputStream = outputStream;
  14. }
  15. handle(commands) {
  16. const subscription = (0, observables_1.fromSharedEvent)(this.outputStream, 'error').subscribe(() => {
  17. commands.forEach((command) => command.kill());
  18. // Avoid further commands from spawning, e.g. if `RestartProcess` is used.
  19. this.abortController.abort();
  20. });
  21. return {
  22. commands,
  23. onFinish: () => subscription.unsubscribe(),
  24. };
  25. }
  26. }
  27. exports.OutputErrorHandler = OutputErrorHandler;