aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/concurrently/dist/src/flow-control/kill-on-signal.js
blob: 716a9bf620cf5aeb2eef0a8c3563c80bbe281493 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"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;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage