@splitsoftware/splitio-commons 0.1.1-canary.9 → 0.1.1-rc.18
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/cjs/evaluator/matchers/matcherTypes.js +4 -4
- package/cjs/evaluator/matchersTransform/index.js +11 -11
- package/cjs/evaluator/value/sanitize.js +6 -6
- package/cjs/listeners/browser.js +1 -2
- package/cjs/listeners/node.js +0 -3
- package/cjs/logger/constants.js +3 -1
- package/cjs/logger/messages/error.js +3 -2
- package/cjs/logger/messages/info.js +2 -2
- package/cjs/logger/messages/warn.js +2 -1
- package/cjs/readiness/readinessManager.js +10 -7
- package/cjs/sdkFactory/index.js +1 -4
- package/cjs/services/splitApi.js +1 -1
- package/cjs/services/splitHttpClient.js +5 -4
- package/cjs/storages/AbstractSplitsCacheSync.js +1 -1
- package/cjs/storages/inLocalStorage/index.js +5 -2
- package/cjs/storages/inMemory/InMemoryStorage.js +2 -0
- package/cjs/storages/inMemory/InMemoryStorageCS.js +2 -0
- package/cjs/storages/inRedis/SplitsCacheInRedis.js +6 -2
- package/cjs/storages/inRedis/index.js +5 -2
- package/cjs/storages/pluggable/SplitsCachePluggable.js +6 -2
- package/cjs/storages/pluggable/inMemoryWrapper.js +6 -7
- package/cjs/storages/pluggable/index.js +5 -2
- package/cjs/storages/pluggable/wrapperAdapter.js +0 -1
- package/cjs/sync/offline/splitsParser/splitsParserFromFile.js +92 -89
- package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +45 -42
- package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +14 -4
- package/cjs/sync/polling/updaters/mySegmentsUpdater.js +30 -10
- package/cjs/sync/streaming/SSEClient/index.js +0 -11
- package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +7 -0
- package/cjs/sync/streaming/SSEHandler/NotificationParser.js +4 -1
- package/cjs/sync/streaming/SSEHandler/index.js +8 -9
- package/cjs/sync/streaming/SSEHandler/types.js +14 -0
- package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +5 -5
- package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +2 -1
- package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +5 -3
- package/cjs/sync/streaming/constants.js +3 -1
- package/cjs/sync/streaming/mySegmentsV2utils.js +75 -0
- package/cjs/sync/streaming/pushManager.js +141 -40
- package/cjs/sync/submitters/metricsSyncTask.js +1 -1
- package/cjs/sync/submitters/submitterSyncTask.js +2 -2
- package/cjs/sync/syncManagerFromFile.js +15 -0
- package/cjs/sync/syncManagerFromObject.js +14 -0
- package/cjs/sync/syncManagerOffline.js +3 -3
- package/cjs/sync/syncManagerOnline.js +5 -3
- package/cjs/trackers/impressionObserver/ImpressionObserver.js +0 -2
- package/cjs/trackers/impressionObserver/buildKey.js +3 -9
- package/cjs/trackers/impressionObserver/impressionObserverCS.js +2 -2
- package/cjs/trackers/impressionObserver/impressionObserverSS.js +3 -3
- package/cjs/utils/constants/index.js +4 -1
- package/cjs/utils/decompress/index.js +427 -0
- package/cjs/utils/murmur3/{commons.js → common.js} +2 -6
- package/cjs/utils/murmur3/murmur3.js +11 -12
- package/cjs/utils/murmur3/murmur3_128.js +7 -142
- package/cjs/utils/murmur3/murmur3_128_x86.js +154 -0
- package/cjs/utils/murmur3/murmur3_64.js +36 -0
- package/cjs/utils/murmur3/utfx.js +100 -106
- package/cjs/utils/promise/wrapper.js +14 -11
- package/cjs/utils/settingsValidation/index.js +5 -2
- package/cjs/utils/settingsValidation/localhost/index.js +20 -0
- package/cjs/utils/settingsValidation/splitFilters.js +0 -1
- package/cjs/utils/settingsValidation/storage/storageCS.js +18 -8
- package/cjs/utils/settingsValidation/url.js +1 -1
- package/esm/evaluator/matchers/matcherTypes.js +2 -2
- package/esm/evaluator/matchersTransform/index.js +12 -12
- package/esm/evaluator/value/sanitize.js +7 -7
- package/esm/listeners/browser.js +1 -2
- package/esm/listeners/node.js +0 -3
- package/esm/logger/constants.js +2 -0
- package/esm/logger/messages/error.js +3 -2
- package/esm/logger/messages/info.js +2 -2
- package/esm/logger/messages/warn.js +2 -1
- package/esm/readiness/readinessManager.js +10 -7
- package/esm/sdkFactory/index.js +1 -4
- package/esm/services/splitApi.js +1 -1
- package/esm/services/splitHttpClient.js +5 -4
- package/esm/storages/AbstractSplitsCacheSync.js +1 -1
- package/esm/storages/inLocalStorage/index.js +5 -2
- package/esm/storages/inMemory/InMemoryStorage.js +2 -0
- package/esm/storages/inMemory/InMemoryStorageCS.js +2 -0
- package/esm/storages/inRedis/SplitsCacheInRedis.js +6 -2
- package/esm/storages/inRedis/index.js +5 -2
- package/esm/storages/pluggable/SplitsCachePluggable.js +6 -2
- package/esm/storages/pluggable/inMemoryWrapper.js +6 -7
- package/esm/storages/pluggable/index.js +5 -2
- package/esm/storages/pluggable/wrapperAdapter.js +0 -1
- package/esm/sync/offline/splitsParser/splitsParserFromFile.js +90 -88
- package/esm/sync/offline/splitsParser/splitsParserFromSettings.js +43 -41
- package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +15 -5
- package/esm/sync/polling/updaters/mySegmentsUpdater.js +30 -10
- package/esm/sync/streaming/SSEClient/index.js +0 -11
- package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +7 -0
- package/esm/sync/streaming/SSEHandler/NotificationParser.js +4 -1
- package/esm/sync/streaming/SSEHandler/index.js +9 -10
- package/esm/sync/streaming/SSEHandler/types.js +13 -1
- package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +5 -5
- package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +2 -1
- package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +5 -3
- package/esm/sync/streaming/constants.js +2 -0
- package/esm/sync/streaming/mySegmentsV2utils.js +69 -0
- package/esm/sync/streaming/pushManager.js +143 -42
- package/esm/sync/submitters/metricsSyncTask.js +1 -1
- package/esm/sync/submitters/submitterSyncTask.js +2 -2
- package/esm/sync/syncManagerFromFile.js +11 -0
- package/esm/sync/syncManagerFromObject.js +10 -0
- package/esm/sync/syncManagerOffline.js +3 -3
- package/esm/sync/syncManagerOnline.js +5 -3
- package/esm/trackers/impressionObserver/ImpressionObserver.js +0 -2
- package/esm/trackers/impressionObserver/buildKey.js +2 -9
- package/esm/trackers/impressionObserver/impressionObserverCS.js +2 -2
- package/esm/trackers/impressionObserver/impressionObserverSS.js +3 -3
- package/esm/utils/constants/index.js +3 -0
- package/esm/utils/decompress/index.js +424 -0
- package/esm/utils/murmur3/{commons.js → common.js} +1 -4
- package/esm/utils/murmur3/murmur3.js +1 -2
- package/esm/utils/murmur3/murmur3_128.js +7 -142
- package/esm/utils/murmur3/murmur3_128_x86.js +150 -0
- package/esm/utils/murmur3/murmur3_64.js +32 -0
- package/esm/utils/murmur3/utfx.js +96 -106
- package/esm/utils/promise/wrapper.js +14 -11
- package/esm/utils/settingsValidation/index.js +5 -2
- package/esm/utils/settingsValidation/localhost/index.js +16 -0
- package/esm/utils/settingsValidation/splitFilters.js +0 -1
- package/esm/utils/settingsValidation/storage/storageCS.js +16 -7
- package/esm/utils/settingsValidation/url.js +1 -1
- package/package.json +5 -5
- package/src/evaluator/matchers/matcherTypes.ts +2 -2
- package/src/evaluator/matchersTransform/index.ts +12 -12
- package/src/evaluator/value/sanitize.ts +7 -7
- package/src/listeners/browser.ts +1 -1
- package/src/listeners/node.ts +1 -2
- package/src/logger/constants.ts +2 -0
- package/src/logger/messages/error.ts +3 -2
- package/src/logger/messages/info.ts +2 -2
- package/src/logger/messages/warn.ts +3 -1
- package/src/readiness/readinessManager.ts +9 -7
- package/src/sdkFactory/index.ts +1 -3
- package/src/sdkFactory/types.ts +3 -3
- package/src/services/splitApi.ts +2 -3
- package/src/services/splitHttpClient.ts +6 -5
- package/src/services/types.ts +5 -5
- package/src/storages/AbstractSplitsCacheSync.ts +1 -1
- package/src/storages/inLocalStorage/index.ts +8 -4
- package/src/storages/inMemory/InMemoryStorage.ts +3 -0
- package/src/storages/inMemory/InMemoryStorageCS.ts +3 -0
- package/src/storages/inRedis/SplitsCacheInRedis.ts +3 -1
- package/src/storages/inRedis/index.ts +8 -4
- package/src/storages/pluggable/SplitsCachePluggable.ts +3 -1
- package/src/storages/pluggable/inMemoryWrapper.ts +6 -7
- package/src/storages/pluggable/index.ts +8 -4
- package/src/storages/pluggable/wrapperAdapter.ts +0 -1
- package/src/storages/types.ts +18 -15
- package/src/sync/offline/splitsParser/splitsParserFromFile.ts +110 -105
- package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +45 -41
- package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +15 -5
- package/src/sync/polling/types.ts +2 -1
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +28 -10
- package/src/sync/streaming/AuthClient/types.ts +3 -0
- package/src/sync/streaming/SSEClient/index.ts +1 -15
- package/src/sync/streaming/SSEClient/types.ts +0 -1
- package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +8 -0
- package/src/sync/streaming/SSEHandler/NotificationParser.ts +4 -2
- package/src/sync/streaming/SSEHandler/index.ts +11 -20
- package/src/sync/streaming/SSEHandler/types.ts +37 -3
- package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +7 -6
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +2 -1
- package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +4 -3
- package/src/sync/streaming/UpdateWorkers/types.ts +1 -1
- package/src/sync/streaming/constants.ts +2 -0
- package/src/sync/streaming/mySegmentsV2utils.ts +77 -0
- package/src/sync/streaming/pushManager.ts +139 -42
- package/src/sync/streaming/types.ts +14 -22
- package/src/sync/submitters/metricsSyncTask.ts +1 -1
- package/src/sync/submitters/submitterSyncTask.ts +2 -1
- package/src/sync/syncManagerFromFile.ts +13 -0
- package/src/sync/syncManagerFromObject.ts +12 -0
- package/src/sync/syncManagerOffline.ts +3 -3
- package/src/sync/syncManagerOnline.ts +6 -3
- package/src/trackers/impressionObserver/ImpressionObserver.ts +4 -6
- package/src/trackers/impressionObserver/buildKey.ts +2 -16
- package/src/trackers/impressionObserver/impressionObserverCS.ts +2 -2
- package/src/trackers/impressionObserver/impressionObserverSS.ts +3 -3
- package/src/types.ts +16 -2
- package/src/utils/constants/index.ts +6 -1
- package/src/utils/decompress/index.ts +429 -0
- package/src/utils/murmur3/{commons.ts → common.ts} +1 -5
- package/src/utils/murmur3/murmur3.ts +5 -5
- package/src/utils/murmur3/murmur3_128.ts +7 -180
- package/src/utils/murmur3/murmur3_128_x86.ts +188 -0
- package/src/utils/murmur3/murmur3_64.ts +36 -0
- package/src/utils/murmur3/utfx.ts +92 -110
- package/src/utils/promise/wrapper.ts +12 -9
- package/src/utils/settingsValidation/index.ts +8 -4
- package/src/utils/settingsValidation/localhost/index.ts +19 -0
- package/src/utils/settingsValidation/splitFilters.ts +0 -1
- package/src/utils/settingsValidation/storage/storageCS.ts +21 -8
- package/src/utils/settingsValidation/types.ts +2 -11
- package/src/utils/settingsValidation/url.ts +1 -1
- package/types/evaluator/matchers/matcherTypes.d.ts +2 -2
- package/types/listeners/browser.d.ts +1 -0
- package/types/listeners/node.d.ts +0 -1
- package/types/logger/constants.d.ts +2 -0
- package/types/sdkFactory/types.d.ts +3 -3
- package/types/services/types.d.ts +1 -0
- package/types/storages/inLocalStorage/index.d.ts +2 -2
- package/types/storages/inMemory/InMemoryStorage.d.ts +3 -0
- package/types/storages/inMemory/InMemoryStorageCS.d.ts +3 -0
- package/types/storages/inRedis/index.d.ts +2 -2
- package/types/storages/pluggable/index.d.ts +2 -2
- package/types/storages/types.d.ts +15 -15
- package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +2 -7
- package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +1 -5
- package/types/sync/polling/types.d.ts +2 -1
- package/types/sync/streaming/AuthClient/indexV1.d.ts +12 -0
- package/types/sync/streaming/AuthClient/indexV2.d.ts +8 -0
- package/types/sync/streaming/AuthClient/types.d.ts +2 -0
- package/types/sync/streaming/SSEClient/index.d.ts +1 -9
- package/types/sync/streaming/SSEClient/types.d.ts +0 -1
- package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +3 -2
- package/types/sync/streaming/SSEHandler/types.d.ts +30 -2
- package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +4 -3
- package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +2 -1
- package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +3 -2
- package/types/sync/streaming/UpdateWorkers/types.d.ts +1 -1
- package/types/sync/streaming/constants.d.ts +3 -1
- package/types/sync/streaming/mySegmentsV2utils.d.ts +27 -0
- package/types/sync/streaming/pushManagerNoUsers.d.ts +13 -0
- package/types/sync/streaming/types.d.ts +9 -5
- package/types/sync/submitters/submitterSyncTask.d.ts +1 -1
- package/types/sync/syncManagerFromFile.d.ts +2 -0
- package/types/sync/syncManagerFromObject.d.ts +2 -0
- package/types/sync/syncManagerOffline.d.ts +1 -1
- package/types/trackers/impressionObserver/ImpressionObserver.d.ts +2 -2
- package/types/trackers/impressionObserver/buildKey.d.ts +1 -1
- package/types/trackers/impressionObserver/impressionObserverCS.d.ts +2 -2
- package/types/trackers/impressionObserver/impressionObserverSS.d.ts +2 -2
- package/types/types.d.ts +16 -2
- package/types/utils/constants/index.d.ts +5 -1
- package/types/utils/decompress/index.d.ts +16 -0
- package/types/utils/murmur3/common.d.ts +12 -0
- package/types/utils/murmur3/murmur3.d.ts +2 -2
- package/types/utils/murmur3/murmur3_128.d.ts +5 -0
- package/types/utils/murmur3/murmur3_128_x86.d.ts +7 -0
- package/types/utils/murmur3/murmur3_64.d.ts +10 -0
- package/types/utils/murmur3/utfx.d.ts +24 -6
- package/types/utils/settingsValidation/index.d.ts +3 -2
- package/types/utils/settingsValidation/localhost/index.d.ts +9 -0
- package/types/utils/settingsValidation/storage/storageCS.d.ts +7 -1
- package/types/utils/settingsValidation/types.d.ts +2 -10
- package/cjs/sync/streaming/pushManagerCS.js +0 -179
- package/cjs/sync/streaming/pushManagerSS.js +0 -128
- package/esm/sync/streaming/pushManagerCS.js +0 -175
- package/esm/sync/streaming/pushManagerSS.js +0 -124
- package/src/sync/streaming/pushManagerCS.ts +0 -238
- package/src/sync/streaming/pushManagerSS.ts +0 -177
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.matcherTypesMapper = exports.matcherDataTypes = exports.matcherTypes = void 0;
|
|
4
4
|
exports.matcherTypes = {
|
|
5
5
|
UNDEFINED: 0,
|
|
6
6
|
ALL_KEYS: 1,
|
|
@@ -21,7 +21,7 @@ exports.matcherTypes = {
|
|
|
21
21
|
EQUAL_TO_BOOLEAN: 16,
|
|
22
22
|
MATCHES_STRING: 17
|
|
23
23
|
};
|
|
24
|
-
exports.
|
|
24
|
+
exports.matcherDataTypes = {
|
|
25
25
|
BOOLEAN: 'BOOLEAN',
|
|
26
26
|
STRING: 'STRING',
|
|
27
27
|
NUMBER: 'NUMBER',
|
|
@@ -29,11 +29,11 @@ exports.dataTypes = {
|
|
|
29
29
|
DATETIME: 'DATETIME',
|
|
30
30
|
NOT_SPECIFIED: 'NOT_SPECIFIED'
|
|
31
31
|
};
|
|
32
|
-
function
|
|
32
|
+
function matcherTypesMapper(matcherType) {
|
|
33
33
|
var type = exports.matcherTypes[matcherType];
|
|
34
34
|
if (type)
|
|
35
35
|
return type;
|
|
36
36
|
else
|
|
37
37
|
return exports.matcherTypes.UNDEFINED;
|
|
38
38
|
}
|
|
39
|
-
exports.
|
|
39
|
+
exports.matcherTypesMapper = matcherTypesMapper;
|
|
@@ -15,9 +15,9 @@ function matchersTransform(matchers) {
|
|
|
15
15
|
var parsedMatchers = matchers.map(function (matcher) {
|
|
16
16
|
var matcherType = matcher.matcherType /* string */, negate = matcher.negate /* boolean */, keySelector = matcher.keySelector /* keySelectorObject */, segmentObject = matcher.userDefinedSegmentMatcherData /* segmentObject */, whitelistObject = matcher.whitelistMatcherData /* whiteListObject, provided by 'WHITELIST', set and string matchers */, unaryNumericObject = matcher.unaryNumericMatcherData /* unaryNumericObject */, betweenObject = matcher.betweenMatcherData /* betweenObject */, dependencyObject = matcher.dependencyMatcherData /* dependencyObject */, booleanMatcherData = matcher.booleanMatcherData, stringMatcherData = matcher.stringMatcherData;
|
|
17
17
|
var attribute = keySelector && keySelector.attribute;
|
|
18
|
-
var type = matcherTypes_1.
|
|
18
|
+
var type = matcherTypes_1.matcherTypesMapper(matcherType);
|
|
19
19
|
// As default input data type we use string (even for ALL_KEYS)
|
|
20
|
-
var dataType = matcherTypes_1.
|
|
20
|
+
var dataType = matcherTypes_1.matcherDataTypes.STRING;
|
|
21
21
|
var value = undefined;
|
|
22
22
|
if (type === matcherTypes_1.matcherTypes.IN_SEGMENT) {
|
|
23
23
|
value = segment_1.default(segmentObject);
|
|
@@ -27,28 +27,28 @@ function matchersTransform(matchers) {
|
|
|
27
27
|
}
|
|
28
28
|
else if (type === matcherTypes_1.matcherTypes.EQUAL_TO) {
|
|
29
29
|
value = unaryNumeric_1.default(unaryNumericObject);
|
|
30
|
-
dataType = matcherTypes_1.
|
|
30
|
+
dataType = matcherTypes_1.matcherDataTypes.NUMBER;
|
|
31
31
|
if (unaryNumericObject.dataType === 'DATETIME') {
|
|
32
32
|
value = convertions_1.zeroSinceHH(value);
|
|
33
|
-
dataType = matcherTypes_1.
|
|
33
|
+
dataType = matcherTypes_1.matcherDataTypes.DATETIME;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
else if (type === matcherTypes_1.matcherTypes.GREATER_THAN_OR_EQUAL_TO ||
|
|
37
37
|
type === matcherTypes_1.matcherTypes.LESS_THAN_OR_EQUAL_TO) {
|
|
38
38
|
value = unaryNumeric_1.default(unaryNumericObject);
|
|
39
|
-
dataType = matcherTypes_1.
|
|
39
|
+
dataType = matcherTypes_1.matcherDataTypes.NUMBER;
|
|
40
40
|
if (unaryNumericObject.dataType === 'DATETIME') {
|
|
41
41
|
value = convertions_1.zeroSinceSS(value);
|
|
42
|
-
dataType = matcherTypes_1.
|
|
42
|
+
dataType = matcherTypes_1.matcherDataTypes.DATETIME;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
else if (type === matcherTypes_1.matcherTypes.BETWEEN) {
|
|
46
46
|
value = betweenObject;
|
|
47
|
-
dataType = matcherTypes_1.
|
|
47
|
+
dataType = matcherTypes_1.matcherDataTypes.NUMBER;
|
|
48
48
|
if (value.dataType === 'DATETIME') {
|
|
49
49
|
value.start = convertions_1.zeroSinceSS(value.start);
|
|
50
50
|
value.end = convertions_1.zeroSinceSS(value.end);
|
|
51
|
-
dataType = matcherTypes_1.
|
|
51
|
+
dataType = matcherTypes_1.matcherDataTypes.DATETIME;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
else if (type === matcherTypes_1.matcherTypes.EQUAL_TO_SET ||
|
|
@@ -56,7 +56,7 @@ function matchersTransform(matchers) {
|
|
|
56
56
|
type === matcherTypes_1.matcherTypes.CONTAINS_ALL_OF_SET ||
|
|
57
57
|
type === matcherTypes_1.matcherTypes.PART_OF_SET) {
|
|
58
58
|
value = set_1.default(whitelistObject);
|
|
59
|
-
dataType = matcherTypes_1.
|
|
59
|
+
dataType = matcherTypes_1.matcherDataTypes.SET;
|
|
60
60
|
}
|
|
61
61
|
else if (type === matcherTypes_1.matcherTypes.STARTS_WITH ||
|
|
62
62
|
type === matcherTypes_1.matcherTypes.ENDS_WITH ||
|
|
@@ -65,10 +65,10 @@ function matchersTransform(matchers) {
|
|
|
65
65
|
}
|
|
66
66
|
else if (type === matcherTypes_1.matcherTypes.IN_SPLIT_TREATMENT) {
|
|
67
67
|
value = dependencyObject;
|
|
68
|
-
dataType = matcherTypes_1.
|
|
68
|
+
dataType = matcherTypes_1.matcherDataTypes.NOT_SPECIFIED;
|
|
69
69
|
}
|
|
70
70
|
else if (type === matcherTypes_1.matcherTypes.EQUAL_TO_BOOLEAN) {
|
|
71
|
-
dataType = matcherTypes_1.
|
|
71
|
+
dataType = matcherTypes_1.matcherDataTypes.BOOLEAN;
|
|
72
72
|
value = booleanMatcherData;
|
|
73
73
|
}
|
|
74
74
|
else if (type === matcherTypes_1.matcherTypes.MATCHES_STRING) {
|
|
@@ -63,20 +63,20 @@ function sanitize(log, matcherTypeID, value, dataType, attributes) {
|
|
|
63
63
|
var processor = getProcessingFunction(matcherTypeID, dataType);
|
|
64
64
|
var sanitizedValue;
|
|
65
65
|
switch (dataType) {
|
|
66
|
-
case matcherTypes_1.
|
|
67
|
-
case matcherTypes_1.
|
|
66
|
+
case matcherTypes_1.matcherDataTypes.NUMBER:
|
|
67
|
+
case matcherTypes_1.matcherDataTypes.DATETIME:
|
|
68
68
|
sanitizedValue = sanitizeNumber(value);
|
|
69
69
|
break;
|
|
70
|
-
case matcherTypes_1.
|
|
70
|
+
case matcherTypes_1.matcherDataTypes.STRING:
|
|
71
71
|
sanitizedValue = sanitizeString(value);
|
|
72
72
|
break;
|
|
73
|
-
case matcherTypes_1.
|
|
73
|
+
case matcherTypes_1.matcherDataTypes.SET:
|
|
74
74
|
sanitizedValue = sanitizeArray(value);
|
|
75
75
|
break;
|
|
76
|
-
case matcherTypes_1.
|
|
76
|
+
case matcherTypes_1.matcherDataTypes.BOOLEAN:
|
|
77
77
|
sanitizedValue = sanitizeBoolean(value);
|
|
78
78
|
break;
|
|
79
|
-
case matcherTypes_1.
|
|
79
|
+
case matcherTypes_1.matcherDataTypes.NOT_SPECIFIED:
|
|
80
80
|
sanitizedValue = value;
|
|
81
81
|
break;
|
|
82
82
|
default:
|
package/cjs/listeners/browser.js
CHANGED
|
@@ -27,8 +27,6 @@ var BrowserSignalListener = /** @class */ (function () {
|
|
|
27
27
|
* We add a handler on unload events. The handler flushes remaining impressions and events to the backend.
|
|
28
28
|
*/
|
|
29
29
|
BrowserSignalListener.prototype.start = function () {
|
|
30
|
-
var _a;
|
|
31
|
-
(_a = this.syncManager) === null || _a === void 0 ? void 0 : _a.start();
|
|
32
30
|
if (typeof window !== 'undefined' && window.addEventListener) {
|
|
33
31
|
this.settings.log.debug(constants_2.CLEANUP_REGISTERING, [EVENT_NAME]);
|
|
34
32
|
window.addEventListener(UNLOAD_DOM_EVENT, this.flushData);
|
|
@@ -37,6 +35,7 @@ var BrowserSignalListener = /** @class */ (function () {
|
|
|
37
35
|
/**
|
|
38
36
|
* stop method.
|
|
39
37
|
* Called when client is destroyed.
|
|
38
|
+
* We need to remove the handler for unload events, since it can break if called when Split context was destroyed.
|
|
40
39
|
*/
|
|
41
40
|
BrowserSignalListener.prototype.stop = function () {
|
|
42
41
|
if (typeof window !== 'undefined' && window.removeEventListener) {
|
package/cjs/listeners/node.js
CHANGED
|
@@ -15,7 +15,6 @@ var EVENT_NAME = 'for SIGTERM signal.';
|
|
|
15
15
|
var NodeSignalListener = /** @class */ (function () {
|
|
16
16
|
function NodeSignalListener(syncManager, // private handler: () => MaybeThenable<void>,
|
|
17
17
|
settings) {
|
|
18
|
-
this.syncManager = syncManager;
|
|
19
18
|
// @TODO review handler logic when implementing Node SDK
|
|
20
19
|
this.handler = function () {
|
|
21
20
|
if (syncManager) {
|
|
@@ -27,8 +26,6 @@ var NodeSignalListener = /** @class */ (function () {
|
|
|
27
26
|
this._sigtermHandler = this._sigtermHandler.bind(this);
|
|
28
27
|
}
|
|
29
28
|
NodeSignalListener.prototype.start = function () {
|
|
30
|
-
var _a;
|
|
31
|
-
(_a = this.syncManager) === null || _a === void 0 ? void 0 : _a.start();
|
|
32
29
|
this.settings.log.debug(constants_1.CLEANUP_REGISTERING, [EVENT_NAME]);
|
|
33
30
|
// eslint-disable-next-line no-undef
|
|
34
31
|
process.on(SIGTERM, this._sigtermHandler);
|
package/cjs/logger/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LOG_PREFIX_CLEANUP = 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.ERROR_HTTP = exports.ERROR_INVALID_IMPRESSIONS_MODE = 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_API_KEY = exports.WARN_STORAGE_INVALID = 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 = exports.ENGINE_VALUE_INVALID = 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_EVENTS_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.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_WHITELIST = exports.ENGINE_MATCHER_STARTS_WITH = exports.ENGINE_MATCHER_STRING_INVALID = exports.ENGINE_MATCHER_STRING = exports.ENGINE_MATCHER_SEGMENT = exports.ENGINE_MATCHER_PART_OF = exports.ENGINE_MATCHER_LESS = exports.ENGINE_MATCHER_GREATER = exports.ENGINE_MATCHER_ENDS_WITH = exports.ENGINE_MATCHER_EQUAL_TO_SET = exports.ENGINE_MATCHER_EQUAL = exports.ENGINE_MATCHER_DEPENDENCY_PRE = exports.ENGINE_MATCHER_DEPENDENCY = exports.ENGINE_MATCHER_CONTAINS_STRING = exports.ENGINE_MATCHER_CONTAINS_ANY = exports.ENGINE_MATCHER_CONTAINS_ALL = exports.ENGINE_MATCHER_BOOLEAN = exports.ENGINE_MATCHER_BETWEEN = exports.ENGINE_MATCHER_ALL = exports.ENGINE_BUCKET = exports.ENGINE_COMBINER_IFELSEIF_NO_TREATMENT = exports.ENGINE_COMBINER_IFELSEIF = exports.ENGINE_COMBINER_AND = void 0;
|
|
3
|
+
exports.LOG_PREFIX_CLEANUP = 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.ERROR_LOCALHOST_MODULE_REQUIRED = exports.ERROR_HTTP = exports.ERROR_INVALID_IMPRESSIONS_MODE = 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.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2 = exports.WARN_API_KEY = exports.WARN_STORAGE_INVALID = 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 = exports.ENGINE_VALUE_INVALID = 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_EVENTS_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.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_WHITELIST = exports.ENGINE_MATCHER_STARTS_WITH = exports.ENGINE_MATCHER_STRING_INVALID = exports.ENGINE_MATCHER_STRING = exports.ENGINE_MATCHER_SEGMENT = exports.ENGINE_MATCHER_PART_OF = exports.ENGINE_MATCHER_LESS = exports.ENGINE_MATCHER_GREATER = exports.ENGINE_MATCHER_ENDS_WITH = exports.ENGINE_MATCHER_EQUAL_TO_SET = exports.ENGINE_MATCHER_EQUAL = exports.ENGINE_MATCHER_DEPENDENCY_PRE = exports.ENGINE_MATCHER_DEPENDENCY = exports.ENGINE_MATCHER_CONTAINS_STRING = exports.ENGINE_MATCHER_CONTAINS_ANY = exports.ENGINE_MATCHER_CONTAINS_ALL = exports.ENGINE_MATCHER_BOOLEAN = exports.ENGINE_MATCHER_BETWEEN = exports.ENGINE_MATCHER_ALL = exports.ENGINE_BUCKET = exports.ENGINE_COMBINER_IFELSEIF_NO_TREATMENT = exports.ENGINE_COMBINER_IFELSEIF = exports.ENGINE_COMBINER_AND = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Message codes used to trim string log messages from commons and client-side API modules,
|
|
6
6
|
* in order to reduce the minimal SDK size for Browser and eventually other client-side environments.
|
|
@@ -94,6 +94,7 @@ exports.WARN_SPLITS_FILTER_INVALID = 220;
|
|
|
94
94
|
exports.WARN_SPLITS_FILTER_EMPTY = 221;
|
|
95
95
|
exports.WARN_STORAGE_INVALID = 222;
|
|
96
96
|
exports.WARN_API_KEY = 223;
|
|
97
|
+
exports.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2 = 224;
|
|
97
98
|
exports.ERROR_ENGINE_COMBINER_IFELSEIF = 300;
|
|
98
99
|
exports.ERROR_LOGLEVEL_INVALID = 301;
|
|
99
100
|
exports.ERROR_CLIENT_LISTENER = 302;
|
|
@@ -117,6 +118,7 @@ exports.ERROR_EMPTY = 319;
|
|
|
117
118
|
exports.ERROR_EMPTY_ARRAY = 320;
|
|
118
119
|
exports.ERROR_INVALID_IMPRESSIONS_MODE = 321;
|
|
119
120
|
exports.ERROR_HTTP = 322;
|
|
121
|
+
exports.ERROR_LOCALHOST_MODULE_REQUIRED = 323;
|
|
120
122
|
// Log prefixes (a.k.a. tags or categories)
|
|
121
123
|
exports.LOG_PREFIX_SETTINGS = 'settings';
|
|
122
124
|
exports.LOG_PREFIX_INSTANTIATION = 'Factory instantiation';
|
|
@@ -14,8 +14,8 @@ exports.codesError = [
|
|
|
14
14
|
[c.ERROR_EVENTS_TRACKER, c.LOG_PREFIX_EVENTS_TRACKER + 'Failed to queue %s'],
|
|
15
15
|
// synchronizer
|
|
16
16
|
[c.ERROR_SYNC_OFFLINE_LOADING, c.LOG_PREFIX_SYNC_OFFLINE + 'There was an issue loading the mock Splits data, no changes will be applied to the current cache. %s'],
|
|
17
|
-
[c.ERROR_STREAMING_SSE, c.LOG_PREFIX_SYNC_STREAMING + '
|
|
18
|
-
[c.ERROR_STREAMING_AUTH, c.LOG_PREFIX_SYNC_STREAMING + 'Failed to authenticate for streaming. Error:
|
|
17
|
+
[c.ERROR_STREAMING_SSE, c.LOG_PREFIX_SYNC_STREAMING + 'Failed to connect or error on streaming connection, with error message: %s'],
|
|
18
|
+
[c.ERROR_STREAMING_AUTH, c.LOG_PREFIX_SYNC_STREAMING + 'Failed to authenticate for streaming. Error: %s.'],
|
|
19
19
|
[c.ERROR_HTTP, ' Response status is not OK. Status: %s. URL: %s. Message: %s'],
|
|
20
20
|
// client status
|
|
21
21
|
[c.ERROR_CLIENT_LISTENER, 'A listener was added for %s on the SDK, which has already fired and won\'t be emitted again. The callback won\'t be executed.'],
|
|
@@ -33,4 +33,5 @@ exports.codesError = [
|
|
|
33
33
|
[c.ERROR_EMPTY_ARRAY, '%s: %s must be a non-empty array.'],
|
|
34
34
|
// initialization / settings validation
|
|
35
35
|
[c.ERROR_INVALID_IMPRESSIONS_MODE, c.LOG_PREFIX_SETTINGS + ': you passed an invalid "impressionsMode". It should be one of the following values: %s. Defaulting to "%s" mode.'],
|
|
36
|
+
[c.ERROR_LOCALHOST_MODULE_REQUIRED, c.LOG_PREFIX_SETTINGS + ': you didn\'t pass a valid "sync.localhostMode". It should be defined for using the SDK in localhost mode']
|
|
36
37
|
];
|
|
@@ -23,9 +23,9 @@ exports.codesInfo = warn_1.codesWarn.concat([
|
|
|
23
23
|
[c.SYNC_SPLITS_FETCH_RETRY, c.LOG_PREFIX_SYNC_SPLITS + 'Retrying download of splits #%s. Reason: %s'],
|
|
24
24
|
[c.SUBMITTERS_PUSH_FULL_EVENTS_QUEUE, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Flushing full events queue and reseting timer.'],
|
|
25
25
|
[c.SUBMITTERS_PUSH, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Pushing %s %s.'],
|
|
26
|
-
[c.STREAMING_REFRESH_TOKEN, c.LOG_PREFIX_SYNC_STREAMING + 'Refreshing streaming token in %s seconds.'],
|
|
26
|
+
[c.STREAMING_REFRESH_TOKEN, c.LOG_PREFIX_SYNC_STREAMING + 'Refreshing streaming token in %s seconds, and connecting streaming in %s seconds.'],
|
|
27
27
|
[c.STREAMING_RECONNECT, c.LOG_PREFIX_SYNC_STREAMING + 'Attempting to reconnect in %s seconds.'],
|
|
28
|
-
[c.STREAMING_CONNECTING, c.LOG_PREFIX_SYNC_STREAMING + '
|
|
28
|
+
[c.STREAMING_CONNECTING, c.LOG_PREFIX_SYNC_STREAMING + '%sConnecting to streaming.'],
|
|
29
29
|
[c.STREAMING_DISABLED, c.LOG_PREFIX_SYNC_STREAMING + 'Streaming is disabled for given Api key. Switching to polling mode.'],
|
|
30
30
|
[c.STREAMING_DISCONNECTING, c.LOG_PREFIX_SYNC_STREAMING + 'Disconnecting from streaming.'],
|
|
31
31
|
[c.SYNC_START_POLLING, c.LOG_PREFIX_SYNC_MANAGER + 'Streaming not available. Starting polling.'],
|
|
@@ -33,5 +33,6 @@ exports.codesWarn = error_1.codesError.concat([
|
|
|
33
33
|
[c.WARN_SPLITS_FILTER_INVALID, c.LOG_PREFIX_SETTINGS + ': split filter at position %s is invalid. It must be an object with a valid filter type ("byName" or "byPrefix") and a list of "values".'],
|
|
34
34
|
[c.WARN_SPLITS_FILTER_EMPTY, c.LOG_PREFIX_SETTINGS + ': splitFilters configuration must be a non-empty array of filter objects.'],
|
|
35
35
|
[c.WARN_STORAGE_INVALID, c.LOG_PREFIX_SETTINGS + ': The provided storage is invalid. Fallbacking into default MEMORY storage'],
|
|
36
|
-
[c.WARN_API_KEY, c.LOG_PREFIX_SETTINGS + ': You already have %s. We recommend keeping only one instance of the factory at all times (Singleton pattern) and reusing it throughout your application']
|
|
36
|
+
[c.WARN_API_KEY, c.LOG_PREFIX_SETTINGS + ': You already have %s. We recommend keeping only one instance of the factory at all times (Singleton pattern) and reusing it throughout your application'],
|
|
37
|
+
[c.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, c.LOG_PREFIX_SYNC_STREAMING + 'Fetching MySegments due to an error processing %s notification: %s'],
|
|
37
38
|
]);
|
|
@@ -35,7 +35,7 @@ function readinessManagerFactory(EventEmitter, readyTimeout, splits) {
|
|
|
35
35
|
// emit SDK_READY_FROM_CACHE
|
|
36
36
|
var isReadyFromCache = false;
|
|
37
37
|
if (splits.splitsCacheLoaded)
|
|
38
|
-
|
|
38
|
+
isReadyFromCache = true; // ready from cache, but doesn't emit SDK_READY_FROM_CACHE
|
|
39
39
|
else
|
|
40
40
|
splits.once(constants_1.SDK_SPLITS_CACHE_LOADED, checkIsReadyFromCache);
|
|
41
41
|
// emit SDK_READY_TIMED_OUT
|
|
@@ -53,13 +53,16 @@ function readinessManagerFactory(EventEmitter, readyTimeout, splits) {
|
|
|
53
53
|
segments.on(constants_1.SDK_SEGMENTS_ARRIVED, checkIsReadyOrUpdate);
|
|
54
54
|
var isDestroyed = false;
|
|
55
55
|
function checkIsReadyFromCache() {
|
|
56
|
-
|
|
57
|
-
if
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
isReadyFromCache = true;
|
|
56
|
+
isReadyFromCache = true;
|
|
57
|
+
// Don't emit SDK_READY_FROM_CACHE if SDK_READY has been emitted
|
|
58
|
+
if (!isReady) {
|
|
59
|
+
try {
|
|
61
60
|
gate.emit(constants_1.SDK_READY_FROM_CACHE);
|
|
62
|
-
}
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
// throws user callback exceptions in next tick
|
|
64
|
+
setTimeout(function () { throw e; }, 0);
|
|
65
|
+
}
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
68
|
function checkIsReadyOrUpdate(diff) {
|
package/cjs/sdkFactory/index.js
CHANGED
|
@@ -62,10 +62,7 @@ function sdkFactory(params) {
|
|
|
62
62
|
// Sdk client and manager
|
|
63
63
|
var clientMethod = sdkClientMethodFactory({ eventTracker: eventTracker, impressionsTracker: impressionsTracker, sdkReadinessManager: sdkReadinessManager, settings: settings, storage: storage, syncManager: syncManager, signalListener: signalListener });
|
|
64
64
|
var managerInstance = sdkManagerFactory(log, storage.splits, sdkReadinessManager);
|
|
65
|
-
|
|
66
|
-
// It is required for RN to consider the app state when the SDK is instantiated (foreground/background).
|
|
67
|
-
if (syncManager && !signalListener)
|
|
68
|
-
syncManager.start();
|
|
65
|
+
syncManager && syncManager.start();
|
|
69
66
|
signalListener && signalListener.start();
|
|
70
67
|
log.info(constants_1.NEW_FACTORY);
|
|
71
68
|
return {
|
package/cjs/services/splitApi.js
CHANGED
|
@@ -29,7 +29,7 @@ function splitApiFactory(settings, platform) {
|
|
|
29
29
|
return splitHttpClient(url).then(function () { return true; }).catch(function () { return false; });
|
|
30
30
|
},
|
|
31
31
|
fetchAuth: function (userMatchingKeys) {
|
|
32
|
-
var url = urls.auth + "/auth";
|
|
32
|
+
var url = urls.auth + "/v2/auth";
|
|
33
33
|
if (userMatchingKeys) { // accounting the possibility that `userMatchingKeys` is undefined (server-side API)
|
|
34
34
|
var queryParams = userMatchingKeys.map(userKeyToQueryParam).join('&');
|
|
35
35
|
if (queryParams) // accounting the possibility that `userKeys` and thus `queryParams` are empty
|
|
@@ -41,8 +41,8 @@ function splitHttpClientFactory(settings, getFetch, getOptions) {
|
|
|
41
41
|
return fetch ? fetch(url, request)
|
|
42
42
|
// https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Checking_that_the_fetch_was_successful
|
|
43
43
|
.then(function (response) {
|
|
44
|
-
if (!response.ok) {
|
|
45
|
-
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
return response.text().then(function (message) { return Promise.reject({ response: response, message: message }); });
|
|
46
46
|
}
|
|
47
47
|
return response;
|
|
48
48
|
})
|
|
@@ -54,13 +54,14 @@ function splitHttpClientFactory(settings, getFetch, getOptions) {
|
|
|
54
54
|
case 404:
|
|
55
55
|
msg = 'Invalid API key or resource not found.';
|
|
56
56
|
break;
|
|
57
|
+
// Don't use resp.statusText since reason phrase is removed in HTTP/2
|
|
57
58
|
default:
|
|
58
|
-
msg =
|
|
59
|
+
msg = error.message;
|
|
59
60
|
break;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
else { // Something else, either an error making the request or a Network error.
|
|
63
|
-
msg = error.message;
|
|
64
|
+
msg = error.message || 'Network Error';
|
|
64
65
|
}
|
|
65
66
|
if (!resp || resp.status !== 403) { // 403's log we'll be handled somewhere else.
|
|
66
67
|
log[logErrorsAsInfo ? 'info' : 'error'](constants_1.ERROR_HTTP, [resp ? resp.status : 'NO_STATUS', url, msg]);
|
|
@@ -33,7 +33,7 @@ var AbstractSplitsCacheSync = /** @class */ (function () {
|
|
|
33
33
|
* It is used as condition to emit SDK_SPLITS_CACHE_LOADED, and then SDK_READY_FROM_CACHE.
|
|
34
34
|
*/
|
|
35
35
|
AbstractSplitsCacheSync.prototype.checkCache = function () {
|
|
36
|
-
return
|
|
36
|
+
return false;
|
|
37
37
|
};
|
|
38
38
|
/**
|
|
39
39
|
* Kill `name` split and set `defaultTreatment` and `changeNumber`.
|
|
@@ -15,13 +15,14 @@ var SplitsCacheInMemory_1 = tslib_1.__importDefault(require("../inMemory/SplitsC
|
|
|
15
15
|
var browser_1 = require("../../utils/constants/browser");
|
|
16
16
|
var InMemoryStorageCS_1 = require("../inMemory/InMemoryStorageCS");
|
|
17
17
|
var constants_1 = require("./constants");
|
|
18
|
+
var constants_2 = require("../../utils/constants");
|
|
18
19
|
/**
|
|
19
20
|
* InLocal storage factory for standalone client-side SplitFactory
|
|
20
21
|
*/
|
|
21
22
|
function InLocalStorage(options) {
|
|
22
23
|
if (options === void 0) { options = {}; }
|
|
23
24
|
var prefix = KeyBuilder_1.validatePrefix(options.prefix);
|
|
24
|
-
|
|
25
|
+
function InLocalStorageCSFactory(params) {
|
|
25
26
|
// Fallback to InMemoryStorage if LocalStorage API is not available
|
|
26
27
|
if (!isLocalStorageAvailable_1.isLocalStorageAvailable()) {
|
|
27
28
|
params.log.warn(constants_1.LOG_PREFIX + 'LocalStorage API is unavailable. Fallbacking into default MEMORY storage');
|
|
@@ -59,6 +60,8 @@ function InLocalStorage(options) {
|
|
|
59
60
|
};
|
|
60
61
|
},
|
|
61
62
|
};
|
|
62
|
-
}
|
|
63
|
+
}
|
|
64
|
+
InLocalStorageCSFactory.type = constants_2.STORAGE_LOCALSTORAGE;
|
|
65
|
+
return InLocalStorageCSFactory;
|
|
63
66
|
}
|
|
64
67
|
exports.InLocalStorage = InLocalStorage;
|
|
@@ -7,6 +7,7 @@ var SegmentsCacheInMemory_1 = tslib_1.__importDefault(require("./SegmentsCacheIn
|
|
|
7
7
|
var ImpressionsCacheInMemory_1 = tslib_1.__importDefault(require("./ImpressionsCacheInMemory"));
|
|
8
8
|
var EventsCacheInMemory_1 = tslib_1.__importDefault(require("./EventsCacheInMemory"));
|
|
9
9
|
var ImpressionCountsCacheInMemory_1 = tslib_1.__importDefault(require("./ImpressionCountsCacheInMemory"));
|
|
10
|
+
var constants_1 = require("../../utils/constants");
|
|
10
11
|
/**
|
|
11
12
|
* InMemory storage factory for standalone server-side SplitFactory
|
|
12
13
|
*
|
|
@@ -33,3 +34,4 @@ function InMemoryStorageFactory(params) {
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
exports.InMemoryStorageFactory = InMemoryStorageFactory;
|
|
37
|
+
InMemoryStorageFactory.type = constants_1.STORAGE_MEMORY;
|
|
@@ -7,6 +7,7 @@ var MySegmentsCacheInMemory_1 = tslib_1.__importDefault(require("./MySegmentsCac
|
|
|
7
7
|
var ImpressionsCacheInMemory_1 = tslib_1.__importDefault(require("./ImpressionsCacheInMemory"));
|
|
8
8
|
var EventsCacheInMemory_1 = tslib_1.__importDefault(require("./EventsCacheInMemory"));
|
|
9
9
|
var ImpressionCountsCacheInMemory_1 = tslib_1.__importDefault(require("./ImpressionCountsCacheInMemory"));
|
|
10
|
+
var constants_1 = require("../../utils/constants");
|
|
10
11
|
/**
|
|
11
12
|
* InMemory storage factory for standalone client-side SplitFactory
|
|
12
13
|
*
|
|
@@ -45,3 +46,4 @@ function InMemoryStorageCSFactory(params) {
|
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
48
|
exports.InMemoryStorageCSFactory = InMemoryStorageCSFactory;
|
|
49
|
+
InMemoryStorageCSFactory.type = constants_1.STORAGE_MEMORY;
|
|
@@ -36,9 +36,13 @@ var SplitsCacheInRedis = /** @class */ (function (_super) {
|
|
|
36
36
|
return _this;
|
|
37
37
|
}
|
|
38
38
|
SplitsCacheInRedis.prototype._decrementCounts = function (split) {
|
|
39
|
+
var _this = this;
|
|
39
40
|
if (split.trafficTypeName) {
|
|
40
|
-
var
|
|
41
|
-
return this.redis.decr(
|
|
41
|
+
var ttKey_1 = this.keys.buildTrafficTypeKey(split.trafficTypeName);
|
|
42
|
+
return this.redis.decr(ttKey_1).then(function (count) {
|
|
43
|
+
if (count === 0)
|
|
44
|
+
return _this.redis.del(ttKey_1);
|
|
45
|
+
});
|
|
42
46
|
}
|
|
43
47
|
};
|
|
44
48
|
SplitsCacheInRedis.prototype._incrementCounts = function (split) {
|
|
@@ -11,6 +11,7 @@ var ImpressionsCacheInRedis_1 = tslib_1.__importDefault(require("./ImpressionsCa
|
|
|
11
11
|
var EventsCacheInRedis_1 = tslib_1.__importDefault(require("./EventsCacheInRedis"));
|
|
12
12
|
var LatenciesCacheInRedis_1 = tslib_1.__importDefault(require("./LatenciesCacheInRedis"));
|
|
13
13
|
var CountsCacheInRedis_1 = tslib_1.__importDefault(require("./CountsCacheInRedis"));
|
|
14
|
+
var constants_1 = require("../../utils/constants");
|
|
14
15
|
/**
|
|
15
16
|
* InRedis storage factory for consumer server-side SplitFactory, that uses `Ioredis` Redis client for Node.
|
|
16
17
|
* @see {@link https://www.npmjs.com/package/ioredis}
|
|
@@ -18,7 +19,7 @@ var CountsCacheInRedis_1 = tslib_1.__importDefault(require("./CountsCacheInRedis
|
|
|
18
19
|
function InRedisStorage(options) {
|
|
19
20
|
if (options === void 0) { options = {}; }
|
|
20
21
|
var prefix = KeyBuilder_1.validatePrefix(options.prefix);
|
|
21
|
-
|
|
22
|
+
function InRedisStorageFactory(_a) {
|
|
22
23
|
var log = _a.log, metadata = _a.metadata, onReadyCb = _a.onReadyCb;
|
|
23
24
|
var keys = new KeyBuilderSS_1.default(prefix, metadata);
|
|
24
25
|
var redisClient = new RedisAdapter_1.default(log, options.options || {});
|
|
@@ -41,6 +42,8 @@ function InRedisStorage(options) {
|
|
|
41
42
|
// @TODO check that caches works as expected when redisClient is disconnected
|
|
42
43
|
}
|
|
43
44
|
};
|
|
44
|
-
}
|
|
45
|
+
}
|
|
46
|
+
InRedisStorageFactory.type = constants_1.STORAGE_REDIS;
|
|
47
|
+
return InRedisStorageFactory;
|
|
45
48
|
}
|
|
46
49
|
exports.InRedisStorage = InRedisStorage;
|
|
@@ -24,9 +24,13 @@ var SplitsCachePluggable = /** @class */ (function (_super) {
|
|
|
24
24
|
return _this;
|
|
25
25
|
}
|
|
26
26
|
SplitsCachePluggable.prototype._decrementCounts = function (split) {
|
|
27
|
+
var _this = this;
|
|
27
28
|
if (split.trafficTypeName) {
|
|
28
|
-
var
|
|
29
|
-
return this.wrapper.decr(
|
|
29
|
+
var ttKey_1 = this.keys.buildTrafficTypeKey(split.trafficTypeName);
|
|
30
|
+
return this.wrapper.decr(ttKey_1).then(function (count) {
|
|
31
|
+
if (count === 0)
|
|
32
|
+
return _this.wrapper.del(ttKey_1);
|
|
33
|
+
});
|
|
30
34
|
}
|
|
31
35
|
};
|
|
32
36
|
SplitsCachePluggable.prototype._incrementCounts = function (split) {
|
|
@@ -34,32 +34,31 @@ function inMemoryWrapperFactory() {
|
|
|
34
34
|
getKeysByPrefix: function (prefix) {
|
|
35
35
|
return Promise.resolve(Object.keys(_cache).filter(function (key) { return lang_1.startsWith(key, prefix); }));
|
|
36
36
|
},
|
|
37
|
-
getByPrefix: function (prefix) {
|
|
38
|
-
return Promise.resolve(Object.keys(_cache).filter(function (key) { return lang_1.startsWith(key, prefix); }).map(function (key) { return _cache[key]; }));
|
|
39
|
-
},
|
|
40
37
|
incr: function (key) {
|
|
41
38
|
if (key in _cache) {
|
|
42
39
|
var count = lang_1.toNumber(_cache[key]) + 1;
|
|
43
40
|
if (isNaN(count))
|
|
44
|
-
return Promise.
|
|
41
|
+
return Promise.reject('Given key is not a number');
|
|
45
42
|
_cache[key] = count + '';
|
|
43
|
+
return Promise.resolve(count);
|
|
46
44
|
}
|
|
47
45
|
else {
|
|
48
46
|
_cache[key] = '1';
|
|
47
|
+
return Promise.resolve(1);
|
|
49
48
|
}
|
|
50
|
-
return Promise.resolve(true);
|
|
51
49
|
},
|
|
52
50
|
decr: function (key) {
|
|
53
51
|
if (key in _cache) {
|
|
54
52
|
var count = lang_1.toNumber(_cache[key]) - 1;
|
|
55
53
|
if (isNaN(count))
|
|
56
|
-
return Promise.
|
|
54
|
+
return Promise.reject('Given key is not a number');
|
|
57
55
|
_cache[key] = count + '';
|
|
56
|
+
return Promise.resolve(count);
|
|
58
57
|
}
|
|
59
58
|
else {
|
|
60
59
|
_cache[key] = '-1';
|
|
60
|
+
return Promise.resolve(-1);
|
|
61
61
|
}
|
|
62
|
-
return Promise.resolve(true);
|
|
63
62
|
},
|
|
64
63
|
getMany: function (keys) {
|
|
65
64
|
return Promise.resolve(keys.map(function (key) { return _cache[key] ? _cache[key] : null; }));
|
|
@@ -10,6 +10,7 @@ var EventsCachePluggable_1 = require("./EventsCachePluggable");
|
|
|
10
10
|
var wrapperAdapter_1 = require("./wrapperAdapter");
|
|
11
11
|
var lang_1 = require("../../utils/lang");
|
|
12
12
|
var KeyBuilder_1 = require("../KeyBuilder");
|
|
13
|
+
var constants_1 = require("../../utils/constants");
|
|
13
14
|
var NO_VALID_WRAPPER = 'Expecting custom storage `wrapper` in options, but no valid wrapper instance was provided.';
|
|
14
15
|
var NO_VALID_WRAPPER_INTERFACE = 'The provided wrapper instance doesn’t follow the expected interface. Check our docs.';
|
|
15
16
|
/**
|
|
@@ -32,7 +33,7 @@ function validatePluggableStorageOptions(options) {
|
|
|
32
33
|
function PluggableStorage(options) {
|
|
33
34
|
validatePluggableStorageOptions(options);
|
|
34
35
|
var prefix = KeyBuilder_1.validatePrefix(options.prefix);
|
|
35
|
-
|
|
36
|
+
function PluggableStorageFactory(_a) {
|
|
36
37
|
var log = _a.log, metadata = _a.metadata, onReadyCb = _a.onReadyCb;
|
|
37
38
|
var keys = new KeyBuilderSS_1.default(prefix, metadata);
|
|
38
39
|
var wrapper = wrapperAdapter_1.wrapperAdapter(log, options.wrapper);
|
|
@@ -55,6 +56,8 @@ function PluggableStorage(options) {
|
|
|
55
56
|
return wrapper.close();
|
|
56
57
|
}
|
|
57
58
|
};
|
|
58
|
-
}
|
|
59
|
+
}
|
|
60
|
+
PluggableStorageFactory.type = constants_1.STORAGE_CUSTOM;
|
|
61
|
+
return PluggableStorageFactory;
|
|
59
62
|
}
|
|
60
63
|
exports.PluggableStorage = PluggableStorage;
|