"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.installExitHooks = installExitHooks;

function _chalk() {
  const data = _interopRequireDefault(require("chalk"));

  _chalk = function () {
    return data;
  };

  return data;
}

function _xdl() {
  const data = require("@expo/xdl");

  _xdl = function () {
    return data;
  };

  return data;
}

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function installExitHooks(projectDir, onStop = _xdl().Project.stopAsync) {
  // install ctrl+c handler that writes non-running state to directory
  if (process.platform === 'win32') {
    require('readline').createInterface({
      input: process.stdin,
      output: process.stdout
    }).on('SIGINT', () => {
      process.kill(process.pid, 'SIGINT');
    });
  }

  const killSignals = ['SIGINT', 'SIGTERM'];

  for (const signal of killSignals) {
    process.on(signal, () => {
      console.log(_chalk().default.blue('\nStopping packager...'));
      onStop(projectDir).then(() => {
        console.log(_chalk().default.green('Packager stopped.'));
        process.exit();
      });
    });
  }
}
//# sourceMappingURL=__sourcemaps__/exit.js.map