123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- import { c as commonjsGlobal } from './vendor-_commonjsHelpers.4da45ef5.mjs';
- import assert$1 from 'assert';
- import require$$2 from 'events';
- var signalExit = {exports: {}};
- var signals$1 = {exports: {}};
- var hasRequiredSignals;
- function requireSignals () {
- if (hasRequiredSignals) return signals$1.exports;
- hasRequiredSignals = 1;
- (function (module) {
- // This is not the set of all possible signals.
- //
- // It IS, however, the set of all signals that trigger
- // an exit on either Linux or BSD systems. Linux is a
- // superset of the signal names supported on BSD, and
- // the unknown signals just fail to register, so we can
- // catch that easily enough.
- //
- // Don't bother with SIGKILL. It's uncatchable, which
- // means that we can't fire any callbacks anyway.
- //
- // If a user does happen to register a handler on a non-
- // fatal signal like SIGWINCH or something, and then
- // exit, it'll end up firing `process.emit('exit')`, so
- // the handler will be fired anyway.
- //
- // SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
- // artificially, inherently leave the process in a
- // state from which it is not safe to try and enter JS
- // listeners.
- module.exports = [
- 'SIGABRT',
- 'SIGALRM',
- 'SIGHUP',
- 'SIGINT',
- 'SIGTERM'
- ];
- if (process.platform !== 'win32') {
- module.exports.push(
- 'SIGVTALRM',
- 'SIGXCPU',
- 'SIGXFSZ',
- 'SIGUSR2',
- 'SIGTRAP',
- 'SIGSYS',
- 'SIGQUIT',
- 'SIGIOT'
- // should detect profiler and enable/disable accordingly.
- // see #21
- // 'SIGPROF'
- );
- }
- if (process.platform === 'linux') {
- module.exports.push(
- 'SIGIO',
- 'SIGPOLL',
- 'SIGPWR',
- 'SIGSTKFLT',
- 'SIGUNUSED'
- );
- }
- } (signals$1));
- return signals$1.exports;
- }
- // Note: since nyc uses this module to output coverage, any lines
- // that are in the direct sync flow of nyc's outputCoverage are
- // ignored, since we can never get coverage for them.
- // grab a reference to node's real process object right away
- var process$1 = commonjsGlobal.process;
- const processOk = function (process) {
- return process &&
- typeof process === 'object' &&
- typeof process.removeListener === 'function' &&
- typeof process.emit === 'function' &&
- typeof process.reallyExit === 'function' &&
- typeof process.listeners === 'function' &&
- typeof process.kill === 'function' &&
- typeof process.pid === 'number' &&
- typeof process.on === 'function'
- };
- // some kind of non-node environment, just no-op
- /* istanbul ignore if */
- if (!processOk(process$1)) {
- signalExit.exports = function () {
- return function () {}
- };
- } else {
- var assert = assert$1;
- var signals = requireSignals();
- var isWin = /^win/i.test(process$1.platform);
- var EE = require$$2;
- /* istanbul ignore if */
- if (typeof EE !== 'function') {
- EE = EE.EventEmitter;
- }
- var emitter;
- if (process$1.__signal_exit_emitter__) {
- emitter = process$1.__signal_exit_emitter__;
- } else {
- emitter = process$1.__signal_exit_emitter__ = new EE();
- emitter.count = 0;
- emitter.emitted = {};
- }
- // Because this emitter is a global, we have to check to see if a
- // previous version of this library failed to enable infinite listeners.
- // I know what you're about to say. But literally everything about
- // signal-exit is a compromise with evil. Get used to it.
- if (!emitter.infinite) {
- emitter.setMaxListeners(Infinity);
- emitter.infinite = true;
- }
- signalExit.exports = function (cb, opts) {
- /* istanbul ignore if */
- if (!processOk(commonjsGlobal.process)) {
- return function () {}
- }
- assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler');
- if (loaded === false) {
- load();
- }
- var ev = 'exit';
- if (opts && opts.alwaysLast) {
- ev = 'afterexit';
- }
- var remove = function () {
- emitter.removeListener(ev, cb);
- if (emitter.listeners('exit').length === 0 &&
- emitter.listeners('afterexit').length === 0) {
- unload();
- }
- };
- emitter.on(ev, cb);
- return remove
- };
- var unload = function unload () {
- if (!loaded || !processOk(commonjsGlobal.process)) {
- return
- }
- loaded = false;
- signals.forEach(function (sig) {
- try {
- process$1.removeListener(sig, sigListeners[sig]);
- } catch (er) {}
- });
- process$1.emit = originalProcessEmit;
- process$1.reallyExit = originalProcessReallyExit;
- emitter.count -= 1;
- };
- signalExit.exports.unload = unload;
- var emit = function emit (event, code, signal) {
- /* istanbul ignore if */
- if (emitter.emitted[event]) {
- return
- }
- emitter.emitted[event] = true;
- emitter.emit(event, code, signal);
- };
- // { <signal>: <listener fn>, ... }
- var sigListeners = {};
- signals.forEach(function (sig) {
- sigListeners[sig] = function listener () {
- /* istanbul ignore if */
- if (!processOk(commonjsGlobal.process)) {
- return
- }
- // If there are no other listeners, an exit is coming!
- // Simplest way: remove us and then re-send the signal.
- // We know that this will kill the process, so we can
- // safely emit now.
- var listeners = process$1.listeners(sig);
- if (listeners.length === emitter.count) {
- unload();
- emit('exit', null, sig);
- /* istanbul ignore next */
- emit('afterexit', null, sig);
- /* istanbul ignore next */
- if (isWin && sig === 'SIGHUP') {
- // "SIGHUP" throws an `ENOSYS` error on Windows,
- // so use a supported signal instead
- sig = 'SIGINT';
- }
- /* istanbul ignore next */
- process$1.kill(process$1.pid, sig);
- }
- };
- });
- signalExit.exports.signals = function () {
- return signals
- };
- var loaded = false;
- var load = function load () {
- if (loaded || !processOk(commonjsGlobal.process)) {
- return
- }
- loaded = true;
- // This is the number of onSignalExit's that are in play.
- // It's important so that we can count the correct number of
- // listeners on signals, and don't wait for the other one to
- // handle it instead of us.
- emitter.count += 1;
- signals = signals.filter(function (sig) {
- try {
- process$1.on(sig, sigListeners[sig]);
- return true
- } catch (er) {
- return false
- }
- });
- process$1.emit = processEmit;
- process$1.reallyExit = processReallyExit;
- };
- signalExit.exports.load = load;
- var originalProcessReallyExit = process$1.reallyExit;
- var processReallyExit = function processReallyExit (code) {
- /* istanbul ignore if */
- if (!processOk(commonjsGlobal.process)) {
- return
- }
- process$1.exitCode = code || /* istanbul ignore next */ 0;
- emit('exit', process$1.exitCode, null);
- /* istanbul ignore next */
- emit('afterexit', process$1.exitCode, null);
- /* istanbul ignore next */
- originalProcessReallyExit.call(process$1, process$1.exitCode);
- };
- var originalProcessEmit = process$1.emit;
- var processEmit = function processEmit (ev, arg) {
- if (ev === 'exit' && processOk(commonjsGlobal.process)) {
- /* istanbul ignore else */
- if (arg !== undefined) {
- process$1.exitCode = arg;
- }
- var ret = originalProcessEmit.apply(this, arguments);
- /* istanbul ignore next */
- emit('exit', process$1.exitCode, null);
- /* istanbul ignore next */
- emit('afterexit', process$1.exitCode, null);
- /* istanbul ignore next */
- return ret
- } else {
- return originalProcessEmit.apply(this, arguments)
- }
- };
- }
- export { signalExit as s };
|