ubus
Version:
Micro message bus for the browser.
1 lines • 2.33 kB
JavaScript
;function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),Bus=exports.Bus=function(){function e(){_classCallCheck(this,e),this._q=new Set}return _createClass(e,[{key:"emit",value:function(e,t){if(!e)throw new TypeError(this._invalidTokenMessage("emit"));var n=!0,r=!1,o=void 0;try{for(var i,a=this._q[Symbol.iterator]();!(n=(i=a.next()).done);n=!0){var l=i.value;if(l.token===e&&(l.cb(t),l.once)){this._q.delete(l);break}}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}}},{key:"on",value:function(e,t){var n=this;if(!e)throw new TypeError(this._invalidTokenMessage("on"));var r=this._genId();return this._q.add({_id:r,token:e,cb:t,once:!1,del:!1}),function(){var e=!0,t=!1,o=void 0;try{for(var i,a=n._q[Symbol.iterator]();!(e=(i=a.next()).done);e=!0){var l=i.value;if(l._id===r){n._q.delete(l);break}}}catch(e){t=!0,o=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw o}}}}},{key:"once",value:function(e,t){if(!e)throw new TypeError(this._invalidTokenMessage("once"));this._q.add({_id:this._genId(),token:e,cb:t,once:!0,del:!1})}},{key:"off",value:function(){for(var e=this,t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];"object"===("undefined"==typeof n?"undefined":_typeof(n))&&n.length&&n.forEach(function(t){var n=!0,r=!1,o=void 0;try{for(var i,a=e._q[Symbol.iterator]();!(n=(i=a.next()).done);n=!0){var l=i.value;l.token===t&&e._q.delete(l)}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}})}},{key:"_invalidTokenMessage",value:function(e){return"["+e+"] - Token not informed."}},{key:"_genId",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0,n="x"==e?t:3&t|8;return n.toString(16)})}}]),e}();