UNPKG

atom-nuclide

Version:

A unified developer experience for web and mobile development, built as a suite of features on top of Atom to provide hackability and the support of an active community.

121 lines (95 loc) 4.13 kB
Object.defineProperty(exports, '__esModule', { value: true }); var main = _asyncToGenerator(function* (args) { var serverStartTimer = (0, (_nuclideAnalytics2 || _nuclideAnalytics()).startTracking)('nuclide-server:start'); process.on('SIGHUP', function () {}); try { var port = args.port; var _key = args.key; var _cert = args.cert; var _ca = args.ca; if (_key && _cert && _ca) { _key = (_fs2 || _fs()).default.readFileSync(_key); _cert = (_fs2 || _fs()).default.readFileSync(_cert); _ca = (_fs2 || _fs()).default.readFileSync(_ca); } var server = new (_NuclideServer2 || _NuclideServer()).default({ port: port, serverKey: _key, serverCertificate: _cert, certificateAuthorityCertificate: _ca, trackEventLoop: true }, (_servicesConfig2 || _servicesConfig()).default); yield server.connect(); serverStartTimer.onSuccess(); logger.info('NuclideServer started on port ' + port + '.'); logger.info('Using node ' + process.version + '.'); logger.info('Server ready time: ' + process.uptime() * 1000 + 'ms'); } catch (e) { // Ensure logging is configured. yield (0, (_nuclideLogging2 || _nuclideLogging()).initialUpdateConfig)(); yield serverStartTimer.onError(e); logger.fatal(e); (0, (_nuclideLogging2 || _nuclideLogging()).flushLogsAndAbort)(); } } // This should never happen because the server must be started with stderr redirected to a log file. ); function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { var callNext = step.bind(null, 'next'); var callThrow = step.bind(null, 'throw'); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(callNext, callThrow); } } callNext(); }); }; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } /* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the license found in the LICENSE file in * the root directory of this source tree. */ var _fs2; function _fs() { return _fs2 = _interopRequireDefault(require('fs')); } var _nuclideLogging2; function _nuclideLogging() { return _nuclideLogging2 = require('../../nuclide-logging'); } var _nuclideAnalytics2; function _nuclideAnalytics() { return _nuclideAnalytics2 = require('../../nuclide-analytics'); } var _NuclideServer2; function _NuclideServer() { return _NuclideServer2 = _interopRequireDefault(require('./NuclideServer')); } var _servicesConfig2; function _servicesConfig() { return _servicesConfig2 = _interopRequireDefault(require('./servicesConfig')); } var _yargs2; function _yargs() { return _yargs2 = _interopRequireDefault(require('yargs')); } var DEFAULT_PORT = 9090; var logger = (0, (_nuclideLogging2 || _nuclideLogging()).getLogger)(); process.stderr.on('error', function (error) { throw new Error('Can not write to stderr! :' + error); }); process.on('uncaughtException', function (err) { // Log the error and continue the server crash. logger.fatal('uncaughtException:', err); // According to the docs, we need to close our server when this happens once we logged or // handled it: https://nodejs.org/api/process.html#process_event_uncaughtexception (0, (_nuclideLogging2 || _nuclideLogging()).flushLogsAndAbort)(); }); // This works in io.js as of v2.4.0 (possibly earlier versions, as well). Support for this was // introduced by https://github.com/nodejs/io.js/pull/758 in io.js. // // Unfortunately, the analogous change was rejected in Node v0.12.x: // https://github.com/joyent/node/issues/8997. // // We include this code here in anticipation of the Node/io.js merger. process.on('unhandledRejection', function (error, promise) { logger.error('Unhandled promise rejection ' + promise + '. Error:', error); }); var argv = (_yargs2 || _yargs()).default.default('port', DEFAULT_PORT).argv; main(argv);