@convertcom/js-sdk-rules 1.0.0 → 1.0.2
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/README.md +11 -0
- package/lib/{legacy/rules/src/rule-manager.d.ts → index.d.ts} +27 -4
- package/lib/index.js +59 -32
- package/lib/index.js.map +1 -1
- package/lib/index.min.js +1 -1
- package/lib/index.min.mjs +1 -1
- package/lib/index.mjs +60 -33
- package/lib/index.mjs.map +1 -1
- package/lib/legacy/index.js +73 -46
- package/lib/legacy/index.js.map +1 -1
- package/lib/legacy/index.min.js +1 -1
- package/lib/package.json +7 -1
- package/package.json +2 -7
- package/lib/enums/index.d.ts +0 -29
- package/lib/enums/src/audience-type.d.ts +0 -11
- package/lib/enums/src/data-enitites.d.ts +0 -7
- package/lib/enums/src/dictionary.d.ts +0 -60
- package/lib/enums/src/do-not-track.d.ts +0 -12
- package/lib/enums/src/event-type.d.ts +0 -10
- package/lib/enums/src/experience-type.d.ts +0 -16
- package/lib/enums/src/feature-status.d.ts +0 -10
- package/lib/enums/src/ga-type.d.ts +0 -10
- package/lib/enums/src/goal-data-key.d.ts +0 -11
- package/lib/enums/src/goal-type.d.ts +0 -22
- package/lib/enums/src/integration-provider.d.ts +0 -27
- package/lib/enums/src/log-level.d.ts +0 -14
- package/lib/enums/src/log-method.d.ts +0 -14
- package/lib/enums/src/project-type.d.ts +0 -10
- package/lib/enums/src/rule-error.d.ts +0 -10
- package/lib/enums/src/segments/browser-type.d.ts +0 -17
- package/lib/enums/src/segments/device-type.d.ts +0 -16
- package/lib/enums/src/segments/segments-keys.d.ts +0 -15
- package/lib/enums/src/segments/source-type.d.ts +0 -12
- package/lib/enums/src/segments/visitor-type.d.ts +0 -10
- package/lib/enums/src/system-events.d.ts +0 -22
- package/lib/enums/src/variable-types.d.ts +0 -7
- package/lib/enums/src/variation-change-type.d.ts +0 -14
- package/lib/legacy/enums/index.d.ts +0 -29
- package/lib/legacy/enums/src/audience-type.d.ts +0 -11
- package/lib/legacy/enums/src/data-enitites.d.ts +0 -7
- package/lib/legacy/enums/src/dictionary.d.ts +0 -60
- package/lib/legacy/enums/src/do-not-track.d.ts +0 -12
- package/lib/legacy/enums/src/event-type.d.ts +0 -10
- package/lib/legacy/enums/src/experience-type.d.ts +0 -16
- package/lib/legacy/enums/src/feature-status.d.ts +0 -10
- package/lib/legacy/enums/src/ga-type.d.ts +0 -10
- package/lib/legacy/enums/src/goal-data-key.d.ts +0 -11
- package/lib/legacy/enums/src/goal-type.d.ts +0 -22
- package/lib/legacy/enums/src/integration-provider.d.ts +0 -27
- package/lib/legacy/enums/src/log-level.d.ts +0 -14
- package/lib/legacy/enums/src/log-method.d.ts +0 -14
- package/lib/legacy/enums/src/project-type.d.ts +0 -10
- package/lib/legacy/enums/src/rule-error.d.ts +0 -10
- package/lib/legacy/enums/src/segments/browser-type.d.ts +0 -17
- package/lib/legacy/enums/src/segments/device-type.d.ts +0 -16
- package/lib/legacy/enums/src/segments/segments-keys.d.ts +0 -15
- package/lib/legacy/enums/src/segments/source-type.d.ts +0 -12
- package/lib/legacy/enums/src/segments/visitor-type.d.ts +0 -10
- package/lib/legacy/enums/src/system-events.d.ts +0 -22
- package/lib/legacy/enums/src/variable-types.d.ts +0 -7
- package/lib/legacy/enums/src/variation-change-type.d.ts +0 -14
- package/lib/legacy/logger/index.d.ts +0 -8
- package/lib/legacy/logger/src/interfaces/log-client.d.ts +0 -13
- package/lib/legacy/logger/src/interfaces/log-manager.d.ts +0 -18
- package/lib/legacy/logger/src/interfaces/log-method-map.d.ts +0 -15
- package/lib/legacy/logger/src/log-manager.d.ts +0 -64
- package/lib/legacy/rules/index.d.ts +0 -8
- package/lib/legacy/rules/src/interfaces/rule-manager.d.ts +0 -14
- package/lib/legacy/types/index.d.ts +0 -36
- package/lib/legacy/types/src/Audience.d.ts +0 -16
- package/lib/legacy/types/src/BucketedFeature.d.ts +0 -30
- package/lib/legacy/types/src/BucketedVariation.d.ts +0 -13
- package/lib/legacy/types/src/BucketingAttributes.d.ts +0 -13
- package/lib/legacy/types/src/Config.d.ts +0 -62
- package/lib/legacy/types/src/ConversionAttributes.d.ts +0 -11
- package/lib/legacy/types/src/Entity.d.ts +0 -13
- package/lib/legacy/types/src/Experience.d.ts +0 -37
- package/lib/legacy/types/src/Feature.d.ts +0 -18
- package/lib/legacy/types/src/Goal.d.ts +0 -30
- package/lib/legacy/types/src/Id.d.ts +0 -10
- package/lib/legacy/types/src/IndentityField.d.ts +0 -7
- package/lib/legacy/types/src/Integration.d.ts +0 -16
- package/lib/legacy/types/src/Location.d.ts +0 -14
- package/lib/legacy/types/src/Path.d.ts +0 -10
- package/lib/legacy/types/src/Project.d.ts +0 -37
- package/lib/legacy/types/src/RequireAtLeastOne.d.ts +0 -3
- package/lib/legacy/types/src/Rule.d.ts +0 -24
- package/lib/legacy/types/src/Segments.d.ts +0 -14
- package/lib/legacy/types/src/SegmentsAttributes.d.ts +0 -9
- package/lib/legacy/types/src/SegmentsData.d.ts +0 -16
- package/lib/legacy/types/src/StoreData.d.ts +0 -14
- package/lib/legacy/types/src/TrackingEvent.d.ts +0 -14
- package/lib/legacy/types/src/VariableType.d.ts +0 -8
- package/lib/legacy/types/src/Variation.d.ts +0 -49
- package/lib/legacy/types/src/VisitorsQueue.d.ts +0 -16
- package/lib/legacy/types/src/tracking/BucketingEvent.d.ts +0 -11
- package/lib/legacy/types/src/tracking/ConversionEvent.d.ts +0 -16
- package/lib/legacy/types/src/tracking/Visitor.d.ts +0 -14
- package/lib/legacy/types/src/tracking/VisitorEvent.d.ts +0 -13
- package/lib/legacy/utils/index.d.ts +0 -14
- package/lib/legacy/utils/src/array-utils.d.ts +0 -11
- package/lib/legacy/utils/src/comparisons.d.ts +0 -22
- package/lib/legacy/utils/src/data-store.d.ts +0 -39
- package/lib/legacy/utils/src/file-logger.d.ts +0 -40
- package/lib/legacy/utils/src/http-client.d.ts +0 -102
- package/lib/legacy/utils/src/object-utils.d.ts +0 -28
- package/lib/legacy/utils/src/string-utils.d.ts +0 -20
- package/lib/legacy/utils/src/types-utils.d.ts +0 -12
- package/lib/logger/index.d.ts +0 -8
- package/lib/logger/src/interfaces/log-client.d.ts +0 -13
- package/lib/logger/src/interfaces/log-manager.d.ts +0 -18
- package/lib/logger/src/interfaces/log-method-map.d.ts +0 -15
- package/lib/logger/src/log-manager.d.ts +0 -64
- package/lib/rules/index.d.ts +0 -8
- package/lib/rules/src/interfaces/rule-manager.d.ts +0 -14
- package/lib/rules/src/rule-manager.d.ts +0 -75
- package/lib/types/index.d.ts +0 -36
- package/lib/types/src/Audience.d.ts +0 -16
- package/lib/types/src/BucketedFeature.d.ts +0 -30
- package/lib/types/src/BucketedVariation.d.ts +0 -13
- package/lib/types/src/BucketingAttributes.d.ts +0 -13
- package/lib/types/src/Config.d.ts +0 -62
- package/lib/types/src/ConversionAttributes.d.ts +0 -11
- package/lib/types/src/Entity.d.ts +0 -13
- package/lib/types/src/Experience.d.ts +0 -37
- package/lib/types/src/Feature.d.ts +0 -18
- package/lib/types/src/Goal.d.ts +0 -30
- package/lib/types/src/Id.d.ts +0 -10
- package/lib/types/src/IndentityField.d.ts +0 -7
- package/lib/types/src/Integration.d.ts +0 -16
- package/lib/types/src/Location.d.ts +0 -14
- package/lib/types/src/Path.d.ts +0 -10
- package/lib/types/src/Project.d.ts +0 -37
- package/lib/types/src/RequireAtLeastOne.d.ts +0 -3
- package/lib/types/src/Rule.d.ts +0 -24
- package/lib/types/src/Segments.d.ts +0 -14
- package/lib/types/src/SegmentsAttributes.d.ts +0 -9
- package/lib/types/src/SegmentsData.d.ts +0 -16
- package/lib/types/src/StoreData.d.ts +0 -14
- package/lib/types/src/TrackingEvent.d.ts +0 -14
- package/lib/types/src/VariableType.d.ts +0 -8
- package/lib/types/src/Variation.d.ts +0 -49
- package/lib/types/src/VisitorsQueue.d.ts +0 -16
- package/lib/types/src/tracking/BucketingEvent.d.ts +0 -11
- package/lib/types/src/tracking/ConversionEvent.d.ts +0 -16
- package/lib/types/src/tracking/Visitor.d.ts +0 -14
- package/lib/types/src/tracking/VisitorEvent.d.ts +0 -13
- package/lib/utils/index.d.ts +0 -14
- package/lib/utils/src/array-utils.d.ts +0 -11
- package/lib/utils/src/comparisons.d.ts +0 -22
- package/lib/utils/src/data-store.d.ts +0 -39
- package/lib/utils/src/file-logger.d.ts +0 -40
- package/lib/utils/src/http-client.d.ts +0 -102
- package/lib/utils/src/object-utils.d.ts +0 -28
- package/lib/utils/src/string-utils.d.ts +0 -20
- package/lib/utils/src/types-utils.d.ts +0 -12
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Convert Insights, Inc JavaScript SDK - Rules Manager
|
|
2
|
+
|
|
3
|
+
[](https://choosealicense.com/licenses/apache-2.0/)
|
|
4
|
+
|
|
5
|
+
## About
|
|
6
|
+
|
|
7
|
+
This repository contains the **Rules Manager** dependency for **JavaScript SDK** needed to integrate Convert.com's **Fullstack Product (feature tests, feature flags, feature rollouts)** inside third-party apps. This is maintained by the Convert.com team.
|
|
8
|
+
|
|
9
|
+
## Credits
|
|
10
|
+
|
|
11
|
+
Copyright(c) 2023 Convert Insights, Inc.
|
|
@@ -1,18 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Config, Rule, RuleSet } from '@convertcom/js-sdk-types';
|
|
3
|
-
import { LogManagerInterface } from '@convertcom/js-sdk-logger';
|
|
1
|
+
import { RuleSet, Rule, Config } from '@convertcom/js-sdk-types';
|
|
4
2
|
import { RuleError } from '@convertcom/js-sdk-enums';
|
|
3
|
+
import { LogManagerInterface } from '@convertcom/js-sdk-logger';
|
|
4
|
+
|
|
5
|
+
/*!
|
|
6
|
+
* Convert JS SDK
|
|
7
|
+
* Version 1.0.0
|
|
8
|
+
* Copyright(c) 2020 Convert Insights, Inc
|
|
9
|
+
* License Apache-2.0
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
interface RuleManagerInterface {
|
|
13
|
+
comparisonProcessor: Record<string, any>;
|
|
14
|
+
getComparisonProcessorMethods(): Array<string>;
|
|
15
|
+
isRuleMatched(data: Record<string, any>, ruleSet: RuleSet, logEntry?: string): boolean | RuleError;
|
|
16
|
+
isValidRule(rule: Rule): boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
5
19
|
/**
|
|
6
20
|
* Provides rule processing calculations with corresponding comparisons methods
|
|
7
21
|
* @category Modules
|
|
8
22
|
* @constructor
|
|
9
23
|
* @implements {RuleManagerInterface}
|
|
10
24
|
*/
|
|
11
|
-
|
|
25
|
+
declare class RuleManager implements RuleManagerInterface {
|
|
12
26
|
private _comparisonProcessor;
|
|
13
27
|
private readonly _negation;
|
|
14
28
|
private readonly _keys_case_sensitive;
|
|
15
29
|
private _loggerManager;
|
|
30
|
+
private _mapper;
|
|
16
31
|
/**
|
|
17
32
|
* @param {Config=} config
|
|
18
33
|
* @param {Object=} dependencies
|
|
@@ -72,4 +87,12 @@ export declare class RuleManager implements RuleManagerInterface {
|
|
|
72
87
|
* @private
|
|
73
88
|
*/
|
|
74
89
|
private _processRuleItem;
|
|
90
|
+
/**
|
|
91
|
+
* Check is rule data object is a custom interface instead of a literal object
|
|
92
|
+
* @param {Record<string, any>} data Single value or key-value data set to compare
|
|
93
|
+
* @return {boolean}
|
|
94
|
+
*/
|
|
95
|
+
private isUsingCustomInterface;
|
|
75
96
|
}
|
|
97
|
+
|
|
98
|
+
export { RuleManager, type RuleManagerInterface };
|
package/lib/index.js
CHANGED
|
@@ -24,15 +24,18 @@ class RuleManager {
|
|
|
24
24
|
* @param {LogManagerInterface=} dependencies.loggerManager
|
|
25
25
|
*/
|
|
26
26
|
constructor(config, { loggerManager } = {}) {
|
|
27
|
-
var _a, _b;
|
|
27
|
+
var _a, _b, _c, _d, _e;
|
|
28
28
|
this._comparisonProcessor = jsSdkUtils.Comparisons;
|
|
29
29
|
this._negation = DEFAULT_NEGATION;
|
|
30
30
|
this._keys_case_sensitive = DEFAULT_KEYS_CASE_SENSITIVE;
|
|
31
31
|
this._loggerManager = loggerManager;
|
|
32
|
-
this._comparisonProcessor =
|
|
33
|
-
|
|
34
|
-
this.
|
|
35
|
-
|
|
32
|
+
this._comparisonProcessor =
|
|
33
|
+
((_a = config === null || config === void 0 ? void 0 : config.rules) === null || _a === void 0 ? void 0 : _a.comparisonProcessor) || jsSdkUtils.Comparisons;
|
|
34
|
+
this._negation = String(((_b = config === null || config === void 0 ? void 0 : config.rules) === null || _b === void 0 ? void 0 : _b.negation) || DEFAULT_NEGATION);
|
|
35
|
+
this._keys_case_sensitive =
|
|
36
|
+
((_c = config === null || config === void 0 ? void 0 : config.rules) === null || _c === void 0 ? void 0 : _c.keys_case_sensitive) || DEFAULT_KEYS_CASE_SENSITIVE;
|
|
37
|
+
this._mapper = (config === null || config === void 0 ? void 0 : config.mapper) || ((value) => value);
|
|
38
|
+
(_e = (_d = this._loggerManager) === null || _d === void 0 ? void 0 : _d.trace) === null || _e === void 0 ? void 0 : _e.call(_d, 'RuleManager()', jsSdkEnums.MESSAGES.RULE_CONSTRUCTOR, this);
|
|
36
39
|
}
|
|
37
40
|
/**
|
|
38
41
|
* Setter for comparison processor
|
|
@@ -62,10 +65,10 @@ class RuleManager {
|
|
|
62
65
|
*/
|
|
63
66
|
isRuleMatched(data, ruleSet, logEntry) {
|
|
64
67
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
65
|
-
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isRuleMatched()', {
|
|
68
|
+
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isRuleMatched()', this._mapper({
|
|
66
69
|
data: data,
|
|
67
70
|
ruleSet: ruleSet
|
|
68
|
-
});
|
|
71
|
+
}));
|
|
69
72
|
if (logEntry) {
|
|
70
73
|
(_d = (_c = this._loggerManager) === null || _c === void 0 ? void 0 : _c.info) === null || _d === void 0 ? void 0 : _d.call(_c, 'RuleManager.isRuleMatched()', jsSdkEnums.MESSAGES.PROCESSING_ENTITY.replace('#', logEntry));
|
|
71
74
|
}
|
|
@@ -100,9 +103,9 @@ class RuleManager {
|
|
|
100
103
|
*/
|
|
101
104
|
isValidRule(rule) {
|
|
102
105
|
var _a, _b;
|
|
103
|
-
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isValidRule()', {
|
|
106
|
+
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isValidRule()', this._mapper({
|
|
104
107
|
rule: rule
|
|
105
|
-
});
|
|
108
|
+
}));
|
|
106
109
|
return (Object.prototype.hasOwnProperty.call(rule, 'matching') &&
|
|
107
110
|
typeof rule.matching === 'object' &&
|
|
108
111
|
Object.prototype.hasOwnProperty.call(rule.matching, 'match_type') &&
|
|
@@ -173,15 +176,35 @@ class RuleManager {
|
|
|
173
176
|
* @private
|
|
174
177
|
*/
|
|
175
178
|
_processRuleItem(data, rule) {
|
|
176
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
179
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
177
180
|
if (this.isValidRule(rule)) {
|
|
178
181
|
try {
|
|
179
182
|
const negation = rule.matching.negated || false;
|
|
180
183
|
const matching = rule.matching.match_type;
|
|
181
184
|
if (this.getComparisonProcessorMethods().indexOf(matching) !== -1) {
|
|
182
|
-
if (typeof data === 'object') {
|
|
185
|
+
if (data && typeof data === 'object') {
|
|
183
186
|
// Validate data key-value set.
|
|
184
|
-
if (data
|
|
187
|
+
if (this.isUsingCustomInterface(data)) {
|
|
188
|
+
// Rule object has to have `rule_type` field
|
|
189
|
+
if (rule === null || rule === void 0 ? void 0 : rule.rule_type) {
|
|
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
|
+
for (const method of Object.getOwnPropertyNames(data.constructor.prototype)) {
|
|
192
|
+
if (method === 'constructor')
|
|
193
|
+
continue;
|
|
194
|
+
const rule_method = jsSdkUtils.camelCase(`get ${rule.rule_type.replace(/_/g, ' ')}`);
|
|
195
|
+
if (method === rule_method ||
|
|
196
|
+
((_c = data === null || data === void 0 ? void 0 : data.mapper) === null || _c === void 0 ? void 0 : _c.call(data, method)) === rule_method) {
|
|
197
|
+
const dataValue = data[method](rule);
|
|
198
|
+
if (Object.values(jsSdkEnums.RuleError).includes(dataValue))
|
|
199
|
+
return dataValue;
|
|
200
|
+
if (rule.rule_type === 'js_condition')
|
|
201
|
+
return dataValue;
|
|
202
|
+
return this._comparisonProcessor[matching](dataValue, rule.value, negation);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else if (jsSdkUtils.objectNotEmpty(data)) {
|
|
185
208
|
// Rule object has to have `key` field
|
|
186
209
|
for (const key of Object.keys(data)) {
|
|
187
210
|
const k = this._keys_case_sensitive ? key : key.toLowerCase();
|
|
@@ -193,42 +216,46 @@ class RuleManager {
|
|
|
193
216
|
}
|
|
194
217
|
}
|
|
195
218
|
}
|
|
196
|
-
else
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
continue;
|
|
202
|
-
const rule_method = jsSdkUtils.camelCase(`get ${rule.rule_type.replace(/_/g, ' ')}`);
|
|
203
|
-
if (method === rule_method) {
|
|
204
|
-
const dataValue = data[method](rule);
|
|
205
|
-
if (Object.values(jsSdkEnums.RuleError).includes(dataValue))
|
|
206
|
-
return dataValue;
|
|
207
|
-
if (rule.rule_type === 'js_condition')
|
|
208
|
-
return dataValue;
|
|
209
|
-
return this._comparisonProcessor[matching](dataValue, rule.value, negation);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
219
|
+
else {
|
|
220
|
+
(_e = (_d = this._loggerManager) === null || _d === void 0 ? void 0 : _d.trace) === null || _e === void 0 ? void 0 : _e.call(_d, 'RuleManager._processRuleItem()', {
|
|
221
|
+
warn: jsSdkEnums.ERROR_MESSAGES.RULE_DATA_NOT_VALID,
|
|
222
|
+
data
|
|
223
|
+
});
|
|
212
224
|
}
|
|
213
225
|
}
|
|
214
226
|
else {
|
|
215
|
-
(
|
|
216
|
-
warn: jsSdkEnums.ERROR_MESSAGES.
|
|
227
|
+
(_g = (_f = this._loggerManager) === null || _f === void 0 ? void 0 : _f.trace) === null || _g === void 0 ? void 0 : _g.call(_f, 'RuleManager._processRuleItem()', {
|
|
228
|
+
warn: jsSdkEnums.ERROR_MESSAGES.RULE_NOT_VALID,
|
|
229
|
+
data,
|
|
230
|
+
rule
|
|
217
231
|
});
|
|
218
232
|
}
|
|
219
233
|
}
|
|
234
|
+
else {
|
|
235
|
+
(_j = (_h = this._loggerManager) === null || _h === void 0 ? void 0 : _h.warn) === null || _j === void 0 ? void 0 : _j.call(_h, 'RuleManager._processRuleItem()', jsSdkEnums.ERROR_MESSAGES.RULE_MATCH_TYPE_NOT_SUPPORTED.replace('#', matching));
|
|
236
|
+
}
|
|
220
237
|
}
|
|
221
238
|
catch (error) {
|
|
222
|
-
(
|
|
239
|
+
(_l = (_k = this._loggerManager) === null || _k === void 0 ? void 0 : _k.error) === null || _l === void 0 ? void 0 : _l.call(_k, 'RuleManager._processRuleItem()', {
|
|
223
240
|
error: error.message
|
|
224
241
|
});
|
|
225
242
|
}
|
|
226
243
|
}
|
|
227
244
|
else {
|
|
228
|
-
(
|
|
245
|
+
(_o = (_m = this._loggerManager) === null || _m === void 0 ? void 0 : _m.warn) === null || _o === void 0 ? void 0 : _o.call(_m, 'RuleManager._processRuleItem()', jsSdkEnums.ERROR_MESSAGES.RULE_NOT_VALID);
|
|
229
246
|
}
|
|
230
247
|
return false;
|
|
231
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Check is rule data object is a custom interface instead of a literal object
|
|
251
|
+
* @param {Record<string, any>} data Single value or key-value data set to compare
|
|
252
|
+
* @return {boolean}
|
|
253
|
+
*/
|
|
254
|
+
isUsingCustomInterface(data) {
|
|
255
|
+
return (jsSdkUtils.objectNotEmpty(data) &&
|
|
256
|
+
Object.prototype.hasOwnProperty.call(data, 'name') &&
|
|
257
|
+
data.name === 'RuleData');
|
|
258
|
+
}
|
|
232
259
|
}
|
|
233
260
|
|
|
234
261
|
exports.RuleManager = RuleManager;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
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,s;this._comparisonProcessor=e.Comparisons,this._negation="!",this._keys_case_sensitive=true,this._loggerManager=l,this._comparisonProcessor=
|
|
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}};
|
|
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,
|
|
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};
|
|
8
8
|
//# sourceMappingURL=index.min.mjs.map
|
package/lib/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Comparisons,
|
|
1
|
+
import { Comparisons, arrayNotEmpty, camelCase, objectNotEmpty } from '@convertcom/js-sdk-utils';
|
|
2
2
|
import { MESSAGES, RuleError, ERROR_MESSAGES } from '@convertcom/js-sdk-enums';
|
|
3
3
|
|
|
4
4
|
/*!
|
|
@@ -22,15 +22,18 @@ class RuleManager {
|
|
|
22
22
|
* @param {LogManagerInterface=} dependencies.loggerManager
|
|
23
23
|
*/
|
|
24
24
|
constructor(config, { loggerManager } = {}) {
|
|
25
|
-
var _a, _b;
|
|
25
|
+
var _a, _b, _c, _d, _e;
|
|
26
26
|
this._comparisonProcessor = Comparisons;
|
|
27
27
|
this._negation = DEFAULT_NEGATION;
|
|
28
28
|
this._keys_case_sensitive = DEFAULT_KEYS_CASE_SENSITIVE;
|
|
29
29
|
this._loggerManager = loggerManager;
|
|
30
|
-
this._comparisonProcessor =
|
|
31
|
-
|
|
32
|
-
this.
|
|
33
|
-
|
|
30
|
+
this._comparisonProcessor =
|
|
31
|
+
((_a = config === null || config === void 0 ? void 0 : config.rules) === null || _a === void 0 ? void 0 : _a.comparisonProcessor) || Comparisons;
|
|
32
|
+
this._negation = String(((_b = config === null || config === void 0 ? void 0 : config.rules) === null || _b === void 0 ? void 0 : _b.negation) || DEFAULT_NEGATION);
|
|
33
|
+
this._keys_case_sensitive =
|
|
34
|
+
((_c = config === null || config === void 0 ? void 0 : config.rules) === null || _c === void 0 ? void 0 : _c.keys_case_sensitive) || DEFAULT_KEYS_CASE_SENSITIVE;
|
|
35
|
+
this._mapper = (config === null || config === void 0 ? void 0 : config.mapper) || ((value) => value);
|
|
36
|
+
(_e = (_d = this._loggerManager) === null || _d === void 0 ? void 0 : _d.trace) === null || _e === void 0 ? void 0 : _e.call(_d, 'RuleManager()', MESSAGES.RULE_CONSTRUCTOR, this);
|
|
34
37
|
}
|
|
35
38
|
/**
|
|
36
39
|
* Setter for comparison processor
|
|
@@ -60,10 +63,10 @@ class RuleManager {
|
|
|
60
63
|
*/
|
|
61
64
|
isRuleMatched(data, ruleSet, logEntry) {
|
|
62
65
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
63
|
-
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isRuleMatched()', {
|
|
66
|
+
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isRuleMatched()', this._mapper({
|
|
64
67
|
data: data,
|
|
65
68
|
ruleSet: ruleSet
|
|
66
|
-
});
|
|
69
|
+
}));
|
|
67
70
|
if (logEntry) {
|
|
68
71
|
(_d = (_c = this._loggerManager) === null || _c === void 0 ? void 0 : _c.info) === null || _d === void 0 ? void 0 : _d.call(_c, 'RuleManager.isRuleMatched()', MESSAGES.PROCESSING_ENTITY.replace('#', logEntry));
|
|
69
72
|
}
|
|
@@ -98,9 +101,9 @@ class RuleManager {
|
|
|
98
101
|
*/
|
|
99
102
|
isValidRule(rule) {
|
|
100
103
|
var _a, _b;
|
|
101
|
-
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isValidRule()', {
|
|
104
|
+
(_b = (_a = this._loggerManager) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'RuleManager.isValidRule()', this._mapper({
|
|
102
105
|
rule: rule
|
|
103
|
-
});
|
|
106
|
+
}));
|
|
104
107
|
return (Object.prototype.hasOwnProperty.call(rule, 'matching') &&
|
|
105
108
|
typeof rule.matching === 'object' &&
|
|
106
109
|
Object.prototype.hasOwnProperty.call(rule.matching, 'match_type') &&
|
|
@@ -171,15 +174,35 @@ class RuleManager {
|
|
|
171
174
|
* @private
|
|
172
175
|
*/
|
|
173
176
|
_processRuleItem(data, rule) {
|
|
174
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
177
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
175
178
|
if (this.isValidRule(rule)) {
|
|
176
179
|
try {
|
|
177
180
|
const negation = rule.matching.negated || false;
|
|
178
181
|
const matching = rule.matching.match_type;
|
|
179
182
|
if (this.getComparisonProcessorMethods().indexOf(matching) !== -1) {
|
|
180
|
-
if (typeof data === 'object') {
|
|
183
|
+
if (data && typeof data === 'object') {
|
|
181
184
|
// Validate data key-value set.
|
|
182
|
-
if (data
|
|
185
|
+
if (this.isUsingCustomInterface(data)) {
|
|
186
|
+
// Rule object has to have `rule_type` field
|
|
187
|
+
if (rule === null || rule === void 0 ? void 0 : rule.rule_type) {
|
|
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
|
+
for (const method of Object.getOwnPropertyNames(data.constructor.prototype)) {
|
|
190
|
+
if (method === 'constructor')
|
|
191
|
+
continue;
|
|
192
|
+
const rule_method = camelCase(`get ${rule.rule_type.replace(/_/g, ' ')}`);
|
|
193
|
+
if (method === rule_method ||
|
|
194
|
+
((_c = data === null || data === void 0 ? void 0 : data.mapper) === null || _c === void 0 ? void 0 : _c.call(data, method)) === rule_method) {
|
|
195
|
+
const dataValue = data[method](rule);
|
|
196
|
+
if (Object.values(RuleError).includes(dataValue))
|
|
197
|
+
return dataValue;
|
|
198
|
+
if (rule.rule_type === 'js_condition')
|
|
199
|
+
return dataValue;
|
|
200
|
+
return this._comparisonProcessor[matching](dataValue, rule.value, negation);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else if (objectNotEmpty(data)) {
|
|
183
206
|
// Rule object has to have `key` field
|
|
184
207
|
for (const key of Object.keys(data)) {
|
|
185
208
|
const k = this._keys_case_sensitive ? key : key.toLowerCase();
|
|
@@ -191,42 +214,46 @@ class RuleManager {
|
|
|
191
214
|
}
|
|
192
215
|
}
|
|
193
216
|
}
|
|
194
|
-
else
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
continue;
|
|
200
|
-
const rule_method = camelCase(`get ${rule.rule_type.replace(/_/g, ' ')}`);
|
|
201
|
-
if (method === rule_method) {
|
|
202
|
-
const dataValue = data[method](rule);
|
|
203
|
-
if (Object.values(RuleError).includes(dataValue))
|
|
204
|
-
return dataValue;
|
|
205
|
-
if (rule.rule_type === 'js_condition')
|
|
206
|
-
return dataValue;
|
|
207
|
-
return this._comparisonProcessor[matching](dataValue, rule.value, negation);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
217
|
+
else {
|
|
218
|
+
(_e = (_d = this._loggerManager) === null || _d === void 0 ? void 0 : _d.trace) === null || _e === void 0 ? void 0 : _e.call(_d, 'RuleManager._processRuleItem()', {
|
|
219
|
+
warn: ERROR_MESSAGES.RULE_DATA_NOT_VALID,
|
|
220
|
+
data
|
|
221
|
+
});
|
|
210
222
|
}
|
|
211
223
|
}
|
|
212
224
|
else {
|
|
213
|
-
(
|
|
214
|
-
warn: ERROR_MESSAGES.
|
|
225
|
+
(_g = (_f = this._loggerManager) === null || _f === void 0 ? void 0 : _f.trace) === null || _g === void 0 ? void 0 : _g.call(_f, 'RuleManager._processRuleItem()', {
|
|
226
|
+
warn: ERROR_MESSAGES.RULE_NOT_VALID,
|
|
227
|
+
data,
|
|
228
|
+
rule
|
|
215
229
|
});
|
|
216
230
|
}
|
|
217
231
|
}
|
|
232
|
+
else {
|
|
233
|
+
(_j = (_h = this._loggerManager) === null || _h === void 0 ? void 0 : _h.warn) === null || _j === void 0 ? void 0 : _j.call(_h, 'RuleManager._processRuleItem()', ERROR_MESSAGES.RULE_MATCH_TYPE_NOT_SUPPORTED.replace('#', matching));
|
|
234
|
+
}
|
|
218
235
|
}
|
|
219
236
|
catch (error) {
|
|
220
|
-
(
|
|
237
|
+
(_l = (_k = this._loggerManager) === null || _k === void 0 ? void 0 : _k.error) === null || _l === void 0 ? void 0 : _l.call(_k, 'RuleManager._processRuleItem()', {
|
|
221
238
|
error: error.message
|
|
222
239
|
});
|
|
223
240
|
}
|
|
224
241
|
}
|
|
225
242
|
else {
|
|
226
|
-
(
|
|
243
|
+
(_o = (_m = this._loggerManager) === null || _m === void 0 ? void 0 : _m.warn) === null || _o === void 0 ? void 0 : _o.call(_m, 'RuleManager._processRuleItem()', ERROR_MESSAGES.RULE_NOT_VALID);
|
|
227
244
|
}
|
|
228
245
|
return false;
|
|
229
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Check is rule data object is a custom interface instead of a literal object
|
|
249
|
+
* @param {Record<string, any>} data Single value or key-value data set to compare
|
|
250
|
+
* @return {boolean}
|
|
251
|
+
*/
|
|
252
|
+
isUsingCustomInterface(data) {
|
|
253
|
+
return (objectNotEmpty(data) &&
|
|
254
|
+
Object.prototype.hasOwnProperty.call(data, 'name') &&
|
|
255
|
+
data.name === 'RuleData');
|
|
256
|
+
}
|
|
230
257
|
}
|
|
231
258
|
|
|
232
259
|
export { RuleManager };
|
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|