UNPKG

@neo-one/server-plugin

Version:

NEO•ONE Server plugin API.

40 lines (38 loc) 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const utils_1 = require("@neo-one/utils"); const is_running_1 = tslib_1.__importDefault(require("is-running")); const errors_1 = require("./errors"); exports.killProcess = async (pid) => { const startTime = utils_1.utils.nowSeconds(); let alive = is_running_1.default(pid); if (!alive) { return; } while (utils_1.utils.nowSeconds() - startTime <= 10) { try { let signal = 'SIGINT'; if (utils_1.utils.nowSeconds() - startTime > 7) { signal = 'SIGKILL'; } else if (utils_1.utils.nowSeconds() - startTime > 5) { signal = 'SIGTERM'; } process.kill(pid, signal); } catch (error) { if (error.code === 'ESRCH') { return; } throw error; } await new Promise((resolve) => setTimeout(resolve, 200)); alive = is_running_1.default(pid); if (!alive) { return; } } throw new errors_1.FailedToKillProcessError(pid); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtpbGxQcm9jZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUF1QztBQUN2QyxvRUFBbUM7QUFDbkMscUNBQW9EO0FBRXZDLFFBQUEsV0FBVyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQWlCLEVBQUU7SUFDOUQsTUFBTSxTQUFTLEdBQUcsYUFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLElBQUksS0FBSyxHQUFHLG9CQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU87S0FDUjtJQUdELE9BQU8sYUFBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsSUFBSSxFQUFFLEVBQUU7UUFDM0MsSUFBSTtZQUNGLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztZQUN0QixJQUFJLGFBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEdBQUcsU0FBUyxDQUFDO2FBQ3BCO2lCQUFNLElBQUksYUFBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sR0FBRyxTQUFTLENBQUM7YUFDcEI7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMzQjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDMUIsT0FBTzthQUNSO1lBRUQsTUFBTSxLQUFLLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTztTQUNSO0tBQ0Y7SUFFRCxNQUFNLElBQUksaUNBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtc2VydmVyLXBsdWdpbi9zcmMva2lsbFByb2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcbmltcG9ydCBpc1J1bm5pbmcgZnJvbSAnaXMtcnVubmluZyc7XG5pbXBvcnQgeyBGYWlsZWRUb0tpbGxQcm9jZXNzRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBraWxsUHJvY2VzcyA9IGFzeW5jIChwaWQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBzdGFydFRpbWUgPSB1dGlscy5ub3dTZWNvbmRzKCk7XG4gIGxldCBhbGl2ZSA9IGlzUnVubmluZyhwaWQpO1xuICBpZiAoIWFsaXZlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3Atc3RhdGVtZW50XG4gIHdoaWxlICh1dGlscy5ub3dTZWNvbmRzKCkgLSBzdGFydFRpbWUgPD0gMTApIHtcbiAgICB0cnkge1xuICAgICAgbGV0IHNpZ25hbCA9ICdTSUdJTlQnO1xuICAgICAgaWYgKHV0aWxzLm5vd1NlY29uZHMoKSAtIHN0YXJ0VGltZSA+IDcpIHtcbiAgICAgICAgc2lnbmFsID0gJ1NJR0tJTEwnO1xuICAgICAgfSBlbHNlIGlmICh1dGlscy5ub3dTZWNvbmRzKCkgLSBzdGFydFRpbWUgPiA1KSB7XG4gICAgICAgIHNpZ25hbCA9ICdTSUdURVJNJztcbiAgICAgIH1cbiAgICAgIHByb2Nlc3Mua2lsbChwaWQsIHNpZ25hbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5jb2RlID09PSAnRVNSQ0gnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDIwMCkpO1xuICAgIGFsaXZlID0gaXNSdW5uaW5nKHBpZCk7XG4gICAgaWYgKCFhbGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBGYWlsZWRUb0tpbGxQcm9jZXNzRXJyb3IocGlkKTtcbn07XG4iXX0=