chronosjs
Version:
JS Channels Mechanism
1 lines • 5.98 kB
JavaScript
!function(a,b){"use strict";if("function"==typeof define&&define.amd)define("Chronos.EventsUtil",[],function(){return b(a,a,!0)});else if("object"==typeof exports)b(a,exports);else{a.Chronos=a.Chronos||{};b(a,a.Chronos)}}("undefined"==typeof ChronosRoot?this:ChronosRoot,function(a,b,c){"use strict";function d(a,b,c){var d=[];if(a[b]&&a[b].length)for(var e=0;e<a[b].length;e++)c&&"*"!==a[b][e].appName&&a[b][e].appName!==c||d.push(a[b][e]);if(a["*"])for(var f=0;f<a["*"].length;f++)c&&"*"!==a["*"][f].appName&&a["*"][f].appName!==c||d.push(a["*"][f]);return d}function e(b,c,d){a&&"function"==typeof a.log&&a.log(b,c,d)}function f(a){var b,c=a.unbindObj[a.attrName],d=!1;if(!a.unbindObj){e("CMD listen id not spec for unbind","ERROR",a.loggerName);return null}if("string"==typeof a.unbindObj)return j(a.lstnrs,a.unbindObj);if(!a.unbindObj.func&&!a.unbindObj.context&&!a.unbindObj.appName)return!1;var f=a.lstnrs;if(c){f={};f[c]=a.lstnrs[c]}for(var g in f)if(f.hasOwnProperty(g)&&f[g]&&f[g].length){b=k(f[g],a.unbindObj.func,a.unbindObj.context,a.unbindObj.appName);if(b.length!==f[g].length){a.lstnrs[g]=b;d=!0}}return d}function g(a){var b={};if(a.constructor===Object)for(var c in a)a.hasOwnProperty(c)&&null!==a[c]&&void 0!==a[c]&&("object"==typeof a[c]&&a[c].constructor!==Array?b[c]=g(a[c]):a[c].constructor===Array?b[c]=a[c].slice(0)||[]:"function"!=typeof a[c]&&(b[c]=null!==a[c]&&void 0!==a[c]?a[c]:""));else a.constructor===Array?b=a.slice(0)||[]:"function"!=typeof a&&(b=a);return b}function h(a,b,c){if((void 0===c||"*"===c)&&"*"===b)return a;for(var d=[],e=0;e<a.length;e++)a[e].eventName!==c&&"*"!==c||(b&&b===a[e].appName||!a[e].appName||"*"===a[e].appName||"*"===b)&&d.push(a[e]);return d}function i(a){if(0===a.eventBufferLimit||a.triggerData.data&&a.triggerData.data.doNotStore)a=null;else{var b={eventName:a.triggerData[a.attrName],appName:a.triggerData.appName};b.data=a.triggerData.passDataByRef?a.triggerData.data:g(a.triggerData.data);if(a.eventBufferLimit>0){a.index>=a.eventBufferLimit&&(a.index=0);a.fired[a.index]=b;a.index++}else a.fired.push(b);a=null}}function j(a,b){var c=!1;if(!b){e("Ev listen id not spec for unregister","ERROR","Events");return null}for(var d in a)if(a.hasOwnProperty(d))for(var f=0;f<a[d].length;f++)if(a[d][f].id==b){a[d].splice(f,1);e("Ev listen="+b+" and name="+d+" unregister","DEBUG","Events");c=!0;break}c||e("Ev listen not found "+b+" unregister","DEBUG","Events");return c}function k(a,b,c,d){var f=[];if(a&&a.length)for(var g=0;g<a.length;g++)try{var h=!c&&a[g].func===b,i=!b&&c&&a[g].context===c,j=b&&c&&a[g].func===b&&a[g].context===c,k=d&&d===a[g].appName,l="*"===a[g].appName;if(h||i||j){if(k||l)continue;if(i)continue}else if(!b&&!c&&k)continue;f.push(a[g])}catch(a){e("Error in unbind e="+a.message,"ERROR","Events")}return f}var l={getListeners:d,log:e,unbind:f,hasFired:h,cloneEventData:g,storeEventData:i};c||(b.EventsUtil=b.EventsUtil||l);return l});!function(a,b){"use strict";if("function"==typeof define&&define.amd)define("Chronos.CommandsUtil",["Chronos.EventsUtil"],function(c){return b(a,a,c,!0)});else if("object"==typeof exports)b(a,exports,require("./EventsUtil").EventsUtil);else{a.Chronos=a.Chronos||{};b(a,a.Chronos,a.Chronos.EventsUtil)}}("undefined"==typeof ChronosRoot?this:ChronosRoot,function(a,b,c,d){"use strict";function e(a){var b=a.cmd[a.attrName];if(!b||!a.cmd.func||"function"!=typeof a.cmd.func||!f(a.cmd,b)){c.log("comply: has invalid params: command=["+b+"]","ERROR",a.loggerName);return null}if(a.lstnrs[b]&&a.lstnrs[b].length){c.log("comply: cannot comply because command already exist command="+b,"ERROR",a.loggerName);return null}var d=a.prefix+a.id++,e={id:d,func:a.cmd.func,context:a.cmd.context||null,appName:a.cmd.appName};a.lstnrs[b]=a.lstnrs[b]||[];a.lstnrs[b].push(e);c.log("Cmd comply: evName=["+b+"] appName="+e.appName,"DEBUG",a.loggerName);return d}function f(a,b){return!(b&&"*"===b||a.appName&&"*"===a.appName)}var g={bind:e,valid:f};d||(b.CommandsUtil=b.CommandsUtil||g);return g});!function(a,b){"use strict";if("function"==typeof define&&define.amd)define("Chronos.Reqres",["Chronos.EventsUtil","Chronos.CommandsUtil"],function(c,d){return b(a,a,c,d,!0)});else if("object"==typeof exports)b(a,exports,require("./util/EventsUtil").EventsUtil,require("./util/CommandsUtil").CommandsUtil);else{a.Chronos=a.Chronos||{};b(a,a.Chronos,a.Chronos.EventsUtil,a.Chronos.CommandsUtil)}}("undefined"==typeof ChronosRoot?this:ChronosRoot,function(a,b,c,d,e){function f(a){function b(a){"*"!==k&&(a.appName=a.appName||k);return d.bind({cmd:a,attrName:m,loggerName:l,prefix:q,id:n,lstnrs:o})}function e(a){"*"!==k&&(a.appName=a.appName||k);return c.unbind({unbindObj:a,attrName:m,loggerName:l,lstnrs:o})}function f(a,b){if(void 0===b){b=a;a=k}return c.hasFired(p,a,b)}function g(a,b){var e;if(!a||void 0===a.reqName||!d.valid(a,a.reqName)){c.log("request: name not spec for command","ERROR","ReqRes");throw new Error("Invalid request object")}"*"!==k&&(a.appName=a.appName||k);a.passDataByRef=a.passDataByRef||!i;h(a);if(!o[a.reqName])return e;var f=c.getListeners(o,a.reqName,a.appName);if(f.length>0)for(var g=0;g<f.length;g++){var j=a.passDataByRef?a.data:c.cloneEventData(a.data),l={appName:a.appName,reqName:a.reqName},m=f[g];try{e="function"==typeof b?m.func.call(m.context,j,b):m.func.call(m.context,j);j=null;m=null}catch(a){if("function"==typeof b)try{b(a)}catch(a){c.log("Error executing callback on error, "+l.reqName+" requestId: "+m.id+"e="+a.message,"ERROR","ReqRes")}c.log("Error executing "+l.reqName+" requestId: "+m.id+"e="+a.message,"ERROR","ReqRes")}}return e}function h(a){c.storeEventData({triggerData:a,eventBufferLimit:j,attrName:m,fired:p,index:r})}var i,j,k,l="ReqRes",m="reqName",n=0,o={},p=[],q="reqId_",r=0;k=a&&a.appName||"*";i=!(!a||"boolean"!=typeof a.cloneEventData)&&a.cloneEventData;j=a&&!isNaN(a.eventBufferLimit)?a.eventBufferLimit:-1;this.hasFired=f;this.request=g;this.reply=b;this.stopReplying=e}e||(b.ReqRes=b.ReqRes||f);return f});