24e0ff8e3eee6c252371ff90773124e8c681d71b
[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 _0x0abc=['lodash','util','isNil','register','ignoreFactChanges','inherits','prototype','init','rules','activeRules','concat','isObject','push','sync','filter','orderBy','asc','execute','result','clone','name','index_','nextTick','ruleRef','isEqual','restart','condition','matchPath','noop','findRules','turn','length','prioritize','priority','toJSON','map','toString','consequence','isString','object','exports'];(function(_0x3ac0fd,_0x2dfb0c){var _0x2670a9=function(_0x1bc374){while(--_0x1bc374){_0x3ac0fd['push'](_0x3ac0fd['shift']());}};_0x2670a9(++_0x2dfb0c);}(_0x0abc,0xf6));var _0xc0ab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0abc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc0ab('0x0'));var util=require(_0xc0ab('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x1844d3,_0x18b15c){this['init']();if(!_[_0xc0ab('0x2')](_0x1844d3)){this[_0xc0ab('0x3')](_0x1844d3);}if(_0x18b15c){this[_0xc0ab('0x4')]=_0x18b15c['ignoreFactChanges'];}return this;}util[_0xc0ab('0x5')](RuleEngine,EventEmitter);RuleEngine[_0xc0ab('0x6')][_0xc0ab('0x7')]=function(_0x42735e){this[_0xc0ab('0x8')]=[];this[_0xc0ab('0x9')]=[];};RuleEngine[_0xc0ab('0x6')][_0xc0ab('0x3')]=function(_0x2a9aed){if(Array['isArray'](_0x2a9aed)){this[_0xc0ab('0x8')]=this[_0xc0ab('0x8')][_0xc0ab('0xa')](_0x2a9aed);}else if(_0x2a9aed!==null&&_[_0xc0ab('0xb')](_0x2a9aed)){this[_0xc0ab('0x8')][_0xc0ab('0xc')](_0x2a9aed);}this[_0xc0ab('0xd')]();};RuleEngine['prototype'][_0xc0ab('0xd')]=function(){this[_0xc0ab('0x9')]=this['rules'][_0xc0ab('0xe')](function(_0x3ced26){if(_['isNil'](_0x3ced26['on'])){_0x3ced26['on']=!![];}if(_0x3ced26['on']===!![]){return _0x3ced26;}});this[_0xc0ab('0x9')]=_[_0xc0ab('0xf')](this[_0xc0ab('0x9')],['p'],[_0xc0ab('0x10')]);};RuleEngine[_0xc0ab('0x6')][_0xc0ab('0x11')]=function(_0xc36852,_0x3615be){var _0x115966=![];_0xc36852[_0xc0ab('0x12')]=!![];var _0x38bc6e=_[_0xc0ab('0x13')](_0xc36852);var _0x35b0c1=_['clone'](_0xc36852);var _0x3d7063=this[_0xc0ab('0x9')];var _0x1574b7=[];var _0x3a2044=this[_0xc0ab('0x4')];(function FnRuleLoop(_0x5410e4){var _0x100c3c={'rules':function(){return _0x3d7063;},'rule':function(){return _0x3d7063[_0x5410e4];},'when':function(_0x170e98){if(_0x170e98){var _0x6130dd=_0x3d7063[_0x5410e4]['consequence'];_0x6130dd['ruleRef']=_0x3d7063[_0x5410e4]['id']||_0x3d7063[_0x5410e4][_0xc0ab('0x14')]||_0xc0ab('0x15')+_0x5410e4;process[_0xc0ab('0x16')](function(){_0x1574b7[_0xc0ab('0xc')](_0x6130dd[_0xc0ab('0x17')]);_0x6130dd['call'](_0x38bc6e,_0x100c3c);});}else{process[_0xc0ab('0x16')](function(){_0x100c3c['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x115966=!![];return FnRuleLoop(0x0);},'next':function(_0xf2ba57){if(!_0x3a2044&&!_[_0xc0ab('0x18')](_0x35b0c1,_0x38bc6e)){_0x35b0c1=_[_0xc0ab('0x13')](_0x38bc6e);process[_0xc0ab('0x16')](function(){_0x100c3c[_0xc0ab('0x19')]();});}else{process['nextTick'](function(){if(_['isNil'](_0xf2ba57)){return FnRuleLoop(_0x5410e4+0x1);}else{return FnRuleLoop(_0xf2ba57);}});}}};if(_0x5410e4<_0x3d7063['length']&&_0x115966===![]){var _0xbc4fa4=_0x3d7063[_0x5410e4][_0xc0ab('0x1a')];_0xbc4fa4['call'](_0x38bc6e,_0x100c3c);}else{process[_0xc0ab('0x16')](function(){_0x38bc6e[_0xc0ab('0x1b')]=_0x1574b7;return _0x3615be?_0x3615be(_0x38bc6e):_[_0xc0ab('0x1c')]();});}}(0x0));};RuleEngine[_0xc0ab('0x6')][_0xc0ab('0x1d')]=function(_0x5a4aa3){if(_[_0xc0ab('0x2')](_0x5a4aa3)){return this[_0xc0ab('0x8')];}else{var _0x545db0=_['matches'](_0x5a4aa3);return _[_0xc0ab('0xe')](this['rules'],_0x545db0);}};RuleEngine[_0xc0ab('0x6')][_0xc0ab('0x1e')]=function(_0x365b2e,_0x468367){var _0x6042e3=_0x365b2e==='on'||_0x365b2e==='ON'?!![]:![];var _0x43d8aa=this[_0xc0ab('0x1d')](_0x468367);for(var _0x358a05=0x0,_0x17cff2=_0x43d8aa[_0xc0ab('0x1f')];_0x358a05<_0x17cff2;_0x358a05+=0x1){_0x43d8aa[_0x358a05]['on']=_0x6042e3;}this[_0xc0ab('0xd')]();};RuleEngine[_0xc0ab('0x6')][_0xc0ab('0x20')]=function(_0x539b61,_0x2dd4ee){_0x539b61=parseInt(_0x539b61,0xa);var _0x3c5118=this[_0xc0ab('0x1d')](_0x2dd4ee);for(var _0x33a141=0x0,_0x36b3bb=_0x3c5118['length'];_0x33a141<_0x36b3bb;_0x33a141+=0x1){_0x3c5118[_0x33a141][_0xc0ab('0x21')]=_0x539b61;}this[_0xc0ab('0xd')]();};RuleEngine['prototype'][_0xc0ab('0x22')]=function(){var _0x205f2e=this[_0xc0ab('0x8')];if(_0x205f2e instanceof Array){_0x205f2e=_0x205f2e[_0xc0ab('0x23')](function(_0x15aed8){_0x15aed8[_0xc0ab('0x1a')]=_0x15aed8['condition'][_0xc0ab('0x24')]();_0x15aed8[_0xc0ab('0x25')]=_0x15aed8[_0xc0ab('0x25')][_0xc0ab('0x24')]();return _0x15aed8;});}else if(!_[_0xc0ab('0x2')](_0x205f2e)){_0x205f2e[_0xc0ab('0x1a')]=_0x205f2e[_0xc0ab('0x1a')][_0xc0ab('0x24')]();_0x205f2e[_0xc0ab('0x25')]=_0x205f2e[_0xc0ab('0x25')][_0xc0ab('0x24')]();}return _0x205f2e;};RuleEngine[_0xc0ab('0x6')]['fromJSON']=function(_0x2a3e62){this[_0xc0ab('0x7')]();if(_[_0xc0ab('0x26')](_0x2a3e62)){_0x2a3e62=JSON['parse'](_0x2a3e62);}if(_0x2a3e62 instanceof Array){_0x2a3e62=_0x2a3e62[_0xc0ab('0x23')](function(_0xf7d0d3){_0xf7d0d3[_0xc0ab('0x1a')]=eval('('+_0xf7d0d3['condition']+')');_0xf7d0d3['consequence']=eval('('+_0xf7d0d3[_0xc0ab('0x25')]+')');return _0xf7d0d3;});}else if(_0x2a3e62!==null&&typeof _0x2a3e62==_0xc0ab('0x27')){_0x2a3e62[_0xc0ab('0x1a')]=eval('('+_0x2a3e62[_0xc0ab('0x1a')]+')');_0x2a3e62['consequence']=eval('('+_0x2a3e62[_0xc0ab('0x25')]+')');}this[_0xc0ab('0x3')](_0x2a3e62);};module[_0xc0ab('0x28')]=RuleEngine;