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.

149 lines (133 loc) 5.1 kB
Object.defineProperty(exports, '__esModule', { value: true }); var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } 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 _utils2; function _utils() { return _utils2 = _interopRequireDefault(require('./utils')); } var _rxjsBundlesRxUmdMinJs2; function _rxjsBundlesRxUmdMinJs() { return _rxjsBundlesRxUmdMinJs2 = require('rxjs/bundles/Rx.umd.min.js'); } function createMessage(method, params) { var result = { method: method }; if (params) { result.params = params; } return result; } /** * This class provides a central callback channel to communicate with debugger client. * Currently it provides four callback channels: * 1. Chrome server messages. * 2. Atom UI notification. * 3. Chrome console user messages. * 4. Output window messages. */ var ClientCallback = (function () { // For output window messages. function ClientCallback() { _classCallCheck(this, ClientCallback); this._serverMessageObservable = new (_rxjsBundlesRxUmdMinJs2 || _rxjsBundlesRxUmdMinJs()).Subject(); this._notificationObservable = new (_rxjsBundlesRxUmdMinJs2 || _rxjsBundlesRxUmdMinJs()).Subject(); this._outputWindowObservable = new (_rxjsBundlesRxUmdMinJs2 || _rxjsBundlesRxUmdMinJs()).Subject(); } _createClass(ClientCallback, [{ key: 'getNotificationObservable', value: function getNotificationObservable() { return this._notificationObservable; } }, { key: 'getServerMessageObservable', value: function getServerMessageObservable() { return this._serverMessageObservable; } }, { key: 'getOutputWindowObservable', value: function getOutputWindowObservable() { return this._outputWindowObservable; } }, { key: 'sendUserMessage', value: function sendUserMessage(type, message) { (_utils2 || _utils()).default.log('sendUserMessage(' + type + '): ' + JSON.stringify(message)); switch (type) { case 'notification': this._notificationObservable.next({ type: message.type, message: message.message }); break; case 'console': this.sendMethod(this._serverMessageObservable, 'Console.messageAdded', { message: message }); break; case 'outputWindow': this.sendMethod(this._outputWindowObservable, 'Console.messageAdded', { message: message }); break; default: (_utils2 || _utils()).default.logError('Unknown UserMessageType: ' + type); } } }, { key: 'unknownMethod', value: function unknownMethod(id, domain, method, params) { var message = 'Unknown chrome dev tools method: ' + domain + '.' + method; (_utils2 || _utils()).default.log(message); this.replyWithError(id, message); } }, { key: 'replyWithError', value: function replyWithError(id, error) { this.replyToCommand(id, {}, error); } }, { key: 'replyToCommand', value: function replyToCommand(id, result, error) { var value = { id: id, result: result }; if (error != null) { value.error = error; } else if (result.error != null) { value.error = result.error; } this._sendJsonObject(this._serverMessageObservable, value); } }, { key: 'sendMethod', value: function sendMethod(observable, method, params) { this._sendJsonObject(observable, createMessage(method, params)); } }, { key: '_sendJsonObject', value: function _sendJsonObject(observable, value) { var message = JSON.stringify(value); (_utils2 || _utils()).default.log('Sending JSON: ' + message); observable.next(message); } }, { key: 'dispose', value: function dispose() { (_utils2 || _utils()).default.log('Called ClientCallback dispose method.'); this._notificationObservable.complete(); this._serverMessageObservable.complete(); this._outputWindowObservable.complete(); } }]); return ClientCallback; })(); exports.ClientCallback = ClientCallback; // For server messages. // For atom UI notifications.