Built motion from commit (unavailable).|2.3.95
[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 _0x818e=['length','noop','prototype','findRules','matches','turn','prioritize','priority','toJSON','map','condition','toString','fromJSON','parse','util','events','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','rules','activeRules','isArray','isObject','push','sync','orderBy','asc','execute','clone','consequence','index_','nextTick','ruleRef','call','next','isEqual'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x818e,0x83));var _0xe818=function(_0x61a328,_0x4a3869){_0x61a328=_0x61a328-0x0;var _0x473959=_0x818e[_0x61a328];return _0x473959;};'use strict';var _=require('lodash');var util=require(_0xe818('0x0'));var EventEmitter=require(_0xe818('0x1'))[_0xe818('0x2')];function RuleEngine(_0x4f075d,_0x37b011){this[_0xe818('0x3')]();if(!_[_0xe818('0x4')](_0x4f075d)){this[_0xe818('0x5')](_0x4f075d);}if(_0x37b011){this['ignoreFactChanges']=_0x37b011[_0xe818('0x6')];}return this;}util[_0xe818('0x7')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0xe818('0x3')]=function(_0x5c6d9a){this[_0xe818('0x8')]=[];this[_0xe818('0x9')]=[];};RuleEngine['prototype'][_0xe818('0x5')]=function(_0x5a0f13){if(Array[_0xe818('0xa')](_0x5a0f13)){this[_0xe818('0x8')]=this[_0xe818('0x8')]['concat'](_0x5a0f13);}else if(_0x5a0f13!==null&&_[_0xe818('0xb')](_0x5a0f13)){this['rules'][_0xe818('0xc')](_0x5a0f13);}this[_0xe818('0xd')]();};RuleEngine['prototype'][_0xe818('0xd')]=function(){this[_0xe818('0x9')]=this[_0xe818('0x8')]['filter'](function(_0x3b12a7){if(_[_0xe818('0x4')](_0x3b12a7['on'])){_0x3b12a7['on']=!![];}if(_0x3b12a7['on']===!![]){return _0x3b12a7;}});this[_0xe818('0x9')]=_[_0xe818('0xe')](this[_0xe818('0x9')],['p'],[_0xe818('0xf')]);};RuleEngine['prototype'][_0xe818('0x10')]=function(_0x1a7ea0,_0x4d6067){var _0x251b59=![];_0x1a7ea0['result']=!![];var _0xf2be32=_['clone'](_0x1a7ea0);var _0xcfba07=_[_0xe818('0x11')](_0x1a7ea0);var _0x549e5f=this['activeRules'];var _0x5bd09d=[];var _0x4801fd=this[_0xe818('0x6')];(function FnRuleLoop(_0x5593c2){var _0x4c5475={'rules':function(){return _0x549e5f;},'rule':function(){return _0x549e5f[_0x5593c2];},'when':function(_0x17f28f){if(_0x17f28f){var _0x332a57=_0x549e5f[_0x5593c2][_0xe818('0x12')];_0x332a57['ruleRef']=_0x549e5f[_0x5593c2]['id']||_0x549e5f[_0x5593c2]['name']||_0xe818('0x13')+_0x5593c2;process[_0xe818('0x14')](function(){_0x5bd09d['push'](_0x332a57[_0xe818('0x15')]);_0x332a57[_0xe818('0x16')](_0xf2be32,_0x4c5475);});}else{process['nextTick'](function(){_0x4c5475[_0xe818('0x17')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x251b59=!![];return FnRuleLoop(0x0);},'next':function(_0x45116b){if(!_0x4801fd&&!_[_0xe818('0x18')](_0xcfba07,_0xf2be32)){_0xcfba07=_[_0xe818('0x11')](_0xf2be32);process['nextTick'](function(){_0x4c5475['restart']();});}else{process[_0xe818('0x14')](function(){if(_['isNil'](_0x45116b)){return FnRuleLoop(_0x5593c2+0x1);}else{return FnRuleLoop(_0x45116b);}});}}};if(_0x5593c2<_0x549e5f[_0xe818('0x19')]&&_0x251b59===![]){var _0x45c9a2=_0x549e5f[_0x5593c2]['condition'];_0x45c9a2[_0xe818('0x16')](_0xf2be32,_0x4c5475);}else{process[_0xe818('0x14')](function(){_0xf2be32['matchPath']=_0x5bd09d;return _0x4d6067?_0x4d6067(_0xf2be32):_[_0xe818('0x1a')]();});}}(0x0));};RuleEngine[_0xe818('0x1b')][_0xe818('0x1c')]=function(_0x312c23){if(_['isNil'](_0x312c23)){return this[_0xe818('0x8')];}else{var _0x2a4646=_[_0xe818('0x1d')](_0x312c23);return _['filter'](this[_0xe818('0x8')],_0x2a4646);}};RuleEngine['prototype'][_0xe818('0x1e')]=function(_0x16c07a,_0x257a0f){var _0x16c07a=_0x16c07a==='on'||_0x16c07a==='ON'?!![]:![];var _0x38116b=this[_0xe818('0x1c')](_0x257a0f);for(var _0x4e5b20=0x0,_0x4c2ffd=_0x38116b[_0xe818('0x19')];_0x4e5b20<_0x4c2ffd;_0x4e5b20+=0x1){_0x38116b[_0x4e5b20]['on']=_0x16c07a;}this['sync']();};RuleEngine[_0xe818('0x1b')][_0xe818('0x1f')]=function(_0x34cccd,_0x5e8d90){_0x34cccd=parseInt(_0x34cccd,0xa);var _0x30c09f=this[_0xe818('0x1c')](_0x5e8d90);for(var _0x22c3fb=0x0,_0x3054df=_0x30c09f[_0xe818('0x19')];_0x22c3fb<_0x3054df;_0x22c3fb+=0x1){_0x30c09f[_0x22c3fb][_0xe818('0x20')]=_0x34cccd;}this[_0xe818('0xd')]();};RuleEngine[_0xe818('0x1b')][_0xe818('0x21')]=function(){var _0x713a6a=this[_0xe818('0x8')];if(_0x713a6a instanceof Array){_0x713a6a=_0x713a6a[_0xe818('0x22')](function(_0x4fbb60){_0x4fbb60[_0xe818('0x23')]=_0x4fbb60[_0xe818('0x23')][_0xe818('0x24')]();_0x4fbb60[_0xe818('0x12')]=_0x4fbb60[_0xe818('0x12')][_0xe818('0x24')]();return _0x4fbb60;});}else if(!_[_0xe818('0x4')](_0x713a6a)){_0x713a6a[_0xe818('0x23')]=_0x713a6a[_0xe818('0x23')][_0xe818('0x24')]();_0x713a6a['consequence']=_0x713a6a[_0xe818('0x12')]['toString']();}return _0x713a6a;};RuleEngine[_0xe818('0x1b')][_0xe818('0x25')]=function(_0x27cbf8){this[_0xe818('0x3')]();if(_['isString'](_0x27cbf8)){_0x27cbf8=JSON[_0xe818('0x26')](_0x27cbf8);}if(_0x27cbf8 instanceof Array){_0x27cbf8=_0x27cbf8[_0xe818('0x22')](function(_0x34e318){_0x34e318['condition']=eval('('+_0x34e318[_0xe818('0x23')]+')');_0x34e318[_0xe818('0x12')]=eval('('+_0x34e318['consequence']+')');return _0x34e318;});}else if(_0x27cbf8!==null&&typeof _0x27cbf8=='object'){_0x27cbf8['condition']=eval('('+_0x27cbf8['condition']+')');_0x27cbf8['consequence']=eval('('+_0x27cbf8['consequence']+')');}this['register'](_0x27cbf8);};module['exports']=RuleEngine;