Sha256: c68716fbbbbfa94057f450b4e3b4635b0b426424dae4e9de0f701d8c92dd0229
Contents?: true
Size: 1.19 KB
Versions: 33
Compression:
Stored size: 1.19 KB
Contents
const runningProcs = new Set() let handlersInstalled = false // NOTE: these signals aren't actually forwarded anywhere. they're trapped and // ignored until all child processes have exited. in our next breaking change // we should rename this const forwardedSignals = [ 'SIGINT', 'SIGTERM', ] // no-op, this is so receiving the signal doesn't cause us to exit immediately // instead, we exit after all children have exited when we re-send the signal // to ourselves. see the catch handler at the bottom of run-script-pkg.js // istanbul ignore next - this function does nothing const handleSignal = () => {} const setupListeners = () => { for (const signal of forwardedSignals) { process.on(signal, handleSignal) } handlersInstalled = true } const cleanupListeners = () => { if (runningProcs.size === 0) { for (const signal of forwardedSignals) { process.removeListener(signal, handleSignal) } handlersInstalled = false } } const add = proc => { runningProcs.add(proc) if (!handlersInstalled) { setupListeners() } proc.once('exit', () => { runningProcs.delete(proc) cleanupListeners() }) } module.exports = { add, handleSignal, forwardedSignals, }
Version data entries
33 entries across 33 versions & 1 rubygems