Built motion from commit (unavailable).|2.3.4
[motion2.git] / server / services / routing / lib / rule-engine.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x6126=['call','next','isEqual','restart','condition','matchPath','findRules','matches','prioritize','length','priority','toJSON','toString','consequence','fromJSON','isString','parse','map','lodash','util','events','EventEmitter','init','isNil','register','ignoreFactChanges','prototype','activeRules','isArray','rules','isObject','push','sync','filter','orderBy','execute','clone','ruleRef','name','nextTick'];(function(_0x559b7a,_0x118652){var _0x40a231=function(_0x4bba36){while(--_0x4bba36){_0x559b7a['push'](_0x559b7a['shift']());}};_0x40a231(++_0x118652);}(_0x6126,0xda));var _0x6612=function(_0x51b255,_0x2a91cf){_0x51b255=_0x51b255-0x0;var _0x43bd02=_0x6126[_0x51b255];return _0x43bd02;};'use strict';var _=require(_0x6612('0x0'));var util=require(_0x6612('0x1'));var EventEmitter=require(_0x6612('0x2'))[_0x6612('0x3')];function RuleEngine(_0x561cae,_0x5d72da){this[_0x6612('0x4')]();if(!_[_0x6612('0x5')](_0x561cae)){this[_0x6612('0x6')](_0x561cae);}if(_0x5d72da){this[_0x6612('0x7')]=_0x5d72da[_0x6612('0x7')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine[_0x6612('0x8')][_0x6612('0x4')]=function(_0x2ed8e2){this['rules']=[];this[_0x6612('0x9')]=[];};RuleEngine[_0x6612('0x8')]['register']=function(_0x19cefd){if(Array[_0x6612('0xa')](_0x19cefd)){this[_0x6612('0xb')]=this[_0x6612('0xb')]['concat'](_0x19cefd);}else if(_0x19cefd!==null&&_[_0x6612('0xc')](_0x19cefd)){this[_0x6612('0xb')][_0x6612('0xd')](_0x19cefd);}this[_0x6612('0xe')]();};RuleEngine['prototype'][_0x6612('0xe')]=function(){this[_0x6612('0x9')]=this['rules'][_0x6612('0xf')](function(_0xebb821){if(_[_0x6612('0x5')](_0xebb821['on'])){_0xebb821['on']=!![];}if(_0xebb821['on']===!![]){return _0xebb821;}});this[_0x6612('0x9')]=_[_0x6612('0x10')](this[_0x6612('0x9')],['p'],['asc']);};RuleEngine[_0x6612('0x8')][_0x6612('0x11')]=function(_0x513e50,_0x1c86ce){var _0x24191d=![];_0x513e50['result']=!![];var _0x4a1837=_[_0x6612('0x12')](_0x513e50);var _0x2657fa=_[_0x6612('0x12')](_0x513e50);var _0x3cf317=this[_0x6612('0x9')];var _0x1a1b16=[];var _0x1294e9=this[_0x6612('0x7')];(function FnRuleLoop(_0x791627){var _0x405487={'rules':function(){return _0x3cf317;},'rule':function(){return _0x3cf317[_0x791627];},'when':function(_0x2cf605){if(_0x2cf605){var _0x4d783e=_0x3cf317[_0x791627]['consequence'];_0x4d783e[_0x6612('0x13')]=_0x3cf317[_0x791627]['id']||_0x3cf317[_0x791627][_0x6612('0x14')]||'index_'+_0x791627;process[_0x6612('0x15')](function(){_0x1a1b16[_0x6612('0xd')](_0x4d783e['ruleRef']);_0x4d783e[_0x6612('0x16')](_0x4a1837,_0x405487);});}else{process['nextTick'](function(){_0x405487[_0x6612('0x17')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x24191d=!![];return FnRuleLoop(0x0);},'next':function(_0x3de1ca){if(!_0x1294e9&&!_[_0x6612('0x18')](_0x2657fa,_0x4a1837)){_0x2657fa=_['clone'](_0x4a1837);process[_0x6612('0x15')](function(){_0x405487[_0x6612('0x19')]();});}else{process['nextTick'](function(){if(_[_0x6612('0x5')](_0x3de1ca)){return FnRuleLoop(_0x791627+0x1);}else{return FnRuleLoop(_0x3de1ca);}});}}};if(_0x791627<_0x3cf317['length']&&_0x24191d===![]){var _0x1c9a64=_0x3cf317[_0x791627][_0x6612('0x1a')];_0x1c9a64[_0x6612('0x16')](_0x4a1837,_0x405487);}else{process['nextTick'](function(){_0x4a1837[_0x6612('0x1b')]=_0x1a1b16;return _0x1c86ce?_0x1c86ce(_0x4a1837):_['noop']();});}}(0x0));};RuleEngine[_0x6612('0x8')][_0x6612('0x1c')]=function(_0x5330a3){if(_[_0x6612('0x5')](_0x5330a3)){return this['rules'];}else{var _0x537649=_[_0x6612('0x1d')](_0x5330a3);return _[_0x6612('0xf')](this[_0x6612('0xb')],_0x537649);}};RuleEngine['prototype']['turn']=function(_0x4db4a9,_0x247beb){var _0x4db4a9=_0x4db4a9==='on'||_0x4db4a9==='ON'?!![]:![];var _0x1d52dc=this[_0x6612('0x1c')](_0x247beb);for(var _0x4aa459=0x0,_0x5902a2=_0x1d52dc['length'];_0x4aa459<_0x5902a2;_0x4aa459+=0x1){_0x1d52dc[_0x4aa459]['on']=_0x4db4a9;}this['sync']();};RuleEngine['prototype'][_0x6612('0x1e')]=function(_0x34bddd,_0x49be92){_0x34bddd=parseInt(_0x34bddd,0xa);var _0x4575eb=this[_0x6612('0x1c')](_0x49be92);for(var _0x32dac6=0x0,_0x574836=_0x4575eb[_0x6612('0x1f')];_0x32dac6<_0x574836;_0x32dac6+=0x1){_0x4575eb[_0x32dac6][_0x6612('0x20')]=_0x34bddd;}this['sync']();};RuleEngine['prototype'][_0x6612('0x21')]=function(){var _0x2f1a05=this['rules'];if(_0x2f1a05 instanceof Array){_0x2f1a05=_0x2f1a05['map'](function(_0x1461f6){_0x1461f6[_0x6612('0x1a')]=_0x1461f6[_0x6612('0x1a')][_0x6612('0x22')]();_0x1461f6[_0x6612('0x23')]=_0x1461f6['consequence'][_0x6612('0x22')]();return _0x1461f6;});}else if(!_[_0x6612('0x5')](_0x2f1a05)){_0x2f1a05[_0x6612('0x1a')]=_0x2f1a05[_0x6612('0x1a')][_0x6612('0x22')]();_0x2f1a05['consequence']=_0x2f1a05['consequence'][_0x6612('0x22')]();}return _0x2f1a05;};RuleEngine[_0x6612('0x8')][_0x6612('0x24')]=function(_0x1020b4){this[_0x6612('0x4')]();if(_[_0x6612('0x25')](_0x1020b4)){_0x1020b4=JSON[_0x6612('0x26')](_0x1020b4);}if(_0x1020b4 instanceof Array){_0x1020b4=_0x1020b4[_0x6612('0x27')](function(_0x4941eb){_0x4941eb[_0x6612('0x1a')]=eval('('+_0x4941eb['condition']+')');_0x4941eb[_0x6612('0x23')]=eval('('+_0x4941eb[_0x6612('0x23')]+')');return _0x4941eb;});}else if(_0x1020b4!==null&&typeof _0x1020b4=='object'){_0x1020b4[_0x6612('0x1a')]=eval('('+_0x1020b4[_0x6612('0x1a')]+')');_0x1020b4['consequence']=eval('('+_0x1020b4[_0x6612('0x23')]+')');}this[_0x6612('0x6')](_0x1020b4);};module['exports']=RuleEngine;