reactotron-react-native
Version:
A development tool to explore, inspect, and diagnose your React Native apps.
2 lines (1 loc) • 2.85 kB
JavaScript
;var reactNativeFlipper=require("react-native-flipper");function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPrimitive(a,b){if("object"!=typeof a||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}var ConnectionManager=function(){function a(b){_classCallCheck(this,a),this.webSocket=new WebSocket(b)}return _createClass(a,[{key:"send",value:function(a){1===this.webSocket.readyState&&this.webSocket.send(a)}},{key:"on",value:function(a,b){"open"===a?this.webSocket.onopen=b:"message"==a&&(this.webSocket.onmessage=function(a){return b(a.data)})}},{key:"close",value:function(){this.webSocket.close()}}]),a}(),FlipperConnectionManager=function(){function a(b){var c=this;_classCallCheck(this,a),_defineProperty(this,"openCallbacks",[]),_defineProperty(this,"closeCallbacks",[]),_defineProperty(this,"messageCallbacks",[]),_defineProperty(this,"handleConnect",function(a){c.flipperConnection=a,a.receive("sendReactotronCommand",function(a,b){c.handleMessage(a),b.success()}),c.openCallbacks.forEach(function(a){return a()})}),_defineProperty(this,"handleMessage",function(a){c.messageCallbacks.forEach(function(b){return b(a)})}),_defineProperty(this,"handleDisconnect",function(){c.flipperConnection=null,c.closeCallbacks.forEach(function(a){return a()})}),this.baseConnectionManager=new ConnectionManager(b),reactNativeFlipper.addPlugin({getId:function(){return"flipper-plugin-reactotron"},onConnect:this.handleConnect,onDisconnect:this.handleDisconnect,runInBackground:function(){return!0}})}return _createClass(a,[{key:"send",value:function(a){this.baseConnectionManager.send(a),this.flipperConnection&&this.flipperConnection.send("Command",JSON.parse(a))}},{key:"on",value:function(a,b){this.baseConnectionManager.on(a,b),"open"===a?(this.flipperConnection&&b(),this.openCallbacks.push(b)):"close"===a?this.closeCallbacks.push(b):"message"===a?this.messageCallbacks.push(b):void 0}},{key:"close",value:function(){this.baseConnectionManager.close()}}]),a}();module.exports=FlipperConnectionManager;