@spindox/venice
Version:
An abstraction layer on top of js-channel instance.
1 lines • 2.27 kB
JavaScript
;var _createClass=function(){function a(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,c.key,c)}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),_jsChannel=require('js-channel'),_jsChannel2=_interopRequireDefault(_jsChannel);Object.defineProperty(exports,'__esModule',{value:!0}),exports.Venice=exports.VeniceChannel=void 0;function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError('Cannot call a class as a function')}var VeniceChannel=function(){function a(b,c){_classCallCheck(this,a);var d=Object.assign({},{window:window.parent,origin:'*',scope:b},c);this.inner=_jsChannel2.default.build(d)}return _createClass(a,[{key:'publish',value:function publish(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:function(){};this.inner.call({method:a,params:b,success:function success(a){return c(null,a)},error:function error(a){return c(a)}})}},{key:'subscribe',value:function subscribe(a,b){this.inner.bind(a,function(a,c){return b(c,a)})}},{key:'unsubscribe',value:function unsubscribe(a){this.inner.unbind(a)}},{key:'disconnect',value:function disconnect(){this.inner.destroy()}}]),a}(),Venice=function(){function a(){_classCallCheck(this,a),this.channels={}}return _createClass(a,[{key:'channel',value:function(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;if(!b){var d=this.channels[a];return d?d:(console.error('Channel '+a+' not found!'),null)}if(this.channels[a])return console.error('Channel '+a+' already exists!'),null;var c=new VeniceChannel(a,b);return this.channels[a]=c,c}},{key:'publish',value:function publish(a){var b=this.channel(a.channel);b&&b.publish(a.topic,a.data,a.callback)}},{key:'subscribe',value:function subscribe(a){var b=this.channel(a.channel);b&&b.subscribe(a.topic,a.handler)}},{key:'unsubscribe',value:function unsubscribe(a){var b=this.channel(a.channel);b&&b.unsubscribe(a.topic)}},{key:'disconnect',value:function disconnect(a){var b=this.channel(a);b&&b.disconnect(),delete this.channels[a]}}]),a}();exports.default=new Venice,exports.VeniceChannel=VeniceChannel,exports.Venice=Venice;