UNPKG

3.97 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const utils_1 = require("@neo-one/utils");
5const is_running_1 = tslib_1.__importDefault(require("is-running"));
6const errors_1 = require("./errors");
7exports.killProcess = async (pid) => {
8 const startTime = utils_1.utils.nowSeconds();
9 let alive = is_running_1.default(pid);
10 if (!alive) {
11 return;
12 }
13 // tslint:disable-next-line no-loop-statement
14 while (utils_1.utils.nowSeconds() - startTime <= 10) {
15 try {
16 let signal = 'SIGINT';
17 if (utils_1.utils.nowSeconds() - startTime > 7) {
18 signal = 'SIGKILL';
19 }
20 else if (utils_1.utils.nowSeconds() - startTime > 5) {
21 signal = 'SIGTERM';
22 }
23 process.kill(pid, signal);
24 }
25 catch (error) {
26 if (error.code === 'ESRCH') {
27 return;
28 }
29 throw error;
30 }
31 await new Promise((resolve) => setTimeout(resolve, 200));
32 alive = is_running_1.default(pid);
33 if (!alive) {
34 return;
35 }
36 }
37 throw new errors_1.FailedToKillProcessError(pid);
38};
39
40//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtpbGxQcm9jZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUF1QztBQUN2QyxvRUFBbUM7QUFDbkMscUNBQW9EO0FBRXZDLFFBQUEsV0FBVyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQWlCLEVBQUU7SUFDOUQsTUFBTSxTQUFTLEdBQUcsYUFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLElBQUksS0FBSyxHQUFHLG9CQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU87S0FDUjtJQUVELDZDQUE2QztJQUM3QyxPQUFPLGFBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxTQUFTLElBQUksRUFBRSxFQUFFO1FBQzNDLElBQUk7WUFDRixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDdEIsSUFBSSxhQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxHQUFHLFNBQVMsQ0FBQzthQUNwQjtpQkFBTSxJQUFJLGFBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEdBQUcsU0FBUyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDM0I7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQzFCLE9BQU87YUFDUjtZQUVELE1BQU0sS0FBSyxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsS0FBSyxHQUFHLG9CQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU87U0FDUjtLQUNGO0lBRUQsTUFBTSxJQUFJLGlDQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLXNlcnZlci1wbHVnaW4vc3JjL2tpbGxQcm9jZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbHMgfSBmcm9tICdAbmVvLW9uZS91dGlscyc7XG5pbXBvcnQgaXNSdW5uaW5nIGZyb20gJ2lzLXJ1bm5pbmcnO1xuaW1wb3J0IHsgRmFpbGVkVG9LaWxsUHJvY2Vzc0Vycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG5leHBvcnQgY29uc3Qga2lsbFByb2Nlc3MgPSBhc3luYyAocGlkOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gdXRpbHMubm93U2Vjb25kcygpO1xuICBsZXQgYWxpdmUgPSBpc1J1bm5pbmcocGlkKTtcbiAgaWYgKCFhbGl2ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1sb29wLXN0YXRlbWVudFxuICB3aGlsZSAodXRpbHMubm93U2Vjb25kcygpIC0gc3RhcnRUaW1lIDw9IDEwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBzaWduYWwgPSAnU0lHSU5UJztcbiAgICAgIGlmICh1dGlscy5ub3dTZWNvbmRzKCkgLSBzdGFydFRpbWUgPiA3KSB7XG4gICAgICAgIHNpZ25hbCA9ICdTSUdLSUxMJztcbiAgICAgIH0gZWxzZSBpZiAodXRpbHMubm93U2Vjb25kcygpIC0gc3RhcnRUaW1lID4gNSkge1xuICAgICAgICBzaWduYWwgPSAnU0lHVEVSTSc7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLmtpbGwocGlkLCBzaWduYWwpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VTUkNIJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAyMDApKTtcbiAgICBhbGl2ZSA9IGlzUnVubmluZyhwaWQpO1xuICAgIGlmICghYWxpdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRmFpbGVkVG9LaWxsUHJvY2Vzc0Vycm9yKHBpZCk7XG59O1xuIl19