@splitsoftware/splitio-commons 1.2.0 → 1.2.1-rc.3

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.
Files changed (281) hide show
  1. package/cjs/evaluator/Engine.js +6 -6
  2. package/cjs/evaluator/combiners/and.js +1 -1
  3. package/cjs/evaluator/combiners/ifelseif.js +2 -2
  4. package/cjs/evaluator/condition/engineUtils.js +2 -2
  5. package/cjs/evaluator/condition/index.js +4 -4
  6. package/cjs/evaluator/index.js +5 -5
  7. package/cjs/evaluator/matchers/cont_all.js +1 -1
  8. package/cjs/evaluator/matchers/cont_any.js +1 -1
  9. package/cjs/evaluator/matchers/cont_str.js +1 -1
  10. package/cjs/evaluator/matchers/dependency.js +1 -1
  11. package/cjs/evaluator/matchers/eq_set.js +1 -1
  12. package/cjs/evaluator/matchers/ew.js +3 -3
  13. package/cjs/evaluator/matchers/part_of.js +1 -1
  14. package/cjs/evaluator/matchers/segment.js +1 -1
  15. package/cjs/evaluator/matchers/sw.js +1 -1
  16. package/cjs/evaluator/matchers/whitelist.js +1 -1
  17. package/cjs/evaluator/matchersTransform/index.js +12 -12
  18. package/cjs/evaluator/parser/index.js +6 -6
  19. package/cjs/evaluator/treatments/index.js +1 -1
  20. package/cjs/evaluator/value/index.js +1 -1
  21. package/cjs/evaluator/value/sanitize.js +4 -4
  22. package/cjs/integrations/browser.js +3 -3
  23. package/cjs/integrations/ga/GaToSplit.js +14 -14
  24. package/cjs/integrations/ga/GoogleAnalyticsToSplit.js +5 -3
  25. package/cjs/integrations/ga/SplitToGa.js +1 -1
  26. package/cjs/integrations/ga/SplitToGoogleAnalytics.js +4 -2
  27. package/cjs/listeners/browser.js +1 -1
  28. package/cjs/listeners/node.js +1 -1
  29. package/cjs/logger/constants.js +3 -1
  30. package/cjs/logger/index.js +2 -2
  31. package/cjs/logger/messages/debug.js +1 -1
  32. package/cjs/logger/messages/error.js +2 -2
  33. package/cjs/logger/messages/info.js +5 -5
  34. package/cjs/logger/messages/warn.js +1 -1
  35. package/cjs/logger/sdkLogger.js +1 -1
  36. package/cjs/readiness/readinessManager.js +2 -2
  37. package/cjs/readiness/sdkReadinessManager.js +4 -4
  38. package/cjs/sdkClient/client.js +11 -10
  39. package/cjs/sdkClient/clientAttributesDecoration.js +4 -4
  40. package/cjs/sdkClient/clientCS.js +4 -3
  41. package/cjs/sdkClient/clientInputValidation.js +14 -14
  42. package/cjs/sdkClient/sdkClient.js +3 -3
  43. package/cjs/sdkClient/sdkClientMethod.js +1 -1
  44. package/cjs/sdkClient/sdkClientMethodCS.js +6 -6
  45. package/cjs/sdkClient/sdkClientMethodCSWithTT.js +8 -8
  46. package/cjs/sdkFactory/index.js +8 -8
  47. package/cjs/sdkManager/index.js +11 -11
  48. package/cjs/services/splitApi.js +3 -2
  49. package/cjs/services/splitHttpClient.js +3 -3
  50. package/cjs/storages/KeyBuilder.js +2 -2
  51. package/cjs/storages/KeyBuilderCS.js +2 -2
  52. package/cjs/storages/KeyBuilderSS.js +1 -1
  53. package/cjs/storages/findLatencyIndex.js +1 -1
  54. package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -1
  55. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +12 -12
  56. package/cjs/storages/inLocalStorage/index.js +3 -3
  57. package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
  58. package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +1 -1
  59. package/cjs/storages/inMemory/LatenciesCacheInMemory.js +1 -1
  60. package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +1 -1
  61. package/cjs/storages/inMemory/SegmentsCacheInMemory.js +2 -2
  62. package/cjs/storages/inMemory/SplitsCacheInMemory.js +5 -5
  63. package/cjs/storages/inRedis/LatenciesCacheInRedis.js +1 -1
  64. package/cjs/storages/inRedis/RedisAdapter.js +16 -10
  65. package/cjs/storages/inRedis/SegmentsCacheInRedis.js +1 -1
  66. package/cjs/storages/inRedis/SplitsCacheInRedis.js +3 -3
  67. package/cjs/storages/inRedis/index.js +1 -1
  68. package/cjs/storages/pluggable/SegmentsCachePluggable.js +1 -1
  69. package/cjs/storages/pluggable/SplitsCachePluggable.js +3 -3
  70. package/cjs/storages/pluggable/inMemoryWrapper.js +4 -4
  71. package/cjs/storages/pluggable/index.js +4 -4
  72. package/cjs/sync/offline/LocalhostFromFile.js +1 -1
  73. package/cjs/sync/offline/LocalhostFromObject.js +1 -1
  74. package/cjs/sync/offline/splitsParser/parseCondition.js +1 -1
  75. package/cjs/sync/offline/splitsParser/splitsParserFromFile.js +13 -13
  76. package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +3 -3
  77. package/cjs/sync/offline/syncManagerOffline.js +1 -1
  78. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +2 -2
  79. package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +2 -2
  80. package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +1 -1
  81. package/cjs/sync/polling/pollingManagerCS.js +8 -7
  82. package/cjs/sync/polling/pollingManagerSS.js +5 -4
  83. package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +1 -1
  84. package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +1 -1
  85. package/cjs/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  86. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +3 -3
  87. package/cjs/sync/polling/updaters/segmentChangesUpdater.js +2 -2
  88. package/cjs/sync/polling/updaters/splitChangesUpdater.js +2 -2
  89. package/cjs/sync/streaming/AuthClient/index.js +4 -5
  90. package/cjs/sync/streaming/SSEHandler/NotificationParser.js +1 -1
  91. package/cjs/sync/streaming/SSEHandler/index.js +3 -3
  92. package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +1 -1
  93. package/cjs/sync/streaming/mySegmentsV2utils.js +1 -1
  94. package/cjs/sync/streaming/pushManager.js +46 -35
  95. package/cjs/sync/submitters/eventsSyncTask.js +1 -1
  96. package/cjs/sync/submitters/impressionCountsSyncTask.js +1 -1
  97. package/cjs/sync/submitters/impressionsSyncTask.js +3 -3
  98. package/cjs/sync/submitters/metricsSyncTask.js +3 -3
  99. package/cjs/sync/submitters/submitterManager.js +6 -5
  100. package/cjs/sync/submitters/submitterSyncTask.js +1 -1
  101. package/cjs/sync/syncManagerOnline.js +12 -12
  102. package/cjs/trackers/eventTracker.js +3 -3
  103. package/cjs/trackers/impressionObserver/impressionObserverCS.js +1 -1
  104. package/cjs/trackers/impressionObserver/impressionObserverSS.js +1 -1
  105. package/cjs/trackers/impressionsTracker.js +3 -3
  106. package/cjs/utils/MinEvents.js +2 -1
  107. package/cjs/utils/inputValidation/apiKey.js +1 -1
  108. package/cjs/utils/inputValidation/attribute.js +4 -4
  109. package/cjs/utils/inputValidation/attributes.js +2 -2
  110. package/cjs/utils/inputValidation/event.js +1 -1
  111. package/cjs/utils/inputValidation/eventProperties.js +7 -5
  112. package/cjs/utils/inputValidation/eventValue.js +1 -1
  113. package/cjs/utils/inputValidation/key.js +6 -5
  114. package/cjs/utils/inputValidation/preloadedData.js +8 -8
  115. package/cjs/utils/inputValidation/split.js +1 -1
  116. package/cjs/utils/inputValidation/splits.js +2 -2
  117. package/cjs/utils/inputValidation/trafficType.js +1 -1
  118. package/cjs/utils/inputValidation/trafficTypeExistance.js +1 -1
  119. package/cjs/utils/jwt/index.js +1 -1
  120. package/cjs/utils/key/index.js +3 -3
  121. package/cjs/utils/lang/index.js +2 -14
  122. package/cjs/utils/murmur3/common.js +1 -1
  123. package/cjs/utils/murmur3/legacy.js +44 -0
  124. package/cjs/utils/murmur3/murmur3.js +10 -10
  125. package/cjs/utils/murmur3/murmur3_128.js +1 -1
  126. package/cjs/utils/murmur3/murmur3_128_x86.js +37 -37
  127. package/cjs/utils/murmur3/murmur3_64.js +1 -1
  128. package/cjs/utils/promise/timeout.js +1 -1
  129. package/cjs/utils/settingsValidation/index.js +5 -10
  130. package/cjs/utils/settingsValidation/integrations/configurable.js +1 -1
  131. package/cjs/utils/settingsValidation/integrations/pluggable.js +1 -1
  132. package/cjs/utils/settingsValidation/localhost/builtin.js +2 -2
  133. package/cjs/utils/settingsValidation/logger/builtinLogger.js +3 -3
  134. package/cjs/utils/settingsValidation/logger/commons.js +1 -1
  135. package/cjs/utils/settingsValidation/logger/pluggableLogger.js +1 -1
  136. package/cjs/utils/settingsValidation/runtime/browser.js +10 -0
  137. package/cjs/utils/settingsValidation/runtime/node.js +22 -0
  138. package/cjs/utils/settingsValidation/splitFilters.js +1 -1
  139. package/cjs/utils/settingsValidation/storage/storageCS.js +1 -1
  140. package/cjs/utils/timeTracker/index.js +3 -3
  141. package/esm/evaluator/matchers/ew.js +4 -4
  142. package/esm/integrations/ga/GoogleAnalyticsToSplit.js +4 -2
  143. package/esm/integrations/ga/SplitToGoogleAnalytics.js +4 -2
  144. package/esm/logger/messages/error.js +1 -1
  145. package/esm/logger/messages/info.js +4 -4
  146. package/esm/sdkClient/client.js +2 -1
  147. package/esm/sdkClient/clientCS.js +2 -1
  148. package/esm/services/splitApi.js +2 -1
  149. package/esm/services/splitHttpClient.js +1 -1
  150. package/esm/storages/inRedis/RedisAdapter.js +7 -1
  151. package/esm/sync/offline/splitsParser/splitsParserFromFile.js +1 -1
  152. package/esm/sync/polling/fetchers/mySegmentsFetcher.js +2 -2
  153. package/esm/sync/polling/fetchers/segmentChangesFetcher.js +2 -2
  154. package/esm/sync/polling/pollingManagerCS.js +2 -1
  155. package/esm/sync/polling/pollingManagerSS.js +2 -1
  156. package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +1 -1
  157. package/esm/sync/polling/updaters/mySegmentsUpdater.js +2 -2
  158. package/esm/sync/streaming/AuthClient/index.js +1 -2
  159. package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +1 -1
  160. package/esm/sync/streaming/pushManager.js +34 -23
  161. package/esm/sync/submitters/submitterManager.js +2 -1
  162. package/esm/sync/syncManagerOnline.js +12 -12
  163. package/esm/utils/inputValidation/eventProperties.js +4 -2
  164. package/esm/utils/inputValidation/key.js +2 -1
  165. package/esm/utils/lang/index.js +2 -13
  166. package/esm/utils/murmur3/legacy.js +39 -0
  167. package/esm/utils/promise/timeout.js +1 -1
  168. package/esm/utils/settingsValidation/index.js +1 -6
  169. package/esm/utils/settingsValidation/runtime/browser.js +6 -0
  170. package/esm/utils/settingsValidation/runtime/node.js +17 -0
  171. package/package.json +8 -7
  172. package/src/evaluator/matchers/ew.ts +4 -4
  173. package/src/integrations/ga/GoogleAnalyticsToSplit.ts +7 -4
  174. package/src/integrations/ga/SplitToGoogleAnalytics.ts +7 -4
  175. package/src/integrations/types.ts +5 -0
  176. package/src/logger/.DS_Store +0 -0
  177. package/src/logger/messages/error.ts +1 -1
  178. package/src/logger/messages/info.ts +4 -4
  179. package/src/logger/types.ts +4 -0
  180. package/src/sdkClient/client.ts +2 -1
  181. package/src/sdkClient/clientCS.ts +3 -1
  182. package/src/services/splitHttpClient.ts +1 -1
  183. package/src/storages/types.ts +1 -1
  184. package/src/sync/offline/splitsParser/splitsParserFromFile.ts +1 -1
  185. package/src/sync/polling/fetchers/mySegmentsFetcher.ts +2 -1
  186. package/src/sync/polling/fetchers/types.ts +1 -0
  187. package/src/sync/polling/pollingManagerCS.ts +3 -6
  188. package/src/sync/polling/pollingManagerSS.ts +3 -8
  189. package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +2 -1
  190. package/src/sync/polling/types.ts +0 -12
  191. package/src/sync/polling/updaters/mySegmentsUpdater.ts +2 -1
  192. package/src/sync/streaming/AuthClient/index.ts +1 -2
  193. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  194. package/src/sync/streaming/pushManager.ts +39 -37
  195. package/src/sync/streaming/types.ts +5 -25
  196. package/src/sync/submitters/submitterManager.ts +4 -8
  197. package/src/sync/syncManagerOnline.ts +16 -22
  198. package/src/types.ts +5 -1
  199. package/src/utils/inputValidation/eventProperties.ts +4 -2
  200. package/src/utils/lang/index.ts +0 -14
  201. package/src/utils/murmur3/legacy.ts +48 -0
  202. package/src/utils/promise/timeout.ts +1 -1
  203. package/src/utils/settingsValidation/index.ts +1 -6
  204. package/src/utils/settingsValidation/runtime/browser.ts +8 -0
  205. package/src/utils/settingsValidation/runtime/node.ts +22 -0
  206. package/src/utils/settingsValidation/types.ts +6 -6
  207. package/types/integrations/ga/GaToSplitPlugin.d.ts +3 -0
  208. package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +2 -2
  209. package/types/integrations/ga/SplitToGaPlugin.d.ts +4 -0
  210. package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +2 -3
  211. package/types/integrations/types.d.ts +4 -0
  212. package/types/logger/browser/{DebugLogger.d.ts → debugLogger.d.ts} +0 -0
  213. package/types/logger/browser/{ErrorLogger.d.ts → errorLogger.d.ts} +0 -0
  214. package/types/logger/browser/{InfoLogger.d.ts → infoLogger.d.ts} +0 -0
  215. package/types/logger/browser/{WarnLogger.d.ts → warnLogger.d.ts} +0 -0
  216. package/types/logger/codes.d.ts +2 -0
  217. package/types/logger/codesConstants.d.ts +117 -0
  218. package/types/logger/codesConstantsBrowser.d.ts +2 -0
  219. package/types/logger/codesConstantsNode.d.ts +14 -0
  220. package/types/logger/codesDebug.d.ts +1 -0
  221. package/types/logger/codesDebugBrowser.d.ts +1 -0
  222. package/types/logger/codesDebugNode.d.ts +1 -0
  223. package/types/logger/codesError.d.ts +1 -0
  224. package/types/logger/codesErrorNode.d.ts +1 -0
  225. package/types/logger/codesInfo.d.ts +1 -0
  226. package/types/logger/codesWarn.d.ts +1 -0
  227. package/types/logger/codesWarnNode.d.ts +1 -0
  228. package/types/logger/debugLogger.d.ts +2 -0
  229. package/types/logger/errorLogger.d.ts +2 -0
  230. package/types/logger/infoLogger.d.ts +2 -0
  231. package/types/logger/messages/debugBrowser.d.ts +1 -0
  232. package/types/logger/messages/debugNode.d.ts +1 -0
  233. package/types/logger/messages/errorNode.d.ts +1 -0
  234. package/types/logger/messages/warnNode.d.ts +1 -0
  235. package/types/logger/noopLogger.d.ts +2 -0
  236. package/types/logger/types.d.ts +4 -0
  237. package/types/logger/warnLogger.d.ts +2 -0
  238. package/types/sdkClient/clientAttributesDecoration.d.ts +1 -1
  239. package/types/sdkManager/sdkManagerMethod.d.ts +6 -0
  240. package/types/storages/getRegisteredSegments.d.ts +10 -0
  241. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +51 -0
  242. package/types/storages/inMemory/index.d.ts +10 -0
  243. package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +0 -0
  244. package/types/storages/parseSegments.d.ts +6 -0
  245. package/types/storages/pluggable/TelemetryCachePluggable.d.ts +2 -0
  246. package/types/storages/types.d.ts +1 -1
  247. package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +1 -1
  248. package/types/sync/polling/fetchers/types.d.ts +1 -1
  249. package/types/sync/polling/pollingManagerCS.d.ts +2 -5
  250. package/types/sync/polling/pollingManagerSS.d.ts +2 -5
  251. package/types/sync/polling/syncTasks/splitsSyncTask.copy.d.ts +35 -0
  252. package/types/sync/polling/syncTasks/splitsSyncTask.morelikeoriginal.d.ts +35 -0
  253. package/types/sync/polling/types.d.ts +0 -11
  254. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +1 -1
  255. package/types/sync/streaming/AuthClient/indexV1.d.ts +12 -0
  256. package/types/sync/streaming/AuthClient/indexV2.d.ts +8 -0
  257. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -1
  258. package/types/sync/streaming/pushManager.d.ts +3 -7
  259. package/types/sync/streaming/pushManagerCS.d.ts +1 -0
  260. package/types/sync/streaming/pushManagerNoUsers.d.ts +13 -0
  261. package/types/sync/streaming/pushManagerSS.d.ts +1 -0
  262. package/types/sync/streaming/types.d.ts +3 -23
  263. package/types/sync/submitters/submitterManager.d.ts +2 -4
  264. package/types/sync/submitters/telemetrySyncTask.d.ts +17 -0
  265. package/types/sync/syncManagerFromFile.d.ts +2 -0
  266. package/types/sync/syncManagerFromObject.d.ts +2 -0
  267. package/types/sync/syncManagerOffline.d.ts +9 -0
  268. package/types/sync/syncManagerOnline.d.ts +3 -3
  269. package/types/trackers/telemetryRecorder.d.ts +0 -0
  270. package/types/types.d.ts +1 -0
  271. package/types/utils/EventEmitter.d.ts +4 -0
  272. package/types/utils/lang/errors.d.ts +10 -0
  273. package/types/utils/lang/index.d.ts +0 -4
  274. package/types/utils/murmur3/commons.d.ts +12 -0
  275. package/types/utils/murmur3/legacy.d.ts +2 -0
  276. package/types/utils/settingsValidation/buildMetadata.d.ts +3 -0
  277. package/types/utils/settingsValidation/localhost/index.d.ts +9 -0
  278. package/types/utils/settingsValidation/logger.d.ts +11 -0
  279. package/types/utils/settingsValidation/runtime/browser.d.ts +2 -0
  280. package/types/utils/settingsValidation/runtime/node.d.ts +2 -0
  281. package/types/utils/settingsValidation/types.d.ts +6 -6
@@ -40,10 +40,10 @@ function splitsParserFromSettingsFactory() {
40
40
  if (!mockUpdated(features))
41
41
  return false;
42
42
  var splitObjects = {};
43
- lang_1.forOwn(features, function (data, splitName) {
43
+ (0, lang_1.forOwn)(features, function (data, splitName) {
44
44
  var treatment = data;
45
45
  var config = null;
46
- if (lang_1.isObject(data)) {
46
+ if ((0, lang_1.isObject)(data)) {
47
47
  treatment = data.treatment;
48
48
  config = data.config || config;
49
49
  }
@@ -52,7 +52,7 @@ function splitsParserFromSettingsFactory() {
52
52
  configurations[treatment] = config;
53
53
  splitObjects[splitName] = {
54
54
  trafficTypeName: 'localhost',
55
- conditions: [parseCondition_1.parseCondition({ treatment: treatment })],
55
+ conditions: [(0, parseCondition_1.parseCondition)({ treatment: treatment })],
56
56
  configurations: configurations
57
57
  };
58
58
  });
@@ -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, userMatchingKey) {
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.__spreadArrays([flatMe[0]], flatMe[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(splitApi, storage, readiness, settings) {
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(splitApi, storage, readiness, settings) {
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, matchingKey), storage.splits, storage.segments, readiness.segments, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady), settings.scheduler.segmentsRefreshRate, 'mySegmentsUpdater');
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
- var authPromise = fetchAuth(userKeys); // errors handled by fetchAuth service
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(segmentsCache, segmentsSyncTask) {
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(pollingManager, storage, readiness, fetchAuth, platform, settings) {
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
- var segmentsUpdateWorker = userKey ? new MySegmentsUpdateWorker_1.MySegmentsUpdateWorker(pollingManager.segmentsSyncTask) : new SegmentsUpdateWorker_1.SegmentsUpdateWorker(storage.segments, pollingManager.segmentsSyncTask);
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,17 +52,13 @@ 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.
61
58
  // It is used to halt the `connectPush` process if it was in progress.
62
59
  var disconnected;
63
60
  // flag that indicates a PUSH_NONRETRYABLE_ERROR, condition with which starting pushManager again is ignored.
61
+ // true if STREAMING_DISABLED control event, or 'pushEnabled: false', or non-recoverable SSE or Auth errors.
64
62
  var disabled; // `disabled` implies `disconnected === true`
65
63
  /** PushManager functions related to initialization */
66
64
  var connectPushRetryBackoff = new Backoff_1.Backoff(connectPush, settings.scheduler.pushRetryBackoffBase);
@@ -141,7 +139,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
141
139
  function stopWorkers() {
142
140
  splitsUpdateWorker.backoff.reset();
143
141
  if (userKey)
144
- lang_1.forOwn(clients, function (_a) {
142
+ (0, lang_1.forOwn)(clients, function (_a) {
145
143
  var worker = _a.worker;
146
144
  return worker.backoff.reset();
147
145
  });
@@ -197,15 +195,15 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
197
195
  case types_1.UpdateStrategy.BoundedFetchRequest: {
198
196
  var bitmap_1;
199
197
  try {
200
- bitmap_1 = mySegmentsV2utils_1.parseBitmap(parsedData.d, parsedData.c);
198
+ bitmap_1 = (0, mySegmentsV2utils_1.parseBitmap)(parsedData.d, parsedData.c);
201
199
  }
202
200
  catch (e) {
203
201
  log.warn(constants_2.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['BoundedFetchRequest', e]);
204
202
  break;
205
203
  }
206
- lang_1.forOwn(clients, function (_a) {
204
+ (0, lang_1.forOwn)(clients, function (_a) {
207
205
  var hash64 = _a.hash64, worker = _a.worker;
208
- if (mySegmentsV2utils_1.isInBitmap(bitmap_1, hash64.hex)) {
206
+ if ((0, mySegmentsV2utils_1.isInBitmap)(bitmap_1, hash64.hex)) {
209
207
  worker.put(parsedData.changeNumber); // fetch mySegments
210
208
  }
211
209
  });
@@ -214,7 +212,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
214
212
  case types_1.UpdateStrategy.KeyList: {
215
213
  var keyList = void 0, added_1, removed_1;
216
214
  try {
217
- keyList = mySegmentsV2utils_1.parseKeyList(parsedData.d, parsedData.c);
215
+ keyList = (0, mySegmentsV2utils_1.parseKeyList)(parsedData.d, parsedData.c);
218
216
  added_1 = new sets_1._Set(keyList.a);
219
217
  removed_1 = new sets_1._Set(keyList.r);
220
218
  }
@@ -222,7 +220,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
222
220
  log.warn(constants_2.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['KeyList', e]);
223
221
  break;
224
222
  }
225
- lang_1.forOwn(clients, function (_a) {
223
+ (0, lang_1.forOwn)(clients, function (_a) {
226
224
  var hash64 = _a.hash64, worker = _a.worker;
227
225
  var add = added_1.has(hash64.dec) ? true : removed_1.has(hash64.dec) ? false : undefined;
228
226
  if (add !== undefined) {
@@ -239,7 +237,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
239
237
  log.warn(constants_2.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['SegmentRemoval', 'No segment name was provided']);
240
238
  break;
241
239
  }
242
- lang_1.forOwn(clients, function (_a) {
240
+ (0, lang_1.forOwn)(clients, function (_a) {
243
241
  var worker = _a.worker;
244
242
  return worker.put(parsedData.changeNumber, {
245
243
  name: parsedData.segmentName,
@@ -249,7 +247,7 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
249
247
  return;
250
248
  }
251
249
  // `UpdateStrategy.UnboundedFetchRequest` and fallbacks of other cases
252
- lang_1.forOwn(clients, function (_a) {
250
+ (0, lang_1.forOwn)(clients, function (_a) {
253
251
  var worker = _a.worker;
254
252
  worker.put(parsedData.changeNumber);
255
253
  });
@@ -258,40 +256,53 @@ function pushManagerFactory(pollingManager, storage, readiness, fetchAuth, platf
258
256
  else {
259
257
  pushEmitter.on(constants_1.SEGMENT_UPDATE, segmentsUpdateWorker.put);
260
258
  }
261
- return objectAssign_1.objectAssign(
259
+ return (0, objectAssign_1.objectAssign)(
262
260
  // Expose Event Emitter functionality and Event constants
263
261
  Object.create(pushEmitter), {
264
- // Expose functionality for starting and stoping push mode:
265
- stop: disconnectPush,
262
+ // Stop/pause push mode.
263
+ // It doesn't emit events. Neither PUSH_SUBSYSTEM_DOWN to start polling.
264
+ stop: function () {
265
+ disconnectPush(); // `handleNonRetryableError` cannot be used as `stop`, because it emits PUSH_SUBSYSTEM_DOWN event, which starts polling.
266
+ if (userKey)
267
+ this.remove(userKey); // Necessary to properly resume streaming in client-side (e.g., RN SDK transition to foreground).
268
+ },
269
+ // Start/resume push mode.
270
+ // It eventually emits PUSH_SUBSYSTEM_DOWN, that starts polling, or PUSH_SUBSYSTEM_UP, that executes a syncAll
266
271
  start: function () {
267
272
  // Guard condition to avoid calling `connectPush` again if the `start` method is called multiple times or if push has been disabled.
268
273
  if (disabled || disconnected === false)
269
274
  return;
270
275
  disconnected = false;
271
- // Run in next event-loop cycle for optimization on client-side: if multiple clients are created in the same cycle than the factory, only one authentication is performed.
272
- setTimeout(connectPush);
276
+ if (userKey)
277
+ this.add(userKey, pollingManager.segmentsSyncTask); // client-side
278
+ else
279
+ setTimeout(connectPush); // server-side runs in next cycle as in client-side, for consistency with client-side
280
+ },
281
+ // true/false if start or stop was called last respectively
282
+ isRunning: function () {
283
+ return disconnected === false;
273
284
  },
274
285
  // [Only for client-side]
275
286
  add: function (userKey, mySegmentsSyncTask) {
276
- clients[userKey] = { hash64: murmur3_64_1.hash64(userKey), worker: new MySegmentsUpdateWorker_1.MySegmentsUpdateWorker(mySegmentsSyncTask) };
277
- var hash = AuthClient_1.hashUserKey(userKey);
287
+ var hash = (0, AuthClient_1.hashUserKey)(userKey);
278
288
  if (!userKeyHashes[hash]) {
279
289
  userKeyHashes[hash] = userKey;
290
+ clients[userKey] = { hash64: (0, murmur3_64_1.hash64)(userKey), worker: new MySegmentsUpdateWorker_1.MySegmentsUpdateWorker(mySegmentsSyncTask) };
280
291
  connectForNewClient = true; // we must reconnect on start, to listen the channel for the new user key
292
+ // Reconnects in case of a new client.
293
+ // Run in next event-loop cycle to save authentication calls
294
+ // in case multiple clients are created in the current cycle.
295
+ setTimeout(function checkForReconnect() {
296
+ if (connectForNewClient) {
297
+ connectForNewClient = false;
298
+ connectPush();
299
+ }
300
+ }, 0);
281
301
  }
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
302
  },
292
303
  // [Only for client-side]
293
304
  remove: function (userKey) {
294
- var hash = AuthClient_1.hashUserKey(userKey);
305
+ var hash = (0, AuthClient_1.hashUserKey)(userKey);
295
306
  delete userKeyHashes[hash];
296
307
  delete clients[userKey];
297
308
  }
@@ -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(settings, storage, splitApi) {
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;