@convertcom/js-sdk-rules 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { RuleSet, Rule, Config } from '@convertcom/js-sdk-types';
1
+ import { RuleObject, RuleElement, Config } from '@convertcom/js-sdk-types';
2
2
  import { RuleError } from '@convertcom/js-sdk-enums';
3
3
  import { LogManagerInterface } from '@convertcom/js-sdk-logger';
4
4
 
@@ -12,8 +12,8 @@ import { LogManagerInterface } from '@convertcom/js-sdk-logger';
12
12
  interface RuleManagerInterface {
13
13
  comparisonProcessor: Record<string, any>;
14
14
  getComparisonProcessorMethods(): Array<string>;
15
- isRuleMatched(data: Record<string, any>, ruleSet: RuleSet, logEntry?: string): boolean | RuleError;
16
- isValidRule(rule: Rule): boolean;
15
+ isRuleMatched(data: Record<string, any>, ruleSet: RuleObject, logEntry?: string): boolean | RuleError;
16
+ isValidRule(rule: RuleElement): boolean;
17
17
  }
18
18
 
19
19
  /**
@@ -53,16 +53,16 @@ declare class RuleManager implements RuleManagerInterface {
53
53
  /**
54
54
  * Check input data matching to rule set
55
55
  * @param {Record<string, any>} data Single value or key-value data set to compare
56
- * @param {RuleSet} ruleSet
56
+ * @param {RuleObject} ruleSet
57
57
  * @return {boolean | RuleError}
58
58
  */
59
- isRuleMatched(data: Record<string, any>, ruleSet: RuleSet, logEntry?: string): boolean | RuleError;
59
+ isRuleMatched(data: Record<string, any>, ruleSet: RuleObject, logEntry?: string): boolean | RuleError;
60
60
  /**
61
61
  * Check is rule object valid
62
- * @param {Rule} rule
62
+ * @param {RuleElement} rule
63
63
  * @return {boolean}
64
64
  */
65
- isValidRule(rule: Rule): boolean;
65
+ isValidRule(rule: RuleElement): boolean;
66
66
  /**
67
67
  * Process AND block of rule set. Return first false if found
68
68
  * @param {Record<string, any>} data Single value or key-value data set to compare
@@ -82,7 +82,7 @@ declare class RuleManager implements RuleManagerInterface {
82
82
  /**
83
83
  * Process single rule item
84
84
  * @param {Record<string, any>} data Single value or key-value data set to compare
85
- * @param {Rule} rule A single rule to compare
85
+ * @param {RuleElement} rule A single rule to compare
86
86
  * @return {boolean | RuleError} Comparison result
87
87
  * @private
88
88
  */
package/lib/index.js CHANGED
@@ -60,7 +60,7 @@ class RuleManager {
60
60
  /**
61
61
  * Check input data matching to rule set
62
62
  * @param {Record<string, any>} data Single value or key-value data set to compare
63
- * @param {RuleSet} ruleSet
63
+ * @param {RuleObject} ruleSet
64
64
  * @return {boolean | RuleError}
65
65
  */
66
66
  isRuleMatched(data, ruleSet, logEntry) {
@@ -98,7 +98,7 @@ class RuleManager {
98
98
  }
99
99
  /**
100
100
  * Check is rule object valid
101
- * @param {Rule} rule
101
+ * @param {RuleElement} rule
102
102
  * @return {boolean}
103
103
  */
104
104
  isValidRule(rule) {
@@ -171,7 +171,7 @@ class RuleManager {
171
171
  /**
172
172
  * Process single rule item
173
173
  * @param {Record<string, any>} data Single value or key-value data set to compare
174
- * @param {Rule} rule A single rule to compare
174
+ * @param {RuleElement} rule A single rule to compare
175
175
  * @return {boolean | RuleError} Comparison result
176
176
  * @private
177
177
  */
@@ -185,7 +185,7 @@ class RuleManager {
185
185
  if (data && typeof data === 'object') {
186
186
  // Validate data key-value set.
187
187
  if (this.isUsingCustomInterface(data)) {
188
- // Rule object has to have `rule_type` field
188
+ // RuleElement object has to have `rule_type` field
189
189
  if (rule === null || rule === void 0 ? void 0 : rule.rule_type) {
190
190
  (_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.info) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager._processRuleItem()', jsSdkEnums.MESSAGES.RULE_MATCH_START.replace('#', rule.rule_type));
191
191
  for (const method of Object.getOwnPropertyNames(data.constructor.prototype)) {
@@ -205,12 +205,12 @@ class RuleManager {
205
205
  }
206
206
  }
207
207
  else if (jsSdkUtils.objectNotEmpty(data)) {
208
- // Rule object has to have `key` field
208
+ // only handle RuleElement with a `key` field
209
209
  for (const key of Object.keys(data)) {
210
210
  const k = this._keys_case_sensitive ? key : key.toLowerCase();
211
211
  const rule_k = this._keys_case_sensitive
212
- ? rule.key
213
- : rule.key.toLowerCase();
212
+ ? rule['key']
213
+ : String(rule['key']).toLowerCase();
214
214
  if (k === rule_k) {
215
215
  return this._comparisonProcessor[matching](data[key], rule.value, negation);
216
216
  }
package/lib/index.min.js CHANGED
@@ -4,5 +4,5 @@
4
4
  * Copyright(c) 2020-2022 Convert Insights, Inc
5
5
  * License Apache-2.0
6
6
  */
7
- "use strict";var e=require("@convertcom/js-sdk-utils"),r=require("@convertcom/js-sdk-enums");exports.RuleManager=class{constructor(o,{loggerManager:l}={}){var t,a,s,i,n;this._comparisonProcessor=e.Comparisons,this._negation="!",this._keys_case_sensitive=true,this._loggerManager=l,this._comparisonProcessor=(null===(t=null==o?void 0:o.rules)||void 0===t?void 0:t.comparisonProcessor)||e.Comparisons,this._negation=String((null===(a=null==o?void 0:o.rules)||void 0===a?void 0:a.negation)||"!"),this._keys_case_sensitive=(null===(s=null==o?void 0:o.rules)||void 0===s?void 0:s.keys_case_sensitive)||true,this._mapper=(null==o?void 0:o.mapper)||(e=>e),null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager()",r.MESSAGES.RULE_CONSTRUCTOR,this)}set comparisonProcessor(e){this._comparisonProcessor=e}get comparisonProcessor(){return this._comparisonProcessor}getComparisonProcessorMethods(){return Object.getOwnPropertyNames(this._comparisonProcessor).filter((e=>"function"==typeof this._comparisonProcessor[e]))}isRuleMatched(o,l,t){var a,s,i,n,c,u,_,g,R,p;let d;if(null===(s=null===(a=this._loggerManager)||void 0===a?void 0:a.trace)||void 0===s||s.call(a,"RuleManager.isRuleMatched()",this._mapper({data:o,ruleSet:l})),t&&(null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.info)||void 0===n||n.call(i,"RuleManager.isRuleMatched()",r.MESSAGES.PROCESSING_ENTITY.replace("#",t))),Object.prototype.hasOwnProperty.call(l,"OR")&&e.arrayNotEmpty(null==l?void 0:l.OR)){for(let e=0,a=l.OR.length;e<a;e++)if(d=this._processAND(o,l.OR[e]),Object.values(r.RuleError).includes(d)?null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager.isRuleMatched()",t||"",r.ERROR_MESSAGES.RULE_ERROR):null===(g=null===(_=this._loggerManager)||void 0===_?void 0:_.info)||void 0===g||g.call(_,"RuleManager.isRuleMatched()",t||"",!1===d?r.MESSAGES.RULE_NOT_MATCH:r.MESSAGES.RULE_MATCH.replace("#",String(e))),!1!==d)return d}else null===(p=null===(R=this._loggerManager)||void 0===R?void 0:R.warn)||void 0===p||p.call(R,"RuleManager.isRuleMatched()",t||"",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1}isValidRule(e){var r,o;return null===(o=null===(r=this._loggerManager)||void 0===r?void 0:r.trace)||void 0===o||o.call(r,"RuleManager.isValidRule()",this._mapper({rule:e})),Object.prototype.hasOwnProperty.call(e,"matching")&&"object"==typeof e.matching&&Object.prototype.hasOwnProperty.call(e.matching,"match_type")&&"string"==typeof e.matching.match_type&&Object.prototype.hasOwnProperty.call(e.matching,"negated")&&"boolean"==typeof e.matching.negated&&Object.prototype.hasOwnProperty.call(e,"value")}_processAND(o,l){var t,a,s,i;let n;if(Object.prototype.hasOwnProperty.call(l,"AND")&&e.arrayNotEmpty(null==l?void 0:l.AND)){for(let e=0,r=l.AND.length;e<r;e++)if(n=this._processORWHEN(o,l.AND[e]),!1===n)return!1;return!1!==n&&(null===(a=null===(t=this._loggerManager)||void 0===t?void 0:t.info)||void 0===a||a.call(t,"RuleManager._processAND()",r.MESSAGES.RULE_MATCH_AND)),n}return null===(i=null===(s=this._loggerManager)||void 0===s?void 0:s.warn)||void 0===i||i.call(s,"RuleManager._processAND()",r.ERROR_MESSAGES.RULE_NOT_VALID),!1}_processORWHEN(o,l){var t,a;let s;if(Object.prototype.hasOwnProperty.call(l,"OR_WHEN")&&e.arrayNotEmpty(null==l?void 0:l.OR_WHEN)){for(let e=0,r=l.OR_WHEN.length;e<r;e++)if(s=this._processRuleItem(o,l.OR_WHEN[e]),!1!==s)return s}else null===(a=null===(t=this._loggerManager)||void 0===t?void 0:t.warn)||void 0===a||a.call(t,"RuleManager._processORWHEN()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1}_processRuleItem(o,l){var t,a,s,i,n,c,u,_,g,R,p,d,v;if(this.isValidRule(l))try{const R=l.matching.negated||!1,p=l.matching.match_type;if(-1!==this.getComparisonProcessorMethods().indexOf(p))if(o&&"object"==typeof o)if(this.isUsingCustomInterface(o)){if(null==l?void 0:l.rule_type){null===(a=null===(t=this._loggerManager)||void 0===t?void 0:t.info)||void 0===a||a.call(t,"RuleManager._processRuleItem()",r.MESSAGES.RULE_MATCH_START.replace("#",l.rule_type));for(const t of Object.getOwnPropertyNames(o.constructor.prototype)){if("constructor"===t)continue;const a=e.camelCase(`get ${l.rule_type.replace(/_/g," ")}`);if(t===a||(null===(s=null==o?void 0:o.mapper)||void 0===s?void 0:s.call(o,t))===a){const e=o[t](l);return Object.values(r.RuleError).includes(e)||"js_condition"===l.rule_type?e:this._comparisonProcessor[p](e,l.value,R)}}}}else if(e.objectNotEmpty(o))for(const e of Object.keys(o)){const r=this._keys_case_sensitive?e:e.toLowerCase();if(r===(this._keys_case_sensitive?l.key:l.key.toLowerCase()))return this._comparisonProcessor[p](o[e],l.value,R)}else null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_DATA_NOT_VALID,data:o});else null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.trace)||void 0===u||u.call(c,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_NOT_VALID,data:o,rule:l});else null===(g=null===(_=this._loggerManager)||void 0===_?void 0:_.warn)||void 0===g||g.call(_,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_MATCH_TYPE_NOT_SUPPORTED.replace("#",p))}catch(e){null===(p=null===(R=this._loggerManager)||void 0===R?void 0:R.error)||void 0===p||p.call(R,"RuleManager._processRuleItem()",{error:e.message})}else null===(v=null===(d=this._loggerManager)||void 0===d?void 0:d.warn)||void 0===v||v.call(d,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1}isUsingCustomInterface(r){return e.objectNotEmpty(r)&&Object.prototype.hasOwnProperty.call(r,"name")&&"RuleData"===r.name}};
7
+ "use strict";var e=require("@convertcom/js-sdk-utils"),r=require("@convertcom/js-sdk-enums");exports.RuleManager=class{constructor(o,{loggerManager:l}={}){var t,a,s,i,n;this._comparisonProcessor=e.Comparisons,this._negation="!",this._keys_case_sensitive=true,this._loggerManager=l,this._comparisonProcessor=(null===(t=null==o?void 0:o.rules)||void 0===t?void 0:t.comparisonProcessor)||e.Comparisons,this._negation=String((null===(a=null==o?void 0:o.rules)||void 0===a?void 0:a.negation)||"!"),this._keys_case_sensitive=(null===(s=null==o?void 0:o.rules)||void 0===s?void 0:s.keys_case_sensitive)||true,this._mapper=(null==o?void 0:o.mapper)||(e=>e),null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager()",r.MESSAGES.RULE_CONSTRUCTOR,this)}set comparisonProcessor(e){this._comparisonProcessor=e}get comparisonProcessor(){return this._comparisonProcessor}getComparisonProcessorMethods(){return Object.getOwnPropertyNames(this._comparisonProcessor).filter((e=>"function"==typeof this._comparisonProcessor[e]))}isRuleMatched(o,l,t){var a,s,i,n,c,u,_,g,R,p;let d;if(null===(s=null===(a=this._loggerManager)||void 0===a?void 0:a.trace)||void 0===s||s.call(a,"RuleManager.isRuleMatched()",this._mapper({data:o,ruleSet:l})),t&&(null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.info)||void 0===n||n.call(i,"RuleManager.isRuleMatched()",r.MESSAGES.PROCESSING_ENTITY.replace("#",t))),Object.prototype.hasOwnProperty.call(l,"OR")&&e.arrayNotEmpty(null==l?void 0:l.OR)){for(let e=0,a=l.OR.length;e<a;e++)if(d=this._processAND(o,l.OR[e]),Object.values(r.RuleError).includes(d)?null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager.isRuleMatched()",t||"",r.ERROR_MESSAGES.RULE_ERROR):null===(g=null===(_=this._loggerManager)||void 0===_?void 0:_.info)||void 0===g||g.call(_,"RuleManager.isRuleMatched()",t||"",!1===d?r.MESSAGES.RULE_NOT_MATCH:r.MESSAGES.RULE_MATCH.replace("#",String(e))),!1!==d)return d}else null===(p=null===(R=this._loggerManager)||void 0===R?void 0:R.warn)||void 0===p||p.call(R,"RuleManager.isRuleMatched()",t||"",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1}isValidRule(e){var r,o;return null===(o=null===(r=this._loggerManager)||void 0===r?void 0:r.trace)||void 0===o||o.call(r,"RuleManager.isValidRule()",this._mapper({rule:e})),Object.prototype.hasOwnProperty.call(e,"matching")&&"object"==typeof e.matching&&Object.prototype.hasOwnProperty.call(e.matching,"match_type")&&"string"==typeof e.matching.match_type&&Object.prototype.hasOwnProperty.call(e.matching,"negated")&&"boolean"==typeof e.matching.negated&&Object.prototype.hasOwnProperty.call(e,"value")}_processAND(o,l){var t,a,s,i;let n;if(Object.prototype.hasOwnProperty.call(l,"AND")&&e.arrayNotEmpty(null==l?void 0:l.AND)){for(let e=0,r=l.AND.length;e<r;e++)if(n=this._processORWHEN(o,l.AND[e]),!1===n)return!1;return!1!==n&&(null===(a=null===(t=this._loggerManager)||void 0===t?void 0:t.info)||void 0===a||a.call(t,"RuleManager._processAND()",r.MESSAGES.RULE_MATCH_AND)),n}return null===(i=null===(s=this._loggerManager)||void 0===s?void 0:s.warn)||void 0===i||i.call(s,"RuleManager._processAND()",r.ERROR_MESSAGES.RULE_NOT_VALID),!1}_processORWHEN(o,l){var t,a;let s;if(Object.prototype.hasOwnProperty.call(l,"OR_WHEN")&&e.arrayNotEmpty(null==l?void 0:l.OR_WHEN)){for(let e=0,r=l.OR_WHEN.length;e<r;e++)if(s=this._processRuleItem(o,l.OR_WHEN[e]),!1!==s)return s}else null===(a=null===(t=this._loggerManager)||void 0===t?void 0:t.warn)||void 0===a||a.call(t,"RuleManager._processORWHEN()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1}_processRuleItem(o,l){var t,a,s,i,n,c,u,_,g,R,p,d,v;if(this.isValidRule(l))try{const R=l.matching.negated||!1,p=l.matching.match_type;if(-1!==this.getComparisonProcessorMethods().indexOf(p))if(o&&"object"==typeof o)if(this.isUsingCustomInterface(o)){if(null==l?void 0:l.rule_type){null===(a=null===(t=this._loggerManager)||void 0===t?void 0:t.info)||void 0===a||a.call(t,"RuleManager._processRuleItem()",r.MESSAGES.RULE_MATCH_START.replace("#",l.rule_type));for(const t of Object.getOwnPropertyNames(o.constructor.prototype)){if("constructor"===t)continue;const a=e.camelCase(`get ${l.rule_type.replace(/_/g," ")}`);if(t===a||(null===(s=null==o?void 0:o.mapper)||void 0===s?void 0:s.call(o,t))===a){const e=o[t](l);return Object.values(r.RuleError).includes(e)||"js_condition"===l.rule_type?e:this._comparisonProcessor[p](e,l.value,R)}}}}else if(e.objectNotEmpty(o))for(const e of Object.keys(o)){const r=this._keys_case_sensitive?e:e.toLowerCase();if(r===(this._keys_case_sensitive?l.key:String(l.key).toLowerCase()))return this._comparisonProcessor[p](o[e],l.value,R)}else null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_DATA_NOT_VALID,data:o});else null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.trace)||void 0===u||u.call(c,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_NOT_VALID,data:o,rule:l});else null===(g=null===(_=this._loggerManager)||void 0===_?void 0:_.warn)||void 0===g||g.call(_,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_MATCH_TYPE_NOT_SUPPORTED.replace("#",p))}catch(e){null===(p=null===(R=this._loggerManager)||void 0===R?void 0:R.error)||void 0===p||p.call(R,"RuleManager._processRuleItem()",{error:e.message})}else null===(v=null===(d=this._loggerManager)||void 0===d?void 0:d.warn)||void 0===v||v.call(d,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1}isUsingCustomInterface(r){return e.objectNotEmpty(r)&&Object.prototype.hasOwnProperty.call(r,"name")&&"RuleData"===r.name}};
8
8
  //# sourceMappingURL=index.min.js.map
package/lib/index.min.mjs CHANGED
@@ -4,5 +4,5 @@
4
4
  * Copyright(c) 2020-2022 Convert Insights, Inc
5
5
  * License Apache-2.0
6
6
  */
7
- import{Comparisons as e,arrayNotEmpty as l,camelCase as o,objectNotEmpty as r}from"@convertcom/js-sdk-utils";import{MESSAGES as t,RuleError as a,ERROR_MESSAGES as s}from"@convertcom/js-sdk-enums";class i{constructor(l,{loggerManager:o}={}){var r,a,s,i,n;this._comparisonProcessor=e,this._negation="!",this._keys_case_sensitive=true,this._loggerManager=o,this._comparisonProcessor=(null===(r=null==l?void 0:l.rules)||void 0===r?void 0:r.comparisonProcessor)||e,this._negation=String((null===(a=null==l?void 0:l.rules)||void 0===a?void 0:a.negation)||"!"),this._keys_case_sensitive=(null===(s=null==l?void 0:l.rules)||void 0===s?void 0:s.keys_case_sensitive)||true,this._mapper=(null==l?void 0:l.mapper)||(e=>e),null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager()",t.RULE_CONSTRUCTOR,this)}set comparisonProcessor(e){this._comparisonProcessor=e}get comparisonProcessor(){return this._comparisonProcessor}getComparisonProcessorMethods(){return Object.getOwnPropertyNames(this._comparisonProcessor).filter((e=>"function"==typeof this._comparisonProcessor[e]))}isRuleMatched(e,o,r){var i,n,c,u,g,_,d,p,v,h;let R;if(null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager.isRuleMatched()",this._mapper({data:e,ruleSet:o})),r&&(null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager.isRuleMatched()",t.PROCESSING_ENTITY.replace("#",r))),Object.prototype.hasOwnProperty.call(o,"OR")&&l(null==o?void 0:o.OR)){for(let l=0,i=o.OR.length;l<i;l++)if(R=this._processAND(e,o.OR[l]),Object.values(a).includes(R)?null===(_=null===(g=this._loggerManager)||void 0===g?void 0:g.info)||void 0===_||_.call(g,"RuleManager.isRuleMatched()",r||"",s.RULE_ERROR):null===(p=null===(d=this._loggerManager)||void 0===d?void 0:d.info)||void 0===p||p.call(d,"RuleManager.isRuleMatched()",r||"",!1===R?t.RULE_NOT_MATCH:t.RULE_MATCH.replace("#",String(l))),!1!==R)return R}else null===(h=null===(v=this._loggerManager)||void 0===v?void 0:v.warn)||void 0===h||h.call(v,"RuleManager.isRuleMatched()",r||"",s.RULE_NOT_VALID);return!1}isValidRule(e){var l,o;return null===(o=null===(l=this._loggerManager)||void 0===l?void 0:l.trace)||void 0===o||o.call(l,"RuleManager.isValidRule()",this._mapper({rule:e})),Object.prototype.hasOwnProperty.call(e,"matching")&&"object"==typeof e.matching&&Object.prototype.hasOwnProperty.call(e.matching,"match_type")&&"string"==typeof e.matching.match_type&&Object.prototype.hasOwnProperty.call(e.matching,"negated")&&"boolean"==typeof e.matching.negated&&Object.prototype.hasOwnProperty.call(e,"value")}_processAND(e,o){var r,a,i,n;let c;if(Object.prototype.hasOwnProperty.call(o,"AND")&&l(null==o?void 0:o.AND)){for(let l=0,r=o.AND.length;l<r;l++)if(c=this._processORWHEN(e,o.AND[l]),!1===c)return!1;return!1!==c&&(null===(a=null===(r=this._loggerManager)||void 0===r?void 0:r.info)||void 0===a||a.call(r,"RuleManager._processAND()",t.RULE_MATCH_AND)),c}return null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.warn)||void 0===n||n.call(i,"RuleManager._processAND()",s.RULE_NOT_VALID),!1}_processORWHEN(e,o){var r,t;let a;if(Object.prototype.hasOwnProperty.call(o,"OR_WHEN")&&l(null==o?void 0:o.OR_WHEN)){for(let l=0,r=o.OR_WHEN.length;l<r;l++)if(a=this._processRuleItem(e,o.OR_WHEN[l]),!1!==a)return a}else null===(t=null===(r=this._loggerManager)||void 0===r?void 0:r.warn)||void 0===t||t.call(r,"RuleManager._processORWHEN()",s.RULE_NOT_VALID);return!1}_processRuleItem(e,l){var i,n,c,u,g,_,d,p,v,h,R,m,O;if(this.isValidRule(l))try{const h=l.matching.negated||!1,R=l.matching.match_type;if(-1!==this.getComparisonProcessorMethods().indexOf(R))if(e&&"object"==typeof e)if(this.isUsingCustomInterface(e)){if(null==l?void 0:l.rule_type){null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.info)||void 0===n||n.call(i,"RuleManager._processRuleItem()",t.RULE_MATCH_START.replace("#",l.rule_type));for(const r of Object.getOwnPropertyNames(e.constructor.prototype)){if("constructor"===r)continue;const t=o(`get ${l.rule_type.replace(/_/g," ")}`);if(r===t||(null===(c=null==e?void 0:e.mapper)||void 0===c?void 0:c.call(e,r))===t){const o=e[r](l);return Object.values(a).includes(o)||"js_condition"===l.rule_type?o:this._comparisonProcessor[R](o,l.value,h)}}}}else if(r(e))for(const o of Object.keys(e)){const r=this._keys_case_sensitive?o:o.toLowerCase();if(r===(this._keys_case_sensitive?l.key:l.key.toLowerCase()))return this._comparisonProcessor[R](e[o],l.value,h)}else null===(g=null===(u=this._loggerManager)||void 0===u?void 0:u.trace)||void 0===g||g.call(u,"RuleManager._processRuleItem()",{warn:s.RULE_DATA_NOT_VALID,data:e});else null===(d=null===(_=this._loggerManager)||void 0===_?void 0:_.trace)||void 0===d||d.call(_,"RuleManager._processRuleItem()",{warn:s.RULE_NOT_VALID,data:e,rule:l});else null===(v=null===(p=this._loggerManager)||void 0===p?void 0:p.warn)||void 0===v||v.call(p,"RuleManager._processRuleItem()",s.RULE_MATCH_TYPE_NOT_SUPPORTED.replace("#",R))}catch(e){null===(R=null===(h=this._loggerManager)||void 0===h?void 0:h.error)||void 0===R||R.call(h,"RuleManager._processRuleItem()",{error:e.message})}else null===(O=null===(m=this._loggerManager)||void 0===m?void 0:m.warn)||void 0===O||O.call(m,"RuleManager._processRuleItem()",s.RULE_NOT_VALID);return!1}isUsingCustomInterface(e){return r(e)&&Object.prototype.hasOwnProperty.call(e,"name")&&"RuleData"===e.name}}export{i as RuleManager};
7
+ import{Comparisons as e,arrayNotEmpty as l,camelCase as o,objectNotEmpty as r}from"@convertcom/js-sdk-utils";import{MESSAGES as t,RuleError as a,ERROR_MESSAGES as s}from"@convertcom/js-sdk-enums";class i{constructor(l,{loggerManager:o}={}){var r,a,s,i,n;this._comparisonProcessor=e,this._negation="!",this._keys_case_sensitive=true,this._loggerManager=o,this._comparisonProcessor=(null===(r=null==l?void 0:l.rules)||void 0===r?void 0:r.comparisonProcessor)||e,this._negation=String((null===(a=null==l?void 0:l.rules)||void 0===a?void 0:a.negation)||"!"),this._keys_case_sensitive=(null===(s=null==l?void 0:l.rules)||void 0===s?void 0:s.keys_case_sensitive)||true,this._mapper=(null==l?void 0:l.mapper)||(e=>e),null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager()",t.RULE_CONSTRUCTOR,this)}set comparisonProcessor(e){this._comparisonProcessor=e}get comparisonProcessor(){return this._comparisonProcessor}getComparisonProcessorMethods(){return Object.getOwnPropertyNames(this._comparisonProcessor).filter((e=>"function"==typeof this._comparisonProcessor[e]))}isRuleMatched(e,o,r){var i,n,c,u,g,_,d,p,v,h;let R;if(null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===n||n.call(i,"RuleManager.isRuleMatched()",this._mapper({data:e,ruleSet:o})),r&&(null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager.isRuleMatched()",t.PROCESSING_ENTITY.replace("#",r))),Object.prototype.hasOwnProperty.call(o,"OR")&&l(null==o?void 0:o.OR)){for(let l=0,i=o.OR.length;l<i;l++)if(R=this._processAND(e,o.OR[l]),Object.values(a).includes(R)?null===(_=null===(g=this._loggerManager)||void 0===g?void 0:g.info)||void 0===_||_.call(g,"RuleManager.isRuleMatched()",r||"",s.RULE_ERROR):null===(p=null===(d=this._loggerManager)||void 0===d?void 0:d.info)||void 0===p||p.call(d,"RuleManager.isRuleMatched()",r||"",!1===R?t.RULE_NOT_MATCH:t.RULE_MATCH.replace("#",String(l))),!1!==R)return R}else null===(h=null===(v=this._loggerManager)||void 0===v?void 0:v.warn)||void 0===h||h.call(v,"RuleManager.isRuleMatched()",r||"",s.RULE_NOT_VALID);return!1}isValidRule(e){var l,o;return null===(o=null===(l=this._loggerManager)||void 0===l?void 0:l.trace)||void 0===o||o.call(l,"RuleManager.isValidRule()",this._mapper({rule:e})),Object.prototype.hasOwnProperty.call(e,"matching")&&"object"==typeof e.matching&&Object.prototype.hasOwnProperty.call(e.matching,"match_type")&&"string"==typeof e.matching.match_type&&Object.prototype.hasOwnProperty.call(e.matching,"negated")&&"boolean"==typeof e.matching.negated&&Object.prototype.hasOwnProperty.call(e,"value")}_processAND(e,o){var r,a,i,n;let c;if(Object.prototype.hasOwnProperty.call(o,"AND")&&l(null==o?void 0:o.AND)){for(let l=0,r=o.AND.length;l<r;l++)if(c=this._processORWHEN(e,o.AND[l]),!1===c)return!1;return!1!==c&&(null===(a=null===(r=this._loggerManager)||void 0===r?void 0:r.info)||void 0===a||a.call(r,"RuleManager._processAND()",t.RULE_MATCH_AND)),c}return null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.warn)||void 0===n||n.call(i,"RuleManager._processAND()",s.RULE_NOT_VALID),!1}_processORWHEN(e,o){var r,t;let a;if(Object.prototype.hasOwnProperty.call(o,"OR_WHEN")&&l(null==o?void 0:o.OR_WHEN)){for(let l=0,r=o.OR_WHEN.length;l<r;l++)if(a=this._processRuleItem(e,o.OR_WHEN[l]),!1!==a)return a}else null===(t=null===(r=this._loggerManager)||void 0===r?void 0:r.warn)||void 0===t||t.call(r,"RuleManager._processORWHEN()",s.RULE_NOT_VALID);return!1}_processRuleItem(e,l){var i,n,c,u,g,_,d,p,v,h,R,m,O;if(this.isValidRule(l))try{const h=l.matching.negated||!1,R=l.matching.match_type;if(-1!==this.getComparisonProcessorMethods().indexOf(R))if(e&&"object"==typeof e)if(this.isUsingCustomInterface(e)){if(null==l?void 0:l.rule_type){null===(n=null===(i=this._loggerManager)||void 0===i?void 0:i.info)||void 0===n||n.call(i,"RuleManager._processRuleItem()",t.RULE_MATCH_START.replace("#",l.rule_type));for(const r of Object.getOwnPropertyNames(e.constructor.prototype)){if("constructor"===r)continue;const t=o(`get ${l.rule_type.replace(/_/g," ")}`);if(r===t||(null===(c=null==e?void 0:e.mapper)||void 0===c?void 0:c.call(e,r))===t){const o=e[r](l);return Object.values(a).includes(o)||"js_condition"===l.rule_type?o:this._comparisonProcessor[R](o,l.value,h)}}}}else if(r(e))for(const o of Object.keys(e)){const r=this._keys_case_sensitive?o:o.toLowerCase();if(r===(this._keys_case_sensitive?l.key:String(l.key).toLowerCase()))return this._comparisonProcessor[R](e[o],l.value,h)}else null===(g=null===(u=this._loggerManager)||void 0===u?void 0:u.trace)||void 0===g||g.call(u,"RuleManager._processRuleItem()",{warn:s.RULE_DATA_NOT_VALID,data:e});else null===(d=null===(_=this._loggerManager)||void 0===_?void 0:_.trace)||void 0===d||d.call(_,"RuleManager._processRuleItem()",{warn:s.RULE_NOT_VALID,data:e,rule:l});else null===(v=null===(p=this._loggerManager)||void 0===p?void 0:p.warn)||void 0===v||v.call(p,"RuleManager._processRuleItem()",s.RULE_MATCH_TYPE_NOT_SUPPORTED.replace("#",R))}catch(e){null===(R=null===(h=this._loggerManager)||void 0===h?void 0:h.error)||void 0===R||R.call(h,"RuleManager._processRuleItem()",{error:e.message})}else null===(O=null===(m=this._loggerManager)||void 0===m?void 0:m.warn)||void 0===O||O.call(m,"RuleManager._processRuleItem()",s.RULE_NOT_VALID);return!1}isUsingCustomInterface(e){return r(e)&&Object.prototype.hasOwnProperty.call(e,"name")&&"RuleData"===e.name}}export{i as RuleManager};
8
8
  //# sourceMappingURL=index.min.mjs.map
package/lib/index.mjs CHANGED
@@ -58,7 +58,7 @@ class RuleManager {
58
58
  /**
59
59
  * Check input data matching to rule set
60
60
  * @param {Record<string, any>} data Single value or key-value data set to compare
61
- * @param {RuleSet} ruleSet
61
+ * @param {RuleObject} ruleSet
62
62
  * @return {boolean | RuleError}
63
63
  */
64
64
  isRuleMatched(data, ruleSet, logEntry) {
@@ -96,7 +96,7 @@ class RuleManager {
96
96
  }
97
97
  /**
98
98
  * Check is rule object valid
99
- * @param {Rule} rule
99
+ * @param {RuleElement} rule
100
100
  * @return {boolean}
101
101
  */
102
102
  isValidRule(rule) {
@@ -169,7 +169,7 @@ class RuleManager {
169
169
  /**
170
170
  * Process single rule item
171
171
  * @param {Record<string, any>} data Single value or key-value data set to compare
172
- * @param {Rule} rule A single rule to compare
172
+ * @param {RuleElement} rule A single rule to compare
173
173
  * @return {boolean | RuleError} Comparison result
174
174
  * @private
175
175
  */
@@ -183,7 +183,7 @@ class RuleManager {
183
183
  if (data && typeof data === 'object') {
184
184
  // Validate data key-value set.
185
185
  if (this.isUsingCustomInterface(data)) {
186
- // Rule object has to have `rule_type` field
186
+ // RuleElement object has to have `rule_type` field
187
187
  if (rule === null || rule === void 0 ? void 0 : rule.rule_type) {
188
188
  (_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.info) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager._processRuleItem()', MESSAGES.RULE_MATCH_START.replace('#', rule.rule_type));
189
189
  for (const method of Object.getOwnPropertyNames(data.constructor.prototype)) {
@@ -203,12 +203,12 @@ class RuleManager {
203
203
  }
204
204
  }
205
205
  else if (objectNotEmpty(data)) {
206
- // Rule object has to have `key` field
206
+ // only handle RuleElement with a `key` field
207
207
  for (const key of Object.keys(data)) {
208
208
  const k = this._keys_case_sensitive ? key : key.toLowerCase();
209
209
  const rule_k = this._keys_case_sensitive
210
- ? rule.key
211
- : rule.key.toLowerCase();
210
+ ? rule['key']
211
+ : String(rule['key']).toLowerCase();
212
212
  if (k === rule_k) {
213
213
  return this._comparisonProcessor[matching](data[key], rule.value, negation);
214
214
  }
@@ -94,7 +94,7 @@ var RuleManager = /** @class */ (function () {
94
94
  /**
95
95
  * Check input data matching to rule set
96
96
  * @param {Record<string, any>} data Single value or key-value data set to compare
97
- * @param {RuleSet} ruleSet
97
+ * @param {RuleObject} ruleSet
98
98
  * @return {boolean | RuleError}
99
99
  */
100
100
  RuleManager.prototype.isRuleMatched = function (data, ruleSet, logEntry) {
@@ -132,7 +132,7 @@ var RuleManager = /** @class */ (function () {
132
132
  };
133
133
  /**
134
134
  * Check is rule object valid
135
- * @param {Rule} rule
135
+ * @param {RuleElement} rule
136
136
  * @return {boolean}
137
137
  */
138
138
  RuleManager.prototype.isValidRule = function (rule) {
@@ -205,7 +205,7 @@ var RuleManager = /** @class */ (function () {
205
205
  /**
206
206
  * Process single rule item
207
207
  * @param {Record<string, any>} data Single value or key-value data set to compare
208
- * @param {Rule} rule A single rule to compare
208
+ * @param {RuleElement} rule A single rule to compare
209
209
  * @return {boolean | RuleError} Comparison result
210
210
  * @private
211
211
  */
@@ -220,7 +220,7 @@ var RuleManager = /** @class */ (function () {
220
220
  if (data && typeof data === 'object') {
221
221
  // Validate data key-value set.
222
222
  if (this.isUsingCustomInterface(data)) {
223
- // Rule object has to have `rule_type` field
223
+ // RuleElement object has to have `rule_type` field
224
224
  if (rule === null || rule === void 0 ? void 0 : rule.rule_type) {
225
225
  (_d = (_c = this._loggerManager) === null || _c === void 0 ? void 0 : _c.info) === null || _d === void 0 ? void 0 : _d.call(_c, 'RuleManager._processRuleItem()', jsSdkEnums.MESSAGES.RULE_MATCH_START.replace('#', rule.rule_type));
226
226
  try {
@@ -251,13 +251,13 @@ var RuleManager = /** @class */ (function () {
251
251
  }
252
252
  else if (jsSdkUtils.objectNotEmpty(data)) {
253
253
  try {
254
- // Rule object has to have `key` field
254
+ // only handle RuleElement with a `key` field
255
255
  for (var _t = __values(Object.keys(data)), _u = _t.next(); !_u.done; _u = _t.next()) {
256
256
  var key = _u.value;
257
257
  var k = this._keys_case_sensitive ? key : key.toLowerCase();
258
258
  var rule_k = this._keys_case_sensitive
259
- ? rule.key
260
- : rule.key.toLowerCase();
259
+ ? rule['key']
260
+ : String(rule['key']).toLowerCase();
261
261
  if (k === rule_k) {
262
262
  return this._comparisonProcessor[matching](data[key], rule.value, negation);
263
263
  }
@@ -4,5 +4,5 @@
4
4
  * Copyright(c) 2020-2022 Convert Insights, Inc
5
5
  * License Apache-2.0
6
6
  */
7
- "use strict";var e=require("@convertcom/js-sdk-utils"),r=require("@convertcom/js-sdk-enums");function o(e){var r="function"==typeof Symbol&&Symbol.iterator,o=r&&e[r],t=0;if(o)return o.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}"function"==typeof SuppressedError&&SuppressedError;var t=function(){function t(o,t){var l,n,a,i,s,c=(void 0===t?{}:t).loggerManager;this._comparisonProcessor=e.Comparisons,this._negation="!",this._keys_case_sensitive=true,this._loggerManager=c,this._comparisonProcessor=(null===(l=null==o?void 0:o.rules)||void 0===l?void 0:l.comparisonProcessor)||e.Comparisons,this._negation=String((null===(n=null==o?void 0:o.rules)||void 0===n?void 0:n.negation)||"!"),this._keys_case_sensitive=(null===(a=null==o?void 0:o.rules)||void 0===a?void 0:a.keys_case_sensitive)||true,this._mapper=(null==o?void 0:o.mapper)||function(e){return e},null===(s=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===s||s.call(i,"RuleManager()",r.MESSAGES.RULE_CONSTRUCTOR,this)}return Object.defineProperty(t.prototype,"comparisonProcessor",{get:function(){return this._comparisonProcessor},set:function(e){this._comparisonProcessor=e},enumerable:!1,configurable:!0}),t.prototype.getComparisonProcessorMethods=function(){var e=this;return Object.getOwnPropertyNames(this._comparisonProcessor).filter((function(r){return"function"==typeof e._comparisonProcessor[r]}))},t.prototype.isRuleMatched=function(o,t,l){var n,a,i,s,c,u,p,_,g,v,d;if(null===(a=null===(n=this._loggerManager)||void 0===n?void 0:n.trace)||void 0===a||a.call(n,"RuleManager.isRuleMatched()",this._mapper({data:o,ruleSet:t})),l&&(null===(s=null===(i=this._loggerManager)||void 0===i?void 0:i.info)||void 0===s||s.call(i,"RuleManager.isRuleMatched()",r.MESSAGES.PROCESSING_ENTITY.replace("#",l))),Object.prototype.hasOwnProperty.call(t,"OR")&&e.arrayNotEmpty(null==t?void 0:t.OR)){for(var R=0,h=t.OR.length;R<h;R++)if(d=this._processAND(o,t.OR[R]),Object.values(r.RuleError).includes(d)?null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager.isRuleMatched()",l||"",r.ERROR_MESSAGES.RULE_ERROR):null===(_=null===(p=this._loggerManager)||void 0===p?void 0:p.info)||void 0===_||_.call(p,"RuleManager.isRuleMatched()",l||"",!1===d?r.MESSAGES.RULE_NOT_MATCH:r.MESSAGES.RULE_MATCH.replace("#",String(R))),!1!==d)return d}else null===(v=null===(g=this._loggerManager)||void 0===g?void 0:g.warn)||void 0===v||v.call(g,"RuleManager.isRuleMatched()",l||"",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1},t.prototype.isValidRule=function(e){var r,o;return null===(o=null===(r=this._loggerManager)||void 0===r?void 0:r.trace)||void 0===o||o.call(r,"RuleManager.isValidRule()",this._mapper({rule:e})),Object.prototype.hasOwnProperty.call(e,"matching")&&"object"==typeof e.matching&&Object.prototype.hasOwnProperty.call(e.matching,"match_type")&&"string"==typeof e.matching.match_type&&Object.prototype.hasOwnProperty.call(e.matching,"negated")&&"boolean"==typeof e.matching.negated&&Object.prototype.hasOwnProperty.call(e,"value")},t.prototype._processAND=function(o,t){var l,n,a,i,s;if(Object.prototype.hasOwnProperty.call(t,"AND")&&e.arrayNotEmpty(null==t?void 0:t.AND)){for(var c=0,u=t.AND.length;c<u;c++)if(!1===(s=this._processORWHEN(o,t.AND[c])))return!1;return!1!==s&&(null===(n=null===(l=this._loggerManager)||void 0===l?void 0:l.info)||void 0===n||n.call(l,"RuleManager._processAND()",r.MESSAGES.RULE_MATCH_AND)),s}return null===(i=null===(a=this._loggerManager)||void 0===a?void 0:a.warn)||void 0===i||i.call(a,"RuleManager._processAND()",r.ERROR_MESSAGES.RULE_NOT_VALID),!1},t.prototype._processORWHEN=function(o,t){var l,n,a;if(Object.prototype.hasOwnProperty.call(t,"OR_WHEN")&&e.arrayNotEmpty(null==t?void 0:t.OR_WHEN)){for(var i=0,s=t.OR_WHEN.length;i<s;i++)if(!1!==(a=this._processRuleItem(o,t.OR_WHEN[i])))return a}else null===(n=null===(l=this._loggerManager)||void 0===l?void 0:l.warn)||void 0===n||n.call(l,"RuleManager._processORWHEN()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1},t.prototype._processRuleItem=function(t,l){var n,a,i,s,c,u,p,_,g,v,d,R,h,y,E,f,M;if(this.isValidRule(l))try{var m=l.matching.negated||!1,O=l.matching.match_type;if(-1!==this.getComparisonProcessorMethods().indexOf(O))if(t&&"object"==typeof t)if(this.isUsingCustomInterface(t)){if(null==l?void 0:l.rule_type){null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager._processRuleItem()",r.MESSAGES.RULE_MATCH_START.replace("#",l.rule_type));try{for(var S=o(Object.getOwnPropertyNames(t.constructor.prototype)),A=S.next();!A.done;A=S.next()){var N=A.value;if("constructor"!==N){var b=e.camelCase("get ".concat(l.rule_type.replace(/_/g," ")));if(N===b||(null===(p=null==t?void 0:t.mapper)||void 0===p?void 0:p.call(t,N))===b){var P=t[N](l);return Object.values(r.RuleError).includes(P)||"js_condition"===l.rule_type?P:this._comparisonProcessor[O](P,l.value,m)}}}}catch(e){n={error:e}}finally{try{A&&!A.done&&(a=S.return)&&a.call(S)}finally{if(n)throw n.error}}}}else if(e.objectNotEmpty(t))try{for(var w=o(Object.keys(t)),T=w.next();!T.done;T=w.next()){var j=T.value;if((this._keys_case_sensitive?j:j.toLowerCase())===(this._keys_case_sensitive?l.key:l.key.toLowerCase()))return this._comparisonProcessor[O](t[j],l.value,m)}}catch(e){i={error:e}}finally{try{T&&!T.done&&(s=w.return)&&s.call(w)}finally{if(i)throw i.error}}else null===(g=null===(_=this._loggerManager)||void 0===_?void 0:_.trace)||void 0===g||g.call(_,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_DATA_NOT_VALID,data:t});else null===(d=null===(v=this._loggerManager)||void 0===v?void 0:v.trace)||void 0===d||d.call(v,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_NOT_VALID,data:t,rule:l});else null===(h=null===(R=this._loggerManager)||void 0===R?void 0:R.warn)||void 0===h||h.call(R,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_MATCH_TYPE_NOT_SUPPORTED.replace("#",O))}catch(e){null===(E=null===(y=this._loggerManager)||void 0===y?void 0:y.error)||void 0===E||E.call(y,"RuleManager._processRuleItem()",{error:e.message})}else null===(M=null===(f=this._loggerManager)||void 0===f?void 0:f.warn)||void 0===M||M.call(f,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1},t.prototype.isUsingCustomInterface=function(r){return e.objectNotEmpty(r)&&Object.prototype.hasOwnProperty.call(r,"name")&&"RuleData"===r.name},t}();exports.RuleManager=t;
7
+ "use strict";var e=require("@convertcom/js-sdk-utils"),r=require("@convertcom/js-sdk-enums");function o(e){var r="function"==typeof Symbol&&Symbol.iterator,o=r&&e[r],t=0;if(o)return o.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}"function"==typeof SuppressedError&&SuppressedError;var t=function(){function t(o,t){var l,n,a,i,s,c=(void 0===t?{}:t).loggerManager;this._comparisonProcessor=e.Comparisons,this._negation="!",this._keys_case_sensitive=true,this._loggerManager=c,this._comparisonProcessor=(null===(l=null==o?void 0:o.rules)||void 0===l?void 0:l.comparisonProcessor)||e.Comparisons,this._negation=String((null===(n=null==o?void 0:o.rules)||void 0===n?void 0:n.negation)||"!"),this._keys_case_sensitive=(null===(a=null==o?void 0:o.rules)||void 0===a?void 0:a.keys_case_sensitive)||true,this._mapper=(null==o?void 0:o.mapper)||function(e){return e},null===(s=null===(i=this._loggerManager)||void 0===i?void 0:i.trace)||void 0===s||s.call(i,"RuleManager()",r.MESSAGES.RULE_CONSTRUCTOR,this)}return Object.defineProperty(t.prototype,"comparisonProcessor",{get:function(){return this._comparisonProcessor},set:function(e){this._comparisonProcessor=e},enumerable:!1,configurable:!0}),t.prototype.getComparisonProcessorMethods=function(){var e=this;return Object.getOwnPropertyNames(this._comparisonProcessor).filter((function(r){return"function"==typeof e._comparisonProcessor[r]}))},t.prototype.isRuleMatched=function(o,t,l){var n,a,i,s,c,u,p,_,g,v,d;if(null===(a=null===(n=this._loggerManager)||void 0===n?void 0:n.trace)||void 0===a||a.call(n,"RuleManager.isRuleMatched()",this._mapper({data:o,ruleSet:t})),l&&(null===(s=null===(i=this._loggerManager)||void 0===i?void 0:i.info)||void 0===s||s.call(i,"RuleManager.isRuleMatched()",r.MESSAGES.PROCESSING_ENTITY.replace("#",l))),Object.prototype.hasOwnProperty.call(t,"OR")&&e.arrayNotEmpty(null==t?void 0:t.OR)){for(var R=0,h=t.OR.length;R<h;R++)if(d=this._processAND(o,t.OR[R]),Object.values(r.RuleError).includes(d)?null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager.isRuleMatched()",l||"",r.ERROR_MESSAGES.RULE_ERROR):null===(_=null===(p=this._loggerManager)||void 0===p?void 0:p.info)||void 0===_||_.call(p,"RuleManager.isRuleMatched()",l||"",!1===d?r.MESSAGES.RULE_NOT_MATCH:r.MESSAGES.RULE_MATCH.replace("#",String(R))),!1!==d)return d}else null===(v=null===(g=this._loggerManager)||void 0===g?void 0:g.warn)||void 0===v||v.call(g,"RuleManager.isRuleMatched()",l||"",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1},t.prototype.isValidRule=function(e){var r,o;return null===(o=null===(r=this._loggerManager)||void 0===r?void 0:r.trace)||void 0===o||o.call(r,"RuleManager.isValidRule()",this._mapper({rule:e})),Object.prototype.hasOwnProperty.call(e,"matching")&&"object"==typeof e.matching&&Object.prototype.hasOwnProperty.call(e.matching,"match_type")&&"string"==typeof e.matching.match_type&&Object.prototype.hasOwnProperty.call(e.matching,"negated")&&"boolean"==typeof e.matching.negated&&Object.prototype.hasOwnProperty.call(e,"value")},t.prototype._processAND=function(o,t){var l,n,a,i,s;if(Object.prototype.hasOwnProperty.call(t,"AND")&&e.arrayNotEmpty(null==t?void 0:t.AND)){for(var c=0,u=t.AND.length;c<u;c++)if(!1===(s=this._processORWHEN(o,t.AND[c])))return!1;return!1!==s&&(null===(n=null===(l=this._loggerManager)||void 0===l?void 0:l.info)||void 0===n||n.call(l,"RuleManager._processAND()",r.MESSAGES.RULE_MATCH_AND)),s}return null===(i=null===(a=this._loggerManager)||void 0===a?void 0:a.warn)||void 0===i||i.call(a,"RuleManager._processAND()",r.ERROR_MESSAGES.RULE_NOT_VALID),!1},t.prototype._processORWHEN=function(o,t){var l,n,a;if(Object.prototype.hasOwnProperty.call(t,"OR_WHEN")&&e.arrayNotEmpty(null==t?void 0:t.OR_WHEN)){for(var i=0,s=t.OR_WHEN.length;i<s;i++)if(!1!==(a=this._processRuleItem(o,t.OR_WHEN[i])))return a}else null===(n=null===(l=this._loggerManager)||void 0===l?void 0:l.warn)||void 0===n||n.call(l,"RuleManager._processORWHEN()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1},t.prototype._processRuleItem=function(t,l){var n,a,i,s,c,u,p,_,g,v,d,R,h,y,E,f,M;if(this.isValidRule(l))try{var m=l.matching.negated||!1,O=l.matching.match_type;if(-1!==this.getComparisonProcessorMethods().indexOf(O))if(t&&"object"==typeof t)if(this.isUsingCustomInterface(t)){if(null==l?void 0:l.rule_type){null===(u=null===(c=this._loggerManager)||void 0===c?void 0:c.info)||void 0===u||u.call(c,"RuleManager._processRuleItem()",r.MESSAGES.RULE_MATCH_START.replace("#",l.rule_type));try{for(var S=o(Object.getOwnPropertyNames(t.constructor.prototype)),A=S.next();!A.done;A=S.next()){var N=A.value;if("constructor"!==N){var b=e.camelCase("get ".concat(l.rule_type.replace(/_/g," ")));if(N===b||(null===(p=null==t?void 0:t.mapper)||void 0===p?void 0:p.call(t,N))===b){var P=t[N](l);return Object.values(r.RuleError).includes(P)||"js_condition"===l.rule_type?P:this._comparisonProcessor[O](P,l.value,m)}}}}catch(e){n={error:e}}finally{try{A&&!A.done&&(a=S.return)&&a.call(S)}finally{if(n)throw n.error}}}}else if(e.objectNotEmpty(t))try{for(var w=o(Object.keys(t)),T=w.next();!T.done;T=w.next()){var j=T.value;if((this._keys_case_sensitive?j:j.toLowerCase())===(this._keys_case_sensitive?l.key:String(l.key).toLowerCase()))return this._comparisonProcessor[O](t[j],l.value,m)}}catch(e){i={error:e}}finally{try{T&&!T.done&&(s=w.return)&&s.call(w)}finally{if(i)throw i.error}}else null===(g=null===(_=this._loggerManager)||void 0===_?void 0:_.trace)||void 0===g||g.call(_,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_DATA_NOT_VALID,data:t});else null===(d=null===(v=this._loggerManager)||void 0===v?void 0:v.trace)||void 0===d||d.call(v,"RuleManager._processRuleItem()",{warn:r.ERROR_MESSAGES.RULE_NOT_VALID,data:t,rule:l});else null===(h=null===(R=this._loggerManager)||void 0===R?void 0:R.warn)||void 0===h||h.call(R,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_MATCH_TYPE_NOT_SUPPORTED.replace("#",O))}catch(e){null===(E=null===(y=this._loggerManager)||void 0===y?void 0:y.error)||void 0===E||E.call(y,"RuleManager._processRuleItem()",{error:e.message})}else null===(M=null===(f=this._loggerManager)||void 0===f?void 0:f.warn)||void 0===M||M.call(f,"RuleManager._processRuleItem()",r.ERROR_MESSAGES.RULE_NOT_VALID);return!1},t.prototype.isUsingCustomInterface=function(r){return e.objectNotEmpty(r)&&Object.prototype.hasOwnProperty.call(r,"name")&&"RuleData"===r.name},t}();exports.RuleManager=t;
8
8
  //# sourceMappingURL=index.min.js.map
package/lib/package.json CHANGED
@@ -20,5 +20,5 @@
20
20
  "@convertcom/js-sdk-types": ">=1.0.0",
21
21
  "@convertcom/js-sdk-utils": ">=1.0.0"
22
22
  },
23
- "version": "1.0.2"
23
+ "version": "2.0.0"
24
24
  }
package/package.json CHANGED
@@ -71,5 +71,5 @@
71
71
  "typings": "^2.1.1",
72
72
  "webpack": "^5.89.0"
73
73
  },
74
- "version": "1.0.2"
74
+ "version": "2.0.0"
75
75
  }