ce7ee57150022d9d41584a3b7916135b6d3ef767
[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 _0x87c4=['matchPath','noop','findRules','prioritize','priority','toJSON','map','toString','fromJSON','parse','exports','lodash','util','events','EventEmitter','init','register','ignoreFactChanges','inherits','rules','activeRules','prototype','isArray','concat','isObject','push','sync','filter','isNil','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call','next','isEqual','restart','length','condition'];(function(_0x5d2732,_0x32ad61){var _0x2e95c0=function(_0x35f332){while(--_0x35f332){_0x5d2732['push'](_0x5d2732['shift']());}};_0x2e95c0(++_0x32ad61);}(_0x87c4,0x146));var _0x487c=function(_0x2c0a1e,_0xc1315e){_0x2c0a1e=_0x2c0a1e-0x0;var _0x3e81df=_0x87c4[_0x2c0a1e];return _0x3e81df;};'use strict';var _=require(_0x487c('0x0'));var util=require(_0x487c('0x1'));var EventEmitter=require(_0x487c('0x2'))[_0x487c('0x3')];function RuleEngine(_0x427c33,_0x16a97e){this[_0x487c('0x4')]();if(!_['isNil'](_0x427c33)){this[_0x487c('0x5')](_0x427c33);}if(_0x16a97e){this['ignoreFactChanges']=_0x16a97e[_0x487c('0x6')];}return this;}util[_0x487c('0x7')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x487c('0x4')]=function(_0x2980a5){this[_0x487c('0x8')]=[];this[_0x487c('0x9')]=[];};RuleEngine[_0x487c('0xa')][_0x487c('0x5')]=function(_0x3c1e70){if(Array[_0x487c('0xb')](_0x3c1e70)){this[_0x487c('0x8')]=this[_0x487c('0x8')][_0x487c('0xc')](_0x3c1e70);}else if(_0x3c1e70!==null&&_[_0x487c('0xd')](_0x3c1e70)){this['rules'][_0x487c('0xe')](_0x3c1e70);}this[_0x487c('0xf')]();};RuleEngine[_0x487c('0xa')]['sync']=function(){this[_0x487c('0x9')]=this[_0x487c('0x8')][_0x487c('0x10')](function(_0x155671){if(_[_0x487c('0x11')](_0x155671['on'])){_0x155671['on']=!![];}if(_0x155671['on']===!![]){return _0x155671;}});this[_0x487c('0x9')]=_[_0x487c('0x12')](this[_0x487c('0x9')],['p'],[_0x487c('0x13')]);};RuleEngine[_0x487c('0xa')][_0x487c('0x14')]=function(_0xc385f6,_0x1695f4){var _0xfd86e0=![];_0xc385f6[_0x487c('0x15')]=!![];var _0x5760a6=_[_0x487c('0x16')](_0xc385f6);var _0x459ab2=_['clone'](_0xc385f6);var _0x45c886=this[_0x487c('0x9')];var _0xfe786c=[];var _0x3b903f=this[_0x487c('0x6')];(function FnRuleLoop(_0x4e617e){var _0x528d53={'rules':function(){return _0x45c886;},'rule':function(){return _0x45c886[_0x4e617e];},'when':function(_0x331962){if(_0x331962){var _0x3d9ec3=_0x45c886[_0x4e617e][_0x487c('0x17')];_0x3d9ec3[_0x487c('0x18')]=_0x45c886[_0x4e617e]['id']||_0x45c886[_0x4e617e][_0x487c('0x19')]||_0x487c('0x1a')+_0x4e617e;process[_0x487c('0x1b')](function(){_0xfe786c[_0x487c('0xe')](_0x3d9ec3[_0x487c('0x18')]);_0x3d9ec3[_0x487c('0x1c')](_0x5760a6,_0x528d53);});}else{process[_0x487c('0x1b')](function(){_0x528d53[_0x487c('0x1d')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0xfd86e0=!![];return FnRuleLoop(0x0);},'next':function(_0x5f1bdd){if(!_0x3b903f&&!_[_0x487c('0x1e')](_0x459ab2,_0x5760a6)){_0x459ab2=_['clone'](_0x5760a6);process[_0x487c('0x1b')](function(){_0x528d53[_0x487c('0x1f')]();});}else{process['nextTick'](function(){if(_['isNil'](_0x5f1bdd)){return FnRuleLoop(_0x4e617e+0x1);}else{return FnRuleLoop(_0x5f1bdd);}});}}};if(_0x4e617e<_0x45c886[_0x487c('0x20')]&&_0xfd86e0===![]){var _0x561454=_0x45c886[_0x4e617e][_0x487c('0x21')];_0x561454[_0x487c('0x1c')](_0x5760a6,_0x528d53);}else{process[_0x487c('0x1b')](function(){_0x5760a6[_0x487c('0x22')]=_0xfe786c;return _0x1695f4?_0x1695f4(_0x5760a6):_[_0x487c('0x23')]();});}}(0x0));};RuleEngine[_0x487c('0xa')][_0x487c('0x24')]=function(_0x5cc4da){if(_[_0x487c('0x11')](_0x5cc4da)){return this[_0x487c('0x8')];}else{var _0xc98a3c=_['matches'](_0x5cc4da);return _[_0x487c('0x10')](this[_0x487c('0x8')],_0xc98a3c);}};RuleEngine['prototype']['turn']=function(_0x6ec6c3,_0x218476){var _0x510c71=_0x6ec6c3==='on'||_0x6ec6c3==='ON'?!![]:![];var _0x4a2d23=this[_0x487c('0x24')](_0x218476);for(var _0x3d0834=0x0,_0x13eb73=_0x4a2d23[_0x487c('0x20')];_0x3d0834<_0x13eb73;_0x3d0834+=0x1){_0x4a2d23[_0x3d0834]['on']=_0x510c71;}this['sync']();};RuleEngine[_0x487c('0xa')][_0x487c('0x25')]=function(_0xb23abf,_0x3fd927){_0xb23abf=parseInt(_0xb23abf,0xa);var _0x57f923=this[_0x487c('0x24')](_0x3fd927);for(var _0x2e138f=0x0,_0x2420b3=_0x57f923['length'];_0x2e138f<_0x2420b3;_0x2e138f+=0x1){_0x57f923[_0x2e138f][_0x487c('0x26')]=_0xb23abf;}this[_0x487c('0xf')]();};RuleEngine[_0x487c('0xa')][_0x487c('0x27')]=function(){var _0x1a5add=this[_0x487c('0x8')];if(_0x1a5add instanceof Array){_0x1a5add=_0x1a5add[_0x487c('0x28')](function(_0x3ee94f){_0x3ee94f[_0x487c('0x21')]=_0x3ee94f[_0x487c('0x21')]['toString']();_0x3ee94f[_0x487c('0x17')]=_0x3ee94f[_0x487c('0x17')][_0x487c('0x29')]();return _0x3ee94f;});}else if(!_[_0x487c('0x11')](_0x1a5add)){_0x1a5add[_0x487c('0x21')]=_0x1a5add[_0x487c('0x21')][_0x487c('0x29')]();_0x1a5add['consequence']=_0x1a5add[_0x487c('0x17')][_0x487c('0x29')]();}return _0x1a5add;};RuleEngine[_0x487c('0xa')][_0x487c('0x2a')]=function(_0xb03070){this[_0x487c('0x4')]();if(_['isString'](_0xb03070)){_0xb03070=JSON[_0x487c('0x2b')](_0xb03070);}if(_0xb03070 instanceof Array){_0xb03070=_0xb03070[_0x487c('0x28')](function(_0x44423c){_0x44423c[_0x487c('0x21')]=eval('('+_0x44423c['condition']+')');_0x44423c[_0x487c('0x17')]=eval('('+_0x44423c[_0x487c('0x17')]+')');return _0x44423c;});}else if(_0xb03070!==null&&typeof _0xb03070=='object'){_0xb03070[_0x487c('0x21')]=eval('('+_0xb03070['condition']+')');_0xb03070[_0x487c('0x17')]=eval('('+_0xb03070[_0x487c('0x17')]+')');}this[_0x487c('0x5')](_0xb03070);};module[_0x487c('0x2c')]=RuleEngine;