@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/cjs/logger/constants.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.LOG_PREFIX_CLEANUP = exports.LOG_PREFIX_UNIQUE_KEYS_TRACKER = exports.LOG_PREFIX_EVENTS_TRACKER = exports.LOG_PREFIX_IMPRESSIONS_TRACKER = exports.LOG_PREFIX_SYNC_SUBMITTERS = exports.LOG_PREFIX_SYNC_POLLING = exports.LOG_PREFIX_SYNC_MYSEGMENTS = exports.LOG_PREFIX_SYNC_SEGMENTS = exports.LOG_PREFIX_SYNC_SPLITS = exports.LOG_PREFIX_SYNC_STREAMING = exports.LOG_PREFIX_SYNC_OFFLINE = exports.LOG_PREFIX_SYNC_MANAGER = exports.LOG_PREFIX_SYNC = exports.LOG_PREFIX_ENGINE_VALUE = exports.LOG_PREFIX_ENGINE_MATCHER = exports.LOG_PREFIX_ENGINE_COMBINER = exports.LOG_PREFIX_ENGINE = exports.LOG_PREFIX_INSTANTIATION = exports.LOG_PREFIX_SETTINGS = exports.ENGINE_MATCHER_ERROR = exports.ERROR_SETS_FILTER_EXCLUSIVE = exports.ERROR_TOO_MANY_SETS = exports.ERROR_MIN_CONFIG_PARAM = exports.ERROR_NOT_BOOLEAN = exports.ERROR_STORAGE_INVALID = exports.ERROR_LOCALHOST_MODULE_REQUIRED = exports.ERROR_HTTP =
|
|
3
|
+
exports.ENGINE_VALUE_INVALID = exports.USER_CONSENT_INITIAL = exports.USER_CONSENT_NOT_UPDATED = exports.USER_CONSENT_UPDATED = exports.IMPRESSIONS_TRACKER_SUCCESS = exports.EVENTS_TRACKER_SUCCESS = exports.SYNC_STOP_POLLING = exports.SYNC_CONTINUE_POLLING = exports.SYNC_START_POLLING = exports.SUBMITTERS_PUSH = exports.SUBMITTERS_PUSH_FULL_QUEUE = exports.STREAMING_DISCONNECTING = exports.STREAMING_DISABLED = exports.STREAMING_CONNECTING = exports.STREAMING_RECONNECT = exports.STREAMING_REFRESH_TOKEN = exports.SYNC_SPLITS_FETCH_RETRY = exports.POLLING_STOP = exports.POLLING_START = exports.POLLING_SMART_PAUSING = exports.NEW_FACTORY = exports.NEW_SHARED_CLIENT = exports.IMPRESSION_QUEUEING = exports.IMPRESSION = exports.CLIENT_READY = exports.CLIENT_READY_FROM_CACHE = exports.ENGINE_MATCHER_RESULT = exports.SETTINGS_SPLITS_FILTER = exports.SYNC_TASK_STOP = exports.SYNC_TASK_EXECUTE = exports.SYNC_TASK_START = exports.STREAMING_NEW_MESSAGE = exports.SYNC_SPLITS_SEGMENTS = exports.SYNC_SPLITS_REMOVED = exports.SYNC_SPLITS_NEW = exports.SYNC_SPLITS_FETCH = exports.SYNC_OFFLINE_DATA = exports.RETRIEVE_MANAGER = exports.RETRIEVE_CLIENT_EXISTING = exports.RETRIEVE_CLIENT_DEFAULT = exports.CLEANUP_DEREGISTERING = exports.CLEANUP_REGISTERING = exports.ENGINE_SANITIZE = exports.ENGINE_VALUE = exports.ENGINE_MATCHER_DEPENDENCY_PRE = exports.ENGINE_MATCHER_DEPENDENCY = exports.ENGINE_BUCKET = exports.ENGINE_COMBINER_IFELSEIF_NO_TREATMENT = exports.ENGINE_COMBINER_IFELSEIF = exports.ENGINE_COMBINER_AND = void 0;
|
|
4
|
+
exports.ERROR_INVALID_CONFIG_PARAM = exports.ERROR_EMPTY_ARRAY = exports.ERROR_EMPTY = exports.ERROR_INVALID = exports.ERROR_INVALID_KEY_OBJECT = exports.ERROR_TOO_LONG = exports.ERROR_NULL = exports.ERROR_CLIENT_DESTROYED = exports.ERROR_NOT_FINITE = exports.ERROR_SIZE_EXCEEDED = exports.ERROR_NOT_PLAIN_OBJECT = exports.ERROR_EVENT_TYPE_FORMAT = exports.ERROR_EVENTS_TRACKER = exports.ERROR_IMPRESSIONS_LISTENER = exports.ERROR_IMPRESSIONS_TRACKER = exports.ERROR_STREAMING_AUTH = exports.ERROR_STREAMING_SSE = exports.ERROR_SYNC_OFFLINE_LOADING = exports.ERROR_CLIENT_CANNOT_GET_READY = exports.ERROR_CLIENT_LISTENER = exports.ERROR_LOGLEVEL_INVALID = exports.ERROR_ENGINE_COMBINER_IFELSEIF = exports.WARN_FLAGSET_WITHOUT_FLAGS = exports.WARN_FLAGSET_NOT_CONFIGURED = exports.WARN_LOWERCASE_FLAGSET = exports.WARN_INVALID_FLAGSET = exports.STREAMING_PARSING_SPLIT_UPDATE = exports.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2 = exports.WARN_SDK_KEY = exports.WARN_SPLITS_FILTER_EMPTY = exports.WARN_SPLITS_FILTER_INVALID = exports.WARN_SPLITS_FILTER_IGNORED = exports.WARN_INTEGRATION_INVALID = exports.WARN_NOT_EXISTENT_TT = exports.WARN_LOWERCASE_TRAFFIC_TYPE = exports.WARN_NOT_EXISTENT_SPLIT = exports.WARN_TRIMMING = exports.WARN_CONVERTING = exports.WARN_TRIMMING_PROPERTIES = exports.WARN_SETTING_NULL = exports.SUBMITTERS_PUSH_RETRY = exports.SUBMITTERS_PUSH_FAILS = exports.STREAMING_FALLBACK = exports.STREAMING_PARSING_MESSAGE_FAILS = exports.STREAMING_PARSING_ERROR_FAILS = exports.SYNC_SPLITS_FETCH_FAILS = exports.SYNC_MYSEGMENTS_FETCH_RETRY = exports.CLIENT_NOT_READY = exports.CLIENT_NO_LISTENER = exports.ENGINE_VALUE_NO_ATTRIBUTES = void 0;
|
|
5
|
+
exports.LOG_PREFIX_CLEANUP = exports.LOG_PREFIX_UNIQUE_KEYS_TRACKER = exports.LOG_PREFIX_EVENTS_TRACKER = exports.LOG_PREFIX_IMPRESSIONS_TRACKER = exports.LOG_PREFIX_SYNC_SUBMITTERS = exports.LOG_PREFIX_SYNC_POLLING = exports.LOG_PREFIX_SYNC_MYSEGMENTS = exports.LOG_PREFIX_SYNC_SEGMENTS = exports.LOG_PREFIX_SYNC_SPLITS = exports.LOG_PREFIX_SYNC_STREAMING = exports.LOG_PREFIX_SYNC_OFFLINE = exports.LOG_PREFIX_SYNC_MANAGER = exports.LOG_PREFIX_SYNC = exports.LOG_PREFIX_ENGINE_VALUE = exports.LOG_PREFIX_ENGINE_MATCHER = exports.LOG_PREFIX_ENGINE_COMBINER = exports.LOG_PREFIX_ENGINE = exports.LOG_PREFIX_INSTANTIATION = exports.LOG_PREFIX_SETTINGS = exports.ENGINE_MATCHER_ERROR = exports.ERROR_SETS_FILTER_EXCLUSIVE = exports.ERROR_TOO_MANY_SETS = exports.ERROR_MIN_CONFIG_PARAM = exports.ERROR_NOT_BOOLEAN = exports.ERROR_STORAGE_INVALID = exports.ERROR_LOCALHOST_MODULE_REQUIRED = exports.ERROR_HTTP = void 0;
|
|
6
6
|
/**
|
|
7
7
|
* Message codes used to trim string log messages from commons and client-side API modules,
|
|
8
8
|
* in order to reduce the minimal SDK size for Browser and eventually other client-side environments.
|
|
@@ -14,24 +14,8 @@ exports.ENGINE_COMBINER_AND = 0;
|
|
|
14
14
|
exports.ENGINE_COMBINER_IFELSEIF = 1;
|
|
15
15
|
exports.ENGINE_COMBINER_IFELSEIF_NO_TREATMENT = 2;
|
|
16
16
|
exports.ENGINE_BUCKET = 3;
|
|
17
|
-
exports.ENGINE_MATCHER_ALL = 4;
|
|
18
|
-
exports.ENGINE_MATCHER_BETWEEN = 5;
|
|
19
|
-
exports.ENGINE_MATCHER_BOOLEAN = 6;
|
|
20
|
-
exports.ENGINE_MATCHER_CONTAINS_ALL = 7;
|
|
21
|
-
exports.ENGINE_MATCHER_CONTAINS_ANY = 8;
|
|
22
|
-
exports.ENGINE_MATCHER_CONTAINS_STRING = 9;
|
|
23
17
|
exports.ENGINE_MATCHER_DEPENDENCY = 10;
|
|
24
18
|
exports.ENGINE_MATCHER_DEPENDENCY_PRE = 11;
|
|
25
|
-
exports.ENGINE_MATCHER_EQUAL = 12;
|
|
26
|
-
exports.ENGINE_MATCHER_EQUAL_TO_SET = 13;
|
|
27
|
-
exports.ENGINE_MATCHER_ENDS_WITH = 14;
|
|
28
|
-
exports.ENGINE_MATCHER_GREATER = 15;
|
|
29
|
-
exports.ENGINE_MATCHER_LESS = 16;
|
|
30
|
-
exports.ENGINE_MATCHER_PART_OF = 17;
|
|
31
|
-
exports.ENGINE_MATCHER_SEGMENT = 18;
|
|
32
|
-
exports.ENGINE_MATCHER_STRING = 19;
|
|
33
|
-
exports.ENGINE_MATCHER_STARTS_WITH = 21;
|
|
34
|
-
exports.ENGINE_MATCHER_WHITELIST = 22;
|
|
35
19
|
exports.ENGINE_VALUE = 23;
|
|
36
20
|
exports.ENGINE_SANITIZE = 24;
|
|
37
21
|
exports.CLEANUP_REGISTERING = 25;
|
|
@@ -49,11 +33,7 @@ exports.SYNC_TASK_START = 36;
|
|
|
49
33
|
exports.SYNC_TASK_EXECUTE = 37;
|
|
50
34
|
exports.SYNC_TASK_STOP = 38;
|
|
51
35
|
exports.SETTINGS_SPLITS_FILTER = 39;
|
|
52
|
-
exports.
|
|
53
|
-
exports.ENGINE_MATCHER_GREATER_SEMVER = 41;
|
|
54
|
-
exports.ENGINE_MATCHER_LESS_SEMVER = 42;
|
|
55
|
-
exports.ENGINE_MATCHER_BETWEEN_SEMVER = 43;
|
|
56
|
-
exports.ENGINE_MATCHER_IN_LIST_SEMVER = 44;
|
|
36
|
+
exports.ENGINE_MATCHER_RESULT = 40;
|
|
57
37
|
exports.CLIENT_READY_FROM_CACHE = 100;
|
|
58
38
|
exports.CLIENT_READY = 101;
|
|
59
39
|
exports.IMPRESSION = 102;
|
package/cjs/logger/index.js
CHANGED
|
@@ -28,7 +28,14 @@ function _sprintf(format, args) {
|
|
|
28
28
|
if (args === void 0) { args = []; }
|
|
29
29
|
var i = 0;
|
|
30
30
|
return format.replace(/%s/g, function () {
|
|
31
|
-
|
|
31
|
+
var arg = args[i++];
|
|
32
|
+
if ((0, lang_1.isObject)(arg) || Array.isArray(arg)) {
|
|
33
|
+
try {
|
|
34
|
+
arg = JSON.stringify(arg);
|
|
35
|
+
}
|
|
36
|
+
catch (e) { /* empty */ }
|
|
37
|
+
}
|
|
38
|
+
return arg;
|
|
32
39
|
});
|
|
33
40
|
}
|
|
34
41
|
exports._sprintf = _sprintf;
|
|
@@ -10,31 +10,11 @@ exports.codesDebug = info_1.codesInfo.concat([
|
|
|
10
10
|
[c.ENGINE_COMBINER_IFELSEIF, c.LOG_PREFIX_ENGINE_COMBINER + 'Treatment found: %s'],
|
|
11
11
|
[c.ENGINE_COMBINER_IFELSEIF_NO_TREATMENT, c.LOG_PREFIX_ENGINE_COMBINER + 'All predicates evaluated, no treatment found.'],
|
|
12
12
|
[c.ENGINE_BUCKET, c.LOG_PREFIX_ENGINE + ': using algo "murmur" bucket %s for key %s using seed %s - treatment %s'],
|
|
13
|
-
[c.
|
|
14
|
-
[c.
|
|
15
|
-
[c.
|
|
16
|
-
[c.
|
|
17
|
-
[c.
|
|
18
|
-
[c.ENGINE_MATCHER_CONTAINS_STRING, c.LOG_PREFIX_ENGINE_MATCHER + '[containsStringMatcher] %s contains %s? %s'],
|
|
19
|
-
[c.ENGINE_MATCHER_DEPENDENCY, c.LOG_PREFIX_ENGINE_MATCHER + '[dependencyMatcher] parent feature flag "%s" evaluated to "%s" with label "%s". %s evaluated treatment is part of [%s] ? %s.'],
|
|
20
|
-
[c.ENGINE_MATCHER_DEPENDENCY_PRE, c.LOG_PREFIX_ENGINE_MATCHER + '[dependencyMatcher] will evaluate parent feature flag: "%s" with key: %s %s'],
|
|
21
|
-
[c.ENGINE_MATCHER_EQUAL, c.LOG_PREFIX_ENGINE_MATCHER + '[equalToMatcher] is %s equal to %s? %s'],
|
|
22
|
-
[c.ENGINE_MATCHER_EQUAL_TO_SET, c.LOG_PREFIX_ENGINE_MATCHER + '[equalToSetMatcher] is %s equal to set %s? %s'],
|
|
23
|
-
[c.ENGINE_MATCHER_ENDS_WITH, c.LOG_PREFIX_ENGINE_MATCHER + '[endsWithMatcher] %s ends with %s? %s'],
|
|
24
|
-
[c.ENGINE_MATCHER_GREATER, c.LOG_PREFIX_ENGINE_MATCHER + '[greaterThanEqualMatcher] is %s greater than %s? %s'],
|
|
25
|
-
[c.ENGINE_MATCHER_LESS, c.LOG_PREFIX_ENGINE_MATCHER + '[lessThanEqualMatcher] is %s less than %s? %s'],
|
|
26
|
-
[c.ENGINE_MATCHER_PART_OF, c.LOG_PREFIX_ENGINE_MATCHER + '[partOfMatcher] %s is part of %s? %s'],
|
|
27
|
-
[c.ENGINE_MATCHER_SEGMENT, c.LOG_PREFIX_ENGINE_MATCHER + '[segmentMatcher] evaluated %s / %s => %s'],
|
|
28
|
-
[c.ENGINE_MATCHER_STRING, c.LOG_PREFIX_ENGINE_MATCHER + '[stringMatcher] does %s matches with %s? %s'],
|
|
29
|
-
[c.ENGINE_MATCHER_STARTS_WITH, c.LOG_PREFIX_ENGINE_MATCHER + '[startsWithMatcher] %s starts with %s? %s'],
|
|
30
|
-
[c.ENGINE_MATCHER_WHITELIST, c.LOG_PREFIX_ENGINE_MATCHER + '[whitelistMatcher] evaluated %s in [%s] => %s'],
|
|
31
|
-
[c.ENGINE_VALUE, c.LOG_PREFIX_ENGINE_VALUE + 'Extracted attribute [%s], [%s] will be used for matching.'],
|
|
32
|
-
[c.ENGINE_SANITIZE, c.LOG_PREFIX_ENGINE + ':sanitize: Attempted to sanitize [%s] which should be of type [%s]. Sanitized and processed value => [%s]'],
|
|
33
|
-
[c.ENGINE_MATCHER_EQUAL_SEMVER, c.LOG_PREFIX_ENGINE_MATCHER + '[equalToSemverMatcher] is %s equal to %s? %s'],
|
|
34
|
-
[c.ENGINE_MATCHER_GREATER_SEMVER, c.LOG_PREFIX_ENGINE_MATCHER + '[greaterThanEqualSemverMatcher] is %s greater than %s? %s'],
|
|
35
|
-
[c.ENGINE_MATCHER_LESS_SEMVER, c.LOG_PREFIX_ENGINE_MATCHER + '[lessThanEqualSemverMatcher] is %s less than %s? %s'],
|
|
36
|
-
[c.ENGINE_MATCHER_BETWEEN_SEMVER, c.LOG_PREFIX_ENGINE_MATCHER + '[betweenSemverMatcher] is %s between %s and %s? %s'],
|
|
37
|
-
[c.ENGINE_MATCHER_IN_LIST_SEMVER, c.LOG_PREFIX_ENGINE_MATCHER + '[inListSemverMatcher] is %s in list [%s]? %s'],
|
|
13
|
+
[c.ENGINE_MATCHER_DEPENDENCY, c.LOG_PREFIX_ENGINE_MATCHER + '[IN_SPLIT_TREATMENT] parent feature flag "%s" evaluated to "%s" with label "%s". %s evaluated treatment is part of %s ? %s.'],
|
|
14
|
+
[c.ENGINE_MATCHER_DEPENDENCY_PRE, c.LOG_PREFIX_ENGINE_MATCHER + '[IN_SPLIT_TREATMENT] will evaluate parent feature flag: "%s" with key: %s %s'],
|
|
15
|
+
[c.ENGINE_VALUE, c.LOG_PREFIX_ENGINE_VALUE + 'Extracted attribute `%s`. %s will be used for matching.'],
|
|
16
|
+
[c.ENGINE_SANITIZE, c.LOG_PREFIX_ENGINE + ':sanitize: Attempted to sanitize %s which should be of type %s. Sanitized and processed value => %s'],
|
|
17
|
+
[c.ENGINE_MATCHER_RESULT, c.LOG_PREFIX_ENGINE_MATCHER + '[%s] Result: %s. Rule value: %s. Evaluation value: %s'],
|
|
38
18
|
// SDK
|
|
39
19
|
[c.CLEANUP_REGISTERING, c.LOG_PREFIX_CLEANUP + 'Registering cleanup handler %s'],
|
|
40
20
|
[c.CLEANUP_DEREGISTERING, c.LOG_PREFIX_CLEANUP + 'Deregistering cleanup handler %s'],
|
|
@@ -7,7 +7,7 @@ var error_1 = require("./error");
|
|
|
7
7
|
exports.codesWarn = error_1.codesError.concat([
|
|
8
8
|
// evaluator
|
|
9
9
|
[c.ENGINE_VALUE_INVALID, c.LOG_PREFIX_ENGINE_VALUE + 'Value %s doesn\'t match with expected type.'],
|
|
10
|
-
[c.ENGINE_VALUE_NO_ATTRIBUTES, c.LOG_PREFIX_ENGINE_VALUE + 'Defined attribute
|
|
10
|
+
[c.ENGINE_VALUE_NO_ATTRIBUTES, c.LOG_PREFIX_ENGINE_VALUE + 'Defined attribute `%s`. No attributes received.'],
|
|
11
11
|
// synchronizer
|
|
12
12
|
[c.SYNC_MYSEGMENTS_FETCH_RETRY, c.LOG_PREFIX_SYNC_MYSEGMENTS + 'Retrying download of segments #%s. Reason: %s'],
|
|
13
13
|
[c.SYNC_SPLITS_FETCH_FAILS, c.LOG_PREFIX_SYNC_SPLITS + 'Error while doing fetch of feature flags. %s'],
|
package/cjs/services/splitApi.js
CHANGED
|
@@ -32,16 +32,16 @@ function splitApiFactory(settings, platform, telemetryTracker) {
|
|
|
32
32
|
return splitHttpClient(url).then(function () { return true; }).catch(function () { return false; });
|
|
33
33
|
},
|
|
34
34
|
fetchAuth: function (userMatchingKeys) {
|
|
35
|
-
var url = urls.auth + "/v2/auth";
|
|
36
|
-
if (userMatchingKeys) { //
|
|
35
|
+
var url = urls.auth + "/v2/auth?s=" + constants_1.FLAGS_SPEC;
|
|
36
|
+
if (userMatchingKeys) { // `userMatchingKeys` is undefined in server-side
|
|
37
37
|
var queryParams = userMatchingKeys.map(userKeyToQueryParam).join('&');
|
|
38
|
-
if (queryParams)
|
|
39
|
-
url += '
|
|
38
|
+
if (queryParams)
|
|
39
|
+
url += '&' + queryParams;
|
|
40
40
|
}
|
|
41
41
|
return splitHttpClient(url, undefined, telemetryTracker.trackHttp(constants_1.TOKEN));
|
|
42
42
|
},
|
|
43
43
|
fetchSplitChanges: function (since, noCache, till) {
|
|
44
|
-
var url = urls.sdk + "/splitChanges?since=" + since + (till ? '&till=' + till : '') + (filterQueryString || '');
|
|
44
|
+
var url = urls.sdk + "/splitChanges?s=" + constants_1.FLAGS_SPEC + "&since=" + since + (till ? '&till=' + till : '') + (filterQueryString || '');
|
|
45
45
|
return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(constants_1.SPLITS))
|
|
46
46
|
.catch(function (err) {
|
|
47
47
|
if (err.statusCode === 414)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getStorageHash = exports.KeyBuilder = exports.validatePrefix = void 0;
|
|
4
|
+
var constants_1 = require("../utils/constants");
|
|
4
5
|
var lang_1 = require("../utils/lang");
|
|
5
6
|
var murmur3_1 = require("../utils/murmur3/murmur3");
|
|
6
7
|
var everythingAtTheEnd = /[^.]+$/;
|
|
@@ -66,10 +67,10 @@ var KeyBuilder = /** @class */ (function () {
|
|
|
66
67
|
}());
|
|
67
68
|
exports.KeyBuilder = KeyBuilder;
|
|
68
69
|
/**
|
|
69
|
-
* Generates a murmur32 hash based on the authorization key
|
|
70
|
+
* Generates a murmur32 hash based on the authorization key, the feature flags filter query, and version of SplitChanges API.
|
|
70
71
|
* The hash is in hexadecimal format (8 characters max, 32 bits).
|
|
71
72
|
*/
|
|
72
73
|
function getStorageHash(settings) {
|
|
73
|
-
return (0, murmur3_1.hash)(settings.core.authorizationKey + "::" + settings.sync.__splitFiltersValidation.queryString).toString(16);
|
|
74
|
+
return (0, murmur3_1.hash)(settings.core.authorizationKey + "::" + settings.sync.__splitFiltersValidation.queryString + "::" + constants_1.FLAGS_SPEC).toString(16);
|
|
74
75
|
}
|
|
75
76
|
exports.getStorageHash = getStorageHash;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MY_SEGMENT = exports.SEGMENT = exports.TOKEN = exports.TELEMETRY = exports.EVENTS = exports.IMPRESSIONS_COUNT = exports.IMPRESSIONS = exports.SPLITS = exports.NONE_ENUM = exports.DEBUG_ENUM = exports.OPTIMIZED_ENUM = exports.CONSUMER_PARTIAL_ENUM = exports.CONSUMER_ENUM = exports.STANDALONE_ENUM = exports.DEDUPED = exports.DROPPED = exports.QUEUED = exports.NAMES_FN_LABEL = exports.SPLITS_FN_LABEL = exports.SPLIT_FN_LABEL = exports.TRACK_FN_LABEL = exports.GET_TREATMENTS_WITH_CONFIG_BY_FLAG_SETS = exports.GET_TREATMENTS_WITH_CONFIG_BY_FLAG_SET = exports.GET_TREATMENTS_BY_FLAG_SETS = exports.GET_TREATMENTS_BY_FLAG_SET = exports.GET_TREATMENTS_WITH_CONFIG = exports.GET_TREATMENT_WITH_CONFIG = exports.GET_TREATMENTS = exports.GET_TREATMENT = exports.CONSENT_UNKNOWN = exports.CONSENT_DECLINED = exports.CONSENT_GRANTED = exports.STORAGE_PLUGGABLE = exports.STORAGE_REDIS = exports.STORAGE_LOCALSTORAGE = exports.STORAGE_MEMORY = exports.CONSUMER_PARTIAL_MODE = exports.CONSUMER_MODE = exports.PRODUCER_MODE = exports.STANDALONE_MODE = exports.LOCALHOST_MODE = exports.NONE = exports.OPTIMIZED = exports.DEBUG = exports.SPLIT_EVENT = exports.SPLIT_IMPRESSION = exports.NA = exports.UNKNOWN = exports.CONTROL_WITH_CONFIG = exports.CONTROL = void 0;
|
|
4
|
-
exports.PAUSED = exports.ENABLED = exports.DISABLED = exports.NON_REQUESTED = exports.REQUESTED = exports.POLLING = exports.STREAMING = exports.AUTH_REJECTION = exports.SYNC_MODE_UPDATE = exports.ABLY_ERROR = exports.TOKEN_REFRESH = exports.SSE_CONNECTION_ERROR = exports.STREAMING_STATUS = exports.OCCUPANCY_SEC = exports.OCCUPANCY_PRI = exports.CONNECTION_ESTABLISHED = exports.TRACK = exports.TREATMENTS_WITH_CONFIG_BY_FLAGSETS = exports.TREATMENTS_WITH_CONFIG_BY_FLAGSET = exports.TREATMENTS_BY_FLAGSETS = exports.TREATMENTS_BY_FLAGSET = exports.TREATMENTS_WITH_CONFIG = exports.TREATMENT_WITH_CONFIG = exports.TREATMENTS = exports.TREATMENT = void 0;
|
|
4
|
+
exports.FLAGS_SPEC = exports.PAUSED = exports.ENABLED = exports.DISABLED = exports.NON_REQUESTED = exports.REQUESTED = exports.POLLING = exports.STREAMING = exports.AUTH_REJECTION = exports.SYNC_MODE_UPDATE = exports.ABLY_ERROR = exports.TOKEN_REFRESH = exports.SSE_CONNECTION_ERROR = exports.STREAMING_STATUS = exports.OCCUPANCY_SEC = exports.OCCUPANCY_PRI = exports.CONNECTION_ESTABLISHED = exports.TRACK = exports.TREATMENTS_WITH_CONFIG_BY_FLAGSETS = exports.TREATMENTS_WITH_CONFIG_BY_FLAGSET = exports.TREATMENTS_BY_FLAGSETS = exports.TREATMENTS_BY_FLAGSET = exports.TREATMENTS_WITH_CONFIG = exports.TREATMENT_WITH_CONFIG = exports.TREATMENTS = exports.TREATMENT = void 0;
|
|
5
5
|
// Special treatments
|
|
6
6
|
exports.CONTROL = 'control';
|
|
7
7
|
exports.CONTROL_WITH_CONFIG = {
|
|
@@ -90,3 +90,4 @@ exports.NON_REQUESTED = 1;
|
|
|
90
90
|
exports.DISABLED = 0;
|
|
91
91
|
exports.ENABLED = 1;
|
|
92
92
|
exports.PAUSED = 2;
|
|
93
|
+
exports.FLAGS_SPEC = '1.1';
|
package/esm/evaluator/Engine.js
CHANGED
|
@@ -2,12 +2,12 @@ import { get } from '../utils/lang';
|
|
|
2
2
|
import { parser } from './parser';
|
|
3
3
|
import { keyParser } from '../utils/key';
|
|
4
4
|
import { thenable } from '../utils/promise/thenable';
|
|
5
|
-
import
|
|
5
|
+
import { EXCEPTION, NO_CONDITION_MATCH, SPLIT_ARCHIVED, SPLIT_KILLED } from '../utils/labels';
|
|
6
6
|
import { CONTROL } from '../utils/constants';
|
|
7
7
|
function evaluationResult(result, defaultTreatment) {
|
|
8
8
|
return {
|
|
9
9
|
treatment: get(result, 'treatment', defaultTreatment),
|
|
10
|
-
label: get(result, 'label',
|
|
10
|
+
label: get(result, 'label', NO_CONDITION_MATCH)
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
var Engine = /** @class */ (function () {
|
|
@@ -38,16 +38,16 @@ var Engine = /** @class */ (function () {
|
|
|
38
38
|
catch (err) {
|
|
39
39
|
return {
|
|
40
40
|
treatment: CONTROL,
|
|
41
|
-
label:
|
|
41
|
+
label: EXCEPTION
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
if (this.isGarbage()) {
|
|
45
45
|
treatment = CONTROL;
|
|
46
|
-
label =
|
|
46
|
+
label = SPLIT_ARCHIVED;
|
|
47
47
|
}
|
|
48
48
|
else if (killed) {
|
|
49
49
|
treatment = defaultTreatment;
|
|
50
|
-
label =
|
|
50
|
+
label = SPLIT_KILLED;
|
|
51
51
|
}
|
|
52
52
|
else {
|
|
53
53
|
var evaluation = this.evaluator(parsedKey, seed, trafficAllocation, trafficAllocationSeed, attributes, splitEvaluator);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { findIndex } from '../../utils/lang';
|
|
2
2
|
import { thenable } from '../../utils/promise/thenable';
|
|
3
|
-
import
|
|
3
|
+
import { UNSUPPORTED_MATCHER_TYPE } from '../../utils/labels';
|
|
4
4
|
import { CONTROL } from '../../utils/constants';
|
|
5
5
|
import { ENGINE_COMBINER_IFELSEIF, ENGINE_COMBINER_IFELSEIF_NO_TREATMENT, ERROR_ENGINE_COMBINER_IFELSEIF } from '../../logger/constants';
|
|
6
6
|
export function ifElseIfCombinerContext(log, predicates) {
|
|
@@ -8,7 +8,7 @@ export function ifElseIfCombinerContext(log, predicates) {
|
|
|
8
8
|
log.error(ERROR_ENGINE_COMBINER_IFELSEIF);
|
|
9
9
|
return {
|
|
10
10
|
treatment: CONTROL,
|
|
11
|
-
label:
|
|
11
|
+
label: UNSUPPORTED_MATCHER_TYPE
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
function computeTreatment(predicateResults) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getTreatment, shouldApplyRollout } from './engineUtils';
|
|
2
2
|
import { thenable } from '../../utils/promise/thenable';
|
|
3
|
-
import
|
|
3
|
+
import { NOT_IN_SPLIT } from '../../utils/labels';
|
|
4
4
|
// Build Evaluation object if and only if matchingResult is true
|
|
5
5
|
function match(log, matchingResult, bucketingKey, seed, treatments, label) {
|
|
6
6
|
if (matchingResult) {
|
|
@@ -20,7 +20,7 @@ export function conditionContext(log, matcherEvaluator, treatments, label, condi
|
|
|
20
20
|
if (conditionType === 'ROLLOUT' && !shouldApplyRollout(trafficAllocation, key.bucketingKey, trafficAllocationSeed)) {
|
|
21
21
|
return {
|
|
22
22
|
treatment: undefined,
|
|
23
|
-
label:
|
|
23
|
+
label: NOT_IN_SPLIT
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
// matcherEvaluator could be Async, this relays on matchers return value, so we need
|
package/esm/evaluator/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Engine } from './Engine';
|
|
2
2
|
import { thenable } from '../utils/promise/thenable';
|
|
3
|
-
import
|
|
3
|
+
import { EXCEPTION, SPLIT_NOT_FOUND } from '../utils/labels';
|
|
4
4
|
import { CONTROL } from '../utils/constants';
|
|
5
5
|
import { setToArray, returnSetsUnion, _Set } from '../utils/lang/sets';
|
|
6
6
|
import { WARN_FLAGSET_WITHOUT_FLAGS } from '../logger/constants';
|
|
7
7
|
var treatmentException = {
|
|
8
8
|
treatment: CONTROL,
|
|
9
|
-
label:
|
|
9
|
+
label: EXCEPTION,
|
|
10
10
|
config: null
|
|
11
11
|
};
|
|
12
12
|
function treatmentsException(splitNames) {
|
|
@@ -87,13 +87,13 @@ export function evaluateFeaturesByFlagSets(log, key, flagSets, attributes, stora
|
|
|
87
87
|
function getEvaluation(log, splitJSON, key, attributes, storage) {
|
|
88
88
|
var evaluation = {
|
|
89
89
|
treatment: CONTROL,
|
|
90
|
-
label:
|
|
90
|
+
label: SPLIT_NOT_FOUND,
|
|
91
91
|
config: null
|
|
92
92
|
};
|
|
93
93
|
if (splitJSON) {
|
|
94
94
|
var split_1 = Engine.parse(log, splitJSON, storage);
|
|
95
95
|
evaluation = split_1.getTreatment(key, attributes, evaluateFeature);
|
|
96
|
-
// If the storage is async and the evaluated
|
|
96
|
+
// If the storage is async and the evaluated flag uses segments or dependencies, evaluation is thenable
|
|
97
97
|
if (thenable(evaluation)) {
|
|
98
98
|
return evaluation.then(function (result) {
|
|
99
99
|
result.changeNumber = split_1.getChangeNumber();
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export function betweenMatcherContext(log, ruleVO) {
|
|
1
|
+
export function betweenMatcherContext(ruleVO) {
|
|
3
2
|
return function betweenMatcher(runtimeAttr) {
|
|
4
3
|
var isBetween = runtimeAttr >= ruleVO.start && runtimeAttr <= ruleVO.end;
|
|
5
|
-
log.debug(ENGINE_MATCHER_BETWEEN, [runtimeAttr, ruleVO.start, ruleVO.end, isBetween]);
|
|
6
4
|
return isBetween;
|
|
7
5
|
};
|
|
8
6
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export function booleanMatcherContext(log, ruleAttr) {
|
|
1
|
+
export function booleanMatcherContext(ruleAttr) {
|
|
3
2
|
return function booleanMatcher(runtimeAttr) {
|
|
4
3
|
var booleanMatches = ruleAttr === runtimeAttr;
|
|
5
|
-
log.debug(ENGINE_MATCHER_BOOLEAN, [ruleAttr, runtimeAttr]);
|
|
6
4
|
return booleanMatches;
|
|
7
5
|
};
|
|
8
6
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_CONTAINS_ALL } from '../../logger/constants';
|
|
2
1
|
import { findIndex } from '../../utils/lang';
|
|
3
|
-
export function containsAllSetMatcherContext(
|
|
2
|
+
export function containsAllSetMatcherContext(ruleAttr) {
|
|
4
3
|
return function containsAllMatcher(runtimeAttr) {
|
|
5
4
|
var containsAll = true;
|
|
6
5
|
if (runtimeAttr.length < ruleAttr.length) {
|
|
@@ -15,7 +14,6 @@ export function containsAllSetMatcherContext(log, ruleAttr) {
|
|
|
15
14
|
_loop_1(i);
|
|
16
15
|
}
|
|
17
16
|
}
|
|
18
|
-
log.debug(ENGINE_MATCHER_CONTAINS_ALL, [runtimeAttr, ruleAttr, containsAll]);
|
|
19
17
|
return containsAll;
|
|
20
18
|
};
|
|
21
19
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_CONTAINS_ANY } from '../../logger/constants';
|
|
2
1
|
import { findIndex } from '../../utils/lang';
|
|
3
|
-
export function containsAnySetMatcherContext(
|
|
2
|
+
export function containsAnySetMatcherContext(ruleAttr) {
|
|
4
3
|
return function containsAnyMatcher(runtimeAttr) {
|
|
5
4
|
var containsAny = false;
|
|
6
5
|
var _loop_1 = function (i) {
|
|
@@ -10,7 +9,6 @@ export function containsAnySetMatcherContext(log, ruleAttr) {
|
|
|
10
9
|
for (var i = 0; i < ruleAttr.length && !containsAny; i++) {
|
|
11
10
|
_loop_1(i);
|
|
12
11
|
}
|
|
13
|
-
log.debug(ENGINE_MATCHER_CONTAINS_ANY, [runtimeAttr, ruleAttr, containsAny]);
|
|
14
12
|
return containsAny;
|
|
15
13
|
};
|
|
16
14
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { isString } from '../../utils/lang';
|
|
2
|
-
|
|
3
|
-
export function containsStringMatcherContext(log, ruleAttr) {
|
|
2
|
+
export function containsStringMatcherContext(ruleAttr) {
|
|
4
3
|
return function containsStringMatcher(runtimeAttr) {
|
|
5
4
|
var contains = ruleAttr.some(function (e) { return isString(runtimeAttr) && runtimeAttr.indexOf(e) > -1; });
|
|
6
|
-
log.debug(ENGINE_MATCHER_CONTAINS_STRING, [runtimeAttr, ruleAttr, contains]);
|
|
7
5
|
return contains;
|
|
8
6
|
};
|
|
9
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { thenable } from '../../utils/promise/thenable';
|
|
2
2
|
import { ENGINE_MATCHER_DEPENDENCY, ENGINE_MATCHER_DEPENDENCY_PRE } from '../../logger/constants';
|
|
3
|
-
export function dependencyMatcherContext(
|
|
3
|
+
export function dependencyMatcherContext(_a, storage, log) {
|
|
4
4
|
var split = _a.split, treatments = _a.treatments;
|
|
5
5
|
function checkTreatment(evaluation, acceptableTreatments, parentName) {
|
|
6
6
|
var matches = false;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export function equalToMatcherContext(log, ruleAttr) {
|
|
1
|
+
export function equalToMatcherContext(ruleAttr) {
|
|
3
2
|
return function equalToMatcher(runtimeAttr) {
|
|
4
3
|
var isEqual = runtimeAttr === ruleAttr;
|
|
5
|
-
log.debug(ENGINE_MATCHER_EQUAL, [runtimeAttr, ruleAttr, isEqual]);
|
|
6
4
|
return isEqual;
|
|
7
5
|
};
|
|
8
6
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_EQUAL_TO_SET } from '../../logger/constants';
|
|
2
1
|
import { findIndex } from '../../utils/lang';
|
|
3
|
-
export function equalToSetMatcherContext(
|
|
2
|
+
export function equalToSetMatcherContext(ruleAttr) {
|
|
4
3
|
return function equalToSetMatcher(runtimeAttr) {
|
|
5
4
|
// Length being the same is the first condition.
|
|
6
5
|
var isEqual = runtimeAttr.length === ruleAttr.length;
|
|
@@ -12,7 +11,6 @@ export function equalToSetMatcherContext(log, ruleAttr) {
|
|
|
12
11
|
for (var i = 0; i < runtimeAttr.length && isEqual; i++) {
|
|
13
12
|
_loop_1(i);
|
|
14
13
|
}
|
|
15
|
-
log.debug(ENGINE_MATCHER_EQUAL_TO_SET, [runtimeAttr, ruleAttr, isEqual]);
|
|
16
14
|
return isEqual;
|
|
17
15
|
};
|
|
18
16
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_ENDS_WITH } from '../../logger/constants';
|
|
2
1
|
import { endsWith } from '../../utils/lang';
|
|
3
|
-
export function endsWithMatcherContext(
|
|
2
|
+
export function endsWithMatcherContext(ruleAttr) {
|
|
4
3
|
return function endsWithMatcher(runtimeAttr) {
|
|
5
4
|
var strEndsWith = ruleAttr.some(function (e) { return endsWith(runtimeAttr, e); });
|
|
6
|
-
log.debug(ENGINE_MATCHER_ENDS_WITH, [runtimeAttr, ruleAttr, strEndsWith]);
|
|
7
5
|
return strEndsWith;
|
|
8
6
|
};
|
|
9
7
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export function greaterThanEqualMatcherContext(log, ruleAttr) {
|
|
1
|
+
export function greaterThanEqualMatcherContext(ruleAttr) {
|
|
3
2
|
return function greaterThanEqualMatcher(runtimeAttr) {
|
|
4
3
|
var isGreaterThanEqual = runtimeAttr >= ruleAttr;
|
|
5
|
-
log.debug(ENGINE_MATCHER_GREATER, [runtimeAttr, ruleAttr, isGreaterThanEqual]);
|
|
6
4
|
return isGreaterThanEqual;
|
|
7
5
|
};
|
|
8
6
|
}
|
|
@@ -53,6 +53,6 @@ export function matcherFactory(log, matcherDto, storage) {
|
|
|
53
53
|
var matcherFn;
|
|
54
54
|
// @ts-ignore
|
|
55
55
|
if (matchers[type])
|
|
56
|
-
matcherFn = matchers[type](
|
|
56
|
+
matcherFn = matchers[type](value, storage, log); // There is no index-out-of-bound exception in JavaScript
|
|
57
57
|
return matcherFn;
|
|
58
58
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export function lessThanEqualMatcherContext(log, ruleAttr) {
|
|
1
|
+
export function lessThanEqualMatcherContext(ruleAttr) {
|
|
3
2
|
return function lessThanEqualMatcher(runtimeAttr) {
|
|
4
3
|
var isLessThanEqual = runtimeAttr <= ruleAttr;
|
|
5
|
-
log.debug(ENGINE_MATCHER_LESS, [runtimeAttr, ruleAttr, isLessThanEqual]);
|
|
6
4
|
return isLessThanEqual;
|
|
7
5
|
};
|
|
8
6
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { findIndex } from '../../utils/lang';
|
|
2
|
-
|
|
3
|
-
export function partOfSetMatcherContext(log, ruleAttr) {
|
|
2
|
+
export function partOfSetMatcherContext(ruleAttr) {
|
|
4
3
|
return function partOfMatcher(runtimeAttr) {
|
|
5
4
|
// To be part of the length should be minor or equal.
|
|
6
5
|
var isPartOf = runtimeAttr.length <= ruleAttr.length;
|
|
@@ -12,7 +11,6 @@ export function partOfSetMatcherContext(log, ruleAttr) {
|
|
|
12
11
|
for (var i = 0; i < runtimeAttr.length && isPartOf; i++) {
|
|
13
12
|
_loop_1(i);
|
|
14
13
|
}
|
|
15
|
-
log.debug(ENGINE_MATCHER_PART_OF, [runtimeAttr, ruleAttr, isPartOf]);
|
|
16
14
|
return isPartOf;
|
|
17
15
|
};
|
|
18
16
|
}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { thenable } from '../../utils/promise/thenable';
|
|
2
|
-
|
|
3
|
-
export function segmentMatcherContext(log, segmentName, storage) {
|
|
2
|
+
export function segmentMatcherContext(segmentName, storage) {
|
|
4
3
|
return function segmentMatcher(key) {
|
|
5
4
|
var isInSegment = storage.segments.isInSegment(segmentName, key);
|
|
6
5
|
if (thenable(isInSegment)) {
|
|
7
6
|
isInSegment.then(function (result) {
|
|
8
|
-
log.debug(ENGINE_MATCHER_SEGMENT, [segmentName, key, isInSegment]);
|
|
9
7
|
return result;
|
|
10
8
|
});
|
|
11
9
|
}
|
|
12
|
-
else {
|
|
13
|
-
log.debug(ENGINE_MATCHER_SEGMENT, [segmentName, key, isInSegment]);
|
|
14
|
-
}
|
|
15
10
|
return isInSegment;
|
|
16
11
|
};
|
|
17
12
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_BETWEEN_SEMVER } from '../../logger/constants';
|
|
2
1
|
import { Semver } from '../../utils/Semver';
|
|
3
|
-
export function betweenSemverMatcherContext(
|
|
2
|
+
export function betweenSemverMatcherContext(ruleAttr) {
|
|
4
3
|
var startSemver = new Semver(ruleAttr.start);
|
|
5
4
|
var endSemver = new Semver(ruleAttr.end);
|
|
6
5
|
return function betweenSemverMatcher(runtimeAttr) {
|
|
7
6
|
var runtimeSemver = new Semver(runtimeAttr);
|
|
8
7
|
var isBetween = startSemver.compare(runtimeSemver) <= 0 && endSemver.compare(runtimeSemver) >= 0;
|
|
9
|
-
log.debug(ENGINE_MATCHER_BETWEEN_SEMVER, [runtimeAttr, ruleAttr.start, ruleAttr.end, isBetween]);
|
|
10
8
|
return isBetween;
|
|
11
9
|
};
|
|
12
10
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_EQUAL_SEMVER } from '../../logger/constants';
|
|
2
1
|
import { Semver } from '../../utils/Semver';
|
|
3
|
-
export function equalToSemverMatcherContext(
|
|
2
|
+
export function equalToSemverMatcherContext(ruleAttr) {
|
|
4
3
|
var ruleSemver = new Semver(ruleAttr);
|
|
5
4
|
return function equalToSemverMatcher(runtimeAttr) {
|
|
6
5
|
var runtimeSemver = new Semver(runtimeAttr);
|
|
7
6
|
var isEqual = ruleSemver.version === runtimeSemver.version;
|
|
8
|
-
log.debug(ENGINE_MATCHER_EQUAL_SEMVER, [runtimeAttr, ruleAttr, isEqual]);
|
|
9
7
|
return isEqual;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_GREATER_SEMVER } from '../../logger/constants';
|
|
2
1
|
import { Semver } from '../../utils/Semver';
|
|
3
|
-
export function greaterThanEqualToSemverMatcherContext(
|
|
2
|
+
export function greaterThanEqualToSemverMatcherContext(ruleAttr) {
|
|
4
3
|
var ruleSemver = new Semver(ruleAttr);
|
|
5
4
|
return function greaterThanEqualToSemverMatcher(runtimeAttr) {
|
|
6
5
|
var runtimeSemver = new Semver(runtimeAttr);
|
|
7
6
|
var isGreaterThanEqual = runtimeSemver.compare(ruleSemver) >= 0;
|
|
8
|
-
log.debug(ENGINE_MATCHER_GREATER_SEMVER, [runtimeAttr, ruleAttr, isGreaterThanEqual]);
|
|
9
7
|
return isGreaterThanEqual;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _Set } from '../../utils/lang/sets';
|
|
2
2
|
import { Semver } from '../../utils/Semver';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (!ruleAttr || ruleAttr.size === 0)
|
|
3
|
+
export function inListSemverMatcherContext(ruleAttr) {
|
|
4
|
+
// @TODO ruleAttr validation should be done at the `parser` or `matchersTransform` level to reuse for all matchers
|
|
5
|
+
if (!ruleAttr || ruleAttr.length === 0)
|
|
7
6
|
throw new Error('whitelistMatcherData is required for IN_LIST_SEMVER matcher type');
|
|
8
|
-
var listOfSemvers = new _Set(
|
|
7
|
+
var listOfSemvers = new _Set(ruleAttr.map(function (version) { return new Semver(version).version; }));
|
|
9
8
|
return function inListSemverMatcher(runtimeAttr) {
|
|
10
9
|
var runtimeSemver = new Semver(runtimeAttr).version;
|
|
11
10
|
var isInList = listOfSemvers.has(runtimeSemver);
|
|
12
|
-
log.debug(ENGINE_MATCHER_IN_LIST_SEMVER, [runtimeAttr, setToArray(ruleAttr).join(','), isInList]);
|
|
13
11
|
return isInList;
|
|
14
12
|
};
|
|
15
13
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_LESS_SEMVER } from '../../logger/constants';
|
|
2
1
|
import { Semver } from '../../utils/Semver';
|
|
3
|
-
export function lessThanEqualToSemverMatcherContext(
|
|
2
|
+
export function lessThanEqualToSemverMatcherContext(ruleAttr) {
|
|
4
3
|
var ruleSemver = new Semver(ruleAttr);
|
|
5
4
|
return function lessThanEqualToSemverMatcher(runtimeAttr) {
|
|
6
5
|
var runtimeSemver = new Semver(runtimeAttr);
|
|
7
6
|
var isLessThanEqual = runtimeSemver.compare(ruleSemver) <= 0;
|
|
8
|
-
log.debug(ENGINE_MATCHER_LESS_SEMVER, [runtimeAttr, ruleAttr, isLessThanEqual]);
|
|
9
7
|
return isLessThanEqual;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
export function stringMatcherContext(log, ruleAttr) {
|
|
1
|
+
export function stringMatcherContext(ruleAttr) {
|
|
3
2
|
var regex = new RegExp(ruleAttr);
|
|
4
3
|
return function stringMatcher(runtimeAttr) {
|
|
5
4
|
var regexMatches = regex.test(runtimeAttr);
|
|
6
|
-
log.debug(ENGINE_MATCHER_STRING, [runtimeAttr, ruleAttr, regexMatches ? 'yes' : 'no']);
|
|
7
5
|
return regexMatches;
|
|
8
6
|
};
|
|
9
7
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { ENGINE_MATCHER_STARTS_WITH } from '../../logger/constants';
|
|
2
1
|
import { startsWith } from '../../utils/lang';
|
|
3
|
-
export function startsWithMatcherContext(
|
|
2
|
+
export function startsWithMatcherContext(ruleAttr) {
|
|
4
3
|
return function startsWithMatcher(runtimeAttr) {
|
|
5
4
|
var matches = ruleAttr.some(function (e) { return startsWith(runtimeAttr, e); });
|
|
6
|
-
log.debug(ENGINE_MATCHER_STARTS_WITH, [runtimeAttr, ruleAttr, matches]);
|
|
7
5
|
return matches;
|
|
8
6
|
};
|
|
9
7
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { _Set } from '../../utils/lang/sets';
|
|
2
|
+
export function whitelistMatcherContext(ruleAttr) {
|
|
3
|
+
var whitelistSet = new _Set(ruleAttr);
|
|
4
4
|
return function whitelistMatcher(runtimeAttr) {
|
|
5
|
-
var isInWhitelist =
|
|
6
|
-
log.debug(ENGINE_MATCHER_WHITELIST, [runtimeAttr, setToArray(ruleAttr).join(','), isInWhitelist]);
|
|
5
|
+
var isInWhitelist = whitelistSet.has(runtimeAttr);
|
|
7
6
|
return isInWhitelist;
|
|
8
7
|
};
|
|
9
8
|
}
|