97d246b0b465b95dc114ff35f87f3fc3c0242789
[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 _0x169c=['ruleRef','name','index_','nextTick','next','isEqual','condition','call','matchPath','matches','turn','prioritize','findRules','length','priority','toJSON','map','toString','fromJSON','isString','parse','object','exports','lodash','util','events','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','rules','activeRules','prototype','isArray','concat','push','sync','filter','orderBy','asc','clone','consequence'];(function(_0x2aa71,_0x28f103){var _0x218552=function(_0x4de0bc){while(--_0x4de0bc){_0x2aa71['push'](_0x2aa71['shift']());}};_0x218552(++_0x28f103);}(_0x169c,0x14b));var _0xc169=function(_0x9b7721,_0x36ef2f){_0x9b7721=_0x9b7721-0x0;var _0x2c92de=_0x169c[_0x9b7721];return _0x2c92de;};'use strict';var _=require(_0xc169('0x0'));var util=require(_0xc169('0x1'));var EventEmitter=require(_0xc169('0x2'))[_0xc169('0x3')];function RuleEngine(_0x38e9a8,_0x1b6baf){this[_0xc169('0x4')]();if(!_[_0xc169('0x5')](_0x38e9a8)){this[_0xc169('0x6')](_0x38e9a8);}if(_0x1b6baf){this[_0xc169('0x7')]=_0x1b6baf[_0xc169('0x7')];}return this;}util[_0xc169('0x8')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0xc169('0x4')]=function(_0x43d0fc){this[_0xc169('0x9')]=[];this[_0xc169('0xa')]=[];};RuleEngine[_0xc169('0xb')][_0xc169('0x6')]=function(_0x52f940){if(Array[_0xc169('0xc')](_0x52f940)){this[_0xc169('0x9')]=this[_0xc169('0x9')][_0xc169('0xd')](_0x52f940);}else if(_0x52f940!==null&&_['isObject'](_0x52f940)){this[_0xc169('0x9')][_0xc169('0xe')](_0x52f940);}this[_0xc169('0xf')]();};RuleEngine[_0xc169('0xb')][_0xc169('0xf')]=function(){this['activeRules']=this[_0xc169('0x9')][_0xc169('0x10')](function(_0x378dbd){if(_[_0xc169('0x5')](_0x378dbd['on'])){_0x378dbd['on']=!![];}if(_0x378dbd['on']===!![]){return _0x378dbd;}});this['activeRules']=_[_0xc169('0x11')](this[_0xc169('0xa')],['p'],[_0xc169('0x12')]);};RuleEngine[_0xc169('0xb')]['execute']=function(_0x422c74,_0x538cf4){var _0x6417f1=![];_0x422c74['result']=!![];var _0xf78dde=_[_0xc169('0x13')](_0x422c74);var _0x474764=_[_0xc169('0x13')](_0x422c74);var _0x494b92=this[_0xc169('0xa')];var _0x14e48f=[];var _0x18fd41=this[_0xc169('0x7')];(function FnRuleLoop(_0x505fa1){var _0x2d56fc={'rules':function(){return _0x494b92;},'rule':function(){return _0x494b92[_0x505fa1];},'when':function(_0x4475da){if(_0x4475da){var _0x41c0b6=_0x494b92[_0x505fa1][_0xc169('0x14')];_0x41c0b6[_0xc169('0x15')]=_0x494b92[_0x505fa1]['id']||_0x494b92[_0x505fa1][_0xc169('0x16')]||_0xc169('0x17')+_0x505fa1;process['nextTick'](function(){_0x14e48f[_0xc169('0xe')](_0x41c0b6[_0xc169('0x15')]);_0x41c0b6['call'](_0xf78dde,_0x2d56fc);});}else{process[_0xc169('0x18')](function(){_0x2d56fc[_0xc169('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x6417f1=!![];return FnRuleLoop(0x0);},'next':function(_0x228f2f){if(!_0x18fd41&&!_[_0xc169('0x1a')](_0x474764,_0xf78dde)){_0x474764=_['clone'](_0xf78dde);process[_0xc169('0x18')](function(){_0x2d56fc['restart']();});}else{process[_0xc169('0x18')](function(){if(_[_0xc169('0x5')](_0x228f2f)){return FnRuleLoop(_0x505fa1+0x1);}else{return FnRuleLoop(_0x228f2f);}});}}};if(_0x505fa1<_0x494b92['length']&&_0x6417f1===![]){var _0x374609=_0x494b92[_0x505fa1][_0xc169('0x1b')];_0x374609[_0xc169('0x1c')](_0xf78dde,_0x2d56fc);}else{process[_0xc169('0x18')](function(){_0xf78dde[_0xc169('0x1d')]=_0x14e48f;return _0x538cf4?_0x538cf4(_0xf78dde):_['noop']();});}}(0x0));};RuleEngine[_0xc169('0xb')]['findRules']=function(_0x7104a3){if(_[_0xc169('0x5')](_0x7104a3)){return this[_0xc169('0x9')];}else{var _0x40b46e=_[_0xc169('0x1e')](_0x7104a3);return _['filter'](this[_0xc169('0x9')],_0x40b46e);}};RuleEngine[_0xc169('0xb')][_0xc169('0x1f')]=function(_0x4bcf30,_0x22cfb5){var _0x2acafa=_0x4bcf30==='on'||_0x4bcf30==='ON'?!![]:![];var _0x2d124c=this['findRules'](_0x22cfb5);for(var _0x18a27e=0x0,_0x3c3a78=_0x2d124c['length'];_0x18a27e<_0x3c3a78;_0x18a27e+=0x1){_0x2d124c[_0x18a27e]['on']=_0x2acafa;}this[_0xc169('0xf')]();};RuleEngine[_0xc169('0xb')][_0xc169('0x20')]=function(_0x1455a3,_0x42aa3e){_0x1455a3=parseInt(_0x1455a3,0xa);var _0x249388=this[_0xc169('0x21')](_0x42aa3e);for(var _0xd27c72=0x0,_0x322165=_0x249388[_0xc169('0x22')];_0xd27c72<_0x322165;_0xd27c72+=0x1){_0x249388[_0xd27c72][_0xc169('0x23')]=_0x1455a3;}this['sync']();};RuleEngine['prototype'][_0xc169('0x24')]=function(){var _0xb59120=this[_0xc169('0x9')];if(_0xb59120 instanceof Array){_0xb59120=_0xb59120[_0xc169('0x25')](function(_0x4d8285){_0x4d8285[_0xc169('0x1b')]=_0x4d8285['condition']['toString']();_0x4d8285[_0xc169('0x14')]=_0x4d8285[_0xc169('0x14')][_0xc169('0x26')]();return _0x4d8285;});}else if(!_[_0xc169('0x5')](_0xb59120)){_0xb59120[_0xc169('0x1b')]=_0xb59120[_0xc169('0x1b')][_0xc169('0x26')]();_0xb59120[_0xc169('0x14')]=_0xb59120['consequence'][_0xc169('0x26')]();}return _0xb59120;};RuleEngine['prototype'][_0xc169('0x27')]=function(_0xcde71e){this[_0xc169('0x4')]();if(_[_0xc169('0x28')](_0xcde71e)){_0xcde71e=JSON[_0xc169('0x29')](_0xcde71e);}if(_0xcde71e instanceof Array){_0xcde71e=_0xcde71e[_0xc169('0x25')](function(_0x544afe){_0x544afe[_0xc169('0x1b')]=eval('('+_0x544afe[_0xc169('0x1b')]+')');_0x544afe[_0xc169('0x14')]=eval('('+_0x544afe[_0xc169('0x14')]+')');return _0x544afe;});}else if(_0xcde71e!==null&&typeof _0xcde71e==_0xc169('0x2a')){_0xcde71e['condition']=eval('('+_0xcde71e[_0xc169('0x1b')]+')');_0xcde71e[_0xc169('0x14')]=eval('('+_0xcde71e[_0xc169('0x14')]+')');}this['register'](_0xcde71e);};module[_0xc169('0x2b')]=RuleEngine;