f0c42bfc2cd245dd6ffffad8171bab09d29b3196
[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 _0x05eb=['concat','isObject','push','sync','filter','isNil','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call','next','length','condition','noop','findRules','matches','turn','prioritize','priority','toJSON','map','toString','fromJSON','parse','object','exports','lodash','util','register','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x05eb,0xcd));var _0xb05e=function(_0x54b229,_0x3c91d3){_0x54b229=_0x54b229-0x0;var _0x24fd92=_0x05eb[_0x54b229];return _0x24fd92;};'use strict';var _=require(_0xb05e('0x0'));var util=require(_0xb05e('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x4bcece,_0x5a0d2d){this['init']();if(!_['isNil'](_0x4bcece)){this[_0xb05e('0x2')](_0x4bcece);}if(_0x5a0d2d){this[_0xb05e('0x3')]=_0x5a0d2d[_0xb05e('0x3')];}return this;}util[_0xb05e('0x4')](RuleEngine,EventEmitter);RuleEngine[_0xb05e('0x5')][_0xb05e('0x6')]=function(_0x2706d7){this[_0xb05e('0x7')]=[];this[_0xb05e('0x8')]=[];};RuleEngine['prototype'][_0xb05e('0x2')]=function(_0x152efb){if(Array[_0xb05e('0x9')](_0x152efb)){this[_0xb05e('0x7')]=this[_0xb05e('0x7')][_0xb05e('0xa')](_0x152efb);}else if(_0x152efb!==null&&_[_0xb05e('0xb')](_0x152efb)){this['rules'][_0xb05e('0xc')](_0x152efb);}this[_0xb05e('0xd')]();};RuleEngine['prototype'][_0xb05e('0xd')]=function(){this[_0xb05e('0x8')]=this[_0xb05e('0x7')][_0xb05e('0xe')](function(_0x2daa0c){if(_[_0xb05e('0xf')](_0x2daa0c['on'])){_0x2daa0c['on']=!![];}if(_0x2daa0c['on']===!![]){return _0x2daa0c;}});this[_0xb05e('0x8')]=_[_0xb05e('0x10')](this['activeRules'],['p'],[_0xb05e('0x11')]);};RuleEngine['prototype'][_0xb05e('0x12')]=function(_0x1e4a60,_0x492ff7){var _0x4f637a=![];_0x1e4a60[_0xb05e('0x13')]=!![];var _0x181338=_[_0xb05e('0x14')](_0x1e4a60);var _0x3f604a=_[_0xb05e('0x14')](_0x1e4a60);var _0x54af60=this[_0xb05e('0x8')];var _0x155307=[];var _0x3f1594=this[_0xb05e('0x3')];(function FnRuleLoop(_0x59446a){var _0x46bc7c={'rules':function(){return _0x54af60;},'rule':function(){return _0x54af60[_0x59446a];},'when':function(_0x34b384){if(_0x34b384){var _0x4cd1e8=_0x54af60[_0x59446a][_0xb05e('0x15')];_0x4cd1e8[_0xb05e('0x16')]=_0x54af60[_0x59446a]['id']||_0x54af60[_0x59446a][_0xb05e('0x17')]||_0xb05e('0x18')+_0x59446a;process[_0xb05e('0x19')](function(){_0x155307[_0xb05e('0xc')](_0x4cd1e8['ruleRef']);_0x4cd1e8[_0xb05e('0x1a')](_0x181338,_0x46bc7c);});}else{process[_0xb05e('0x19')](function(){_0x46bc7c[_0xb05e('0x1b')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x4f637a=!![];return FnRuleLoop(0x0);},'next':function(_0x26dbe1){if(!_0x3f1594&&!_['isEqual'](_0x3f604a,_0x181338)){_0x3f604a=_['clone'](_0x181338);process[_0xb05e('0x19')](function(){_0x46bc7c['restart']();});}else{process[_0xb05e('0x19')](function(){if(_[_0xb05e('0xf')](_0x26dbe1)){return FnRuleLoop(_0x59446a+0x1);}else{return FnRuleLoop(_0x26dbe1);}});}}};if(_0x59446a<_0x54af60[_0xb05e('0x1c')]&&_0x4f637a===![]){var _0x2ba33c=_0x54af60[_0x59446a][_0xb05e('0x1d')];_0x2ba33c['call'](_0x181338,_0x46bc7c);}else{process[_0xb05e('0x19')](function(){_0x181338['matchPath']=_0x155307;return _0x492ff7?_0x492ff7(_0x181338):_[_0xb05e('0x1e')]();});}}(0x0));};RuleEngine[_0xb05e('0x5')][_0xb05e('0x1f')]=function(_0x3f03e7){if(_[_0xb05e('0xf')](_0x3f03e7)){return this[_0xb05e('0x7')];}else{var _0x13a849=_[_0xb05e('0x20')](_0x3f03e7);return _['filter'](this['rules'],_0x13a849);}};RuleEngine[_0xb05e('0x5')][_0xb05e('0x21')]=function(_0x549bab,_0x187bf4){var _0x1d1346=_0x549bab==='on'||_0x549bab==='ON'?!![]:![];var _0x341343=this[_0xb05e('0x1f')](_0x187bf4);for(var _0x1d8e93=0x0,_0x3c5f4f=_0x341343[_0xb05e('0x1c')];_0x1d8e93<_0x3c5f4f;_0x1d8e93+=0x1){_0x341343[_0x1d8e93]['on']=_0x1d1346;}this[_0xb05e('0xd')]();};RuleEngine[_0xb05e('0x5')][_0xb05e('0x22')]=function(_0x5b91b5,_0x4f9ae2){_0x5b91b5=parseInt(_0x5b91b5,0xa);var _0x5ba2b0=this[_0xb05e('0x1f')](_0x4f9ae2);for(var _0x506059=0x0,_0x379863=_0x5ba2b0[_0xb05e('0x1c')];_0x506059<_0x379863;_0x506059+=0x1){_0x5ba2b0[_0x506059][_0xb05e('0x23')]=_0x5b91b5;}this[_0xb05e('0xd')]();};RuleEngine['prototype'][_0xb05e('0x24')]=function(){var _0x3ea958=this[_0xb05e('0x7')];if(_0x3ea958 instanceof Array){_0x3ea958=_0x3ea958[_0xb05e('0x25')](function(_0x21f0d8){_0x21f0d8[_0xb05e('0x1d')]=_0x21f0d8[_0xb05e('0x1d')][_0xb05e('0x26')]();_0x21f0d8[_0xb05e('0x15')]=_0x21f0d8[_0xb05e('0x15')][_0xb05e('0x26')]();return _0x21f0d8;});}else if(!_[_0xb05e('0xf')](_0x3ea958)){_0x3ea958['condition']=_0x3ea958['condition'][_0xb05e('0x26')]();_0x3ea958['consequence']=_0x3ea958['consequence'][_0xb05e('0x26')]();}return _0x3ea958;};RuleEngine[_0xb05e('0x5')][_0xb05e('0x27')]=function(_0x17a410){this[_0xb05e('0x6')]();if(_['isString'](_0x17a410)){_0x17a410=JSON[_0xb05e('0x28')](_0x17a410);}if(_0x17a410 instanceof Array){_0x17a410=_0x17a410['map'](function(_0x410abc){_0x410abc['condition']=eval('('+_0x410abc[_0xb05e('0x1d')]+')');_0x410abc[_0xb05e('0x15')]=eval('('+_0x410abc[_0xb05e('0x15')]+')');return _0x410abc;});}else if(_0x17a410!==null&&typeof _0x17a410==_0xb05e('0x29')){_0x17a410[_0xb05e('0x1d')]=eval('('+_0x17a410['condition']+')');_0x17a410['consequence']=eval('('+_0x17a410[_0xb05e('0x15')]+')');}this['register'](_0x17a410);};module[_0xb05e('0x2a')]=RuleEngine;