chronosjs
Version:
JS Channels Mechanism
1 lines • 12.2 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.Events",["Chronos.EventsUtil"],function(c){return b(a,a,c,!0)});else if("object"==typeof exports)b(a,exports,require("./util/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){function b(a){if(a){a.triggerOnce=!0;return d(a)}return null}function d(a,b,e){var f=a;"string"==typeof a&&(f={appName:a,eventName:b,func:e});f.appName=f.appName||l;"*"!==l&&("string"!=typeof a||"function"!=typeof b&&void 0!==b||(f.eventName=a));if(!f.eventName||!f.func||"function"!=typeof f.func&&f.func.constructor!==Array){c.log("Ev listen has invalid params: evName=["+f.eventName+"]","ERROR","Events");return null}if(f.func.constructor===Array){for(var g,h,i=[],j=0;j<f.func.length;j++){g=c.cloneEventData(f);g.func=f.func[j];h=d(g);i.push(h)}return i}var k=r+o++,m={id:k,func:f.func,context:f.context||null,aSync:!!f.aSync,appName:f.appName,triggerOnce:f.triggerOnce||!1};p[f.eventName]=p[f.eventName]||[];p[f.eventName].push(m);c.log("Ev listen rgstr: evName=["+f.eventName+"] aSync="+m.aSync+" appName="+m.name,"DEBUG","Events");f=null;a=null;return k}function e(a){"*"!==l&&(a.appName=a.appName||l);return c.unbind({unbindObj:a,attrName:n,loggerName:m,lstnrs:p})}function f(a,b){if(void 0===b){b=a;a=l}return c.hasFired(q,a,b)}function g(a,b,d){var e=a;"string"==typeof a&&(e={eventName:b,appName:a,data:d});if("*"!==l){e.appName=e.appName||l;"string"!=typeof a||"object"!=typeof b&&void 0!==b||(e.eventName=a)}if(!e||void 0===e.eventName){c.log("Ev name not spec for publish","ERROR","Events");e=null;return null}e.passDataByRef=e.passDataByRef||!j;i(e);var f=c.getListeners(p,e.eventName,e.appName);if(f.length>0)for(var g=0;g<f.length;g++){var k=e.passDataByRef?e.data:c.cloneEventData(e.data),m={appName:e.appName,eventName:e.eventName},n=f[g];n.aSync||k&&k.aSync?setTimeout(h(n,k,m),0):h(n,k,m)()}e=null;return f.length>0}function h(a,b,d){return function(){try{a.func.call(a.context,b,d);b=null;a.triggerOnce&&e(a);a=null}catch(b){c.log("Error executing "+d.eventName+" eventId: "+a.id+"e="+b.message,"ERROR","Events")}}}function i(a){c.storeEventData({triggerData:a,eventBufferLimit:k,attrName:n,fired:q,index:s})}var j,k,l,m="Events",n="eventName",o=0,p={},q=[],r="evId_",s=0;l=a&&a.appName||"*";j=!(!a||"boolean"!=typeof a.cloneEventData)&&a.cloneEventData;k=a&&!isNaN(a.eventBufferLimit)?a.eventBufferLimit:-1;this.once=b;this.hasFired=f;this.trigger=g;this.publish=g;this.bind=d;this.register=d;this.unbind=e;this.unregister=e}d||(b.Events=b.Events||e);return e});!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.Commands",["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){"use strict";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){if(!a||void 0===a.cmdName||!d.valid(a,a.cmdName)){c.log("CMD name not spec for command","ERROR","Commands");return null}"*"!==k&&(a.appName=a.appName||k);a.passDataByRef=a.passDataByRef||!i;h(a);if(!o[a.cmdName])return!1;var e=c.getListeners(o,a.cmdName,a.appName);if(e.length>0)for(var f=0;f<e.length;f++){var g=a.passDataByRef?a.data:c.cloneEventData(a.data),j=e[f];try{"function"==typeof b?j.func.call(j.context,g,b):j.func.call(j.context,g);g=null;j=null}catch(d){if("function"==typeof b)try{b(d)}catch(b){c.log("Error executing callback on error, "+a.cmdName+" commandId: "+j.id+"e="+b.message,"ERROR","Commands")}c.log("Error executing "+a.cmdName+" commandId: "+j.id+"e="+d.message,"ERROR","Commands")}}return e.length>0}function h(a){c.storeEventData({triggerData:a,eventBufferLimit:j,attrName:m,fired:p,index:r})}var i,j,k,l="Commands",m="cmdName",n=0,o={},p=[],q="cmdId_",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.comply=b;this.stopComplying=e;this.command=g}e||(b.Commands=b.Commands||f);return f});!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});!function(a,b){"use strict";if("function"==typeof define&&define.amd)define("Chronos.Channels",["Chronos.Events","Chronos.Commands","Chronos.Reqres"],function(c,d,e){return b(a,a,c,d,e,!0)});else if("object"==typeof exports)b(a,exports,require("./Events").Events,require("./Commands").Commands,require("./Reqres").ReqRes);else{a.Chronos=a.Chronos||{};b(a,a.Chronos,a.Chronos.Events,a.Chronos.Commands,a.Chronos.ReqRes)}}("undefined"==typeof ChronosRoot?this:ChronosRoot,function(a,b,c,d,e,f){function g(a){function b(a){return function(){var b;a.func.apply(a.context,Array.prototype.slice.call(arguments,0));for(var c=0;c<g.length;c++){b=g[c];if(b[a.triggerType])try{b[a.triggerType].apply(b.context,Array.prototype.slice.call(arguments,0))}catch(a){}}}}function f(a){"object"==typeof a&&a.trigger&&g.push(a)}a=a||{};var g=[],h=a.events||new c(a.config&&a.config.events),i=a.commands||new d(a.config&&a.config.commands),j=a.reqres||new e(a.config&&a.config.reqres);this.once=h.once;this.hasFiredEvents=h.hasFired;this.trigger=h.trigger;this.publish=h.publish;this.bind=h.bind;this.register=h.register;this.unbind=h.unbind;this.unregister=h.unregister;this.hasFiredCommands=i.hasFired;this.comply=i.comply;this.stopComplying=i.stopComplying;this.command=i.command;this.hasFiredReqres=j.hasFired;this.request=j.request;this.reply=j.reply;this.stopReplying=j.stopReplying;if(!0===a.externalProxy){this.trigger=b({func:h.trigger,context:h,triggerType:"trigger"});this.publish=b({func:h.publish,context:h,triggerType:"trigger"});this.registerProxy=f}}f||(b.Channels=b.Channels||g);return g});