ubus
Version:
Micro message bus for the browser.
1 lines • 2.46 kB
JavaScript
!function(e,n){if("function"==typeof define&&define.amd)define(["exports"],n);else if("undefined"!=typeof exports)n(exports);else{var t={exports:{}};n(t.exports),e.bus=t.exports}}(this,function(e){"use strict";function n(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var t="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},r=function(){function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(n,t,r){return t&&e(n.prototype,t),r&&e(n,r),n}}();e.Bus=function(){function e(){n(this,e),this._q=new Set}return r(e,[{key:"emit",value:function(e,n){if(!e)throw new TypeError(this._invalidTokenMessage("emit"));var t=!0,r=!1,o=void 0;try{for(var i,a=this._q[Symbol.iterator]();!(t=(i=a.next()).done);t=!0){var f=i.value;if(f.token===e&&(f.cb(n),f.once)){this._q.delete(f);break}}}catch(e){r=!0,o=e}finally{try{!t&&a.return&&a.return()}finally{if(r)throw o}}}},{key:"on",value:function(e,n){var t=this;if(!e)throw new TypeError(this._invalidTokenMessage("on"));var r=this._genId();return this._q.add({_id:r,token:e,cb:n,once:!1,del:!1}),function(){var e=!0,n=!1,o=void 0;try{for(var i,a=t._q[Symbol.iterator]();!(e=(i=a.next()).done);e=!0){var f=i.value;if(f._id===r){t._q.delete(f);break}}}catch(e){n=!0,o=e}finally{try{!e&&a.return&&a.return()}finally{if(n)throw o}}}}},{key:"once",value:function(e,n){if(!e)throw new TypeError(this._invalidTokenMessage("once"));this._q.add({_id:this._genId(),token:e,cb:n,once:!0,del:!1})}},{key:"off",value:function(){for(var e=this,n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=arguments[o];"object"===("undefined"==typeof r?"undefined":t(r))&&r.length&&r.forEach(function(n){var t=!0,r=!1,o=void 0;try{for(var i,a=e._q[Symbol.iterator]();!(t=(i=a.next()).done);t=!0){var f=i.value;f.token===n&&e._q.delete(f)}}catch(e){r=!0,o=e}finally{try{!t&&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 n=16*Math.random()|0,t="x"==e?n:3&n|8;return t.toString(16)})}}]),e}()});