@splitsoftware/splitio-commons 1.1.1-rc.0 → 1.2.1-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGES.txt +1 -1
- 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 +1 -1
- package/cjs/integrations/ga/SplitToGa.js +1 -1
- package/cjs/listeners/browser.js +1 -1
- package/cjs/listeners/node.js +1 -1
- package/cjs/logger/constants.js +3 -1
- package/cjs/logger/index.js +2 -2
- package/cjs/logger/messages/debug.js +1 -1
- package/cjs/logger/messages/error.js +1 -1
- package/cjs/logger/messages/info.js +4 -4
- 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 +11 -10
- package/cjs/sdkClient/clientAttributesDecoration.js +4 -4
- package/cjs/sdkClient/clientCS.js +4 -3
- 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 +8 -8
- package/cjs/sdkManager/index.js +11 -11
- package/cjs/services/splitApi.js +3 -2
- package/cjs/services/splitHttpClient.js +3 -3
- 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 +3 -3
- package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
- package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.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 +4 -4
- 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 +4 -5
- 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 +39 -35
- package/cjs/sync/submitters/eventsSyncTask.js +1 -1
- package/cjs/sync/submitters/impressionCountsSyncTask.js +1 -1
- package/cjs/sync/submitters/impressionsSyncTask.js +3 -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 +12 -12
- 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/legacy.js +44 -0
- 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/promise/timeout.js +1 -1
- package/cjs/utils/settingsValidation/index.js +5 -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/browser.js +10 -0
- package/cjs/utils/settingsValidation/runtime/node.js +22 -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/logger/messages/info.js +3 -3
- package/esm/sdkClient/client.js +2 -1
- package/esm/sdkClient/clientCS.js +2 -1
- package/esm/services/splitApi.js +2 -1
- package/esm/services/splitHttpClient.js +1 -1
- package/esm/storages/inRedis/RedisAdapter.js +7 -1
- 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/AuthClient/index.js +1 -2
- package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +1 -1
- package/esm/sync/streaming/pushManager.js +27 -23
- package/esm/sync/submitters/submitterManager.js +2 -1
- package/esm/sync/syncManagerOnline.js +12 -12
- 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/murmur3/legacy.js +39 -0
- package/esm/utils/promise/timeout.js +1 -1
- package/esm/utils/settingsValidation/index.js +1 -6
- package/esm/utils/settingsValidation/runtime/browser.js +6 -0
- package/esm/utils/settingsValidation/runtime/node.js +17 -0
- package/package.json +8 -7
- package/src/evaluator/matchers/ew.ts +4 -4
- package/src/logger/.DS_Store +0 -0
- package/src/logger/messages/info.ts +3 -3
- package/src/logger/types.ts +4 -0
- package/src/sdkClient/client.ts +2 -1
- package/src/sdkClient/clientCS.ts +3 -1
- package/src/services/splitHttpClient.ts +1 -1
- 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/AuthClient/index.ts +1 -2
- package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
- package/src/sync/streaming/pushManager.ts +31 -38
- package/src/sync/streaming/types.ts +5 -25
- package/src/sync/submitters/submitterManager.ts +4 -8
- package/src/sync/syncManagerOnline.ts +16 -22
- package/src/types.ts +5 -1
- package/src/utils/inputValidation/eventProperties.ts +4 -2
- package/src/utils/lang/index.ts +0 -14
- package/src/utils/murmur3/legacy.ts +48 -0
- package/src/utils/promise/timeout.ts +1 -1
- package/src/utils/settingsValidation/index.ts +1 -6
- package/src/utils/settingsValidation/runtime/browser.ts +6 -0
- package/src/utils/settingsValidation/runtime/node.ts +22 -0
- package/src/utils/settingsValidation/types.ts +6 -6
- package/types/integrations/ga/GaToSplitPlugin.d.ts +3 -0
- package/types/integrations/ga/SplitToGaPlugin.d.ts +4 -0
- package/types/logger/browser/{DebugLogger.d.ts → debugLogger.d.ts} +0 -0
- package/types/logger/browser/{ErrorLogger.d.ts → errorLogger.d.ts} +0 -0
- package/types/logger/browser/{InfoLogger.d.ts → infoLogger.d.ts} +0 -0
- package/types/logger/browser/{WarnLogger.d.ts → warnLogger.d.ts} +0 -0
- package/types/logger/codes.d.ts +2 -0
- package/types/logger/codesConstants.d.ts +117 -0
- package/types/logger/codesConstantsBrowser.d.ts +2 -0
- package/types/logger/codesConstantsNode.d.ts +14 -0
- package/types/logger/codesDebug.d.ts +1 -0
- package/types/logger/codesDebugBrowser.d.ts +1 -0
- package/types/logger/codesDebugNode.d.ts +1 -0
- package/types/logger/codesError.d.ts +1 -0
- package/types/logger/codesErrorNode.d.ts +1 -0
- package/types/logger/codesInfo.d.ts +1 -0
- package/types/logger/codesWarn.d.ts +1 -0
- package/types/logger/codesWarnNode.d.ts +1 -0
- package/types/logger/debugLogger.d.ts +2 -0
- package/types/logger/errorLogger.d.ts +2 -0
- package/types/logger/infoLogger.d.ts +2 -0
- package/types/logger/messages/debugBrowser.d.ts +1 -0
- package/types/logger/messages/debugNode.d.ts +1 -0
- package/types/logger/messages/errorNode.d.ts +1 -0
- package/types/logger/messages/warnNode.d.ts +1 -0
- package/types/logger/noopLogger.d.ts +2 -0
- package/types/logger/types.d.ts +4 -0
- package/types/logger/warnLogger.d.ts +2 -0
- package/types/sdkClient/clientAttributesDecoration.d.ts +1 -1
- package/types/sdkManager/sdkManagerMethod.d.ts +6 -0
- package/types/storages/getRegisteredSegments.d.ts +10 -0
- package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +51 -0
- package/types/storages/inMemory/index.d.ts +10 -0
- package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +0 -0
- package/types/storages/parseSegments.d.ts +6 -0
- package/types/storages/pluggable/TelemetryCachePluggable.d.ts +2 -0
- 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/syncTasks/splitsSyncTask.copy.d.ts +35 -0
- package/types/sync/polling/syncTasks/splitsSyncTask.morelikeoriginal.d.ts +35 -0
- package/types/sync/polling/types.d.ts +0 -11
- package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +1 -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/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -1
- package/types/sync/streaming/pushManager.d.ts +3 -7
- package/types/sync/streaming/pushManagerCS.d.ts +1 -0
- package/types/sync/streaming/pushManagerNoUsers.d.ts +13 -0
- package/types/sync/streaming/pushManagerSS.d.ts +1 -0
- package/types/sync/streaming/types.d.ts +3 -23
- package/types/sync/submitters/submitterManager.d.ts +2 -4
- package/types/sync/submitters/telemetrySyncTask.d.ts +17 -0
- package/types/sync/syncManagerFromFile.d.ts +2 -0
- package/types/sync/syncManagerFromObject.d.ts +2 -0
- package/types/sync/syncManagerOffline.d.ts +9 -0
- package/types/sync/syncManagerOnline.d.ts +3 -3
- package/types/trackers/telemetryRecorder.d.ts +0 -0
- package/types/types.d.ts +1 -0
- package/types/utils/EventEmitter.d.ts +4 -0
- package/types/utils/lang/errors.d.ts +10 -0
- package/types/utils/lang/index.d.ts +0 -4
- package/types/utils/murmur3/commons.d.ts +12 -0
- package/types/utils/murmur3/legacy.d.ts +2 -0
- package/types/utils/settingsValidation/buildMetadata.d.ts +3 -0
- package/types/utils/settingsValidation/localhost/index.d.ts +9 -0
- package/types/utils/settingsValidation/logger.d.ts +11 -0
- package/types/utils/settingsValidation/runtime/browser.d.ts +4 -0
- package/types/utils/settingsValidation/runtime/node.d.ts +5 -0
- package/types/utils/settingsValidation/types.d.ts +6 -6
|
@@ -19,7 +19,7 @@ function syncManagerOfflineFactory(splitsParserFactory) {
|
|
|
19
19
|
*/
|
|
20
20
|
return function (_a) {
|
|
21
21
|
var settings = _a.settings, readiness = _a.readiness, storage = _a.storage;
|
|
22
|
-
return objectAssign_1.objectAssign(fromObjectSyncTask_1.fromObjectSyncTaskFactory(splitsParserFactory(), storage, readiness, settings), {
|
|
22
|
+
return (0, objectAssign_1.objectAssign)((0, fromObjectSyncTask_1.fromObjectSyncTaskFactory)(splitsParserFactory(), storage, readiness, settings), {
|
|
23
23
|
// fake flush, that resolves immediately
|
|
24
24
|
flush: flush,
|
|
25
25
|
// [Only used for client-side]
|
|
@@ -25,7 +25,7 @@ function fromObjectUpdaterFactory(splitsParser, storage, readiness, settings) {
|
|
|
25
25
|
}
|
|
26
26
|
if (!loadError && splitsMock) {
|
|
27
27
|
log.debug(constants_3.SYNC_OFFLINE_DATA, [JSON.stringify(splitsMock)]);
|
|
28
|
-
lang_1.forOwn(splitsMock, function (val, name) {
|
|
28
|
+
(0, lang_1.forOwn)(splitsMock, function (val, name) {
|
|
29
29
|
splits.push([
|
|
30
30
|
name,
|
|
31
31
|
JSON.stringify({
|
|
@@ -68,6 +68,6 @@ exports.fromObjectUpdaterFactory = fromObjectUpdaterFactory;
|
|
|
68
68
|
* PollingManager in Offline mode
|
|
69
69
|
*/
|
|
70
70
|
function fromObjectSyncTaskFactory(splitsParser, storage, readiness, settings) {
|
|
71
|
-
return syncTask_1.syncTaskFactory(settings.log, fromObjectUpdaterFactory(splitsParser, storage, readiness, settings), settings.scheduler.offlineRefreshRate, 'offlineUpdater');
|
|
71
|
+
return (0, syncTask_1.syncTaskFactory)(settings.log, fromObjectUpdaterFactory(splitsParser, storage, readiness, settings), settings.scheduler.offlineRefreshRate, 'offlineUpdater');
|
|
72
72
|
}
|
|
73
73
|
exports.fromObjectSyncTaskFactory = fromObjectSyncTaskFactory;
|
|
@@ -5,8 +5,8 @@ exports.mySegmentsFetcherFactory = void 0;
|
|
|
5
5
|
* Factory of MySegments fetcher.
|
|
6
6
|
* MySegments fetcher is a wrapper around `mySegments` API service that parses the response and handle errors.
|
|
7
7
|
*/
|
|
8
|
-
function mySegmentsFetcherFactory(fetchMySegments
|
|
9
|
-
return function mySegmentsFetcher(noCache,
|
|
8
|
+
function mySegmentsFetcherFactory(fetchMySegments) {
|
|
9
|
+
return function mySegmentsFetcher(userMatchingKey, noCache,
|
|
10
10
|
// Optional decorator for `fetchMySegments` promise, such as timeout or time tracker
|
|
11
11
|
decorator) {
|
|
12
12
|
var mySegmentsPromise = fetchMySegments(userMatchingKey, noCache);
|
|
@@ -12,7 +12,7 @@ function greedyFetch(fetchSegmentChanges, since, segmentName, noCache) {
|
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
14
14
|
return Promise.all([json, greedyFetch(fetchSegmentChanges, till, segmentName, noCache)]).then(function (flatMe) {
|
|
15
|
-
return tslib_1.
|
|
15
|
+
return (0, tslib_1.__spreadArray)([flatMe[0]], flatMe[1], true);
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
});
|
|
@@ -11,20 +11,21 @@ var constants_2 = require("../../logger/constants");
|
|
|
11
11
|
* Expose start / stop mechanism for polling data from services.
|
|
12
12
|
* For client-side API with multiple clients.
|
|
13
13
|
*/
|
|
14
|
-
function pollingManagerCSFactory(
|
|
14
|
+
function pollingManagerCSFactory(params) {
|
|
15
|
+
var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
|
|
15
16
|
var log = settings.log;
|
|
16
|
-
var splitsSyncTask = splitsSyncTask_1.splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings);
|
|
17
|
+
var splitsSyncTask = (0, splitsSyncTask_1.splitsSyncTaskFactory)(splitApi.fetchSplitChanges, storage, readiness, settings);
|
|
17
18
|
// Map of matching keys to their corresponding MySegmentsSyncTask.
|
|
18
19
|
var mySegmentsSyncTasks = {};
|
|
19
|
-
var matchingKey = key_1.getMatching(settings.core.key);
|
|
20
|
+
var matchingKey = (0, key_1.getMatching)(settings.core.key);
|
|
20
21
|
var mySegmentsSyncTask = add(matchingKey, readiness, storage);
|
|
21
22
|
function startMySegmentsSyncTasks() {
|
|
22
|
-
lang_1.forOwn(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
|
|
23
|
+
(0, lang_1.forOwn)(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
|
|
23
24
|
mySegmentsSyncTask.start();
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
27
|
function stopMySegmentsSyncTasks() {
|
|
27
|
-
lang_1.forOwn(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
|
|
28
|
+
(0, lang_1.forOwn)(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
|
|
28
29
|
if (mySegmentsSyncTask.isRunning())
|
|
29
30
|
mySegmentsSyncTask.stop();
|
|
30
31
|
});
|
|
@@ -45,7 +46,7 @@ function pollingManagerCSFactory(splitApi, storage, readiness, settings) {
|
|
|
45
46
|
}
|
|
46
47
|
});
|
|
47
48
|
function add(matchingKey, readiness, storage) {
|
|
48
|
-
var mySegmentsSyncTask = mySegmentsSyncTask_1.mySegmentsSyncTaskFactory(splitApi.fetchMySegments, storage, readiness, settings, matchingKey);
|
|
49
|
+
var mySegmentsSyncTask = (0, mySegmentsSyncTask_1.mySegmentsSyncTaskFactory)(splitApi.fetchMySegments, storage, readiness, settings, matchingKey);
|
|
49
50
|
// smart ready
|
|
50
51
|
function smartReady() {
|
|
51
52
|
if (!readiness.isReady() && !storage.splits.usesSegments())
|
|
@@ -80,7 +81,7 @@ function pollingManagerCSFactory(splitApi, storage, readiness, settings) {
|
|
|
80
81
|
// fetch splits and segments
|
|
81
82
|
syncAll: function () {
|
|
82
83
|
var promises = [splitsSyncTask.execute()];
|
|
83
|
-
lang_1.forOwn(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
|
|
84
|
+
(0, lang_1.forOwn)(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
|
|
84
85
|
promises.push(mySegmentsSyncTask.execute());
|
|
85
86
|
});
|
|
86
87
|
return Promise.all(promises);
|
|
@@ -8,10 +8,11 @@ var constants_1 = require("../../logger/constants");
|
|
|
8
8
|
/**
|
|
9
9
|
* Expose start / stop mechanism for pulling data from services.
|
|
10
10
|
*/
|
|
11
|
-
function pollingManagerSSFactory(
|
|
11
|
+
function pollingManagerSSFactory(params) {
|
|
12
|
+
var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
|
|
12
13
|
var log = settings.log;
|
|
13
|
-
var splitsSyncTask = splitsSyncTask_1.splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings);
|
|
14
|
-
var segmentsSyncTask = segmentsSyncTask_1.segmentsSyncTaskFactory(splitApi.fetchSegmentChanges, storage, readiness, settings);
|
|
14
|
+
var splitsSyncTask = (0, splitsSyncTask_1.splitsSyncTaskFactory)(splitApi.fetchSplitChanges, storage, readiness, settings);
|
|
15
|
+
var segmentsSyncTask = (0, segmentsSyncTask_1.segmentsSyncTaskFactory)(splitApi.fetchSegmentChanges, storage, readiness, settings);
|
|
15
16
|
return {
|
|
16
17
|
splitsSyncTask: splitsSyncTask,
|
|
17
18
|
segmentsSyncTask: segmentsSyncTask,
|
|
@@ -21,7 +22,7 @@ function pollingManagerSSFactory(splitApi, storage, readiness, settings) {
|
|
|
21
22
|
log.debug(constants_1.LOG_PREFIX_SYNC_POLLING + ("Splits will be refreshed each " + settings.scheduler.featuresRefreshRate + " millis"));
|
|
22
23
|
log.debug(constants_1.LOG_PREFIX_SYNC_POLLING + ("Segments will be refreshed each " + settings.scheduler.segmentsRefreshRate + " millis"));
|
|
23
24
|
var startingUp = splitsSyncTask.start();
|
|
24
|
-
if (thenable_1.thenable(startingUp)) {
|
|
25
|
+
if ((0, thenable_1.thenable)(startingUp)) {
|
|
25
26
|
startingUp.then(function () {
|
|
26
27
|
segmentsSyncTask.start();
|
|
27
28
|
});
|
|
@@ -8,6 +8,6 @@ var mySegmentsUpdater_1 = require("../updaters/mySegmentsUpdater");
|
|
|
8
8
|
* Creates a sync task that periodically executes a `mySegmentsUpdater` task
|
|
9
9
|
*/
|
|
10
10
|
function mySegmentsSyncTaskFactory(fetchMySegments, storage, readiness, settings, matchingKey) {
|
|
11
|
-
return syncTask_1.syncTaskFactory(settings.log, mySegmentsUpdater_1.mySegmentsUpdaterFactory(settings.log, mySegmentsFetcher_1.mySegmentsFetcherFactory(fetchMySegments
|
|
11
|
+
return (0, syncTask_1.syncTaskFactory)(settings.log, (0, mySegmentsUpdater_1.mySegmentsUpdaterFactory)(settings.log, (0, mySegmentsFetcher_1.mySegmentsFetcherFactory)(fetchMySegments), storage.splits, storage.segments, readiness.segments, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady, matchingKey), settings.scheduler.segmentsRefreshRate, 'mySegmentsUpdater');
|
|
12
12
|
}
|
|
13
13
|
exports.mySegmentsSyncTaskFactory = mySegmentsSyncTaskFactory;
|
|
@@ -8,6 +8,6 @@ var segmentChangesUpdater_1 = require("../updaters/segmentChangesUpdater");
|
|
|
8
8
|
* Creates a sync task that periodically executes a `segmentChangesUpdater` task
|
|
9
9
|
*/
|
|
10
10
|
function segmentsSyncTaskFactory(fetchSegmentChanges, storage, readiness, settings) {
|
|
11
|
-
return syncTask_1.syncTaskFactory(settings.log, segmentChangesUpdater_1.segmentChangesUpdaterFactory(settings.log, segmentChangesFetcher_1.segmentChangesFetcherFactory(fetchSegmentChanges), storage.segments, readiness), settings.scheduler.segmentsRefreshRate, 'segmentChangesUpdater');
|
|
11
|
+
return (0, syncTask_1.syncTaskFactory)(settings.log, (0, segmentChangesUpdater_1.segmentChangesUpdaterFactory)(settings.log, (0, segmentChangesFetcher_1.segmentChangesFetcherFactory)(fetchSegmentChanges), storage.segments, readiness), settings.scheduler.segmentsRefreshRate, 'segmentChangesUpdater');
|
|
12
12
|
}
|
|
13
13
|
exports.segmentsSyncTaskFactory = segmentsSyncTaskFactory;
|
|
@@ -8,6 +8,6 @@ var splitChangesUpdater_1 = require("../updaters/splitChangesUpdater");
|
|
|
8
8
|
* Creates a sync task that periodically executes a `splitChangesUpdater` task
|
|
9
9
|
*/
|
|
10
10
|
function splitsSyncTaskFactory(fetchSplitChanges, storage, readiness, settings) {
|
|
11
|
-
return syncTask_1.syncTaskFactory(settings.log, splitChangesUpdater_1.splitChangesUpdaterFactory(settings.log, splitChangesFetcher_1.splitChangesFetcherFactory(fetchSplitChanges), storage.splits, storage.segments, readiness.splits, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady), settings.scheduler.featuresRefreshRate, 'splitChangesUpdater');
|
|
11
|
+
return (0, syncTask_1.syncTaskFactory)(settings.log, (0, splitChangesUpdater_1.splitChangesUpdaterFactory)(settings.log, (0, splitChangesFetcher_1.splitChangesFetcherFactory)(fetchSplitChanges), storage.splits, storage.segments, readiness.splits, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady), settings.scheduler.featuresRefreshRate, 'splitChangesUpdater');
|
|
12
12
|
}
|
|
13
13
|
exports.splitsSyncTaskFactory = splitsSyncTaskFactory;
|
|
@@ -10,13 +10,13 @@ var constants_2 = require("../../../logger/constants");
|
|
|
10
10
|
* - updates `mySegmentsCache`
|
|
11
11
|
* - uses `segmentsEventEmitter` to emit events related to segments data updates
|
|
12
12
|
*/
|
|
13
|
-
function mySegmentsUpdaterFactory(log, mySegmentsFetcher, splitsCache, mySegmentsCache, segmentsEventEmitter, requestTimeoutBeforeReady, retriesOnFailureBeforeReady) {
|
|
13
|
+
function mySegmentsUpdaterFactory(log, mySegmentsFetcher, splitsCache, mySegmentsCache, segmentsEventEmitter, requestTimeoutBeforeReady, retriesOnFailureBeforeReady, matchingKey) {
|
|
14
14
|
var readyOnAlreadyExistentState = true;
|
|
15
15
|
var startingUp = true;
|
|
16
16
|
/** timeout and telemetry decorator for `splitChangesFetcher` promise */
|
|
17
17
|
function _promiseDecorator(promise) {
|
|
18
18
|
if (startingUp)
|
|
19
|
-
promise = timeout_1.timeout(requestTimeoutBeforeReady, promise);
|
|
19
|
+
promise = (0, timeout_1.timeout)(requestTimeoutBeforeReady, promise);
|
|
20
20
|
return promise;
|
|
21
21
|
// @TODO telemetry
|
|
22
22
|
// NOTE: We only collect metrics on startup.
|
|
@@ -54,7 +54,7 @@ function mySegmentsUpdaterFactory(log, mySegmentsFetcher, splitsCache, mySegment
|
|
|
54
54
|
// If segmentsData is provided, there is no need to fetch mySegments
|
|
55
55
|
new Promise(function (res) { updateSegments(segmentsData); res(true); }) :
|
|
56
56
|
// If not provided, fetch mySegments
|
|
57
|
-
mySegmentsFetcher(noCache, _promiseDecorator).then(function (segments) {
|
|
57
|
+
mySegmentsFetcher(matchingKey, noCache, _promiseDecorator).then(function (segments) {
|
|
58
58
|
// Only when we have downloaded segments completely, we should not keep retrying anymore
|
|
59
59
|
startingUp = false;
|
|
60
60
|
updateSegments(segments);
|
|
@@ -65,7 +65,7 @@ function segmentChangesUpdaterFactory(log, segmentChangesFetcher, segments, read
|
|
|
65
65
|
log.debug(constants_2.LOG_PREFIX_SYNC_SEGMENTS + "Processed " + segmentName + " with till = " + x.till + ". Added: " + x.added.length + ". Removed: " + x.removed.length);
|
|
66
66
|
});
|
|
67
67
|
// If at least one storage operation result is a promise, join all in a single promise.
|
|
68
|
-
if (results.some(function (result) { return thenable_1.thenable(result); }))
|
|
68
|
+
if (results.some(function (result) { return (0, thenable_1.thenable)(result); }))
|
|
69
69
|
return Promise.all(results).then(function () { return changeNumber; });
|
|
70
70
|
return changeNumber;
|
|
71
71
|
});
|
|
@@ -76,7 +76,7 @@ function segmentChangesUpdaterFactory(log, segmentChangesFetcher, segments, read
|
|
|
76
76
|
}
|
|
77
77
|
return Promise.all(updaters).then(function (shouldUpdateFlags) {
|
|
78
78
|
// if at least one segment fetch succeeded, mark segments ready
|
|
79
|
-
if (lang_1.findIndex(shouldUpdateFlags, function (v) { return v !== -1; }) !== -1 || readyOnAlreadyExistentState) {
|
|
79
|
+
if ((0, lang_1.findIndex)(shouldUpdateFlags, function (v) { return v !== -1; }) !== -1 || readyOnAlreadyExistentState) {
|
|
80
80
|
readyOnAlreadyExistentState = false;
|
|
81
81
|
if (readiness)
|
|
82
82
|
readiness.segments.emit(constants_1.SDK_SEGMENTS_ARRIVED);
|
|
@@ -51,7 +51,7 @@ function computeSplitsMutation(entries) {
|
|
|
51
51
|
}
|
|
52
52
|
return accum;
|
|
53
53
|
}, { added: [], removed: [], segments: [] });
|
|
54
|
-
computed.segments = sets_1.setToArray(segments);
|
|
54
|
+
computed.segments = (0, sets_1.setToArray)(segments);
|
|
55
55
|
return computed;
|
|
56
56
|
}
|
|
57
57
|
exports.computeSplitsMutation = computeSplitsMutation;
|
|
@@ -76,7 +76,7 @@ function splitChangesUpdaterFactory(log, splitChangesFetcher, splits, segments,
|
|
|
76
76
|
/** timeout and telemetry decorator for `splitChangesFetcher` promise */
|
|
77
77
|
function _promiseDecorator(promise) {
|
|
78
78
|
if (startingUp && requestTimeoutBeforeReady)
|
|
79
|
-
promise = timeout_1.timeout(requestTimeoutBeforeReady, promise);
|
|
79
|
+
promise = (0, timeout_1.timeout)(requestTimeoutBeforeReady, promise);
|
|
80
80
|
return promise;
|
|
81
81
|
// @TODO telemetry
|
|
82
82
|
// const collectMetrics = startingUp || isNode; // If we are on the browser, only collect this metric for first fetch. On node do it always.
|
|
@@ -16,16 +16,15 @@ function authenticateFactory(fetchAuth) {
|
|
|
16
16
|
* @param {string[] | undefined} userKeys set of user Keys to track MY_SEGMENTS_CHANGES. It is undefined for server-side API.
|
|
17
17
|
*/
|
|
18
18
|
return function authenticate(userKeys) {
|
|
19
|
-
|
|
20
|
-
return authPromise
|
|
19
|
+
return fetchAuth(userKeys)
|
|
21
20
|
.then(function (resp) { return resp.json(); })
|
|
22
21
|
.then(function (json) {
|
|
23
22
|
if (json.token) { // empty token when `"pushEnabled": false`
|
|
24
|
-
var decodedToken = jwt_1.decodeJWTtoken(json.token);
|
|
23
|
+
var decodedToken = (0, jwt_1.decodeJWTtoken)(json.token);
|
|
25
24
|
if (typeof decodedToken.iat !== 'number' || typeof decodedToken.exp !== 'number')
|
|
26
25
|
throw new Error('token properties "issuedAt" (iat) or "expiration" (exp) are missing or invalid');
|
|
27
26
|
var channels = JSON.parse(decodedToken['x-ably-capability']);
|
|
28
|
-
return objectAssign_1.objectAssign({
|
|
27
|
+
return (0, objectAssign_1.objectAssign)({
|
|
29
28
|
decodedToken: decodedToken,
|
|
30
29
|
channels: channels
|
|
31
30
|
}, json);
|
|
@@ -39,6 +38,6 @@ exports.authenticateFactory = authenticateFactory;
|
|
|
39
38
|
* Returns the hash of a given user key
|
|
40
39
|
*/
|
|
41
40
|
function hashUserKey(userKey) {
|
|
42
|
-
return base64_1.encodeToBase64(murmur3_1.hash(userKey, 0).toString());
|
|
41
|
+
return (0, base64_1.encodeToBase64)((0, murmur3_1.hash)(userKey, 0).toString());
|
|
43
42
|
}
|
|
44
43
|
exports.hashUserKey = hashUserKey;
|
|
@@ -13,7 +13,7 @@ var lang_1 = require("../../../utils/lang");
|
|
|
13
13
|
*/
|
|
14
14
|
function errorParser(error) {
|
|
15
15
|
// @ts-ignore
|
|
16
|
-
if (lang_1.isString(error.data))
|
|
16
|
+
if ((0, lang_1.isString)(error.data))
|
|
17
17
|
error.parsedData = JSON.parse(error.data); // cannot assign to read only property 'data'
|
|
18
18
|
return error;
|
|
19
19
|
}
|
|
@@ -25,7 +25,7 @@ function isRetryableError(error) {
|
|
|
25
25
|
* @param pushEmitter emitter for events related to streaming support
|
|
26
26
|
*/
|
|
27
27
|
function SSEHandlerFactory(log, pushEmitter) {
|
|
28
|
-
var notificationKeeper = NotificationKeeper_1.notificationKeeperFactory(pushEmitter);
|
|
28
|
+
var notificationKeeper = (0, NotificationKeeper_1.notificationKeeperFactory)(pushEmitter);
|
|
29
29
|
return {
|
|
30
30
|
handleOpen: function () {
|
|
31
31
|
notificationKeeper.handleOpen();
|
|
@@ -34,7 +34,7 @@ function SSEHandlerFactory(log, pushEmitter) {
|
|
|
34
34
|
handleError: function (error) {
|
|
35
35
|
var errorWithParsedData = error;
|
|
36
36
|
try {
|
|
37
|
-
errorWithParsedData = NotificationParser_1.errorParser(error);
|
|
37
|
+
errorWithParsedData = (0, NotificationParser_1.errorParser)(error);
|
|
38
38
|
}
|
|
39
39
|
catch (err) {
|
|
40
40
|
log.warn(constants_2.STREAMING_PARSING_ERROR_FAILS, [err]);
|
|
@@ -52,7 +52,7 @@ function SSEHandlerFactory(log, pushEmitter) {
|
|
|
52
52
|
handleMessage: function (message) {
|
|
53
53
|
var messageWithParsedData;
|
|
54
54
|
try {
|
|
55
|
-
messageWithParsedData = NotificationParser_1.messageParser(message);
|
|
55
|
+
messageWithParsedData = (0, NotificationParser_1.messageParser)(message);
|
|
56
56
|
if (!messageWithParsedData)
|
|
57
57
|
return; // Messages with empty data are ignored
|
|
58
58
|
}
|
|
@@ -10,7 +10,7 @@ var SegmentsUpdateWorker = /** @class */ (function () {
|
|
|
10
10
|
* @param {Object} segmentsCache segments data cache
|
|
11
11
|
* @param {Object} segmentsSyncTask task for syncing segments data
|
|
12
12
|
*/
|
|
13
|
-
function SegmentsUpdateWorker(
|
|
13
|
+
function SegmentsUpdateWorker(segmentsSyncTask, segmentsCache) {
|
|
14
14
|
this.segmentsCache = segmentsCache;
|
|
15
15
|
this.segmentsSyncTask = segmentsSyncTask;
|
|
16
16
|
this.maxChangeNumbers = {};
|
|
@@ -21,7 +21,7 @@ function StringToUint8Array(myString) {
|
|
|
21
21
|
* @throws if data string cannot be decoded, decompressed or the provided compression value is invalid (not 1 or 2)
|
|
22
22
|
*/
|
|
23
23
|
function decompress(data, compression) {
|
|
24
|
-
var compressData = base64_1.decodeFromBase64(data);
|
|
24
|
+
var compressData = (0, base64_1.decodeFromBase64)(data);
|
|
25
25
|
var binData = StringToUint8Array(compressData);
|
|
26
26
|
if (typeof decompress_1.algorithms === 'string')
|
|
27
27
|
throw new Error(decompress_1.algorithms);
|
|
@@ -22,10 +22,11 @@ var murmur3_64_1 = require("../../utils/murmur3/murmur3_64");
|
|
|
22
22
|
* - for server-side if key is not provided in settings.
|
|
23
23
|
* - for client-side, with support for multiple clients, if key is provided in settings
|
|
24
24
|
*/
|
|
25
|
-
function pushManagerFactory(
|
|
25
|
+
function pushManagerFactory(params, pollingManager) {
|
|
26
|
+
var settings = params.settings, storage = params.storage, splitApi = params.splitApi, readiness = params.readiness, platform = params.platform;
|
|
26
27
|
// `userKey` is the matching key of main client in client-side SDK.
|
|
27
28
|
// It can be used to check if running on client-side or server-side SDK.
|
|
28
|
-
var userKey = settings.core.key ? key_1.getMatching(settings.core.key) : undefined;
|
|
29
|
+
var userKey = settings.core.key ? (0, key_1.getMatching)(settings.core.key) : undefined;
|
|
29
30
|
var log = settings.log;
|
|
30
31
|
var sseClient;
|
|
31
32
|
try {
|
|
@@ -36,13 +37,14 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
36
37
|
log.warn(constants_2.STREAMING_FALLBACK, [e]);
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
39
|
-
var authenticate = AuthClient_1.authenticateFactory(fetchAuth);
|
|
40
|
+
var authenticate = (0, AuthClient_1.authenticateFactory)(splitApi.fetchAuth);
|
|
40
41
|
// init feedback loop
|
|
41
42
|
var pushEmitter = new platform.EventEmitter();
|
|
42
|
-
var sseHandler = SSEHandler_1.SSEHandlerFactory(log, pushEmitter);
|
|
43
|
+
var sseHandler = (0, SSEHandler_1.SSEHandlerFactory)(log, pushEmitter);
|
|
43
44
|
sseClient.setEventHandler(sseHandler);
|
|
44
45
|
// init workers
|
|
45
|
-
|
|
46
|
+
// MySegmentsUpdateWorker (client-side) are initiated in `add` method
|
|
47
|
+
var segmentsUpdateWorker = userKey ? undefined : new SegmentsUpdateWorker_1.SegmentsUpdateWorker(pollingManager.segmentsSyncTask, storage.segments);
|
|
46
48
|
// For server-side we pass the segmentsSyncTask, used by SplitsUpdateWorker to fetch new segments
|
|
47
49
|
var splitsUpdateWorker = new SplitsUpdateWorker_1.SplitsUpdateWorker(storage.splits, pollingManager.splitsSyncTask, readiness.splits, userKey ? undefined : pollingManager.segmentsSyncTask);
|
|
48
50
|
// [Only for client-side] map of hashes to user keys, to dispatch MY_SEGMENTS_UPDATE events to the corresponding MySegmentsUpdateWorker
|
|
@@ -50,11 +52,6 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
50
52
|
// [Only for client-side] map of user keys to their corresponding hash64 and MySegmentsUpdateWorkers.
|
|
51
53
|
// Hash64 is used to process MY_SEGMENTS_UPDATE_V2 events and dispatch actions to the corresponding MySegmentsUpdateWorker.
|
|
52
54
|
var clients = {};
|
|
53
|
-
if (userKey) {
|
|
54
|
-
var hash = AuthClient_1.hashUserKey(userKey);
|
|
55
|
-
userKeyHashes[hash] = userKey;
|
|
56
|
-
clients[userKey] = { hash64: murmur3_64_1.hash64(userKey), worker: segmentsUpdateWorker };
|
|
57
|
-
}
|
|
58
55
|
// [Only for client-side] variable to flag that a new client was added. It is needed to reconnect streaming.
|
|
59
56
|
var connectForNewClient = false;
|
|
60
57
|
// flag that indicates if `stop/disconnectPush` was called, either by the SyncManager, when the client is destroyed, or due to a PUSH_NONRETRYABLE_ERROR error.
|
|
@@ -141,7 +138,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
141
138
|
function stopWorkers() {
|
|
142
139
|
splitsUpdateWorker.backoff.reset();
|
|
143
140
|
if (userKey)
|
|
144
|
-
lang_1.forOwn(clients, function (_a) {
|
|
141
|
+
(0, lang_1.forOwn)(clients, function (_a) {
|
|
145
142
|
var worker = _a.worker;
|
|
146
143
|
return worker.backoff.reset();
|
|
147
144
|
});
|
|
@@ -197,15 +194,15 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
197
194
|
case types_1.UpdateStrategy.BoundedFetchRequest: {
|
|
198
195
|
var bitmap_1;
|
|
199
196
|
try {
|
|
200
|
-
bitmap_1 = mySegmentsV2utils_1.parseBitmap(parsedData.d, parsedData.c);
|
|
197
|
+
bitmap_1 = (0, mySegmentsV2utils_1.parseBitmap)(parsedData.d, parsedData.c);
|
|
201
198
|
}
|
|
202
199
|
catch (e) {
|
|
203
200
|
log.warn(constants_2.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['BoundedFetchRequest', e]);
|
|
204
201
|
break;
|
|
205
202
|
}
|
|
206
|
-
lang_1.forOwn(clients, function (_a) {
|
|
203
|
+
(0, lang_1.forOwn)(clients, function (_a) {
|
|
207
204
|
var hash64 = _a.hash64, worker = _a.worker;
|
|
208
|
-
if (mySegmentsV2utils_1.isInBitmap(bitmap_1, hash64.hex)) {
|
|
205
|
+
if ((0, mySegmentsV2utils_1.isInBitmap)(bitmap_1, hash64.hex)) {
|
|
209
206
|
worker.put(parsedData.changeNumber); // fetch mySegments
|
|
210
207
|
}
|
|
211
208
|
});
|
|
@@ -214,7 +211,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
214
211
|
case types_1.UpdateStrategy.KeyList: {
|
|
215
212
|
var keyList = void 0, added_1, removed_1;
|
|
216
213
|
try {
|
|
217
|
-
keyList = mySegmentsV2utils_1.parseKeyList(parsedData.d, parsedData.c);
|
|
214
|
+
keyList = (0, mySegmentsV2utils_1.parseKeyList)(parsedData.d, parsedData.c);
|
|
218
215
|
added_1 = new sets_1._Set(keyList.a);
|
|
219
216
|
removed_1 = new sets_1._Set(keyList.r);
|
|
220
217
|
}
|
|
@@ -222,7 +219,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
222
219
|
log.warn(constants_2.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['KeyList', e]);
|
|
223
220
|
break;
|
|
224
221
|
}
|
|
225
|
-
lang_1.forOwn(clients, function (_a) {
|
|
222
|
+
(0, lang_1.forOwn)(clients, function (_a) {
|
|
226
223
|
var hash64 = _a.hash64, worker = _a.worker;
|
|
227
224
|
var add = added_1.has(hash64.dec) ? true : removed_1.has(hash64.dec) ? false : undefined;
|
|
228
225
|
if (add !== undefined) {
|
|
@@ -239,7 +236,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
239
236
|
log.warn(constants_2.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['SegmentRemoval', 'No segment name was provided']);
|
|
240
237
|
break;
|
|
241
238
|
}
|
|
242
|
-
lang_1.forOwn(clients, function (_a) {
|
|
239
|
+
(0, lang_1.forOwn)(clients, function (_a) {
|
|
243
240
|
var worker = _a.worker;
|
|
244
241
|
return worker.put(parsedData.changeNumber, {
|
|
245
242
|
name: parsedData.segmentName,
|
|
@@ -249,7 +246,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
249
246
|
return;
|
|
250
247
|
}
|
|
251
248
|
// `UpdateStrategy.UnboundedFetchRequest` and fallbacks of other cases
|
|
252
|
-
lang_1.forOwn(clients, function (_a) {
|
|
249
|
+
(0, lang_1.forOwn)(clients, function (_a) {
|
|
253
250
|
var worker = _a.worker;
|
|
254
251
|
worker.put(parsedData.changeNumber);
|
|
255
252
|
});
|
|
@@ -258,40 +255,47 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
|
|
|
258
255
|
else {
|
|
259
256
|
pushEmitter.on(constants_1.SEGMENT_UPDATE, segmentsUpdateWorker.put);
|
|
260
257
|
}
|
|
261
|
-
return objectAssign_1.objectAssign(
|
|
258
|
+
return (0, objectAssign_1.objectAssign)(
|
|
262
259
|
// Expose Event Emitter functionality and Event constants
|
|
263
260
|
Object.create(pushEmitter), {
|
|
264
|
-
//
|
|
265
|
-
stop:
|
|
261
|
+
// Stop/pause push mode
|
|
262
|
+
stop: function () {
|
|
263
|
+
disconnectPush(); // `handleNonRetryableError` cannot be used as `stop`, because it emits PUSH_SUBSYSTEM_DOWN event, which starts polling.
|
|
264
|
+
if (userKey)
|
|
265
|
+
this.remove(userKey); // Necessary to properly resume streaming in client-side (e.g., RN SDK transition to foreground).
|
|
266
|
+
},
|
|
267
|
+
// Start/resume push mode
|
|
266
268
|
start: function () {
|
|
267
269
|
// Guard condition to avoid calling `connectPush` again if the `start` method is called multiple times or if push has been disabled.
|
|
268
270
|
if (disabled || disconnected === false)
|
|
269
271
|
return;
|
|
270
272
|
disconnected = false;
|
|
271
|
-
|
|
272
|
-
|
|
273
|
+
if (userKey)
|
|
274
|
+
this.add(userKey, pollingManager.segmentsSyncTask); // client-side
|
|
275
|
+
else
|
|
276
|
+
setTimeout(connectPush); // server-side runs in next cycle as in client-side, for consistency with client-side
|
|
273
277
|
},
|
|
274
278
|
// [Only for client-side]
|
|
275
279
|
add: function (userKey, mySegmentsSyncTask) {
|
|
276
|
-
|
|
277
|
-
var hash = AuthClient_1.hashUserKey(userKey);
|
|
280
|
+
var hash = (0, AuthClient_1.hashUserKey)(userKey);
|
|
278
281
|
if (!userKeyHashes[hash]) {
|
|
279
282
|
userKeyHashes[hash] = userKey;
|
|
283
|
+
clients[userKey] = { hash64: (0, murmur3_64_1.hash64)(userKey), worker: new MySegmentsUpdateWorker_1.MySegmentsUpdateWorker(mySegmentsSyncTask) };
|
|
280
284
|
connectForNewClient = true; // we must reconnect on start, to listen the channel for the new user key
|
|
285
|
+
// Reconnects in case of a new client.
|
|
286
|
+
// Run in next event-loop cycle to save authentication calls
|
|
287
|
+
// in case multiple clients are created in the current cycle.
|
|
288
|
+
setTimeout(function checkForReconnect() {
|
|
289
|
+
if (connectForNewClient) {
|
|
290
|
+
connectForNewClient = false;
|
|
291
|
+
connectPush();
|
|
292
|
+
}
|
|
293
|
+
}, 0);
|
|
281
294
|
}
|
|
282
|
-
// Reconnects in case of a new client.
|
|
283
|
-
// Run in next event-loop cycle to save authentication calls
|
|
284
|
-
// in case the user is creating several clients in the current cycle.
|
|
285
|
-
setTimeout(function checkForReconnect() {
|
|
286
|
-
if (connectForNewClient) {
|
|
287
|
-
connectForNewClient = false;
|
|
288
|
-
connectPush();
|
|
289
|
-
}
|
|
290
|
-
}, 0);
|
|
291
295
|
},
|
|
292
296
|
// [Only for client-side]
|
|
293
297
|
remove: function (userKey) {
|
|
294
|
-
var hash = AuthClient_1.hashUserKey(userKey);
|
|
298
|
+
var hash = (0, AuthClient_1.hashUserKey)(userKey);
|
|
295
299
|
delete userKeyHashes[hash];
|
|
296
300
|
delete clients[userKey];
|
|
297
301
|
}
|
|
@@ -8,7 +8,7 @@ var constants_1 = require("../../logger/constants");
|
|
|
8
8
|
*/
|
|
9
9
|
function eventsSyncTaskFactory(log, postEventsBulk, eventsCache, eventsPushRate, eventsFirstPushWindow, latencyTracker) {
|
|
10
10
|
// don't retry events.
|
|
11
|
-
var syncTask = submitterSyncTask_1.submitterSyncTaskFactory(log, postEventsBulk, eventsCache, eventsPushRate, 'queued events', latencyTracker);
|
|
11
|
+
var syncTask = (0, submitterSyncTask_1.submitterSyncTaskFactory)(log, postEventsBulk, eventsCache, eventsPushRate, 'queued events', latencyTracker);
|
|
12
12
|
// Set a timer for the first push of events,
|
|
13
13
|
if (eventsFirstPushWindow > 0) {
|
|
14
14
|
var stopEventPublisherTimeout_1;
|
|
@@ -30,6 +30,6 @@ var IMPRESSIONS_COUNT_RATE = 1800000; // 30 minutes
|
|
|
30
30
|
*/
|
|
31
31
|
function impressionCountsSyncTaskFactory(log, postTestImpressionsCount, impressionCountsCache, latencyTracker) {
|
|
32
32
|
// retry impressions counts only once.
|
|
33
|
-
return submitterSyncTask_1.submitterSyncTaskFactory(log, postTestImpressionsCount, impressionCountsCache, IMPRESSIONS_COUNT_RATE, 'impression counts', latencyTracker, fromImpressionCountsCollector, 1);
|
|
33
|
+
return (0, submitterSyncTask_1.submitterSyncTaskFactory)(log, postTestImpressionsCount, impressionCountsCache, IMPRESSIONS_COUNT_RATE, 'impression counts', latencyTracker, fromImpressionCountsCollector, 1);
|
|
34
34
|
}
|
|
35
35
|
exports.impressionCountsSyncTaskFactory = impressionCountsSyncTaskFactory;
|
|
@@ -7,10 +7,10 @@ var submitterSyncTask_1 = require("./submitterSyncTask");
|
|
|
7
7
|
* Converts `impressions` data from cache into request payload.
|
|
8
8
|
*/
|
|
9
9
|
function fromImpressionsCollector(sendLabels, data) {
|
|
10
|
-
var groupedByFeature = lang_1.groupBy(data, 'feature');
|
|
10
|
+
var groupedByFeature = (0, lang_1.groupBy)(data, 'feature');
|
|
11
11
|
var dto = [];
|
|
12
12
|
// using forOwn instead of for...in since the last also iterates over prototype enumerables
|
|
13
|
-
lang_1.forOwn(groupedByFeature, function (value, name) {
|
|
13
|
+
(0, lang_1.forOwn)(groupedByFeature, function (value, name) {
|
|
14
14
|
dto.push({
|
|
15
15
|
f: name,
|
|
16
16
|
i: value.map(function (entry) {
|
|
@@ -36,6 +36,6 @@ exports.fromImpressionsCollector = fromImpressionsCollector;
|
|
|
36
36
|
function impressionsSyncTaskFactory(log, postTestImpressionsBulk, impressionsCache, impressionsRefreshRate, sendLabels, latencyTracker) {
|
|
37
37
|
if (sendLabels === void 0) { sendLabels = false; }
|
|
38
38
|
// retry impressions only once.
|
|
39
|
-
return submitterSyncTask_1.submitterSyncTaskFactory(log, postTestImpressionsBulk, impressionsCache, impressionsRefreshRate, 'impressions', latencyTracker, fromImpressionsCollector.bind(undefined, sendLabels), 1);
|
|
39
|
+
return (0, submitterSyncTask_1.submitterSyncTaskFactory)(log, postTestImpressionsBulk, impressionsCache, impressionsRefreshRate, 'impressions', latencyTracker, fromImpressionsCollector.bind(undefined, sendLabels), 1);
|
|
40
40
|
}
|
|
41
41
|
exports.impressionsSyncTaskFactory = impressionsSyncTaskFactory;
|
|
@@ -7,7 +7,7 @@ var submitterSyncTask_1 = require("./submitterSyncTask");
|
|
|
7
7
|
function fromCache(propertyName) {
|
|
8
8
|
return function (data) {
|
|
9
9
|
var result = [];
|
|
10
|
-
lang_1.forOwn(data, function (value, key) {
|
|
10
|
+
(0, lang_1.forOwn)(data, function (value, key) {
|
|
11
11
|
var _a;
|
|
12
12
|
result.push((_a = { name: key }, _a[propertyName] = value, _a));
|
|
13
13
|
});
|
|
@@ -18,7 +18,7 @@ function fromCache(propertyName) {
|
|
|
18
18
|
* Sync task that periodically posts telemetry counts
|
|
19
19
|
*/
|
|
20
20
|
function countsSyncTaskFactory(log, postMetricsCounters, countsCache, metricsRefreshRate, latencyTracker) {
|
|
21
|
-
return submitterSyncTask_1.submitterSyncTaskFactory(log, postMetricsCounters, countsCache, metricsRefreshRate, 'count metrics', latencyTracker, fromCache('delta'));
|
|
21
|
+
return (0, submitterSyncTask_1.submitterSyncTaskFactory)(log, postMetricsCounters, countsCache, metricsRefreshRate, 'count metrics', latencyTracker, fromCache('delta'));
|
|
22
22
|
}
|
|
23
23
|
exports.countsSyncTaskFactory = countsSyncTaskFactory;
|
|
24
24
|
/**
|
|
@@ -26,6 +26,6 @@ exports.countsSyncTaskFactory = countsSyncTaskFactory;
|
|
|
26
26
|
*/
|
|
27
27
|
function latenciesSyncTaskFactory(log, postMetricsLatencies, latenciesCache, metricsRefreshRate, latencyTracker) {
|
|
28
28
|
// don't retry metrics.
|
|
29
|
-
return submitterSyncTask_1.submitterSyncTaskFactory(log, postMetricsLatencies, latenciesCache, metricsRefreshRate, 'latency metrics', latencyTracker, fromCache('latencies'), 0, true);
|
|
29
|
+
return (0, submitterSyncTask_1.submitterSyncTaskFactory)(log, postMetricsLatencies, latenciesCache, metricsRefreshRate, 'latency metrics', latencyTracker, fromCache('latencies'), 0, true);
|
|
30
30
|
}
|
|
31
31
|
exports.latenciesSyncTaskFactory = latenciesSyncTaskFactory;
|
|
@@ -5,15 +5,16 @@ var syncTaskComposite_1 = require("../syncTaskComposite");
|
|
|
5
5
|
var eventsSyncTask_1 = require("./eventsSyncTask");
|
|
6
6
|
var impressionsSyncTask_1 = require("./impressionsSyncTask");
|
|
7
7
|
var impressionCountsSyncTask_1 = require("./impressionCountsSyncTask");
|
|
8
|
-
function submitterManagerFactory(
|
|
8
|
+
function submitterManagerFactory(params) {
|
|
9
|
+
var settings = params.settings, storage = params.storage, splitApi = params.splitApi;
|
|
9
10
|
var log = settings.log;
|
|
10
11
|
var submitters = [
|
|
11
|
-
impressionsSyncTask_1.impressionsSyncTaskFactory(log, splitApi.postTestImpressionsBulk, storage.impressions, settings.scheduler.impressionsRefreshRate, settings.core.labelsEnabled),
|
|
12
|
-
eventsSyncTask_1.eventsSyncTaskFactory(log, splitApi.postEventsBulk, storage.events, settings.scheduler.eventsPushRate, settings.startup.eventsFirstPushWindow)
|
|
12
|
+
(0, impressionsSyncTask_1.impressionsSyncTaskFactory)(log, splitApi.postTestImpressionsBulk, storage.impressions, settings.scheduler.impressionsRefreshRate, settings.core.labelsEnabled),
|
|
13
|
+
(0, eventsSyncTask_1.eventsSyncTaskFactory)(log, splitApi.postEventsBulk, storage.events, settings.scheduler.eventsPushRate, settings.startup.eventsFirstPushWindow)
|
|
13
14
|
// @TODO add telemetry submitter
|
|
14
15
|
];
|
|
15
16
|
if (storage.impressionCounts)
|
|
16
|
-
submitters.push(impressionCountsSyncTask_1.impressionCountsSyncTaskFactory(log, splitApi.postTestImpressionsCount, storage.impressionCounts));
|
|
17
|
-
return syncTaskComposite_1.syncTaskComposite(submitters);
|
|
17
|
+
submitters.push((0, impressionCountsSyncTask_1.impressionCountsSyncTaskFactory)(log, splitApi.postTestImpressionsCount, storage.impressionCounts));
|
|
18
|
+
return (0, syncTaskComposite_1.syncTaskComposite)(submitters);
|
|
18
19
|
}
|
|
19
20
|
exports.submitterManagerFactory = submitterManagerFactory;
|
|
@@ -39,6 +39,6 @@ function submitterSyncTaskFactory(log, postClient, sourceCache, postRate, dataNa
|
|
|
39
39
|
// if latencyTracker provided, attach stop callback to postEventsPromise
|
|
40
40
|
return latencyTrackerStop ? postPromise.then(latencyTrackerStop).catch(latencyTrackerStop) : postPromise;
|
|
41
41
|
}
|
|
42
|
-
return syncTask_1.syncTaskFactory(log, postData, postRate, dataName + ' submitter');
|
|
42
|
+
return (0, syncTask_1.syncTaskFactory)(log, postData, postRate, dataName + ' submitter');
|
|
43
43
|
}
|
|
44
44
|
exports.submitterSyncTaskFactory = submitterSyncTaskFactory;
|
|
@@ -16,26 +16,25 @@ function syncManagerOnlineFactory(pollingManagerFactory, pushManagerFactory) {
|
|
|
16
16
|
/**
|
|
17
17
|
* SyncManager factory for modular SDK
|
|
18
18
|
*/
|
|
19
|
-
return function (
|
|
20
|
-
var
|
|
21
|
-
var log = settings.log;
|
|
19
|
+
return function (params) {
|
|
20
|
+
var _a = params.settings, log = _a.log, streamingEnabled = _a.streamingEnabled;
|
|
22
21
|
/** Polling Manager */
|
|
23
|
-
var pollingManager = pollingManagerFactory && pollingManagerFactory(
|
|
22
|
+
var pollingManager = pollingManagerFactory && pollingManagerFactory(params);
|
|
24
23
|
/** Push Manager */
|
|
25
|
-
var pushManager =
|
|
26
|
-
pushManagerFactory(
|
|
24
|
+
var pushManager = streamingEnabled && pollingManager && pushManagerFactory ?
|
|
25
|
+
pushManagerFactory(params, pollingManager) :
|
|
27
26
|
undefined;
|
|
28
27
|
/** Submitter Manager */
|
|
29
28
|
// It is not inyected as push and polling managers, because at the moment it is required
|
|
30
|
-
var submitter = submitterManager_1.submitterManagerFactory(
|
|
29
|
+
var submitter = (0, submitterManager_1.submitterManagerFactory)(params);
|
|
31
30
|
/** Sync Manager logic */
|
|
32
31
|
function startPolling() {
|
|
33
|
-
if (
|
|
34
|
-
log.info(constants_2.
|
|
35
|
-
pollingManager.start();
|
|
32
|
+
if (pollingManager.isRunning()) {
|
|
33
|
+
log.info(constants_2.SYNC_CONTINUE_POLLING);
|
|
36
34
|
}
|
|
37
35
|
else {
|
|
38
|
-
log.info(constants_2.
|
|
36
|
+
log.info(constants_2.SYNC_START_POLLING);
|
|
37
|
+
pollingManager.start();
|
|
39
38
|
}
|
|
40
39
|
}
|
|
41
40
|
function stopPollingAndSyncAll() {
|
|
@@ -73,7 +72,8 @@ function syncManagerOnlineFactory(pollingManagerFactory, pushManagerFactory) {
|
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
// start periodic data recording (events, impressions, telemetry).
|
|
76
|
-
|
|
75
|
+
if (submitter)
|
|
76
|
+
submitter.start();
|
|
77
77
|
running = true;
|
|
78
78
|
},
|
|
79
79
|
/**
|