Built motion from commit (unavailable).|2.5.10
[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 _0x09e9=['map','toString','fromJSON','object','exports','lodash','events','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','rules','prototype','isObject','push','sync','activeRules','filter','orderBy','execute','result','consequence','name','nextTick','ruleRef','call','next','isEqual','clone','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','toJSON'];(function(_0x24b532,_0x275e05){var _0x5f5d2c=function(_0x43d620){while(--_0x43d620){_0x24b532['push'](_0x24b532['shift']());}};_0x5f5d2c(++_0x275e05);}(_0x09e9,0xfb));var _0x909e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x09e9[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0x909e('0x0'));var util=require('util');var EventEmitter=require(_0x909e('0x1'))[_0x909e('0x2')];function RuleEngine(_0x1d5a75,_0x4b118d){this[_0x909e('0x3')]();if(!_[_0x909e('0x4')](_0x1d5a75)){this[_0x909e('0x5')](_0x1d5a75);}if(_0x4b118d){this[_0x909e('0x6')]=_0x4b118d['ignoreFactChanges'];}return this;}util[_0x909e('0x7')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x909e('0x3')]=function(_0x5be37d){this[_0x909e('0x8')]=[];this['activeRules']=[];};RuleEngine[_0x909e('0x9')][_0x909e('0x5')]=function(_0x2a5fe5){if(Array['isArray'](_0x2a5fe5)){this[_0x909e('0x8')]=this[_0x909e('0x8')]['concat'](_0x2a5fe5);}else if(_0x2a5fe5!==null&&_[_0x909e('0xa')](_0x2a5fe5)){this[_0x909e('0x8')][_0x909e('0xb')](_0x2a5fe5);}this[_0x909e('0xc')]();};RuleEngine[_0x909e('0x9')][_0x909e('0xc')]=function(){this[_0x909e('0xd')]=this['rules'][_0x909e('0xe')](function(_0x3c779e){if(_[_0x909e('0x4')](_0x3c779e['on'])){_0x3c779e['on']=!![];}if(_0x3c779e['on']===!![]){return _0x3c779e;}});this['activeRules']=_[_0x909e('0xf')](this[_0x909e('0xd')],['p'],['asc']);};RuleEngine[_0x909e('0x9')][_0x909e('0x10')]=function(_0xb99585,_0x1e27bf){var _0x177086=![];_0xb99585[_0x909e('0x11')]=!![];var _0x488cd0=_['clone'](_0xb99585);var _0x905f8e=_['clone'](_0xb99585);var _0xe869bd=this[_0x909e('0xd')];var _0x30779f=[];var _0x3d58b1=this[_0x909e('0x6')];(function FnRuleLoop(_0xffebbb){var _0x498939={'rules':function(){return _0xe869bd;},'rule':function(){return _0xe869bd[_0xffebbb];},'when':function(_0x42de30){if(_0x42de30){var _0x518115=_0xe869bd[_0xffebbb][_0x909e('0x12')];_0x518115['ruleRef']=_0xe869bd[_0xffebbb]['id']||_0xe869bd[_0xffebbb][_0x909e('0x13')]||'index_'+_0xffebbb;process[_0x909e('0x14')](function(){_0x30779f[_0x909e('0xb')](_0x518115[_0x909e('0x15')]);_0x518115[_0x909e('0x16')](_0x488cd0,_0x498939);});}else{process['nextTick'](function(){_0x498939[_0x909e('0x17')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x177086=!![];return FnRuleLoop(0x0);},'next':function(_0x5743d8){if(!_0x3d58b1&&!_[_0x909e('0x18')](_0x905f8e,_0x488cd0)){_0x905f8e=_[_0x909e('0x19')](_0x488cd0);process[_0x909e('0x14')](function(){_0x498939[_0x909e('0x1a')]();});}else{process[_0x909e('0x14')](function(){if(_[_0x909e('0x4')](_0x5743d8)){return FnRuleLoop(_0xffebbb+0x1);}else{return FnRuleLoop(_0x5743d8);}});}}};if(_0xffebbb<_0xe869bd[_0x909e('0x1b')]&&_0x177086===![]){var _0x8b1585=_0xe869bd[_0xffebbb][_0x909e('0x1c')];_0x8b1585[_0x909e('0x16')](_0x488cd0,_0x498939);}else{process['nextTick'](function(){_0x488cd0[_0x909e('0x1d')]=_0x30779f;return _0x1e27bf?_0x1e27bf(_0x488cd0):_[_0x909e('0x1e')]();});}}(0x0));};RuleEngine[_0x909e('0x9')][_0x909e('0x1f')]=function(_0x2df9a1){if(_[_0x909e('0x4')](_0x2df9a1)){return this['rules'];}else{var _0x5cd4a2=_[_0x909e('0x20')](_0x2df9a1);return _[_0x909e('0xe')](this['rules'],_0x5cd4a2);}};RuleEngine[_0x909e('0x9')][_0x909e('0x21')]=function(_0x5b85bf,_0x4071be){var _0x33902f=_0x5b85bf==='on'||_0x5b85bf==='ON'?!![]:![];var _0x14e159=this['findRules'](_0x4071be);for(var _0x4f7e2f=0x0,_0x52fc17=_0x14e159[_0x909e('0x1b')];_0x4f7e2f<_0x52fc17;_0x4f7e2f+=0x1){_0x14e159[_0x4f7e2f]['on']=_0x33902f;}this[_0x909e('0xc')]();};RuleEngine[_0x909e('0x9')][_0x909e('0x22')]=function(_0x4e25ae,_0x2d4c5d){_0x4e25ae=parseInt(_0x4e25ae,0xa);var _0x20390a=this['findRules'](_0x2d4c5d);for(var _0xeece89=0x0,_0x42cf8f=_0x20390a[_0x909e('0x1b')];_0xeece89<_0x42cf8f;_0xeece89+=0x1){_0x20390a[_0xeece89]['priority']=_0x4e25ae;}this[_0x909e('0xc')]();};RuleEngine['prototype'][_0x909e('0x23')]=function(){var _0x3baba1=this[_0x909e('0x8')];if(_0x3baba1 instanceof Array){_0x3baba1=_0x3baba1[_0x909e('0x24')](function(_0xdbbb6d){_0xdbbb6d['condition']=_0xdbbb6d[_0x909e('0x1c')][_0x909e('0x25')]();_0xdbbb6d[_0x909e('0x12')]=_0xdbbb6d[_0x909e('0x12')][_0x909e('0x25')]();return _0xdbbb6d;});}else if(!_[_0x909e('0x4')](_0x3baba1)){_0x3baba1[_0x909e('0x1c')]=_0x3baba1[_0x909e('0x1c')][_0x909e('0x25')]();_0x3baba1[_0x909e('0x12')]=_0x3baba1[_0x909e('0x12')]['toString']();}return _0x3baba1;};RuleEngine[_0x909e('0x9')][_0x909e('0x26')]=function(_0x239200){this[_0x909e('0x3')]();if(_['isString'](_0x239200)){_0x239200=JSON['parse'](_0x239200);}if(_0x239200 instanceof Array){_0x239200=_0x239200[_0x909e('0x24')](function(_0x187096){_0x187096[_0x909e('0x1c')]=eval('('+_0x187096[_0x909e('0x1c')]+')');_0x187096[_0x909e('0x12')]=eval('('+_0x187096['consequence']+')');return _0x187096;});}else if(_0x239200!==null&&typeof _0x239200==_0x909e('0x27')){_0x239200[_0x909e('0x1c')]=eval('('+_0x239200['condition']+')');_0x239200[_0x909e('0x12')]=eval('('+_0x239200[_0x909e('0x12')]+')');}this[_0x909e('0x5')](_0x239200);};module[_0x909e('0x28')]=RuleEngine;