02464b43003dd19c78023021c43c5095d4fab40a
[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 _0xafa5=['restart','length','condition','matchPath','findRules','matches','prioritize','priority','toJSON','map','toString','fromJSON','isString','parse','object','exports','lodash','util','EventEmitter','init','isNil','ignoreFactChanges','inherits','prototype','activeRules','register','isArray','rules','isObject','sync','filter','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','push','call','next','isEqual'];(function(_0x16fa8d,_0x3a1ca5){var _0x1948d8=function(_0x48957b){while(--_0x48957b){_0x16fa8d['push'](_0x16fa8d['shift']());}};_0x1948d8(++_0x3a1ca5);}(_0xafa5,0x11e));var _0x5afa=function(_0x4407e3,_0xc16a4c){_0x4407e3=_0x4407e3-0x0;var _0x1675cf=_0xafa5[_0x4407e3];return _0x1675cf;};'use strict';var _=require(_0x5afa('0x0'));var util=require(_0x5afa('0x1'));var EventEmitter=require('events')[_0x5afa('0x2')];function RuleEngine(_0x338a3f,_0x895b66){this[_0x5afa('0x3')]();if(!_[_0x5afa('0x4')](_0x338a3f)){this['register'](_0x338a3f);}if(_0x895b66){this['ignoreFactChanges']=_0x895b66[_0x5afa('0x5')];}return this;}util[_0x5afa('0x6')](RuleEngine,EventEmitter);RuleEngine[_0x5afa('0x7')][_0x5afa('0x3')]=function(_0x30ecbe){this['rules']=[];this[_0x5afa('0x8')]=[];};RuleEngine[_0x5afa('0x7')][_0x5afa('0x9')]=function(_0x3bc753){if(Array[_0x5afa('0xa')](_0x3bc753)){this[_0x5afa('0xb')]=this[_0x5afa('0xb')]['concat'](_0x3bc753);}else if(_0x3bc753!==null&&_[_0x5afa('0xc')](_0x3bc753)){this[_0x5afa('0xb')]['push'](_0x3bc753);}this[_0x5afa('0xd')]();};RuleEngine['prototype']['sync']=function(){this[_0x5afa('0x8')]=this[_0x5afa('0xb')][_0x5afa('0xe')](function(_0x476f7e){if(_[_0x5afa('0x4')](_0x476f7e['on'])){_0x476f7e['on']=!![];}if(_0x476f7e['on']===!![]){return _0x476f7e;}});this['activeRules']=_[_0x5afa('0xf')](this['activeRules'],['p'],[_0x5afa('0x10')]);};RuleEngine[_0x5afa('0x7')][_0x5afa('0x11')]=function(_0x569031,_0x1c945b){var _0x2e0152=![];_0x569031[_0x5afa('0x12')]=!![];var _0x1d9bff=_[_0x5afa('0x13')](_0x569031);var _0x1dccc7=_[_0x5afa('0x13')](_0x569031);var _0x2f7feb=this[_0x5afa('0x8')];var _0x5a4610=[];var _0x363dd8=this[_0x5afa('0x5')];(function FnRuleLoop(_0x364952){var _0x9b1e6d={'rules':function(){return _0x2f7feb;},'rule':function(){return _0x2f7feb[_0x364952];},'when':function(_0x5c3718){if(_0x5c3718){var _0x8343b=_0x2f7feb[_0x364952][_0x5afa('0x14')];_0x8343b[_0x5afa('0x15')]=_0x2f7feb[_0x364952]['id']||_0x2f7feb[_0x364952][_0x5afa('0x16')]||_0x5afa('0x17')+_0x364952;process[_0x5afa('0x18')](function(){_0x5a4610[_0x5afa('0x19')](_0x8343b[_0x5afa('0x15')]);_0x8343b[_0x5afa('0x1a')](_0x1d9bff,_0x9b1e6d);});}else{process[_0x5afa('0x18')](function(){_0x9b1e6d[_0x5afa('0x1b')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x2e0152=!![];return FnRuleLoop(0x0);},'next':function(_0x3afd63){if(!_0x363dd8&&!_[_0x5afa('0x1c')](_0x1dccc7,_0x1d9bff)){_0x1dccc7=_[_0x5afa('0x13')](_0x1d9bff);process[_0x5afa('0x18')](function(){_0x9b1e6d[_0x5afa('0x1d')]();});}else{process[_0x5afa('0x18')](function(){if(_[_0x5afa('0x4')](_0x3afd63)){return FnRuleLoop(_0x364952+0x1);}else{return FnRuleLoop(_0x3afd63);}});}}};if(_0x364952<_0x2f7feb[_0x5afa('0x1e')]&&_0x2e0152===![]){var _0x5c09dd=_0x2f7feb[_0x364952][_0x5afa('0x1f')];_0x5c09dd[_0x5afa('0x1a')](_0x1d9bff,_0x9b1e6d);}else{process[_0x5afa('0x18')](function(){_0x1d9bff[_0x5afa('0x20')]=_0x5a4610;return _0x1c945b?_0x1c945b(_0x1d9bff):_['noop']();});}}(0x0));};RuleEngine[_0x5afa('0x7')][_0x5afa('0x21')]=function(_0x5030e4){if(_[_0x5afa('0x4')](_0x5030e4)){return this[_0x5afa('0xb')];}else{var _0x50735b=_[_0x5afa('0x22')](_0x5030e4);return _[_0x5afa('0xe')](this[_0x5afa('0xb')],_0x50735b);}};RuleEngine[_0x5afa('0x7')]['turn']=function(_0x504a1b,_0x57d762){var _0x214b31=_0x504a1b==='on'||_0x504a1b==='ON'?!![]:![];var _0x45aec9=this[_0x5afa('0x21')](_0x57d762);for(var _0xf35c1e=0x0,_0x77894c=_0x45aec9[_0x5afa('0x1e')];_0xf35c1e<_0x77894c;_0xf35c1e+=0x1){_0x45aec9[_0xf35c1e]['on']=_0x214b31;}this[_0x5afa('0xd')]();};RuleEngine['prototype'][_0x5afa('0x23')]=function(_0x180fd9,_0x54811c){_0x180fd9=parseInt(_0x180fd9,0xa);var _0x592a9f=this[_0x5afa('0x21')](_0x54811c);for(var _0x5d918e=0x0,_0x1dc496=_0x592a9f[_0x5afa('0x1e')];_0x5d918e<_0x1dc496;_0x5d918e+=0x1){_0x592a9f[_0x5d918e][_0x5afa('0x24')]=_0x180fd9;}this[_0x5afa('0xd')]();};RuleEngine[_0x5afa('0x7')][_0x5afa('0x25')]=function(){var _0x48896b=this[_0x5afa('0xb')];if(_0x48896b instanceof Array){_0x48896b=_0x48896b[_0x5afa('0x26')](function(_0x3b9004){_0x3b9004[_0x5afa('0x1f')]=_0x3b9004[_0x5afa('0x1f')]['toString']();_0x3b9004['consequence']=_0x3b9004[_0x5afa('0x14')][_0x5afa('0x27')]();return _0x3b9004;});}else if(!_[_0x5afa('0x4')](_0x48896b)){_0x48896b['condition']=_0x48896b['condition'][_0x5afa('0x27')]();_0x48896b['consequence']=_0x48896b['consequence']['toString']();}return _0x48896b;};RuleEngine['prototype'][_0x5afa('0x28')]=function(_0x173602){this['init']();if(_[_0x5afa('0x29')](_0x173602)){_0x173602=JSON[_0x5afa('0x2a')](_0x173602);}if(_0x173602 instanceof Array){_0x173602=_0x173602[_0x5afa('0x26')](function(_0x48c6a6){_0x48c6a6['condition']=eval('('+_0x48c6a6[_0x5afa('0x1f')]+')');_0x48c6a6[_0x5afa('0x14')]=eval('('+_0x48c6a6[_0x5afa('0x14')]+')');return _0x48c6a6;});}else if(_0x173602!==null&&typeof _0x173602==_0x5afa('0x2b')){_0x173602[_0x5afa('0x1f')]=eval('('+_0x173602['condition']+')');_0x173602[_0x5afa('0x14')]=eval('('+_0x173602[_0x5afa('0x14')]+')');}this[_0x5afa('0x9')](_0x173602);};module[_0x5afa('0x2c')]=RuleEngine;