@splitsoftware/splitio-commons 1.13.2-rc.5 → 1.13.2-rc.7
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/CHANGES.txt +2 -0
- package/cjs/evaluator/Engine.js +5 -6
- package/cjs/evaluator/combiners/ifelseif.js +2 -3
- package/cjs/evaluator/condition/index.js +2 -3
- package/cjs/evaluator/index.js +4 -5
- package/cjs/evaluator/matchers/all.js +1 -3
- package/cjs/evaluator/matchers/between.js +1 -3
- package/cjs/evaluator/matchers/boolean.js +1 -3
- package/cjs/evaluator/matchers/cont_all.js +1 -3
- package/cjs/evaluator/matchers/cont_any.js +1 -3
- package/cjs/evaluator/matchers/cont_str.js +1 -3
- package/cjs/evaluator/matchers/dependency.js +1 -1
- package/cjs/evaluator/matchers/eq.js +1 -3
- package/cjs/evaluator/matchers/eq_set.js +1 -3
- package/cjs/evaluator/matchers/ew.js +1 -3
- package/cjs/evaluator/matchers/gte.js +1 -3
- package/cjs/evaluator/matchers/index.js +1 -1
- package/cjs/evaluator/matchers/lte.js +1 -3
- package/cjs/evaluator/matchers/part_of.js +1 -3
- package/cjs/evaluator/matchers/segment.js +1 -6
- package/cjs/evaluator/matchers/semver_between.js +1 -3
- package/cjs/evaluator/matchers/semver_eq.js +1 -3
- package/cjs/evaluator/matchers/semver_gte.js +1 -3
- package/cjs/evaluator/matchers/semver_inlist.js +4 -6
- package/cjs/evaluator/matchers/semver_lte.js +1 -3
- package/cjs/evaluator/matchers/string.js +1 -3
- package/cjs/evaluator/matchers/sw.js +1 -3
- package/cjs/evaluator/matchers/whitelist.js +3 -4
- package/cjs/evaluator/matchersTransform/index.js +6 -8
- package/cjs/evaluator/matchersTransform/whitelist.js +2 -3
- package/cjs/evaluator/parser/index.js +13 -14
- package/cjs/logger/constants.js +4 -24
- package/cjs/logger/index.js +8 -1
- package/cjs/logger/messages/debug.js +5 -25
- package/cjs/logger/messages/warn.js +1 -1
- package/cjs/services/splitApi.js +5 -5
- package/cjs/storages/KeyBuilder.js +3 -2
- package/cjs/utils/constants/index.js +2 -1
- package/esm/evaluator/Engine.js +5 -5
- package/esm/evaluator/combiners/ifelseif.js +2 -2
- package/esm/evaluator/condition/index.js +2 -2
- package/esm/evaluator/index.js +4 -4
- package/esm/evaluator/matchers/all.js +1 -3
- package/esm/evaluator/matchers/between.js +1 -3
- package/esm/evaluator/matchers/boolean.js +1 -3
- package/esm/evaluator/matchers/cont_all.js +1 -3
- package/esm/evaluator/matchers/cont_any.js +1 -3
- package/esm/evaluator/matchers/cont_str.js +1 -3
- package/esm/evaluator/matchers/dependency.js +1 -1
- package/esm/evaluator/matchers/eq.js +1 -3
- package/esm/evaluator/matchers/eq_set.js +1 -3
- package/esm/evaluator/matchers/ew.js +1 -3
- package/esm/evaluator/matchers/gte.js +1 -3
- package/esm/evaluator/matchers/index.js +1 -1
- package/esm/evaluator/matchers/lte.js +1 -3
- package/esm/evaluator/matchers/part_of.js +1 -3
- package/esm/evaluator/matchers/segment.js +1 -6
- package/esm/evaluator/matchers/semver_between.js +1 -3
- package/esm/evaluator/matchers/semver_eq.js +1 -3
- package/esm/evaluator/matchers/semver_gte.js +1 -3
- package/esm/evaluator/matchers/semver_inlist.js +5 -7
- package/esm/evaluator/matchers/semver_lte.js +1 -3
- package/esm/evaluator/matchers/string.js +1 -3
- package/esm/evaluator/matchers/sw.js +1 -3
- package/esm/evaluator/matchers/whitelist.js +4 -5
- package/esm/evaluator/matchersTransform/index.js +6 -8
- package/esm/evaluator/matchersTransform/whitelist.js +2 -3
- package/esm/evaluator/parser/index.js +14 -15
- package/esm/logger/constants.js +1 -21
- package/esm/logger/index.js +9 -2
- package/esm/logger/messages/debug.js +5 -25
- package/esm/logger/messages/warn.js +1 -1
- package/esm/services/splitApi.js +6 -6
- package/esm/storages/KeyBuilder.js +3 -2
- package/esm/utils/constants/index.js +1 -0
- package/package.json +1 -1
- package/src/evaluator/Engine.ts +5 -6
- package/src/evaluator/combiners/ifelseif.ts +2 -2
- package/src/evaluator/condition/index.ts +2 -2
- package/src/evaluator/index.ts +4 -4
- package/src/evaluator/matchers/all.ts +1 -5
- package/src/evaluator/matchers/between.ts +3 -7
- package/src/evaluator/matchers/boolean.ts +2 -6
- package/src/evaluator/matchers/cont_all.ts +1 -5
- package/src/evaluator/matchers/cont_any.ts +1 -5
- package/src/evaluator/matchers/cont_str.ts +2 -6
- package/src/evaluator/matchers/dependency.ts +1 -1
- package/src/evaluator/matchers/eq.ts +2 -6
- package/src/evaluator/matchers/eq_set.ts +1 -5
- package/src/evaluator/matchers/ew.ts +2 -6
- package/src/evaluator/matchers/gte.ts +2 -6
- package/src/evaluator/matchers/index.ts +1 -1
- package/src/evaluator/matchers/lte.ts +2 -6
- package/src/evaluator/matchers/part_of.ts +1 -5
- package/src/evaluator/matchers/segment.ts +1 -8
- package/src/evaluator/matchers/semver_between.ts +1 -5
- package/src/evaluator/matchers/semver_eq.ts +1 -5
- package/src/evaluator/matchers/semver_gte.ts +1 -5
- package/src/evaluator/matchers/semver_inlist.ts +5 -9
- package/src/evaluator/matchers/semver_lte.ts +1 -5
- package/src/evaluator/matchers/string.ts +1 -6
- package/src/evaluator/matchers/sw.ts +2 -6
- package/src/evaluator/matchers/whitelist.ts +5 -7
- package/src/evaluator/matchersTransform/index.ts +5 -8
- package/src/evaluator/matchersTransform/whitelist.ts +2 -3
- package/src/evaluator/parser/index.ts +12 -8
- package/src/evaluator/types.ts +2 -2
- package/src/logger/constants.ts +1 -21
- package/src/logger/index.ts +8 -2
- package/src/logger/messages/debug.ts +5 -25
- package/src/logger/messages/warn.ts +1 -1
- package/src/services/splitApi.ts +5 -6
- package/src/storages/KeyBuilder.ts +3 -2
- package/src/utils/constants/index.ts +2 -0
- package/types/evaluator/matchers/all.d.ts +1 -2
- package/types/evaluator/matchers/between.d.ts +1 -2
- package/types/evaluator/matchers/boolean.d.ts +1 -2
- package/types/evaluator/matchers/cont_all.d.ts +1 -2
- package/types/evaluator/matchers/cont_any.d.ts +1 -2
- package/types/evaluator/matchers/cont_str.d.ts +1 -2
- package/types/evaluator/matchers/dependency.d.ts +1 -1
- package/types/evaluator/matchers/eq.d.ts +1 -2
- package/types/evaluator/matchers/eq_set.d.ts +1 -2
- package/types/evaluator/matchers/ew.d.ts +1 -2
- package/types/evaluator/matchers/gte.d.ts +1 -2
- package/types/evaluator/matchers/lte.d.ts +1 -2
- package/types/evaluator/matchers/part_of.d.ts +1 -2
- package/types/evaluator/matchers/segment.d.ts +1 -2
- package/types/evaluator/matchers/semver_between.d.ts +1 -2
- package/types/evaluator/matchers/semver_eq.d.ts +1 -2
- package/types/evaluator/matchers/semver_gte.d.ts +1 -2
- package/types/evaluator/matchers/semver_inlist.d.ts +1 -3
- package/types/evaluator/matchers/semver_lte.d.ts +1 -2
- package/types/evaluator/matchers/string.d.ts +1 -2
- package/types/evaluator/matchers/sw.d.ts +1 -2
- package/types/evaluator/matchers/whitelist.d.ts +1 -3
- package/types/evaluator/matchersTransform/whitelist.d.ts +2 -2
- package/types/evaluator/types.d.ts +2 -2
- package/types/logger/constants.d.ts +1 -21
- package/types/storages/KeyBuilder.d.ts +1 -1
- package/types/utils/constants/index.d.ts +1 -0
- package/cjs/evaluator/matchersTransform/set.js +0 -10
- package/esm/evaluator/matchersTransform/set.js +0 -6
- package/src/evaluator/matchersTransform/set.ts +0 -8
package/CHANGES.txt
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
1.14.0 (April XX, 2024)
|
|
2
|
+
- Added support for Semver matchers.
|
|
2
3
|
- Updated impression label to 'unsupported matcher type' when the matcher type is not supported by the SDK.
|
|
4
|
+
- Updated Split API client to include the flags spec version query parameter for the `splitChanges` and `auth` endpoints.
|
|
3
5
|
|
|
4
6
|
1.13.1 (January 10, 2024)
|
|
5
7
|
- Updated client `destroy` method to release SDK key immediately and avoid unexpected warning logs when a factory is created with the same SDK key after the previous one was destroyed.
|
package/cjs/evaluator/Engine.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Engine = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
4
|
var lang_1 = require("../utils/lang");
|
|
6
5
|
var parser_1 = require("./parser");
|
|
7
6
|
var key_1 = require("../utils/key");
|
|
8
7
|
var thenable_1 = require("../utils/promise/thenable");
|
|
9
|
-
var
|
|
8
|
+
var labels_1 = require("../utils/labels");
|
|
10
9
|
var constants_1 = require("../utils/constants");
|
|
11
10
|
function evaluationResult(result, defaultTreatment) {
|
|
12
11
|
return {
|
|
13
12
|
treatment: (0, lang_1.get)(result, 'treatment', defaultTreatment),
|
|
14
|
-
label: (0, lang_1.get)(result, 'label',
|
|
13
|
+
label: (0, lang_1.get)(result, 'label', labels_1.NO_CONDITION_MATCH)
|
|
15
14
|
};
|
|
16
15
|
}
|
|
17
16
|
var Engine = /** @class */ (function () {
|
|
@@ -42,16 +41,16 @@ var Engine = /** @class */ (function () {
|
|
|
42
41
|
catch (err) {
|
|
43
42
|
return {
|
|
44
43
|
treatment: constants_1.CONTROL,
|
|
45
|
-
label:
|
|
44
|
+
label: labels_1.EXCEPTION
|
|
46
45
|
};
|
|
47
46
|
}
|
|
48
47
|
if (this.isGarbage()) {
|
|
49
48
|
treatment = constants_1.CONTROL;
|
|
50
|
-
label =
|
|
49
|
+
label = labels_1.SPLIT_ARCHIVED;
|
|
51
50
|
}
|
|
52
51
|
else if (killed) {
|
|
53
52
|
treatment = defaultTreatment;
|
|
54
|
-
label =
|
|
53
|
+
label = labels_1.SPLIT_KILLED;
|
|
55
54
|
}
|
|
56
55
|
else {
|
|
57
56
|
var evaluation = this.evaluator(parsedKey, seed, trafficAllocation, trafficAllocationSeed, attributes, splitEvaluator);
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ifElseIfCombinerContext = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
4
|
var lang_1 = require("../../utils/lang");
|
|
6
5
|
var thenable_1 = require("../../utils/promise/thenable");
|
|
7
|
-
var
|
|
6
|
+
var labels_1 = require("../../utils/labels");
|
|
8
7
|
var constants_1 = require("../../utils/constants");
|
|
9
8
|
var constants_2 = require("../../logger/constants");
|
|
10
9
|
function ifElseIfCombinerContext(log, predicates) {
|
|
@@ -12,7 +11,7 @@ function ifElseIfCombinerContext(log, predicates) {
|
|
|
12
11
|
log.error(constants_2.ERROR_ENGINE_COMBINER_IFELSEIF);
|
|
13
12
|
return {
|
|
14
13
|
treatment: constants_1.CONTROL,
|
|
15
|
-
label:
|
|
14
|
+
label: labels_1.UNSUPPORTED_MATCHER_TYPE
|
|
16
15
|
};
|
|
17
16
|
}
|
|
18
17
|
function computeTreatment(predicateResults) {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.conditionContext = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
4
|
var engineUtils_1 = require("./engineUtils");
|
|
6
5
|
var thenable_1 = require("../../utils/promise/thenable");
|
|
7
|
-
var
|
|
6
|
+
var labels_1 = require("../../utils/labels");
|
|
8
7
|
// Build Evaluation object if and only if matchingResult is true
|
|
9
8
|
function match(log, matchingResult, bucketingKey, seed, treatments, label) {
|
|
10
9
|
if (matchingResult) {
|
|
@@ -24,7 +23,7 @@ function conditionContext(log, matcherEvaluator, treatments, label, conditionTyp
|
|
|
24
23
|
if (conditionType === 'ROLLOUT' && !(0, engineUtils_1.shouldApplyRollout)(trafficAllocation, key.bucketingKey, trafficAllocationSeed)) {
|
|
25
24
|
return {
|
|
26
25
|
treatment: undefined,
|
|
27
|
-
label:
|
|
26
|
+
label: labels_1.NOT_IN_SPLIT
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
29
|
// matcherEvaluator could be Async, this relays on matchers return value, so we need
|
package/cjs/evaluator/index.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.evaluateFeaturesByFlagSets = exports.evaluateFeatures = exports.evaluateFeature = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
4
|
var Engine_1 = require("./Engine");
|
|
6
5
|
var thenable_1 = require("../utils/promise/thenable");
|
|
7
|
-
var
|
|
6
|
+
var labels_1 = require("../utils/labels");
|
|
8
7
|
var constants_1 = require("../utils/constants");
|
|
9
8
|
var sets_1 = require("../utils/lang/sets");
|
|
10
9
|
var constants_2 = require("../logger/constants");
|
|
11
10
|
var treatmentException = {
|
|
12
11
|
treatment: constants_1.CONTROL,
|
|
13
|
-
label:
|
|
12
|
+
label: labels_1.EXCEPTION,
|
|
14
13
|
config: null
|
|
15
14
|
};
|
|
16
15
|
function treatmentsException(splitNames) {
|
|
@@ -94,13 +93,13 @@ exports.evaluateFeaturesByFlagSets = evaluateFeaturesByFlagSets;
|
|
|
94
93
|
function getEvaluation(log, splitJSON, key, attributes, storage) {
|
|
95
94
|
var evaluation = {
|
|
96
95
|
treatment: constants_1.CONTROL,
|
|
97
|
-
label:
|
|
96
|
+
label: labels_1.SPLIT_NOT_FOUND,
|
|
98
97
|
config: null
|
|
99
98
|
};
|
|
100
99
|
if (splitJSON) {
|
|
101
100
|
var split_1 = Engine_1.Engine.parse(log, splitJSON, storage);
|
|
102
101
|
evaluation = split_1.getTreatment(key, attributes, evaluateFeature);
|
|
103
|
-
// If the storage is async and the evaluated
|
|
102
|
+
// If the storage is async and the evaluated flag uses segments or dependencies, evaluation is thenable
|
|
104
103
|
if ((0, thenable_1.thenable)(evaluation)) {
|
|
105
104
|
return evaluation.then(function (result) {
|
|
106
105
|
result.changeNumber = split_1.getChangeNumber();
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.allMatcherContext = void 0;
|
|
4
|
-
|
|
5
|
-
function allMatcherContext(log) {
|
|
4
|
+
function allMatcherContext() {
|
|
6
5
|
return function allMatcher(runtimeAttr) {
|
|
7
|
-
log.debug(constants_1.ENGINE_MATCHER_ALL);
|
|
8
6
|
return runtimeAttr != null;
|
|
9
7
|
};
|
|
10
8
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.betweenMatcherContext = void 0;
|
|
4
|
-
|
|
5
|
-
function betweenMatcherContext(log, ruleVO) {
|
|
4
|
+
function betweenMatcherContext(ruleVO) {
|
|
6
5
|
return function betweenMatcher(runtimeAttr) {
|
|
7
6
|
var isBetween = runtimeAttr >= ruleVO.start && runtimeAttr <= ruleVO.end;
|
|
8
|
-
log.debug(constants_1.ENGINE_MATCHER_BETWEEN, [runtimeAttr, ruleVO.start, ruleVO.end, isBetween]);
|
|
9
7
|
return isBetween;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.booleanMatcherContext = void 0;
|
|
4
|
-
|
|
5
|
-
function booleanMatcherContext(log, ruleAttr) {
|
|
4
|
+
function booleanMatcherContext(ruleAttr) {
|
|
6
5
|
return function booleanMatcher(runtimeAttr) {
|
|
7
6
|
var booleanMatches = ruleAttr === runtimeAttr;
|
|
8
|
-
log.debug(constants_1.ENGINE_MATCHER_BOOLEAN, [ruleAttr, runtimeAttr]);
|
|
9
7
|
return booleanMatches;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.containsAllSetMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var lang_1 = require("../../utils/lang");
|
|
6
|
-
function containsAllSetMatcherContext(
|
|
5
|
+
function containsAllSetMatcherContext(ruleAttr) {
|
|
7
6
|
return function containsAllMatcher(runtimeAttr) {
|
|
8
7
|
var containsAll = true;
|
|
9
8
|
if (runtimeAttr.length < ruleAttr.length) {
|
|
@@ -18,7 +17,6 @@ function containsAllSetMatcherContext(log, ruleAttr) {
|
|
|
18
17
|
_loop_1(i);
|
|
19
18
|
}
|
|
20
19
|
}
|
|
21
|
-
log.debug(constants_1.ENGINE_MATCHER_CONTAINS_ALL, [runtimeAttr, ruleAttr, containsAll]);
|
|
22
20
|
return containsAll;
|
|
23
21
|
};
|
|
24
22
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.containsAnySetMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var lang_1 = require("../../utils/lang");
|
|
6
|
-
function containsAnySetMatcherContext(
|
|
5
|
+
function containsAnySetMatcherContext(ruleAttr) {
|
|
7
6
|
return function containsAnyMatcher(runtimeAttr) {
|
|
8
7
|
var containsAny = false;
|
|
9
8
|
var _loop_1 = function (i) {
|
|
@@ -13,7 +12,6 @@ function containsAnySetMatcherContext(log, ruleAttr) {
|
|
|
13
12
|
for (var i = 0; i < ruleAttr.length && !containsAny; i++) {
|
|
14
13
|
_loop_1(i);
|
|
15
14
|
}
|
|
16
|
-
log.debug(constants_1.ENGINE_MATCHER_CONTAINS_ANY, [runtimeAttr, ruleAttr, containsAny]);
|
|
17
15
|
return containsAny;
|
|
18
16
|
};
|
|
19
17
|
}
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.containsStringMatcherContext = void 0;
|
|
4
4
|
var lang_1 = require("../../utils/lang");
|
|
5
|
-
|
|
6
|
-
function containsStringMatcherContext(log, ruleAttr) {
|
|
5
|
+
function containsStringMatcherContext(ruleAttr) {
|
|
7
6
|
return function containsStringMatcher(runtimeAttr) {
|
|
8
7
|
var contains = ruleAttr.some(function (e) { return (0, lang_1.isString)(runtimeAttr) && runtimeAttr.indexOf(e) > -1; });
|
|
9
|
-
log.debug(constants_1.ENGINE_MATCHER_CONTAINS_STRING, [runtimeAttr, ruleAttr, contains]);
|
|
10
8
|
return contains;
|
|
11
9
|
};
|
|
12
10
|
}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.dependencyMatcherContext = void 0;
|
|
4
4
|
var thenable_1 = require("../../utils/promise/thenable");
|
|
5
5
|
var constants_1 = require("../../logger/constants");
|
|
6
|
-
function dependencyMatcherContext(
|
|
6
|
+
function dependencyMatcherContext(_a, storage, log) {
|
|
7
7
|
var split = _a.split, treatments = _a.treatments;
|
|
8
8
|
function checkTreatment(evaluation, acceptableTreatments, parentName) {
|
|
9
9
|
var matches = false;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.equalToMatcherContext = void 0;
|
|
4
|
-
|
|
5
|
-
function equalToMatcherContext(log, ruleAttr) {
|
|
4
|
+
function equalToMatcherContext(ruleAttr) {
|
|
6
5
|
return function equalToMatcher(runtimeAttr) {
|
|
7
6
|
var isEqual = runtimeAttr === ruleAttr;
|
|
8
|
-
log.debug(constants_1.ENGINE_MATCHER_EQUAL, [runtimeAttr, ruleAttr, isEqual]);
|
|
9
7
|
return isEqual;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.equalToSetMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var lang_1 = require("../../utils/lang");
|
|
6
|
-
function equalToSetMatcherContext(
|
|
5
|
+
function equalToSetMatcherContext(ruleAttr) {
|
|
7
6
|
return function equalToSetMatcher(runtimeAttr) {
|
|
8
7
|
// Length being the same is the first condition.
|
|
9
8
|
var isEqual = runtimeAttr.length === ruleAttr.length;
|
|
@@ -15,7 +14,6 @@ function equalToSetMatcherContext(log, ruleAttr) {
|
|
|
15
14
|
for (var i = 0; i < runtimeAttr.length && isEqual; i++) {
|
|
16
15
|
_loop_1(i);
|
|
17
16
|
}
|
|
18
|
-
log.debug(constants_1.ENGINE_MATCHER_EQUAL_TO_SET, [runtimeAttr, ruleAttr, isEqual]);
|
|
19
17
|
return isEqual;
|
|
20
18
|
};
|
|
21
19
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.endsWithMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var lang_1 = require("../../utils/lang");
|
|
6
|
-
function endsWithMatcherContext(
|
|
5
|
+
function endsWithMatcherContext(ruleAttr) {
|
|
7
6
|
return function endsWithMatcher(runtimeAttr) {
|
|
8
7
|
var strEndsWith = ruleAttr.some(function (e) { return (0, lang_1.endsWith)(runtimeAttr, e); });
|
|
9
|
-
log.debug(constants_1.ENGINE_MATCHER_ENDS_WITH, [runtimeAttr, ruleAttr, strEndsWith]);
|
|
10
8
|
return strEndsWith;
|
|
11
9
|
};
|
|
12
10
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.greaterThanEqualMatcherContext = void 0;
|
|
4
|
-
|
|
5
|
-
function greaterThanEqualMatcherContext(log, ruleAttr) {
|
|
4
|
+
function greaterThanEqualMatcherContext(ruleAttr) {
|
|
6
5
|
return function greaterThanEqualMatcher(runtimeAttr) {
|
|
7
6
|
var isGreaterThanEqual = runtimeAttr >= ruleAttr;
|
|
8
|
-
log.debug(constants_1.ENGINE_MATCHER_GREATER, [runtimeAttr, ruleAttr, isGreaterThanEqual]);
|
|
9
7
|
return isGreaterThanEqual;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -56,7 +56,7 @@ function matcherFactory(log, matcherDto, storage) {
|
|
|
56
56
|
var matcherFn;
|
|
57
57
|
// @ts-ignore
|
|
58
58
|
if (matchers[type])
|
|
59
|
-
matcherFn = matchers[type](
|
|
59
|
+
matcherFn = matchers[type](value, storage, log); // There is no index-out-of-bound exception in JavaScript
|
|
60
60
|
return matcherFn;
|
|
61
61
|
}
|
|
62
62
|
exports.matcherFactory = matcherFactory;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.lessThanEqualMatcherContext = void 0;
|
|
4
|
-
|
|
5
|
-
function lessThanEqualMatcherContext(log, ruleAttr) {
|
|
4
|
+
function lessThanEqualMatcherContext(ruleAttr) {
|
|
6
5
|
return function lessThanEqualMatcher(runtimeAttr) {
|
|
7
6
|
var isLessThanEqual = runtimeAttr <= ruleAttr;
|
|
8
|
-
log.debug(constants_1.ENGINE_MATCHER_LESS, [runtimeAttr, ruleAttr, isLessThanEqual]);
|
|
9
7
|
return isLessThanEqual;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.partOfSetMatcherContext = void 0;
|
|
4
4
|
var lang_1 = require("../../utils/lang");
|
|
5
|
-
|
|
6
|
-
function partOfSetMatcherContext(log, ruleAttr) {
|
|
5
|
+
function partOfSetMatcherContext(ruleAttr) {
|
|
7
6
|
return function partOfMatcher(runtimeAttr) {
|
|
8
7
|
// To be part of the length should be minor or equal.
|
|
9
8
|
var isPartOf = runtimeAttr.length <= ruleAttr.length;
|
|
@@ -15,7 +14,6 @@ function partOfSetMatcherContext(log, ruleAttr) {
|
|
|
15
14
|
for (var i = 0; i < runtimeAttr.length && isPartOf; i++) {
|
|
16
15
|
_loop_1(i);
|
|
17
16
|
}
|
|
18
|
-
log.debug(constants_1.ENGINE_MATCHER_PART_OF, [runtimeAttr, ruleAttr, isPartOf]);
|
|
19
17
|
return isPartOf;
|
|
20
18
|
};
|
|
21
19
|
}
|
|
@@ -2,19 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.segmentMatcherContext = void 0;
|
|
4
4
|
var thenable_1 = require("../../utils/promise/thenable");
|
|
5
|
-
|
|
6
|
-
function segmentMatcherContext(log, segmentName, storage) {
|
|
5
|
+
function segmentMatcherContext(segmentName, storage) {
|
|
7
6
|
return function segmentMatcher(key) {
|
|
8
7
|
var isInSegment = storage.segments.isInSegment(segmentName, key);
|
|
9
8
|
if ((0, thenable_1.thenable)(isInSegment)) {
|
|
10
9
|
isInSegment.then(function (result) {
|
|
11
|
-
log.debug(constants_1.ENGINE_MATCHER_SEGMENT, [segmentName, key, isInSegment]);
|
|
12
10
|
return result;
|
|
13
11
|
});
|
|
14
12
|
}
|
|
15
|
-
else {
|
|
16
|
-
log.debug(constants_1.ENGINE_MATCHER_SEGMENT, [segmentName, key, isInSegment]);
|
|
17
|
-
}
|
|
18
13
|
return isInSegment;
|
|
19
14
|
};
|
|
20
15
|
}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.betweenSemverMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var Semver_1 = require("../../utils/Semver");
|
|
6
|
-
function betweenSemverMatcherContext(
|
|
5
|
+
function betweenSemverMatcherContext(ruleAttr) {
|
|
7
6
|
var startSemver = new Semver_1.Semver(ruleAttr.start);
|
|
8
7
|
var endSemver = new Semver_1.Semver(ruleAttr.end);
|
|
9
8
|
return function betweenSemverMatcher(runtimeAttr) {
|
|
10
9
|
var runtimeSemver = new Semver_1.Semver(runtimeAttr);
|
|
11
10
|
var isBetween = startSemver.compare(runtimeSemver) <= 0 && endSemver.compare(runtimeSemver) >= 0;
|
|
12
|
-
log.debug(constants_1.ENGINE_MATCHER_BETWEEN_SEMVER, [runtimeAttr, ruleAttr.start, ruleAttr.end, isBetween]);
|
|
13
11
|
return isBetween;
|
|
14
12
|
};
|
|
15
13
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.equalToSemverMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var Semver_1 = require("../../utils/Semver");
|
|
6
|
-
function equalToSemverMatcherContext(
|
|
5
|
+
function equalToSemverMatcherContext(ruleAttr) {
|
|
7
6
|
var ruleSemver = new Semver_1.Semver(ruleAttr);
|
|
8
7
|
return function equalToSemverMatcher(runtimeAttr) {
|
|
9
8
|
var runtimeSemver = new Semver_1.Semver(runtimeAttr);
|
|
10
9
|
var isEqual = ruleSemver.version === runtimeSemver.version;
|
|
11
|
-
log.debug(constants_1.ENGINE_MATCHER_EQUAL_SEMVER, [runtimeAttr, ruleAttr, isEqual]);
|
|
12
10
|
return isEqual;
|
|
13
11
|
};
|
|
14
12
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.greaterThanEqualToSemverMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var Semver_1 = require("../../utils/Semver");
|
|
6
|
-
function greaterThanEqualToSemverMatcherContext(
|
|
5
|
+
function greaterThanEqualToSemverMatcherContext(ruleAttr) {
|
|
7
6
|
var ruleSemver = new Semver_1.Semver(ruleAttr);
|
|
8
7
|
return function greaterThanEqualToSemverMatcher(runtimeAttr) {
|
|
9
8
|
var runtimeSemver = new Semver_1.Semver(runtimeAttr);
|
|
10
9
|
var isGreaterThanEqual = runtimeSemver.compare(ruleSemver) >= 0;
|
|
11
|
-
log.debug(constants_1.ENGINE_MATCHER_GREATER_SEMVER, [runtimeAttr, ruleAttr, isGreaterThanEqual]);
|
|
12
10
|
return isGreaterThanEqual;
|
|
13
11
|
};
|
|
14
12
|
}
|
|
@@ -3,16 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.inListSemverMatcherContext = void 0;
|
|
4
4
|
var sets_1 = require("../../utils/lang/sets");
|
|
5
5
|
var Semver_1 = require("../../utils/Semver");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (!ruleAttr || ruleAttr.size === 0)
|
|
6
|
+
function inListSemverMatcherContext(ruleAttr) {
|
|
7
|
+
// @TODO ruleAttr validation should be done at the `parser` or `matchersTransform` level to reuse for all matchers
|
|
8
|
+
if (!ruleAttr || ruleAttr.length === 0)
|
|
10
9
|
throw new Error('whitelistMatcherData is required for IN_LIST_SEMVER matcher type');
|
|
11
|
-
var listOfSemvers = new sets_1._Set(
|
|
10
|
+
var listOfSemvers = new sets_1._Set(ruleAttr.map(function (version) { return new Semver_1.Semver(version).version; }));
|
|
12
11
|
return function inListSemverMatcher(runtimeAttr) {
|
|
13
12
|
var runtimeSemver = new Semver_1.Semver(runtimeAttr).version;
|
|
14
13
|
var isInList = listOfSemvers.has(runtimeSemver);
|
|
15
|
-
log.debug(constants_1.ENGINE_MATCHER_IN_LIST_SEMVER, [runtimeAttr, (0, sets_1.setToArray)(ruleAttr).join(','), isInList]);
|
|
16
14
|
return isInList;
|
|
17
15
|
};
|
|
18
16
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.lessThanEqualToSemverMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var Semver_1 = require("../../utils/Semver");
|
|
6
|
-
function lessThanEqualToSemverMatcherContext(
|
|
5
|
+
function lessThanEqualToSemverMatcherContext(ruleAttr) {
|
|
7
6
|
var ruleSemver = new Semver_1.Semver(ruleAttr);
|
|
8
7
|
return function lessThanEqualToSemverMatcher(runtimeAttr) {
|
|
9
8
|
var runtimeSemver = new Semver_1.Semver(runtimeAttr);
|
|
10
9
|
var isLessThanEqual = runtimeSemver.compare(ruleSemver) <= 0;
|
|
11
|
-
log.debug(constants_1.ENGINE_MATCHER_LESS_SEMVER, [runtimeAttr, ruleAttr, isLessThanEqual]);
|
|
12
10
|
return isLessThanEqual;
|
|
13
11
|
};
|
|
14
12
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.stringMatcherContext = void 0;
|
|
4
|
-
|
|
5
|
-
function stringMatcherContext(log, ruleAttr) {
|
|
4
|
+
function stringMatcherContext(ruleAttr) {
|
|
6
5
|
var regex = new RegExp(ruleAttr);
|
|
7
6
|
return function stringMatcher(runtimeAttr) {
|
|
8
7
|
var regexMatches = regex.test(runtimeAttr);
|
|
9
|
-
log.debug(constants_1.ENGINE_MATCHER_STRING, [runtimeAttr, ruleAttr, regexMatches ? 'yes' : 'no']);
|
|
10
8
|
return regexMatches;
|
|
11
9
|
};
|
|
12
10
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.startsWithMatcherContext = void 0;
|
|
4
|
-
var constants_1 = require("../../logger/constants");
|
|
5
4
|
var lang_1 = require("../../utils/lang");
|
|
6
|
-
function startsWithMatcherContext(
|
|
5
|
+
function startsWithMatcherContext(ruleAttr) {
|
|
7
6
|
return function startsWithMatcher(runtimeAttr) {
|
|
8
7
|
var matches = ruleAttr.some(function (e) { return (0, lang_1.startsWith)(runtimeAttr, e); });
|
|
9
|
-
log.debug(constants_1.ENGINE_MATCHER_STARTS_WITH, [runtimeAttr, ruleAttr, matches]);
|
|
10
8
|
return matches;
|
|
11
9
|
};
|
|
12
10
|
}
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.whitelistMatcherContext = void 0;
|
|
4
4
|
var sets_1 = require("../../utils/lang/sets");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function whitelistMatcherContext(ruleAttr) {
|
|
6
|
+
var whitelistSet = new sets_1._Set(ruleAttr);
|
|
7
7
|
return function whitelistMatcher(runtimeAttr) {
|
|
8
|
-
var isInWhitelist =
|
|
9
|
-
log.debug(constants_1.ENGINE_MATCHER_WHITELIST, [runtimeAttr, (0, sets_1.setToArray)(ruleAttr).join(','), isInWhitelist]);
|
|
8
|
+
var isInWhitelist = whitelistSet.has(runtimeAttr);
|
|
10
9
|
return isInWhitelist;
|
|
11
10
|
};
|
|
12
11
|
}
|
|
@@ -5,7 +5,6 @@ var lang_1 = require("../../utils/lang");
|
|
|
5
5
|
var matcherTypes_1 = require("../matchers/matcherTypes");
|
|
6
6
|
var segment_1 = require("./segment");
|
|
7
7
|
var whitelist_1 = require("./whitelist");
|
|
8
|
-
var set_1 = require("./set");
|
|
9
8
|
var unaryNumeric_1 = require("./unaryNumeric");
|
|
10
9
|
var convertions_1 = require("../convertions");
|
|
11
10
|
/**
|
|
@@ -22,10 +21,6 @@ function matchersTransform(matchers) {
|
|
|
22
21
|
if (type === matcherTypes_1.matcherTypes.IN_SEGMENT) {
|
|
23
22
|
value = (0, segment_1.segmentTransform)(userDefinedSegmentMatcherData);
|
|
24
23
|
}
|
|
25
|
-
else if (type === matcherTypes_1.matcherTypes.WHITELIST ||
|
|
26
|
-
type === matcherTypes_1.matcherTypes.IN_LIST_SEMVER) {
|
|
27
|
-
value = (0, whitelist_1.whitelistTransform)(whitelistMatcherData);
|
|
28
|
-
}
|
|
29
24
|
else if (type === matcherTypes_1.matcherTypes.EQUAL_TO) {
|
|
30
25
|
value = (0, unaryNumeric_1.numericTransform)(unaryNumericMatcherData);
|
|
31
26
|
dataType = matcherTypes_1.matcherDataTypes.NUMBER;
|
|
@@ -59,13 +54,15 @@ function matchersTransform(matchers) {
|
|
|
59
54
|
type === matcherTypes_1.matcherTypes.CONTAINS_ANY_OF_SET ||
|
|
60
55
|
type === matcherTypes_1.matcherTypes.CONTAINS_ALL_OF_SET ||
|
|
61
56
|
type === matcherTypes_1.matcherTypes.PART_OF_SET) {
|
|
62
|
-
value = (0,
|
|
57
|
+
value = (0, whitelist_1.whitelistTransform)(whitelistMatcherData);
|
|
63
58
|
dataType = matcherTypes_1.matcherDataTypes.SET;
|
|
64
59
|
}
|
|
65
|
-
else if (type === matcherTypes_1.matcherTypes.
|
|
60
|
+
else if (type === matcherTypes_1.matcherTypes.WHITELIST ||
|
|
61
|
+
type === matcherTypes_1.matcherTypes.IN_LIST_SEMVER ||
|
|
62
|
+
type === matcherTypes_1.matcherTypes.STARTS_WITH ||
|
|
66
63
|
type === matcherTypes_1.matcherTypes.ENDS_WITH ||
|
|
67
64
|
type === matcherTypes_1.matcherTypes.CONTAINS_STRING) {
|
|
68
|
-
value = (0,
|
|
65
|
+
value = (0, whitelist_1.whitelistTransform)(whitelistMatcherData);
|
|
69
66
|
}
|
|
70
67
|
else if (type === matcherTypes_1.matcherTypes.IN_SPLIT_TREATMENT) {
|
|
71
68
|
value = dependencyMatcherData;
|
|
@@ -85,6 +82,7 @@ function matchersTransform(matchers) {
|
|
|
85
82
|
attribute: attribute,
|
|
86
83
|
negate: negate,
|
|
87
84
|
type: type,
|
|
85
|
+
name: matcherType,
|
|
88
86
|
value: value,
|
|
89
87
|
dataType: dataType // runtime input data type
|
|
90
88
|
};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.whitelistTransform = void 0;
|
|
4
|
-
var sets_1 = require("../../utils/lang/sets");
|
|
5
4
|
/**
|
|
6
|
-
* Extract whitelist
|
|
5
|
+
* Extract whitelist array.
|
|
7
6
|
*/
|
|
8
7
|
function whitelistTransform(whitelistObject) {
|
|
9
|
-
return
|
|
8
|
+
return whitelistObject && whitelistObject.whitelist;
|
|
10
9
|
}
|
|
11
10
|
exports.whitelistTransform = whitelistTransform;
|
|
@@ -12,18 +12,18 @@ var thenable_1 = require("../../utils/promise/thenable");
|
|
|
12
12
|
var constants_1 = require("../../logger/constants");
|
|
13
13
|
function parser(log, conditions, storage) {
|
|
14
14
|
var predicates = [];
|
|
15
|
-
var
|
|
15
|
+
for (var i = 0; i < conditions.length; i++) {
|
|
16
16
|
var _a = conditions[i], matcherGroup = _a.matcherGroup, partitions = _a.partitions, label = _a.label, conditionType = _a.conditionType;
|
|
17
17
|
// transform data structure
|
|
18
18
|
var matchers = (0, matchersTransform_1.matchersTransform)(matcherGroup.matchers);
|
|
19
19
|
// create a set of pure functions from the matcher's dto
|
|
20
|
-
var expressions = matchers.map(function (matcherDto
|
|
20
|
+
var expressions = matchers.map(function (matcherDto) {
|
|
21
21
|
var matcher;
|
|
22
22
|
try {
|
|
23
23
|
matcher = (0, matchers_1.matcherFactory)(log, matcherDto, storage);
|
|
24
24
|
}
|
|
25
25
|
catch (error) {
|
|
26
|
-
log.error(constants_1.ENGINE_MATCHER_ERROR, [
|
|
26
|
+
log.error(constants_1.ENGINE_MATCHER_ERROR, [matcherDto.name, error]);
|
|
27
27
|
}
|
|
28
28
|
// Evaluator function.
|
|
29
29
|
return function (key, attributes, splitEvaluator) {
|
|
@@ -34,27 +34,26 @@ function parser(log, conditions, storage) {
|
|
|
34
34
|
result = matcher(value, splitEvaluator);
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
|
-
log.error(constants_1.ENGINE_MATCHER_ERROR, [
|
|
37
|
+
log.error(constants_1.ENGINE_MATCHER_ERROR, [matcherDto.name, error]);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
function handleResult(result) {
|
|
41
|
+
log.debug(constants_1.ENGINE_MATCHER_RESULT, [matcherDto.name, result, matcherDto.value, value]); // @ts-ignore
|
|
42
|
+
return Boolean(result ^ matcherDto.negate);
|
|
43
|
+
}
|
|
44
|
+
return (0, thenable_1.thenable)(result) ?
|
|
45
|
+
result.then(handleResult) :
|
|
46
|
+
handleResult(result);
|
|
44
47
|
};
|
|
45
48
|
});
|
|
46
49
|
// if matcher's factory can't instantiate the matchers, the expressions array will be empty
|
|
47
50
|
if (expressions.length === 0) {
|
|
48
51
|
// reset any data collected during parsing
|
|
49
52
|
predicates = [];
|
|
50
|
-
|
|
53
|
+
// and break the loop
|
|
54
|
+
break;
|
|
51
55
|
}
|
|
52
56
|
predicates.push((0, condition_1.conditionContext)(log, (0, and_1.andCombinerContext)(log, expressions), treatments_1.Treatments.parse(partitions), label, conditionType));
|
|
53
|
-
};
|
|
54
|
-
for (var i = 0; i < conditions.length; i++) {
|
|
55
|
-
var state_1 = _loop_1(i);
|
|
56
|
-
if (state_1 === "break")
|
|
57
|
-
break;
|
|
58
57
|
}
|
|
59
58
|
// Instanciate evaluator given the set of conditions using if else if logic
|
|
60
59
|
return (0, ifelseif_1.ifElseIfCombinerContext)(log, predicates);
|