@splitsoftware/splitio-commons 1.2.1-rc.0 → 1.2.1-rc.4
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/Engine.js +6 -6
- package/cjs/evaluator/combiners/and.js +1 -1
- package/cjs/evaluator/combiners/ifelseif.js +2 -2
- package/cjs/evaluator/condition/engineUtils.js +2 -2
- package/cjs/evaluator/condition/index.js +4 -4
- package/cjs/evaluator/index.js +5 -5
- package/cjs/evaluator/matchers/cont_all.js +1 -1
- package/cjs/evaluator/matchers/cont_any.js +1 -1
- package/cjs/evaluator/matchers/cont_str.js +1 -1
- package/cjs/evaluator/matchers/dependency.js +1 -1
- package/cjs/evaluator/matchers/eq_set.js +1 -1
- package/cjs/evaluator/matchers/ew.js +3 -3
- package/cjs/evaluator/matchers/part_of.js +1 -1
- package/cjs/evaluator/matchers/segment.js +1 -1
- package/cjs/evaluator/matchers/sw.js +1 -1
- package/cjs/evaluator/matchers/whitelist.js +1 -1
- package/cjs/evaluator/matchersTransform/index.js +12 -12
- package/cjs/evaluator/parser/index.js +6 -6
- package/cjs/evaluator/treatments/index.js +1 -1
- package/cjs/evaluator/value/index.js +1 -1
- package/cjs/evaluator/value/sanitize.js +4 -4
- package/cjs/integrations/browser.js +3 -3
- package/cjs/integrations/ga/GaToSplit.js +14 -14
- package/cjs/integrations/ga/GoogleAnalyticsToSplit.js +5 -3
- package/cjs/integrations/ga/SplitToGa.js +1 -1
- package/cjs/integrations/ga/SplitToGoogleAnalytics.js +4 -2
- package/cjs/listeners/browser.js +1 -1
- package/cjs/listeners/node.js +1 -1
- package/cjs/logger/constants.js +4 -2
- package/cjs/logger/index.js +2 -2
- package/cjs/logger/messages/debug.js +1 -1
- package/cjs/logger/messages/error.js +2 -2
- package/cjs/logger/messages/info.js +3 -3
- package/cjs/logger/messages/warn.js +1 -1
- package/cjs/logger/sdkLogger.js +1 -1
- package/cjs/readiness/readinessManager.js +2 -2
- package/cjs/readiness/sdkReadinessManager.js +4 -4
- package/cjs/sdkClient/client.js +9 -9
- package/cjs/sdkClient/clientAttributesDecoration.js +4 -4
- package/cjs/sdkClient/clientCS.js +2 -2
- package/cjs/sdkClient/clientInputValidation.js +14 -14
- package/cjs/sdkClient/sdkClient.js +3 -3
- package/cjs/sdkClient/sdkClientMethod.js +1 -1
- package/cjs/sdkClient/sdkClientMethodCS.js +6 -6
- package/cjs/sdkClient/sdkClientMethodCSWithTT.js +8 -8
- package/cjs/sdkFactory/index.js +9 -8
- package/cjs/sdkManager/index.js +11 -11
- package/cjs/services/splitApi.js +3 -2
- package/cjs/services/splitHttpClient.js +2 -2
- package/cjs/storages/KeyBuilder.js +2 -2
- package/cjs/storages/KeyBuilderCS.js +2 -2
- package/cjs/storages/KeyBuilderSS.js +1 -1
- package/cjs/storages/findLatencyIndex.js +1 -1
- package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -1
- package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +12 -12
- package/cjs/storages/inLocalStorage/index.js +4 -4
- package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +1 -1
- package/cjs/storages/inMemory/ImpressionsCacheInMemory.js +15 -1
- package/cjs/storages/inMemory/InMemoryStorage.js +1 -1
- package/cjs/storages/inMemory/InMemoryStorageCS.js +1 -1
- package/cjs/storages/inMemory/LatenciesCacheInMemory.js +1 -1
- package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +1 -1
- package/cjs/storages/inMemory/SegmentsCacheInMemory.js +2 -2
- package/cjs/storages/inMemory/SplitsCacheInMemory.js +5 -5
- package/cjs/storages/inRedis/LatenciesCacheInRedis.js +1 -1
- package/cjs/storages/inRedis/RedisAdapter.js +16 -10
- package/cjs/storages/inRedis/SegmentsCacheInRedis.js +1 -1
- package/cjs/storages/inRedis/SplitsCacheInRedis.js +3 -3
- package/cjs/storages/inRedis/index.js +1 -1
- package/cjs/storages/pluggable/SegmentsCachePluggable.js +1 -1
- package/cjs/storages/pluggable/SplitsCachePluggable.js +3 -3
- package/cjs/storages/pluggable/inMemoryWrapper.js +4 -4
- package/cjs/storages/pluggable/index.js +6 -6
- package/cjs/sync/offline/LocalhostFromFile.js +1 -1
- package/cjs/sync/offline/LocalhostFromObject.js +1 -1
- package/cjs/sync/offline/splitsParser/parseCondition.js +1 -1
- package/cjs/sync/offline/splitsParser/splitsParserFromFile.js +13 -13
- package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +3 -3
- package/cjs/sync/offline/syncManagerOffline.js +1 -1
- package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +2 -2
- package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +2 -2
- package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +1 -1
- package/cjs/sync/polling/pollingManagerCS.js +8 -7
- package/cjs/sync/polling/pollingManagerSS.js +5 -4
- package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +1 -1
- package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +1 -1
- package/cjs/sync/polling/syncTasks/splitsSyncTask.js +1 -1
- package/cjs/sync/polling/updaters/mySegmentsUpdater.js +3 -3
- package/cjs/sync/polling/updaters/segmentChangesUpdater.js +2 -2
- package/cjs/sync/polling/updaters/splitChangesUpdater.js +2 -2
- package/cjs/sync/streaming/AuthClient/index.js +3 -3
- package/cjs/sync/streaming/SSEHandler/NotificationParser.js +1 -1
- package/cjs/sync/streaming/SSEHandler/index.js +3 -3
- package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +1 -1
- package/cjs/sync/streaming/mySegmentsV2utils.js +1 -1
- package/cjs/sync/streaming/pushManager.js +27 -19
- package/cjs/sync/submitters/eventsSyncTask.js +4 -3
- package/cjs/sync/submitters/impressionCountsSyncTask.js +1 -1
- package/cjs/sync/submitters/impressionsSyncTask.js +11 -3
- package/cjs/sync/submitters/metricsSyncTask.js +3 -3
- package/cjs/sync/submitters/submitterManager.js +6 -5
- package/cjs/sync/submitters/submitterSyncTask.js +1 -1
- package/cjs/sync/syncManagerOnline.js +8 -13
- package/cjs/trackers/eventTracker.js +3 -3
- package/cjs/trackers/impressionObserver/impressionObserverCS.js +1 -1
- package/cjs/trackers/impressionObserver/impressionObserverSS.js +1 -1
- package/cjs/trackers/impressionsTracker.js +3 -3
- package/cjs/utils/MinEvents.js +2 -1
- package/cjs/utils/inputValidation/apiKey.js +1 -1
- package/cjs/utils/inputValidation/attribute.js +4 -4
- package/cjs/utils/inputValidation/attributes.js +2 -2
- package/cjs/utils/inputValidation/event.js +1 -1
- package/cjs/utils/inputValidation/eventProperties.js +7 -5
- package/cjs/utils/inputValidation/eventValue.js +1 -1
- package/cjs/utils/inputValidation/key.js +6 -5
- package/cjs/utils/inputValidation/preloadedData.js +8 -8
- package/cjs/utils/inputValidation/split.js +1 -1
- package/cjs/utils/inputValidation/splits.js +2 -2
- package/cjs/utils/inputValidation/trafficType.js +1 -1
- package/cjs/utils/inputValidation/trafficTypeExistance.js +1 -1
- package/cjs/utils/jwt/index.js +1 -1
- package/cjs/utils/key/index.js +3 -3
- package/cjs/utils/lang/index.js +2 -14
- package/cjs/utils/murmur3/common.js +1 -1
- package/cjs/utils/murmur3/murmur3.js +10 -10
- package/cjs/utils/murmur3/murmur3_128.js +1 -1
- package/cjs/utils/murmur3/murmur3_128_x86.js +37 -37
- package/cjs/utils/murmur3/murmur3_64.js +1 -1
- package/cjs/utils/settingsValidation/index.js +7 -10
- package/cjs/utils/settingsValidation/integrations/configurable.js +1 -1
- package/cjs/utils/settingsValidation/integrations/pluggable.js +1 -1
- package/cjs/utils/settingsValidation/localhost/builtin.js +2 -2
- package/cjs/utils/settingsValidation/logger/builtinLogger.js +3 -3
- package/cjs/utils/settingsValidation/logger/commons.js +1 -1
- package/cjs/utils/settingsValidation/logger/pluggableLogger.js +1 -1
- package/cjs/utils/settingsValidation/runtime.js +11 -0
- package/cjs/utils/settingsValidation/splitFilters.js +1 -1
- package/cjs/utils/settingsValidation/storage/storageCS.js +1 -1
- package/cjs/utils/timeTracker/index.js +3 -3
- package/esm/evaluator/matchers/ew.js +4 -4
- package/esm/integrations/ga/GoogleAnalyticsToSplit.js +4 -2
- package/esm/integrations/ga/SplitToGoogleAnalytics.js +4 -2
- package/esm/logger/constants.js +1 -1
- package/esm/logger/messages/error.js +1 -1
- package/esm/logger/messages/info.js +2 -2
- package/esm/sdkFactory/index.js +1 -0
- package/esm/services/splitApi.js +2 -1
- package/esm/storages/inLocalStorage/index.js +1 -1
- package/esm/storages/inMemory/ImpressionsCacheInMemory.js +15 -1
- package/esm/storages/inMemory/InMemoryStorage.js +1 -1
- package/esm/storages/inMemory/InMemoryStorageCS.js +1 -1
- package/esm/storages/inRedis/RedisAdapter.js +7 -1
- package/esm/storages/pluggable/index.js +2 -2
- package/esm/sync/offline/splitsParser/splitsParserFromFile.js +1 -1
- package/esm/sync/polling/fetchers/mySegmentsFetcher.js +2 -2
- package/esm/sync/polling/fetchers/segmentChangesFetcher.js +2 -2
- package/esm/sync/polling/pollingManagerCS.js +2 -1
- package/esm/sync/polling/pollingManagerSS.js +2 -1
- package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +1 -1
- package/esm/sync/polling/updaters/mySegmentsUpdater.js +2 -2
- package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +1 -1
- package/esm/sync/streaming/pushManager.js +13 -5
- package/esm/sync/submitters/eventsSyncTask.js +5 -4
- package/esm/sync/submitters/impressionsSyncTask.js +9 -1
- package/esm/sync/submitters/submitterManager.js +2 -1
- package/esm/sync/syncManagerOnline.js +8 -13
- package/esm/utils/inputValidation/eventProperties.js +4 -2
- package/esm/utils/inputValidation/key.js +2 -1
- package/esm/utils/lang/index.js +2 -13
- package/esm/utils/settingsValidation/index.js +3 -6
- package/esm/utils/settingsValidation/runtime.js +7 -0
- package/package.json +6 -6
- package/src/evaluator/matchers/ew.ts +4 -4
- package/src/integrations/ga/GoogleAnalyticsToSplit.ts +7 -4
- package/src/integrations/ga/SplitToGoogleAnalytics.ts +7 -4
- package/src/integrations/types.ts +5 -0
- package/src/logger/constants.ts +1 -1
- package/src/logger/messages/error.ts +1 -1
- package/src/logger/messages/info.ts +2 -2
- package/src/logger/types.ts +4 -0
- package/src/sdkFactory/index.ts +1 -0
- package/src/storages/inLocalStorage/index.ts +1 -1
- package/src/storages/inMemory/ImpressionsCacheInMemory.ts +22 -1
- package/src/storages/inMemory/InMemoryStorage.ts +1 -1
- package/src/storages/inMemory/InMemoryStorageCS.ts +1 -1
- package/src/storages/pluggable/index.ts +2 -2
- package/src/storages/types.ts +6 -2
- package/src/sync/offline/splitsParser/splitsParserFromFile.ts +1 -1
- package/src/sync/polling/fetchers/mySegmentsFetcher.ts +2 -1
- package/src/sync/polling/fetchers/types.ts +1 -0
- package/src/sync/polling/pollingManagerCS.ts +3 -6
- package/src/sync/polling/pollingManagerSS.ts +3 -8
- package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +2 -1
- package/src/sync/polling/types.ts +0 -12
- package/src/sync/polling/updaters/mySegmentsUpdater.ts +2 -1
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
- package/src/sync/streaming/pushManager.ts +19 -16
- package/src/sync/streaming/types.ts +5 -25
- package/src/sync/submitters/eventsSyncTask.ts +6 -4
- package/src/sync/submitters/impressionsSyncTask.ts +12 -1
- package/src/sync/submitters/submitterManager.ts +4 -8
- package/src/sync/syncManagerOnline.ts +14 -24
- package/src/types.ts +15 -0
- package/src/utils/inputValidation/eventProperties.ts +4 -2
- package/src/utils/lang/index.ts +0 -14
- package/src/utils/settingsValidation/index.ts +3 -6
- package/src/utils/settingsValidation/runtime.ts +9 -0
- package/src/utils/settingsValidation/types.ts +6 -6
- package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +2 -2
- package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +2 -3
- package/types/integrations/types.d.ts +4 -0
- package/types/logger/constants.d.ts +1 -1
- package/types/logger/types.d.ts +4 -0
- package/types/sdkClient/clientAttributesDecoration.d.ts +1 -1
- package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +9 -0
- package/types/storages/inMemory/index.d.ts +10 -0
- package/types/storages/parseSegments.d.ts +6 -0
- package/types/storages/types.d.ts +3 -1
- package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +1 -1
- package/types/sync/polling/fetchers/types.d.ts +1 -1
- package/types/sync/polling/pollingManagerCS.d.ts +2 -5
- package/types/sync/polling/pollingManagerSS.d.ts +2 -5
- package/types/sync/polling/types.d.ts +0 -11
- package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +1 -1
- package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -1
- package/types/sync/streaming/pushManager.d.ts +3 -7
- package/types/sync/streaming/pushManagerCS.d.ts +1 -12
- package/types/sync/streaming/pushManagerSS.d.ts +1 -11
- package/types/sync/streaming/types.d.ts +3 -23
- package/types/sync/submitters/submitterManager.d.ts +2 -4
- package/types/sync/syncManagerOnline.d.ts +3 -3
- package/types/types.d.ts +15 -0
- package/types/utils/lang/index.d.ts +0 -4
- package/types/utils/settingsValidation/runtime/browser.d.ts +2 -0
- package/types/utils/settingsValidation/runtime/node.d.ts +2 -0
- package/types/utils/settingsValidation/runtime.d.ts +2 -0
- package/types/utils/settingsValidation/types.d.ts +6 -6
|
@@ -39,34 +39,34 @@ function hash128x86(key, seed) {
|
|
|
39
39
|
k2 = ((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24);
|
|
40
40
|
k3 = ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24);
|
|
41
41
|
k4 = ((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24);
|
|
42
|
-
k1 = common_1.x86Multiply(k1, c1);
|
|
43
|
-
k1 = common_1.x86Rotl(k1, 15);
|
|
44
|
-
k1 = common_1.x86Multiply(k1, c2);
|
|
42
|
+
k1 = (0, common_1.x86Multiply)(k1, c1);
|
|
43
|
+
k1 = (0, common_1.x86Rotl)(k1, 15);
|
|
44
|
+
k1 = (0, common_1.x86Multiply)(k1, c2);
|
|
45
45
|
h1 ^= k1;
|
|
46
|
-
h1 = common_1.x86Rotl(h1, 19);
|
|
46
|
+
h1 = (0, common_1.x86Rotl)(h1, 19);
|
|
47
47
|
h1 += h2;
|
|
48
|
-
h1 = common_1.x86Multiply(h1, 5) + 0x561ccd1b;
|
|
49
|
-
k2 = common_1.x86Multiply(k2, c2);
|
|
50
|
-
k2 = common_1.x86Rotl(k2, 16);
|
|
51
|
-
k2 = common_1.x86Multiply(k2, c3);
|
|
48
|
+
h1 = (0, common_1.x86Multiply)(h1, 5) + 0x561ccd1b;
|
|
49
|
+
k2 = (0, common_1.x86Multiply)(k2, c2);
|
|
50
|
+
k2 = (0, common_1.x86Rotl)(k2, 16);
|
|
51
|
+
k2 = (0, common_1.x86Multiply)(k2, c3);
|
|
52
52
|
h2 ^= k2;
|
|
53
|
-
h2 = common_1.x86Rotl(h2, 17);
|
|
53
|
+
h2 = (0, common_1.x86Rotl)(h2, 17);
|
|
54
54
|
h2 += h3;
|
|
55
|
-
h2 = common_1.x86Multiply(h2, 5) + 0x0bcaa747;
|
|
56
|
-
k3 = common_1.x86Multiply(k3, c3);
|
|
57
|
-
k3 = common_1.x86Rotl(k3, 17);
|
|
58
|
-
k3 = common_1.x86Multiply(k3, c4);
|
|
55
|
+
h2 = (0, common_1.x86Multiply)(h2, 5) + 0x0bcaa747;
|
|
56
|
+
k3 = (0, common_1.x86Multiply)(k3, c3);
|
|
57
|
+
k3 = (0, common_1.x86Rotl)(k3, 17);
|
|
58
|
+
k3 = (0, common_1.x86Multiply)(k3, c4);
|
|
59
59
|
h3 ^= k3;
|
|
60
|
-
h3 = common_1.x86Rotl(h3, 15);
|
|
60
|
+
h3 = (0, common_1.x86Rotl)(h3, 15);
|
|
61
61
|
h3 += h4;
|
|
62
|
-
h3 = common_1.x86Multiply(h3, 5) + 0x96cd1c35;
|
|
63
|
-
k4 = common_1.x86Multiply(k4, c4);
|
|
64
|
-
k4 = common_1.x86Rotl(k4, 18);
|
|
65
|
-
k4 = common_1.x86Multiply(k4, c1);
|
|
62
|
+
h3 = (0, common_1.x86Multiply)(h3, 5) + 0x96cd1c35;
|
|
63
|
+
k4 = (0, common_1.x86Multiply)(k4, c4);
|
|
64
|
+
k4 = (0, common_1.x86Rotl)(k4, 18);
|
|
65
|
+
k4 = (0, common_1.x86Multiply)(k4, c1);
|
|
66
66
|
h4 ^= k4;
|
|
67
|
-
h4 = common_1.x86Rotl(h4, 13);
|
|
67
|
+
h4 = (0, common_1.x86Rotl)(h4, 13);
|
|
68
68
|
h4 += h1;
|
|
69
|
-
h4 = common_1.x86Multiply(h4, 5) + 0x32ac3b17;
|
|
69
|
+
h4 = (0, common_1.x86Multiply)(h4, 5) + 0x32ac3b17;
|
|
70
70
|
}
|
|
71
71
|
k1 = 0;
|
|
72
72
|
k2 = 0;
|
|
@@ -79,9 +79,9 @@ function hash128x86(key, seed) {
|
|
|
79
79
|
k4 ^= key.charCodeAt(i + 13) << 8;
|
|
80
80
|
case 13:
|
|
81
81
|
k4 ^= key.charCodeAt(i + 12);
|
|
82
|
-
k4 = common_1.x86Multiply(k4, c4);
|
|
83
|
-
k4 = common_1.x86Rotl(k4, 18);
|
|
84
|
-
k4 = common_1.x86Multiply(k4, c1);
|
|
82
|
+
k4 = (0, common_1.x86Multiply)(k4, c4);
|
|
83
|
+
k4 = (0, common_1.x86Rotl)(k4, 18);
|
|
84
|
+
k4 = (0, common_1.x86Multiply)(k4, c1);
|
|
85
85
|
h4 ^= k4;
|
|
86
86
|
case 12:
|
|
87
87
|
k3 ^= key.charCodeAt(i + 11) << 24;
|
|
@@ -91,9 +91,9 @@ function hash128x86(key, seed) {
|
|
|
91
91
|
k3 ^= key.charCodeAt(i + 9) << 8;
|
|
92
92
|
case 9:
|
|
93
93
|
k3 ^= key.charCodeAt(i + 8);
|
|
94
|
-
k3 = common_1.x86Multiply(k3, c3);
|
|
95
|
-
k3 = common_1.x86Rotl(k3, 17);
|
|
96
|
-
k3 = common_1.x86Multiply(k3, c4);
|
|
94
|
+
k3 = (0, common_1.x86Multiply)(k3, c3);
|
|
95
|
+
k3 = (0, common_1.x86Rotl)(k3, 17);
|
|
96
|
+
k3 = (0, common_1.x86Multiply)(k3, c4);
|
|
97
97
|
h3 ^= k3;
|
|
98
98
|
case 8:
|
|
99
99
|
k2 ^= key.charCodeAt(i + 7) << 24;
|
|
@@ -103,9 +103,9 @@ function hash128x86(key, seed) {
|
|
|
103
103
|
k2 ^= key.charCodeAt(i + 5) << 8;
|
|
104
104
|
case 5:
|
|
105
105
|
k2 ^= key.charCodeAt(i + 4);
|
|
106
|
-
k2 = common_1.x86Multiply(k2, c2);
|
|
107
|
-
k2 = common_1.x86Rotl(k2, 16);
|
|
108
|
-
k2 = common_1.x86Multiply(k2, c3);
|
|
106
|
+
k2 = (0, common_1.x86Multiply)(k2, c2);
|
|
107
|
+
k2 = (0, common_1.x86Rotl)(k2, 16);
|
|
108
|
+
k2 = (0, common_1.x86Multiply)(k2, c3);
|
|
109
109
|
h2 ^= k2;
|
|
110
110
|
case 4:
|
|
111
111
|
k1 ^= key.charCodeAt(i + 3) << 24;
|
|
@@ -115,9 +115,9 @@ function hash128x86(key, seed) {
|
|
|
115
115
|
k1 ^= key.charCodeAt(i + 1) << 8;
|
|
116
116
|
case 1:
|
|
117
117
|
k1 ^= key.charCodeAt(i);
|
|
118
|
-
k1 = common_1.x86Multiply(k1, c1);
|
|
119
|
-
k1 = common_1.x86Rotl(k1, 15);
|
|
120
|
-
k1 = common_1.x86Multiply(k1, c2);
|
|
118
|
+
k1 = (0, common_1.x86Multiply)(k1, c1);
|
|
119
|
+
k1 = (0, common_1.x86Rotl)(k1, 15);
|
|
120
|
+
k1 = (0, common_1.x86Multiply)(k1, c2);
|
|
121
121
|
h1 ^= k1;
|
|
122
122
|
}
|
|
123
123
|
h1 ^= key.length;
|
|
@@ -130,10 +130,10 @@ function hash128x86(key, seed) {
|
|
|
130
130
|
h2 += h1;
|
|
131
131
|
h3 += h1;
|
|
132
132
|
h4 += h1;
|
|
133
|
-
h1 = common_1.x86Fmix(h1);
|
|
134
|
-
h2 = common_1.x86Fmix(h2);
|
|
135
|
-
h3 = common_1.x86Fmix(h3);
|
|
136
|
-
h4 = common_1.x86Fmix(h4);
|
|
133
|
+
h1 = (0, common_1.x86Fmix)(h1);
|
|
134
|
+
h2 = (0, common_1.x86Fmix)(h2);
|
|
135
|
+
h3 = (0, common_1.x86Fmix)(h3);
|
|
136
|
+
h4 = (0, common_1.x86Fmix)(h4);
|
|
137
137
|
h1 += h2;
|
|
138
138
|
h1 += h3;
|
|
139
139
|
h1 += h4;
|
|
@@ -149,6 +149,6 @@ function hash128x86(key, seed) {
|
|
|
149
149
|
* @param {string} str
|
|
150
150
|
*/
|
|
151
151
|
function hash128(str, seed) {
|
|
152
|
-
return hash128x86(common_1.UTF16ToUTF8(str), seed >>> 0);
|
|
152
|
+
return hash128x86((0, common_1.UTF16ToUTF8)(str), seed >>> 0);
|
|
153
153
|
}
|
|
154
154
|
exports.hash128 = hash128;
|
|
@@ -27,7 +27,7 @@ function hex2dec(s) {
|
|
|
27
27
|
* @param {string} str
|
|
28
28
|
*/
|
|
29
29
|
function hash64(str) {
|
|
30
|
-
var hex = murmur3_128_1.hash128(str).slice(0, 16);
|
|
30
|
+
var hex = (0, murmur3_128_1.hash128)(str).slice(0, 16);
|
|
31
31
|
return {
|
|
32
32
|
hex: hex,
|
|
33
33
|
dec: hex2dec(hex) // KeyList notification
|
|
@@ -36,6 +36,8 @@ var base = {
|
|
|
36
36
|
eventsPushRate: 60,
|
|
37
37
|
// how many events will be queued before flushing
|
|
38
38
|
eventsQueueSize: 500,
|
|
39
|
+
// how many impressions will be queued before flushing
|
|
40
|
+
impressionsQueueSize: 30000,
|
|
39
41
|
// backoff base seconds to wait before re attempting to connect to push notifications
|
|
40
42
|
pushRetryBackoffBase: 1,
|
|
41
43
|
},
|
|
@@ -67,10 +69,6 @@ var base = {
|
|
|
67
69
|
impressionsMode: constants_1.OPTIMIZED,
|
|
68
70
|
localhostMode: undefined
|
|
69
71
|
},
|
|
70
|
-
runtime: {
|
|
71
|
-
ip: false,
|
|
72
|
-
hostname: false
|
|
73
|
-
},
|
|
74
72
|
// Logger
|
|
75
73
|
log: undefined
|
|
76
74
|
};
|
|
@@ -87,7 +85,7 @@ function fromSecondsToMillis(n) {
|
|
|
87
85
|
function settingsValidation(config, validationParams) {
|
|
88
86
|
var defaults = validationParams.defaults, runtime = validationParams.runtime, storage = validationParams.storage, integrations = validationParams.integrations, logger = validationParams.logger, localhost = validationParams.localhost;
|
|
89
87
|
// creates a settings object merging base, defaults and config objects.
|
|
90
|
-
var withDefaults = lang_1.merge({}, base, defaults, config);
|
|
88
|
+
var withDefaults = (0, lang_1.merge)({}, base, defaults, config);
|
|
91
89
|
// ensure a valid logger.
|
|
92
90
|
// First thing to validate, since other validators might use the logger.
|
|
93
91
|
var log = logger(withDefaults); // @ts-ignore, modify readonly prop
|
|
@@ -106,7 +104,7 @@ function settingsValidation(config, validationParams) {
|
|
|
106
104
|
startup.eventsFirstPushWindow = fromSecondsToMillis(startup.eventsFirstPushWindow);
|
|
107
105
|
// ensure a valid SDK mode
|
|
108
106
|
// @ts-ignore, modify readonly prop
|
|
109
|
-
withDefaults.mode = mode_1.mode(withDefaults.core.authorizationKey, withDefaults.mode);
|
|
107
|
+
withDefaults.mode = (0, mode_1.mode)(withDefaults.core.authorizationKey, withDefaults.mode);
|
|
110
108
|
// ensure a valid Storage based on mode defined.
|
|
111
109
|
// @ts-ignore, modify readonly prop
|
|
112
110
|
if (storage)
|
|
@@ -117,8 +115,7 @@ function settingsValidation(config, validationParams) {
|
|
|
117
115
|
}
|
|
118
116
|
// Current ip/hostname information
|
|
119
117
|
// @ts-ignore, modify readonly prop
|
|
120
|
-
|
|
121
|
-
withDefaults.runtime = runtime(withDefaults);
|
|
118
|
+
withDefaults.runtime = runtime(withDefaults);
|
|
122
119
|
// ensure a valid list of integrations.
|
|
123
120
|
// `integrations` returns an array of valid integration items.
|
|
124
121
|
// @ts-ignore, modify readonly prop
|
|
@@ -134,11 +131,11 @@ function settingsValidation(config, validationParams) {
|
|
|
134
131
|
scheduler.pushRetryBackoffBase = fromSecondsToMillis(scheduler.pushRetryBackoffBase);
|
|
135
132
|
}
|
|
136
133
|
// validate the `splitFilters` settings and parse splits query
|
|
137
|
-
var splitFiltersValidation = splitFilters_1.validateSplitFilters(log, withDefaults.sync.splitFilters, withDefaults.mode);
|
|
134
|
+
var splitFiltersValidation = (0, splitFilters_1.validateSplitFilters)(log, withDefaults.sync.splitFilters, withDefaults.mode);
|
|
138
135
|
withDefaults.sync.splitFilters = splitFiltersValidation.validFilters;
|
|
139
136
|
withDefaults.sync.__splitFiltersValidation = splitFiltersValidation;
|
|
140
137
|
// ensure a valid impressionsMode
|
|
141
|
-
withDefaults.sync.impressionsMode = impressionsMode_1.validImpressionsMode(log, withDefaults.sync.impressionsMode);
|
|
138
|
+
withDefaults.sync.impressionsMode = (0, impressionsMode_1.validImpressionsMode)(log, withDefaults.sync.impressionsMode);
|
|
142
139
|
return withDefaults;
|
|
143
140
|
}
|
|
144
141
|
exports.settingsValidation = settingsValidation;
|
|
@@ -13,6 +13,6 @@ var lang_1 = require("../../lang");
|
|
|
13
13
|
*/
|
|
14
14
|
function validateConfigurableIntegrations(settings, validIntegrationTypes) {
|
|
15
15
|
if (validIntegrationTypes === void 0) { validIntegrationTypes = []; }
|
|
16
|
-
return common_1.validateIntegrations(settings, function (integration) { return integration && lang_1.isString(integration.type) && validIntegrationTypes.indexOf(integration.type) > -1; }, 'Integration items must have a valid "type" value');
|
|
16
|
+
return (0, common_1.validateIntegrations)(settings, function (integration) { return integration && (0, lang_1.isString)(integration.type) && validIntegrationTypes.indexOf(integration.type) > -1; }, 'Integration items must have a valid "type" value');
|
|
17
17
|
}
|
|
18
18
|
exports.validateConfigurableIntegrations = validateConfigurableIntegrations;
|
|
@@ -10,6 +10,6 @@ var common_1 = require("./common");
|
|
|
10
10
|
* @returns {Array} array of valid integration factories. The array might be empty if `settings` object does not have valid integrations.
|
|
11
11
|
*/
|
|
12
12
|
function validatePluggableIntegrations(settings) {
|
|
13
|
-
return common_1.validateIntegrations(settings, function (integration) { return typeof integration === 'function'; }, 'Integration items must be functions that initialize the integrations');
|
|
13
|
+
return (0, common_1.validateIntegrations)(settings, function (integration) { return typeof integration === 'function'; }, 'Integration items must be functions that initialize the integrations');
|
|
14
14
|
}
|
|
15
15
|
exports.validatePluggableIntegrations = validatePluggableIntegrations;
|
|
@@ -12,7 +12,7 @@ var pluggable_1 = require("./pluggable");
|
|
|
12
12
|
*/
|
|
13
13
|
function validateLocalhostWithDefault(settings) {
|
|
14
14
|
if (!settings.sync.localhostMode)
|
|
15
|
-
return LocalhostFromObject_1.LocalhostFromObject();
|
|
16
|
-
return pluggable_1.validateLocalhost(settings) || LocalhostFromObject_1.LocalhostFromObject();
|
|
15
|
+
return (0, LocalhostFromObject_1.LocalhostFromObject)();
|
|
16
|
+
return (0, pluggable_1.validateLocalhost)(settings) || (0, LocalhostFromObject_1.LocalhostFromObject)();
|
|
17
17
|
}
|
|
18
18
|
exports.validateLocalhostWithDefault = validateLocalhostWithDefault;
|
|
@@ -19,14 +19,14 @@ var ENV_VAR_KEY = 'SPLITIO_DEBUG';
|
|
|
19
19
|
*/
|
|
20
20
|
var initialState = String(
|
|
21
21
|
// eslint-disable-next-line no-undef
|
|
22
|
-
isNode_1.isNode ? process.env[ENV_VAR_KEY] : isLocalStorageAvailable_1.isLocalStorageAvailable() ? localStorage.getItem(LS_KEY) : '');
|
|
22
|
+
isNode_1.isNode ? process.env[ENV_VAR_KEY] : (0, isLocalStorageAvailable_1.isLocalStorageAvailable)() ? localStorage.getItem(LS_KEY) : '');
|
|
23
23
|
// By default it starts disabled.
|
|
24
24
|
var initialLogLevel = logger_1.LogLevels.NONE;
|
|
25
25
|
// Kept to avoid a breaking change ('on', 'enable' and 'enabled' are equivalent)
|
|
26
26
|
if (/^(enabled?|on)/i.test(initialState)) {
|
|
27
27
|
initialLogLevel = logger_1.LogLevels.DEBUG;
|
|
28
28
|
}
|
|
29
|
-
else if (logger_1.isLogLevelString(initialState)) {
|
|
29
|
+
else if ((0, logger_1.isLogLevelString)(initialState)) {
|
|
30
30
|
initialLogLevel = initialState;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -37,7 +37,7 @@ else if (logger_1.isLogLevelString(initialState)) {
|
|
|
37
37
|
*/
|
|
38
38
|
function validateLogger(settings) {
|
|
39
39
|
var debug = settings.debug;
|
|
40
|
-
var logLevel = debug !== undefined ? commons_1.getLogLevel(debug) : initialLogLevel;
|
|
40
|
+
var logLevel = debug !== undefined ? (0, commons_1.getLogLevel)(debug) : initialLogLevel;
|
|
41
41
|
var log = new logger_1.Logger({ logLevel: logLevel || initialLogLevel }, allCodes);
|
|
42
42
|
// @ts-ignore // if logLevel is undefined at this point, it means that settings `debug` value is invalid
|
|
43
43
|
if (!logLevel)
|
|
@@ -18,7 +18,7 @@ function getLogLevel(debugValue) {
|
|
|
18
18
|
return logger_1.LogLevels.NONE;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
else if (typeof debugValue === 'string' && logger_1.isLogLevelString(debugValue)) {
|
|
21
|
+
else if (typeof debugValue === 'string' && (0, logger_1.isLogLevelString)(debugValue)) {
|
|
22
22
|
return debugValue;
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
@@ -21,7 +21,7 @@ function validateLogger(settings) {
|
|
|
21
21
|
if (debug !== undefined) {
|
|
22
22
|
if (isLogger(debug))
|
|
23
23
|
return debug;
|
|
24
|
-
logLevel = commons_1.getLogLevel(settings.debug);
|
|
24
|
+
logLevel = (0, commons_1.getLogLevel)(settings.debug);
|
|
25
25
|
}
|
|
26
26
|
var log = new logger_1.Logger({ logLevel: logLevel || initialLogLevel });
|
|
27
27
|
// @ts-ignore // `debug` value is invalid if logLevel is undefined at this point
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateRuntime = void 0;
|
|
4
|
+
// For client-side SDKs, machine IP and Hostname are not captured and sent to Split backend.
|
|
5
|
+
function validateRuntime() {
|
|
6
|
+
return {
|
|
7
|
+
ip: false,
|
|
8
|
+
hostname: false
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.validateRuntime = validateRuntime;
|
|
@@ -36,7 +36,7 @@ function validateFilterType(maybeFilterType) {
|
|
|
36
36
|
*/
|
|
37
37
|
function validateSplitFilter(log, type, values, maxLength) {
|
|
38
38
|
// validate and remove invalid and duplicated values
|
|
39
|
-
var result = splits_1.validateSplits(log, values, constants_2.LOG_PREFIX_SETTINGS, type + " filter", type + " filter value");
|
|
39
|
+
var result = (0, splits_1.validateSplits)(log, values, constants_2.LOG_PREFIX_SETTINGS, type + " filter", type + " filter value");
|
|
40
40
|
if (result) {
|
|
41
41
|
// check max length
|
|
42
42
|
if (result.length > maxLength)
|
|
@@ -5,7 +5,7 @@ var InMemoryStorageCS_1 = require("../../../storages/inMemory/InMemoryStorageCS"
|
|
|
5
5
|
var constants_1 = require("../../../logger/constants");
|
|
6
6
|
var constants_2 = require("../../../utils/constants");
|
|
7
7
|
function __InLocalStorageMockFactory(params) {
|
|
8
|
-
var result = InMemoryStorageCS_1.InMemoryStorageCSFactory(params);
|
|
8
|
+
var result = (0, InMemoryStorageCS_1.InMemoryStorageCSFactory)(params);
|
|
9
9
|
result.splits.checkCache = function () { return true; }; // to emit SDK_READY_FROM_CACHE
|
|
10
10
|
return result;
|
|
11
11
|
}
|
|
@@ -125,12 +125,12 @@ exports.TrackerAPI = {
|
|
|
125
125
|
* @return {Function | Promise} The stop function for this specific task or the promise received with the callbacks registered.
|
|
126
126
|
*/
|
|
127
127
|
start: function (log, task, collectors, promise, now) {
|
|
128
|
-
var taskUniqueId = lang_1.uniqueId();
|
|
128
|
+
var taskUniqueId = (0, lang_1.uniqueId)();
|
|
129
129
|
var taskCollector = getCollectorForTask(task, collectors);
|
|
130
130
|
var result;
|
|
131
131
|
// If we are registering a promise with this task, we should count the status and the exceptions as well
|
|
132
132
|
// as stopping the task when the promise resolves. Then return the promise
|
|
133
|
-
if (thenable_1.thenable(promise)) {
|
|
133
|
+
if ((0, thenable_1.thenable)(promise)) {
|
|
134
134
|
result = this.__attachToPromise(log, promise, task, taskCollector, taskUniqueId);
|
|
135
135
|
}
|
|
136
136
|
else {
|
|
@@ -147,7 +147,7 @@ exports.TrackerAPI = {
|
|
|
147
147
|
var cb = getCallbackForTask(task, taskCollector);
|
|
148
148
|
timers[trackingKey] = {
|
|
149
149
|
cb: cb,
|
|
150
|
-
timer: timer_1.timer(now)
|
|
150
|
+
timer: (0, timer_1.timer)(now)
|
|
151
151
|
};
|
|
152
152
|
return result;
|
|
153
153
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ENGINE_MATCHER_ENDS_WITH } from '../../logger/constants';
|
|
2
|
-
import { endsWith
|
|
2
|
+
import { endsWith } from '../../utils/lang';
|
|
3
3
|
export function endsWithMatcherContext(log, ruleAttr) {
|
|
4
4
|
return function endsWithMatcher(runtimeAttr) {
|
|
5
|
-
var
|
|
6
|
-
log.debug(ENGINE_MATCHER_ENDS_WITH, [runtimeAttr, ruleAttr,
|
|
7
|
-
return
|
|
5
|
+
var strEndsWith = ruleAttr.some(function (e) { return endsWith(runtimeAttr, e); });
|
|
6
|
+
log.debug(ENGINE_MATCHER_ENDS_WITH, [runtimeAttr, ruleAttr, strEndsWith]);
|
|
7
|
+
return strEndsWith;
|
|
8
8
|
};
|
|
9
9
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { GaToSplit } from './GaToSplit';
|
|
2
2
|
export function GoogleAnalyticsToSplit(options) {
|
|
3
3
|
// GaToSplit integration factory
|
|
4
|
-
|
|
4
|
+
function GoogleAnalyticsToSplitFactory(params) {
|
|
5
5
|
return GaToSplit(options, params);
|
|
6
|
-
}
|
|
6
|
+
}
|
|
7
|
+
GoogleAnalyticsToSplitFactory.type = 'GOOGLE_ANALYTICS_TO_SPLIT';
|
|
8
|
+
return GoogleAnalyticsToSplitFactory;
|
|
7
9
|
}
|
|
@@ -2,7 +2,9 @@ import { SplitToGa } from './SplitToGa';
|
|
|
2
2
|
export function SplitToGoogleAnalytics(options) {
|
|
3
3
|
if (options === void 0) { options = {}; }
|
|
4
4
|
// SplitToGa integration factory
|
|
5
|
-
|
|
5
|
+
function SplitToGoogleAnalyticsFactory(params) {
|
|
6
6
|
return new SplitToGa(params.settings.log, options);
|
|
7
|
-
}
|
|
7
|
+
}
|
|
8
|
+
SplitToGoogleAnalyticsFactory.type = 'SPLIT_TO_GOOGLE_ANALYTICS';
|
|
9
|
+
return SplitToGoogleAnalyticsFactory;
|
|
8
10
|
}
|
package/esm/logger/constants.js
CHANGED
|
@@ -60,7 +60,7 @@ export var STREAMING_RECONNECT = 111;
|
|
|
60
60
|
export var STREAMING_CONNECTING = 112;
|
|
61
61
|
export var STREAMING_DISABLED = 113;
|
|
62
62
|
export var STREAMING_DISCONNECTING = 114;
|
|
63
|
-
export var
|
|
63
|
+
export var SUBMITTERS_PUSH_FULL_QUEUE = 115;
|
|
64
64
|
export var SUBMITTERS_PUSH = 116;
|
|
65
65
|
export var SYNC_START_POLLING = 117;
|
|
66
66
|
export var SYNC_CONTINUE_POLLING = 118;
|
|
@@ -12,7 +12,7 @@ export var codesError = [
|
|
|
12
12
|
[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'],
|
|
13
13
|
[c.ERROR_STREAMING_SSE, c.LOG_PREFIX_SYNC_STREAMING + 'Failed to connect or error on streaming connection, with error message: %s'],
|
|
14
14
|
[c.ERROR_STREAMING_AUTH, c.LOG_PREFIX_SYNC_STREAMING + 'Failed to authenticate for streaming. Error: %s.'],
|
|
15
|
-
[c.ERROR_HTTP, '
|
|
15
|
+
[c.ERROR_HTTP, 'Response status is not OK. Status: %s. URL: %s. Message: %s'],
|
|
16
16
|
// client status
|
|
17
17
|
[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.'],
|
|
18
18
|
[c.ERROR_CLIENT_DESTROYED, '%s: Client has already been destroyed - no calls possible.'],
|
|
@@ -17,7 +17,7 @@ export var codesInfo = codesWarn.concat([
|
|
|
17
17
|
[c.POLLING_START, c.LOG_PREFIX_SYNC_POLLING + 'Starting polling'],
|
|
18
18
|
[c.POLLING_STOP, c.LOG_PREFIX_SYNC_POLLING + 'Stopping polling'],
|
|
19
19
|
[c.SYNC_SPLITS_FETCH_RETRY, c.LOG_PREFIX_SYNC_SPLITS + 'Retrying download of splits #%s. Reason: %s'],
|
|
20
|
-
[c.
|
|
20
|
+
[c.SUBMITTERS_PUSH_FULL_QUEUE, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Flushing full %s queue and reseting timer.'],
|
|
21
21
|
[c.SUBMITTERS_PUSH, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Pushing %s %s.'],
|
|
22
22
|
[c.STREAMING_REFRESH_TOKEN, c.LOG_PREFIX_SYNC_STREAMING + 'Refreshing streaming token in %s seconds, and connecting streaming in %s seconds.'],
|
|
23
23
|
[c.STREAMING_RECONNECT, c.LOG_PREFIX_SYNC_STREAMING + 'Attempting to reconnect streaming in %s seconds.'],
|
|
@@ -26,5 +26,5 @@ export var codesInfo = codesWarn.concat([
|
|
|
26
26
|
[c.STREAMING_DISCONNECTING, c.LOG_PREFIX_SYNC_STREAMING + 'Disconnecting streaming.'],
|
|
27
27
|
[c.SYNC_START_POLLING, c.LOG_PREFIX_SYNC_MANAGER + 'Streaming not available. Starting polling.'],
|
|
28
28
|
[c.SYNC_CONTINUE_POLLING, c.LOG_PREFIX_SYNC_MANAGER + 'Streaming couldn\'t connect. Continue polling.'],
|
|
29
|
-
[c.SYNC_STOP_POLLING, c.LOG_PREFIX_SYNC_MANAGER + 'Streaming
|
|
29
|
+
[c.SYNC_STOP_POLLING, c.LOG_PREFIX_SYNC_MANAGER + 'Streaming connected. Syncing and stopping polling.'],
|
|
30
30
|
]);
|
package/esm/sdkFactory/index.js
CHANGED
|
@@ -22,6 +22,7 @@ export function sdkFactory(params) {
|
|
|
22
22
|
var readinessManager = sdkReadinessManager.readinessManager;
|
|
23
23
|
// @TODO consider passing the settings object, so that each storage access only what it needs
|
|
24
24
|
var storageFactoryParams = {
|
|
25
|
+
impressionsQueueSize: settings.scheduler.impressionsQueueSize,
|
|
25
26
|
eventsQueueSize: settings.scheduler.eventsQueueSize,
|
|
26
27
|
optimize: shouldBeOptimized(settings),
|
|
27
28
|
// ATM, only used by InLocalStorage
|
package/esm/services/splitApi.js
CHANGED
|
@@ -72,7 +72,8 @@ export function splitApiFactory(settings, platform) {
|
|
|
72
72
|
return splitHttpClient(url, {
|
|
73
73
|
// Adding extra headers to send impressions in OPTIMIZED or DEBUG modes.
|
|
74
74
|
method: 'POST',
|
|
75
|
-
body: body,
|
|
75
|
+
body: body,
|
|
76
|
+
headers: objectAssign({ SplitSDKImpressionsMode: SplitSDKImpressionsMode }, headers)
|
|
76
77
|
});
|
|
77
78
|
},
|
|
78
79
|
/**
|
|
@@ -30,7 +30,7 @@ export function InLocalStorage(options) {
|
|
|
30
30
|
return {
|
|
31
31
|
splits: new SplitsCacheInLocal(log, keys, expirationTimestamp, params.splitFiltersValidation),
|
|
32
32
|
segments: new MySegmentsCacheInLocal(log, keys),
|
|
33
|
-
impressions: new ImpressionsCacheInMemory(),
|
|
33
|
+
impressions: new ImpressionsCacheInMemory(params.impressionsQueueSize),
|
|
34
34
|
impressionCounts: params.optimize ? new ImpressionCountsCacheInMemory() : undefined,
|
|
35
35
|
events: new EventsCacheInMemory(params.eventsQueueSize),
|
|
36
36
|
destroy: function () {
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
var ImpressionsCacheInMemory = /** @class */ (function () {
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param impressionsQueueSize number of queued impressions to call onFullQueueCb.
|
|
5
|
+
* Default value is 0, that means no maximum value, in case we want to avoid this being triggered.
|
|
6
|
+
*/
|
|
7
|
+
function ImpressionsCacheInMemory(impressionsQueueSize) {
|
|
8
|
+
if (impressionsQueueSize === void 0) { impressionsQueueSize = 0; }
|
|
9
|
+
this.maxQueue = impressionsQueueSize;
|
|
3
10
|
this.queue = [];
|
|
4
11
|
}
|
|
12
|
+
ImpressionsCacheInMemory.prototype.setOnFullQueueCb = function (cb) {
|
|
13
|
+
this.onFullQueue = cb;
|
|
14
|
+
};
|
|
5
15
|
/**
|
|
6
16
|
* Store impressions in sequential order
|
|
7
17
|
*/
|
|
8
18
|
ImpressionsCacheInMemory.prototype.track = function (data) {
|
|
9
19
|
var _a;
|
|
10
20
|
(_a = this.queue).push.apply(_a, data);
|
|
21
|
+
// Check if the cache queue is full and we need to flush it.
|
|
22
|
+
if (this.maxQueue > 0 && this.queue.length >= this.maxQueue && this.onFullQueue) {
|
|
23
|
+
this.onFullQueue();
|
|
24
|
+
}
|
|
11
25
|
};
|
|
12
26
|
/**
|
|
13
27
|
* Clear the data stored on the cache.
|
|
@@ -13,7 +13,7 @@ export function InMemoryStorageFactory(params) {
|
|
|
13
13
|
return {
|
|
14
14
|
splits: new SplitsCacheInMemory(),
|
|
15
15
|
segments: new SegmentsCacheInMemory(),
|
|
16
|
-
impressions: new ImpressionsCacheInMemory(),
|
|
16
|
+
impressions: new ImpressionsCacheInMemory(params.impressionsQueueSize),
|
|
17
17
|
impressionCounts: params.optimize ? new ImpressionCountsCacheInMemory() : undefined,
|
|
18
18
|
events: new EventsCacheInMemory(params.eventsQueueSize),
|
|
19
19
|
// When using MEMORY we should clean all the caches to leave them empty
|
|
@@ -13,7 +13,7 @@ export function InMemoryStorageCSFactory(params) {
|
|
|
13
13
|
return {
|
|
14
14
|
splits: new SplitsCacheInMemory(),
|
|
15
15
|
segments: new MySegmentsCacheInMemory(),
|
|
16
|
-
impressions: new ImpressionsCacheInMemory(),
|
|
16
|
+
impressions: new ImpressionsCacheInMemory(params.impressionsQueueSize),
|
|
17
17
|
impressionCounts: params.optimize ? new ImpressionCountsCacheInMemory() : undefined,
|
|
18
18
|
events: new EventsCacheInMemory(params.eventsQueueSize),
|
|
19
19
|
// When using MEMORY we should clean all the caches to leave them empty
|
|
@@ -151,7 +151,13 @@ var RedisAdapter = /** @class */ (function (_super) {
|
|
|
151
151
|
RedisAdapter._defineOptions = function (_a) {
|
|
152
152
|
var connectionTimeout = _a.connectionTimeout, operationTimeout = _a.operationTimeout, url = _a.url, host = _a.host, port = _a.port, db = _a.db, pass = _a.pass;
|
|
153
153
|
var parsedOptions = {
|
|
154
|
-
connectionTimeout: connectionTimeout,
|
|
154
|
+
connectionTimeout: connectionTimeout,
|
|
155
|
+
operationTimeout: operationTimeout,
|
|
156
|
+
url: url,
|
|
157
|
+
host: host,
|
|
158
|
+
port: port,
|
|
159
|
+
db: db,
|
|
160
|
+
pass: pass
|
|
155
161
|
};
|
|
156
162
|
return merge({}, DEFAULT_OPTIONS, parsedOptions);
|
|
157
163
|
};
|
|
@@ -51,7 +51,7 @@ export function PluggableStorage(options) {
|
|
|
51
51
|
validatePluggableStorageOptions(options);
|
|
52
52
|
var prefix = validatePrefix(options.prefix);
|
|
53
53
|
function PluggableStorageFactory(_a) {
|
|
54
|
-
var log = _a.log, metadata = _a.metadata, onReadyCb = _a.onReadyCb, mode = _a.mode, eventsQueueSize = _a.eventsQueueSize, optimize = _a.optimize;
|
|
54
|
+
var log = _a.log, metadata = _a.metadata, onReadyCb = _a.onReadyCb, mode = _a.mode, eventsQueueSize = _a.eventsQueueSize, impressionsQueueSize = _a.impressionsQueueSize, optimize = _a.optimize;
|
|
55
55
|
var keys = new KeyBuilderSS(prefix, metadata);
|
|
56
56
|
var wrapper = wrapperAdapter(log, options.wrapper);
|
|
57
57
|
var isPartialConsumer = mode === CONSUMER_PARTIAL_MODE;
|
|
@@ -60,7 +60,7 @@ export function PluggableStorage(options) {
|
|
|
60
60
|
return {
|
|
61
61
|
splits: new SplitsCachePluggable(log, keys, wrapper),
|
|
62
62
|
segments: new SegmentsCachePluggable(log, keys, wrapper),
|
|
63
|
-
impressions: isPartialConsumer ? new ImpressionsCacheInMemory() : new ImpressionsCachePluggable(log, keys.buildImpressionsKey(), wrapper, metadata),
|
|
63
|
+
impressions: isPartialConsumer ? new ImpressionsCacheInMemory(impressionsQueueSize) : new ImpressionsCachePluggable(log, keys.buildImpressionsKey(), wrapper, metadata),
|
|
64
64
|
impressionCounts: optimize ? new ImpressionCountsCacheInMemory() : undefined,
|
|
65
65
|
events: isPartialConsumer ? promisifyEventsTrack(new EventsCacheInMemory(eventsQueueSize)) : new EventsCachePluggable(log, keys.buildEventsKey(), wrapper, metadata),
|
|
66
66
|
// @TODO add telemetry cache when required
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Factory of MySegments fetcher.
|
|
3
3
|
* MySegments fetcher is a wrapper around `mySegments` API service that parses the response and handle errors.
|
|
4
4
|
*/
|
|
5
|
-
export function mySegmentsFetcherFactory(fetchMySegments
|
|
6
|
-
return function mySegmentsFetcher(noCache,
|
|
5
|
+
export function mySegmentsFetcherFactory(fetchMySegments) {
|
|
6
|
+
return function mySegmentsFetcher(userMatchingKey, noCache,
|
|
7
7
|
// Optional decorator for `fetchMySegments` promise, such as timeout or time tracker
|
|
8
8
|
decorator) {
|
|
9
9
|
var mySegmentsPromise = fetchMySegments(userMatchingKey, noCache);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __spreadArray } from "tslib";
|
|
2
2
|
function greedyFetch(fetchSegmentChanges, since, segmentName, noCache) {
|
|
3
3
|
return fetchSegmentChanges(since, segmentName, noCache)
|
|
4
4
|
.then(function (resp) { return resp.json(); })
|
|
@@ -9,7 +9,7 @@ function greedyFetch(fetchSegmentChanges, since, segmentName, noCache) {
|
|
|
9
9
|
}
|
|
10
10
|
else {
|
|
11
11
|
return Promise.all([json, greedyFetch(fetchSegmentChanges, till, segmentName, noCache)]).then(function (flatMe) {
|
|
12
|
-
return
|
|
12
|
+
return __spreadArray([flatMe[0]], flatMe[1], true);
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
});
|
|
@@ -8,7 +8,8 @@ import { POLLING_SMART_PAUSING, POLLING_START, POLLING_STOP } from '../../logger
|
|
|
8
8
|
* Expose start / stop mechanism for polling data from services.
|
|
9
9
|
* For client-side API with multiple clients.
|
|
10
10
|
*/
|
|
11
|
-
export function pollingManagerCSFactory(
|
|
11
|
+
export function pollingManagerCSFactory(params) {
|
|
12
|
+
var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
|
|
12
13
|
var log = settings.log;
|
|
13
14
|
var splitsSyncTask = splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings);
|
|
14
15
|
// Map of matching keys to their corresponding MySegmentsSyncTask.
|
|
@@ -5,7 +5,8 @@ import { POLLING_START, POLLING_STOP, LOG_PREFIX_SYNC_POLLING } from '../../logg
|
|
|
5
5
|
/**
|
|
6
6
|
* Expose start / stop mechanism for pulling data from services.
|
|
7
7
|
*/
|
|
8
|
-
export function pollingManagerSSFactory(
|
|
8
|
+
export function pollingManagerSSFactory(params) {
|
|
9
|
+
var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
|
|
9
10
|
var log = settings.log;
|
|
10
11
|
var splitsSyncTask = splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings);
|
|
11
12
|
var segmentsSyncTask = segmentsSyncTaskFactory(splitApi.fetchSegmentChanges, storage, readiness, settings);
|
|
@@ -5,5 +5,5 @@ import { mySegmentsUpdaterFactory } from '../updaters/mySegmentsUpdater';
|
|
|
5
5
|
* Creates a sync task that periodically executes a `mySegmentsUpdater` task
|
|
6
6
|
*/
|
|
7
7
|
export function mySegmentsSyncTaskFactory(fetchMySegments, storage, readiness, settings, matchingKey) {
|
|
8
|
-
return syncTaskFactory(settings.log, mySegmentsUpdaterFactory(settings.log, mySegmentsFetcherFactory(fetchMySegments
|
|
8
|
+
return syncTaskFactory(settings.log, mySegmentsUpdaterFactory(settings.log, mySegmentsFetcherFactory(fetchMySegments), storage.splits, storage.segments, readiness.segments, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady, matchingKey), settings.scheduler.segmentsRefreshRate, 'mySegmentsUpdater');
|
|
9
9
|
}
|
|
@@ -7,7 +7,7 @@ import { SYNC_MYSEGMENTS_FETCH_RETRY } from '../../../logger/constants';
|
|
|
7
7
|
* - updates `mySegmentsCache`
|
|
8
8
|
* - uses `segmentsEventEmitter` to emit events related to segments data updates
|
|
9
9
|
*/
|
|
10
|
-
export function mySegmentsUpdaterFactory(log, mySegmentsFetcher, splitsCache, mySegmentsCache, segmentsEventEmitter, requestTimeoutBeforeReady, retriesOnFailureBeforeReady) {
|
|
10
|
+
export function mySegmentsUpdaterFactory(log, mySegmentsFetcher, splitsCache, mySegmentsCache, segmentsEventEmitter, requestTimeoutBeforeReady, retriesOnFailureBeforeReady, matchingKey) {
|
|
11
11
|
var readyOnAlreadyExistentState = true;
|
|
12
12
|
var startingUp = true;
|
|
13
13
|
/** timeout and telemetry decorator for `splitChangesFetcher` promise */
|
|
@@ -51,7 +51,7 @@ export function mySegmentsUpdaterFactory(log, mySegmentsFetcher, splitsCache, my
|
|
|
51
51
|
// If segmentsData is provided, there is no need to fetch mySegments
|
|
52
52
|
new Promise(function (res) { updateSegments(segmentsData); res(true); }) :
|
|
53
53
|
// If not provided, fetch mySegments
|
|
54
|
-
mySegmentsFetcher(noCache, _promiseDecorator).then(function (segments) {
|
|
54
|
+
mySegmentsFetcher(matchingKey, noCache, _promiseDecorator).then(function (segments) {
|
|
55
55
|
// Only when we have downloaded segments completely, we should not keep retrying anymore
|
|
56
56
|
startingUp = false;
|
|
57
57
|
updateSegments(segments);
|
|
@@ -7,7 +7,7 @@ var SegmentsUpdateWorker = /** @class */ (function () {
|
|
|
7
7
|
* @param {Object} segmentsCache segments data cache
|
|
8
8
|
* @param {Object} segmentsSyncTask task for syncing segments data
|
|
9
9
|
*/
|
|
10
|
-
function SegmentsUpdateWorker(
|
|
10
|
+
function SegmentsUpdateWorker(segmentsSyncTask, segmentsCache) {
|
|
11
11
|
this.segmentsCache = segmentsCache;
|
|
12
12
|
this.segmentsSyncTask = segmentsSyncTask;
|
|
13
13
|
this.maxChangeNumbers = {};
|