1
0
forked from jchomaz/Vulture
Files
Vulture/VApp/node_modules/concurrently/dist/src/flow-control/kill-on-signal.js

37 lines
1.2 KiB
JavaScript
Raw Normal View History

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.KillOnSignal = void 0;
const operators_1 = require("rxjs/operators");
/**
* Watches the main concurrently process for signals and sends the same signal down to each spawned
* command.
*/
class KillOnSignal {
constructor({ process }) {
this.process = process;
}
handle(commands) {
let caughtSignal;
['SIGINT', 'SIGTERM', 'SIGHUP'].forEach((signal) => {
this.process.on(signal, () => {
caughtSignal = signal;
commands.forEach((command) => command.kill(signal));
});
});
return {
commands: commands.map((command) => {
const closeStream = command.close.pipe((0, operators_1.map)((exitInfo) => {
const exitCode = caughtSignal === 'SIGINT' ? 0 : exitInfo.exitCode;
return { ...exitInfo, exitCode };
}));
return new Proxy(command, {
get(target, prop) {
return prop === 'close' ? closeStream : target[prop];
},
});
}),
};
}
}
exports.KillOnSignal = KillOnSignal;