aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/concurrently/dist/src/flow-control/kill-others.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/concurrently/dist/src/flow-control/kill-others.js')
-rw-r--r--node_modules/concurrently/dist/src/flow-control/kill-others.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/node_modules/concurrently/dist/src/flow-control/kill-others.js b/node_modules/concurrently/dist/src/flow-control/kill-others.js
new file mode 100644
index 0000000..1751677
--- /dev/null
+++ b/node_modules/concurrently/dist/src/flow-control/kill-others.js
@@ -0,0 +1,35 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.KillOthers = void 0;
+const lodash_1 = __importDefault(require("lodash"));
+const operators_1 = require("rxjs/operators");
+const command_1 = require("../command");
+/**
+ * Sends a SIGTERM signal to all commands when one of the commands exits with a matching condition.
+ */
+class KillOthers {
+ constructor({ logger, conditions, killSignal, }) {
+ this.logger = logger;
+ this.conditions = lodash_1.default.castArray(conditions);
+ this.killSignal = killSignal;
+ }
+ handle(commands) {
+ const conditions = this.conditions.filter((condition) => condition === 'failure' || condition === 'success');
+ if (!conditions.length) {
+ return { commands };
+ }
+ const closeStates = commands.map((command) => command.close.pipe((0, operators_1.map)(({ exitCode }) => exitCode === 0 ? 'success' : 'failure'), (0, operators_1.filter)((state) => conditions.includes(state))));
+ closeStates.forEach((closeState) => closeState.subscribe(() => {
+ const killableCommands = commands.filter((command) => command_1.Command.canKill(command));
+ if (killableCommands.length) {
+ this.logger.logGlobalEvent(`Sending ${this.killSignal || 'SIGTERM'} to other processes..`);
+ killableCommands.forEach((command) => command.kill(this.killSignal));
+ }
+ }));
+ return { commands };
+ }
+}
+exports.KillOthers = KillOthers;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage