ubus
Version:
Micro message bus for the browser.
1 lines • 2.3 kB
JavaScript
;System.register([],function(e,n){function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}var r,o,i;return{setters:[],execute:function(){r="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},o=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",i=function(){function e(){t(this,e),this._q=new Set}return o(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 u=i.value;if(u.token===e&&(u.cb(n),u.once)){this._q.delete(u);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 u=i.value;if(u._id===r){t._q.delete(u);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,t=Array(n),o=0;o<n;o++)t[o]=arguments[o];"object"===("undefined"==typeof t?"undefined":r(t))&&t.length&&t.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 u=i.value;u.token===n&&e._q.delete(u)}}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}()),e("Bus",i)}}});