38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.proxySignals = void 0;
|
||
|
const all_signals_js_1 = require("./all-signals.js");
|
||
|
/**
|
||
|
* Starts forwarding signals to `child` through `parent`.
|
||
|
*/
|
||
|
const proxySignals = (child) => {
|
||
|
const listeners = new Map();
|
||
|
for (const sig of all_signals_js_1.allSignals) {
|
||
|
const listener = () => {
|
||
|
// some signals can only be received, not sent
|
||
|
try {
|
||
|
child.kill(sig);
|
||
|
/* c8 ignore start */
|
||
|
}
|
||
|
catch (_) { }
|
||
|
/* c8 ignore stop */
|
||
|
};
|
||
|
try {
|
||
|
// if it's a signal this system doesn't recognize, skip it
|
||
|
process.on(sig, listener);
|
||
|
listeners.set(sig, listener);
|
||
|
/* c8 ignore start */
|
||
|
}
|
||
|
catch (_) { }
|
||
|
/* c8 ignore stop */
|
||
|
}
|
||
|
const unproxy = () => {
|
||
|
for (const [sig, listener] of listeners) {
|
||
|
process.removeListener(sig, listener);
|
||
|
}
|
||
|
};
|
||
|
child.on('exit', unproxy);
|
||
|
return unproxy;
|
||
|
};
|
||
|
exports.proxySignals = proxySignals;
|
||
|
//# sourceMappingURL=proxy-signals.js.map
|