@splitsoftware/splitio-commons 1.17.1-rc.3 → 2.0.0-rc.0

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 (216) hide show
  1. package/CHANGES.txt +7 -3
  2. package/cjs/evaluator/index.js +2 -2
  3. package/cjs/evaluator/matchers/semver_inlist.js +1 -2
  4. package/cjs/evaluator/matchers/whitelist.js +1 -2
  5. package/cjs/listeners/browser.js +1 -2
  6. package/cjs/logger/browser/DebugLogger.js +1 -2
  7. package/cjs/logger/browser/ErrorLogger.js +1 -2
  8. package/cjs/logger/browser/InfoLogger.js +1 -2
  9. package/cjs/logger/browser/WarnLogger.js +1 -2
  10. package/cjs/logger/index.js +1 -2
  11. package/cjs/readiness/readinessManager.js +5 -7
  12. package/cjs/sdkClient/clientCS.js +5 -8
  13. package/cjs/sdkClient/sdkClientMethodCS.js +5 -8
  14. package/cjs/sdkFactory/index.js +10 -33
  15. package/cjs/services/decorateHeaders.js +1 -2
  16. package/cjs/storages/AbstractSplitsCacheAsync.js +7 -0
  17. package/cjs/storages/AbstractSplitsCacheSync.js +7 -0
  18. package/cjs/storages/KeyBuilderCS.js +0 -9
  19. package/cjs/storages/dataLoader.js +32 -64
  20. package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -21
  21. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +14 -7
  22. package/cjs/storages/inLocalStorage/index.js +1 -6
  23. package/cjs/storages/inMemory/InMemoryStorageCS.js +4 -16
  24. package/cjs/storages/inMemory/SegmentsCacheInMemory.js +3 -4
  25. package/cjs/storages/inMemory/SplitsCacheInMemory.js +2 -3
  26. package/cjs/storages/inMemory/UniqueKeysCacheInMemory.js +2 -3
  27. package/cjs/storages/inMemory/UniqueKeysCacheInMemoryCS.js +2 -3
  28. package/cjs/storages/inRedis/RedisAdapter.js +3 -4
  29. package/cjs/storages/inRedis/SplitsCacheInRedis.js +1 -1
  30. package/cjs/storages/inRedis/TelemetryCacheInRedis.js +3 -4
  31. package/cjs/storages/inRedis/UniqueKeysCacheInRedis.js +1 -2
  32. package/cjs/storages/pluggable/SplitsCachePluggable.js +1 -1
  33. package/cjs/storages/pluggable/TelemetryCachePluggable.js +6 -7
  34. package/cjs/storages/pluggable/UniqueKeysCachePluggable.js +1 -2
  35. package/cjs/storages/pluggable/inMemoryWrapper.js +7 -8
  36. package/cjs/storages/pluggable/index.js +32 -37
  37. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +7 -2
  38. package/cjs/sync/polling/pollingManagerSS.js +3 -3
  39. package/cjs/sync/polling/updaters/splitChangesUpdater.js +13 -5
  40. package/cjs/sync/streaming/parseUtils.js +0 -1
  41. package/cjs/sync/streaming/pushManager.js +2 -3
  42. package/cjs/trackers/eventTracker.js +9 -11
  43. package/cjs/trackers/impressionsTracker.js +13 -15
  44. package/cjs/trackers/uniqueKeysTracker.js +3 -5
  45. package/cjs/utils/LRUCache/index.js +1 -2
  46. package/cjs/utils/constants/browser.js +1 -4
  47. package/cjs/utils/lang/index.js +6 -9
  48. package/cjs/utils/lang/objectAssign.js +12 -77
  49. package/cjs/utils/lang/sets.js +3 -110
  50. package/cjs/utils/settingsValidation/index.js +0 -9
  51. package/cjs/utils/settingsValidation/logger/builtinLogger.js +1 -2
  52. package/cjs/utils/settingsValidation/storage/storageCS.js +12 -1
  53. package/esm/evaluator/index.js +3 -3
  54. package/esm/evaluator/matchers/semver_inlist.js +1 -2
  55. package/esm/evaluator/matchers/whitelist.js +1 -2
  56. package/esm/listeners/browser.js +1 -2
  57. package/esm/logger/browser/DebugLogger.js +1 -2
  58. package/esm/logger/browser/ErrorLogger.js +1 -2
  59. package/esm/logger/browser/InfoLogger.js +1 -2
  60. package/esm/logger/browser/WarnLogger.js +1 -2
  61. package/esm/logger/index.js +1 -2
  62. package/esm/readiness/readinessManager.js +5 -7
  63. package/esm/sdkClient/clientCS.js +5 -8
  64. package/esm/sdkClient/sdkClientMethodCS.js +5 -8
  65. package/esm/sdkFactory/index.js +11 -34
  66. package/esm/services/decorateHeaders.js +1 -2
  67. package/esm/storages/AbstractSplitsCacheAsync.js +7 -0
  68. package/esm/storages/AbstractSplitsCacheSync.js +7 -0
  69. package/esm/storages/KeyBuilderCS.js +0 -9
  70. package/esm/storages/dataLoader.js +30 -61
  71. package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -21
  72. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +14 -7
  73. package/esm/storages/inLocalStorage/index.js +2 -7
  74. package/esm/storages/inMemory/InMemoryStorageCS.js +4 -16
  75. package/esm/storages/inMemory/SegmentsCacheInMemory.js +3 -4
  76. package/esm/storages/inMemory/SplitsCacheInMemory.js +2 -3
  77. package/esm/storages/inMemory/UniqueKeysCacheInMemory.js +2 -3
  78. package/esm/storages/inMemory/UniqueKeysCacheInMemoryCS.js +2 -3
  79. package/esm/storages/inRedis/RedisAdapter.js +3 -4
  80. package/esm/storages/inRedis/SplitsCacheInRedis.js +2 -2
  81. package/esm/storages/inRedis/TelemetryCacheInRedis.js +3 -4
  82. package/esm/storages/inRedis/UniqueKeysCacheInRedis.js +1 -2
  83. package/esm/storages/pluggable/SplitsCachePluggable.js +2 -2
  84. package/esm/storages/pluggable/TelemetryCachePluggable.js +6 -7
  85. package/esm/storages/pluggable/UniqueKeysCachePluggable.js +1 -2
  86. package/esm/storages/pluggable/inMemoryWrapper.js +7 -8
  87. package/esm/storages/pluggable/index.js +32 -37
  88. package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +8 -3
  89. package/esm/sync/polling/pollingManagerSS.js +3 -3
  90. package/esm/sync/polling/updaters/splitChangesUpdater.js +14 -6
  91. package/esm/sync/streaming/parseUtils.js +0 -1
  92. package/esm/sync/streaming/pushManager.js +2 -3
  93. package/esm/trackers/eventTracker.js +9 -11
  94. package/esm/trackers/impressionsTracker.js +13 -15
  95. package/esm/trackers/uniqueKeysTracker.js +3 -5
  96. package/esm/utils/LRUCache/index.js +1 -2
  97. package/esm/utils/constants/browser.js +0 -3
  98. package/esm/utils/lang/index.js +6 -9
  99. package/esm/utils/lang/objectAssign.js +12 -77
  100. package/esm/utils/lang/sets.js +2 -107
  101. package/esm/utils/settingsValidation/index.js +0 -9
  102. package/esm/utils/settingsValidation/logger/builtinLogger.js +1 -2
  103. package/esm/utils/settingsValidation/storage/storageCS.js +10 -0
  104. package/package.json +2 -2
  105. package/src/evaluator/index.ts +5 -5
  106. package/src/evaluator/matchers/semver_inlist.ts +1 -2
  107. package/src/evaluator/matchers/whitelist.ts +1 -3
  108. package/src/listeners/browser.ts +1 -2
  109. package/src/logger/browser/DebugLogger.ts +1 -2
  110. package/src/logger/browser/ErrorLogger.ts +1 -2
  111. package/src/logger/browser/InfoLogger.ts +1 -2
  112. package/src/logger/browser/WarnLogger.ts +1 -2
  113. package/src/logger/index.ts +3 -4
  114. package/src/readiness/readinessManager.ts +7 -9
  115. package/src/readiness/types.ts +0 -1
  116. package/src/sdkClient/clientCS.ts +5 -8
  117. package/src/sdkClient/sdkClientMethodCS.ts +3 -6
  118. package/src/sdkFactory/index.ts +12 -37
  119. package/src/sdkFactory/types.ts +1 -4
  120. package/src/services/decorateHeaders.ts +1 -2
  121. package/src/storages/AbstractSplitsCacheAsync.ts +9 -2
  122. package/src/storages/AbstractSplitsCacheSync.ts +9 -2
  123. package/src/storages/KeyBuilderCS.ts +0 -13
  124. package/src/storages/dataLoader.ts +32 -62
  125. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -21
  126. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +16 -8
  127. package/src/storages/inLocalStorage/index.ts +2 -8
  128. package/src/storages/inMemory/InMemoryStorageCS.ts +4 -19
  129. package/src/storages/inMemory/SegmentsCacheInMemory.ts +4 -5
  130. package/src/storages/inMemory/SplitsCacheInMemory.ts +4 -5
  131. package/src/storages/inMemory/UniqueKeysCacheInMemory.ts +4 -5
  132. package/src/storages/inMemory/UniqueKeysCacheInMemoryCS.ts +4 -5
  133. package/src/storages/inRedis/RedisAdapter.ts +4 -5
  134. package/src/storages/inRedis/SplitsCacheInRedis.ts +3 -3
  135. package/src/storages/inRedis/TelemetryCacheInRedis.ts +3 -4
  136. package/src/storages/inRedis/UniqueKeysCacheInRedis.ts +1 -2
  137. package/src/storages/pluggable/SegmentsCachePluggable.ts +0 -1
  138. package/src/storages/pluggable/SplitsCachePluggable.ts +3 -3
  139. package/src/storages/pluggable/TelemetryCachePluggable.ts +6 -7
  140. package/src/storages/pluggable/UniqueKeysCachePluggable.ts +1 -2
  141. package/src/storages/pluggable/inMemoryWrapper.ts +8 -9
  142. package/src/storages/pluggable/index.ts +33 -38
  143. package/src/storages/types.ts +9 -6
  144. package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +7 -3
  145. package/src/sync/polling/pollingManagerSS.ts +2 -3
  146. package/src/sync/polling/updaters/splitChangesUpdater.ts +15 -8
  147. package/src/sync/streaming/parseUtils.ts +0 -1
  148. package/src/sync/streaming/pushManager.ts +3 -4
  149. package/src/sync/submitters/types.ts +3 -4
  150. package/src/trackers/eventTracker.ts +7 -10
  151. package/src/trackers/impressionsTracker.ts +9 -12
  152. package/src/trackers/types.ts +0 -1
  153. package/src/trackers/uniqueKeysTracker.ts +4 -6
  154. package/src/types.ts +9 -18
  155. package/src/utils/LRUCache/index.ts +2 -3
  156. package/src/utils/constants/browser.ts +0 -4
  157. package/src/utils/lang/index.ts +6 -7
  158. package/src/utils/lang/objectAssign.ts +13 -92
  159. package/src/utils/lang/sets.ts +3 -125
  160. package/src/utils/settingsValidation/index.ts +0 -10
  161. package/src/utils/settingsValidation/logger/builtinLogger.ts +1 -2
  162. package/src/utils/settingsValidation/storage/storageCS.ts +13 -0
  163. package/src/utils/settingsValidation/types.ts +0 -2
  164. package/types/logger/index.d.ts +1 -2
  165. package/types/readiness/types.d.ts +0 -1
  166. package/types/sdkClient/clientCS.d.ts +2 -3
  167. package/types/sdkFactory/types.d.ts +1 -3
  168. package/types/storages/AbstractSplitsCacheAsync.d.ts +6 -2
  169. package/types/storages/AbstractSplitsCacheSync.d.ts +6 -2
  170. package/types/storages/KeyBuilderCS.d.ts +0 -2
  171. package/types/storages/dataLoader.d.ts +6 -17
  172. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +7 -2
  173. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +1 -2
  174. package/types/storages/inMemory/UniqueKeysCacheInMemory.d.ts +2 -3
  175. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +1 -2
  176. package/types/storages/pluggable/SplitsCachePluggable.d.ts +1 -2
  177. package/types/storages/pluggable/inMemoryWrapper.d.ts +1 -2
  178. package/types/storages/types.d.ts +7 -6
  179. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +1 -2
  180. package/types/sync/submitters/types.d.ts +3 -4
  181. package/types/trackers/eventTracker.d.ts +1 -1
  182. package/types/trackers/impressionsTracker.d.ts +1 -1
  183. package/types/trackers/types.d.ts +0 -1
  184. package/types/types.d.ts +9 -17
  185. package/types/utils/LRUCache/index.d.ts +1 -2
  186. package/types/utils/constants/browser.d.ts +0 -2
  187. package/types/utils/lang/objectAssign.d.ts +3 -0
  188. package/types/utils/lang/sets.d.ts +1 -61
  189. package/types/utils/settingsValidation/index.d.ts +0 -1
  190. package/types/utils/settingsValidation/storage/storageCS.d.ts +5 -0
  191. package/types/utils/settingsValidation/types.d.ts +0 -2
  192. package/cjs/integrations/browser.js +0 -31
  193. package/cjs/integrations/ga/GaToSplit.js +0 -257
  194. package/cjs/integrations/ga/GoogleAnalyticsToSplit.js +0 -14
  195. package/cjs/integrations/ga/SplitToGa.js +0 -123
  196. package/cjs/integrations/ga/SplitToGoogleAnalytics.js +0 -14
  197. package/cjs/integrations/ga/types.js +0 -2
  198. package/cjs/sdkClient/sdkClientMethodCSWithTT.js +0 -79
  199. package/cjs/utils/lang/maps.js +0 -96
  200. package/esm/integrations/browser.js +0 -27
  201. package/esm/integrations/ga/GaToSplit.js +0 -250
  202. package/esm/integrations/ga/GoogleAnalyticsToSplit.js +0 -10
  203. package/esm/integrations/ga/SplitToGa.js +0 -120
  204. package/esm/integrations/ga/SplitToGoogleAnalytics.js +0 -10
  205. package/esm/integrations/ga/types.js +0 -1
  206. package/esm/sdkClient/sdkClientMethodCSWithTT.js +0 -75
  207. package/esm/utils/lang/maps.js +0 -92
  208. package/src/integrations/browser.ts +0 -35
  209. package/src/integrations/ga/GaToSplit.ts +0 -299
  210. package/src/integrations/ga/GoogleAnalyticsToSplit.ts +0 -14
  211. package/src/integrations/ga/SplitToGa.ts +0 -135
  212. package/src/integrations/ga/SplitToGoogleAnalytics.ts +0 -14
  213. package/src/integrations/ga/autoRequire.js +0 -33
  214. package/src/integrations/ga/types.ts +0 -153
  215. package/src/sdkClient/sdkClientMethodCSWithTT.ts +0 -101
  216. package/src/utils/lang/maps.ts +0 -108
@@ -30,7 +30,7 @@ function InLocalStorage(options) {
30
30
  params.settings.log.warn(constants_1.LOG_PREFIX + 'LocalStorage API is unavailable. Falling back to default MEMORY storage');
31
31
  return (0, InMemoryStorageCS_1.InMemoryStorageCSFactory)(params);
32
32
  }
33
- var onReadyFromCacheCb = params.onReadyFromCacheCb, settings = params.settings, _a = params.settings, log = _a.log, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize, _c = _a.sync, impressionsMode = _c.impressionsMode, __splitFiltersValidation = _c.__splitFiltersValidation;
33
+ var settings = params.settings, _a = params.settings, log = _a.log, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize, _c = _a.sync, impressionsMode = _c.impressionsMode, __splitFiltersValidation = _c.__splitFiltersValidation;
34
34
  var matchingKey = (0, key_1.getMatching)(settings.core.key);
35
35
  var keys = new KeyBuilderCS_1.KeyBuilderCS(prefix, matchingKey);
36
36
  var expirationTimestamp = Date.now() - browser_1.DEFAULT_CACHE_EXPIRATION_IN_MILLIS;
@@ -46,11 +46,6 @@ function InLocalStorage(options) {
46
46
  events: new EventsCacheInMemory_1.EventsCacheInMemory(eventsQueueSize),
47
47
  telemetry: (0, TelemetryCacheInMemory_1.shouldRecordTelemetry)(params) ? new TelemetryCacheInMemory_1.TelemetryCacheInMemory(splits, segments) : undefined,
48
48
  uniqueKeys: impressionsMode === constants_2.NONE ? new UniqueKeysCacheInMemoryCS_1.UniqueKeysCacheInMemoryCS() : undefined,
49
- init: function () {
50
- if (settings.mode === constants_2.LOCALHOST_MODE || splits.getChangeNumber() > -1) {
51
- Promise.resolve().then(onReadyFromCacheCb);
52
- }
53
- },
54
49
  destroy: function () {
55
50
  var _a;
56
51
  this.splits = new SplitsCacheInMemory_1.SplitsCacheInMemory(__splitFiltersValidation);
@@ -9,15 +9,13 @@ var ImpressionCountsCacheInMemory_1 = require("./ImpressionCountsCacheInMemory")
9
9
  var constants_1 = require("../../utils/constants");
10
10
  var TelemetryCacheInMemory_1 = require("./TelemetryCacheInMemory");
11
11
  var UniqueKeysCacheInMemoryCS_1 = require("./UniqueKeysCacheInMemoryCS");
12
- var key_1 = require("../../utils/key");
13
- var dataLoader_1 = require("../dataLoader");
14
12
  /**
15
13
  * InMemory storage factory for standalone client-side SplitFactory
16
14
  *
17
15
  * @param params parameters required by EventsCacheSync
18
16
  */
19
17
  function InMemoryStorageCSFactory(params) {
20
- var _a = params.settings, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize, _c = _a.sync, impressionsMode = _c.impressionsMode, __splitFiltersValidation = _c.__splitFiltersValidation, preloadedData = _a.preloadedData, onReadyFromCacheCb = params.onReadyFromCacheCb;
18
+ var _a = params.settings, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize, _c = _a.sync, impressionsMode = _c.impressionsMode, __splitFiltersValidation = _c.__splitFiltersValidation;
21
19
  var splits = new SplitsCacheInMemory_1.SplitsCacheInMemory(__splitFiltersValidation);
22
20
  var segments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
23
21
  var largeSegments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
@@ -41,16 +39,11 @@ function InMemoryStorageCSFactory(params) {
41
39
  this.uniqueKeys && this.uniqueKeys.clear();
42
40
  },
43
41
  // When using shared instanciation with MEMORY we reuse everything but segments (they are unique per key)
44
- shared: function (matchingKey) {
45
- var segments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
46
- var largeSegments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
47
- if (preloadedData) {
48
- (0, dataLoader_1.loadData)(preloadedData, { segments: segments, largeSegments: largeSegments }, matchingKey);
49
- }
42
+ shared: function () {
50
43
  return {
51
44
  splits: this.splits,
52
- segments: segments,
53
- largeSegments: largeSegments,
45
+ segments: new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory(),
46
+ largeSegments: new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory(),
54
47
  impressions: this.impressions,
55
48
  impressionCounts: this.impressionCounts,
56
49
  events: this.events,
@@ -75,11 +68,6 @@ function InMemoryStorageCSFactory(params) {
75
68
  if (storage.uniqueKeys)
76
69
  storage.uniqueKeys.track = noopTrack;
77
70
  }
78
- if (preloadedData) {
79
- (0, dataLoader_1.loadData)(preloadedData, storage, (0, key_1.getMatching)(params.settings.core.key));
80
- if (splits.getChangeNumber() > -1)
81
- onReadyFromCacheCb();
82
- }
83
71
  return storage;
84
72
  }
85
73
  exports.InMemoryStorageCSFactory = InMemoryStorageCSFactory;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SegmentsCacheInMemory = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var AbstractSegmentsCacheSync_1 = require("../AbstractSegmentsCacheSync");
6
- var sets_1 = require("../../utils/lang/sets");
7
6
  var lang_1 = require("../../utils/lang");
8
7
  /**
9
8
  * Default ISplitsCacheSync implementation that stores split definitions in memory.
@@ -19,14 +18,14 @@ var SegmentsCacheInMemory = /** @class */ (function (_super) {
19
18
  }
20
19
  SegmentsCacheInMemory.prototype.addToSegment = function (name, segmentKeys) {
21
20
  var values = this.segmentCache[name];
22
- var keySet = values ? values : new sets_1._Set();
21
+ var keySet = values ? values : new Set();
23
22
  segmentKeys.forEach(function (k) { return keySet.add(k); });
24
23
  this.segmentCache[name] = keySet;
25
24
  return true;
26
25
  };
27
26
  SegmentsCacheInMemory.prototype.removeFromSegment = function (name, segmentKeys) {
28
27
  var values = this.segmentCache[name];
29
- var keySet = values ? values : new sets_1._Set();
28
+ var keySet = values ? values : new Set();
30
29
  segmentKeys.forEach(function (k) { return keySet.delete(k); });
31
30
  this.segmentCache[name] = keySet;
32
31
  return true;
@@ -44,7 +43,7 @@ var SegmentsCacheInMemory = /** @class */ (function (_super) {
44
43
  };
45
44
  SegmentsCacheInMemory.prototype._registerSegment = function (name) {
46
45
  if (!this.segmentCache[name]) {
47
- this.segmentCache[name] = new sets_1._Set();
46
+ this.segmentCache[name] = new Set();
48
47
  }
49
48
  return true;
50
49
  };
@@ -4,7 +4,6 @@ exports.SplitsCacheInMemory = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var AbstractSplitsCacheSync_1 = require("../AbstractSplitsCacheSync");
6
6
  var lang_1 = require("../../utils/lang");
7
- var sets_1 = require("../../utils/lang/sets");
8
7
  /**
9
8
  * Default ISplitsCacheSync implementation that stores split definitions in memory.
10
9
  * Supported by all JS runtimes.
@@ -95,7 +94,7 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
95
94
  };
96
95
  SplitsCacheInMemory.prototype.getNamesByFlagSets = function (flagSets) {
97
96
  var _this = this;
98
- return flagSets.map(function (flagSet) { return _this.flagSetsCache[flagSet] || new sets_1._Set(); });
97
+ return flagSets.map(function (flagSet) { return _this.flagSetsCache[flagSet] || new Set(); });
99
98
  };
100
99
  SplitsCacheInMemory.prototype.addToFlagSets = function (featureFlag) {
101
100
  var _this = this;
@@ -105,7 +104,7 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
105
104
  if (_this.flagSetsFilter.length > 0 && !_this.flagSetsFilter.some(function (filterFlagSet) { return filterFlagSet === featureFlagSet; }))
106
105
  return;
107
106
  if (!_this.flagSetsCache[featureFlagSet])
108
- _this.flagSetsCache[featureFlagSet] = new sets_1._Set([]);
107
+ _this.flagSetsCache[featureFlagSet] = new Set([]);
109
108
  _this.flagSetsCache[featureFlagSet].add(featureFlag.name);
110
109
  });
111
110
  };
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UniqueKeysCacheInMemory = exports.fromUniqueKeysCollector = void 0;
4
- var sets_1 = require("../../utils/lang/sets");
5
4
  var constants_1 = require("../inRedis/constants");
6
5
  /**
7
6
  * Converts `uniqueKeys` data from cache into request payload for SS.
@@ -11,7 +10,7 @@ function fromUniqueKeysCollector(uniqueKeys) {
11
10
  var featureNames = Object.keys(uniqueKeys);
12
11
  for (var i = 0; i < featureNames.length; i++) {
13
12
  var featureName = featureNames[i];
14
- var userKeys = (0, sets_1.setToArray)(uniqueKeys[featureName]);
13
+ var userKeys = Array.from(uniqueKeys[featureName]);
15
14
  var uniqueKeysPayload = {
16
15
  f: featureName,
17
16
  ks: userKeys
@@ -36,7 +35,7 @@ var UniqueKeysCacheInMemory = /** @class */ (function () {
36
35
  */
37
36
  UniqueKeysCacheInMemory.prototype.track = function (userKey, featureName) {
38
37
  if (!this.uniqueKeysTracker[featureName])
39
- this.uniqueKeysTracker[featureName] = new sets_1._Set();
38
+ this.uniqueKeysTracker[featureName] = new Set();
40
39
  var tracker = this.uniqueKeysTracker[featureName];
41
40
  if (!tracker.has(userKey)) {
42
41
  tracker.add(userKey);
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UniqueKeysCacheInMemoryCS = void 0;
4
- var sets_1 = require("../../utils/lang/sets");
5
4
  var constants_1 = require("../inRedis/constants");
6
5
  var UniqueKeysCacheInMemoryCS = /** @class */ (function () {
7
6
  /**
@@ -23,7 +22,7 @@ var UniqueKeysCacheInMemoryCS = /** @class */ (function () {
23
22
  */
24
23
  UniqueKeysCacheInMemoryCS.prototype.track = function (userKey, featureName) {
25
24
  if (!this.uniqueKeysTracker[userKey])
26
- this.uniqueKeysTracker[userKey] = new sets_1._Set();
25
+ this.uniqueKeysTracker[userKey] = new Set();
27
26
  var tracker = this.uniqueKeysTracker[userKey];
28
27
  if (!tracker.has(featureName)) {
29
28
  tracker.add(featureName);
@@ -62,7 +61,7 @@ var UniqueKeysCacheInMemoryCS = /** @class */ (function () {
62
61
  var userKeys = Object.keys(uniqueKeys);
63
62
  for (var k = 0; k < userKeys.length; k++) {
64
63
  var userKey = userKeys[k];
65
- var featureNames = (0, sets_1.setToArray)(uniqueKeys[userKey]);
64
+ var featureNames = Array.from(uniqueKeys[userKey]);
66
65
  var uniqueKeysPayload = {
67
66
  k: userKey,
68
67
  fs: featureNames
@@ -4,7 +4,6 @@ exports.RedisAdapter = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var ioredis_1 = (0, tslib_1.__importDefault)(require("ioredis"));
6
6
  var lang_1 = require("../../utils/lang");
7
- var sets_1 = require("../../utils/lang/sets");
8
7
  var thenable_1 = require("../../utils/promise/thenable");
9
8
  var timeout_1 = require("../../utils/promise/timeout");
10
9
  var LOG_PREFIX = 'storage:redis-adapter: ';
@@ -20,7 +19,7 @@ var DEFAULT_OPTIONS = {
20
19
  var DEFAULT_LIBRARY_OPTIONS = {
21
20
  enableOfflineQueue: false,
22
21
  connectTimeout: DEFAULT_OPTIONS.connectionTimeout,
23
- lazyConnect: false // @TODO true to avoid side-effects on instantiation.
22
+ lazyConnect: false
24
23
  };
25
24
  /**
26
25
  * Redis adapter on top of the library of choice (written with ioredis) for some extra control.
@@ -36,7 +35,7 @@ var RedisAdapter = /** @class */ (function (_super) {
36
35
  _this.log = log;
37
36
  _this._options = options;
38
37
  _this._notReadyCommandsQueue = [];
39
- _this._runningCommands = new sets_1._Set();
38
+ _this._runningCommands = new Set();
40
39
  _this._listenToEvents();
41
40
  _this._setTimeoutWrappers();
42
41
  _this._setDisconnectWrapper();
@@ -129,7 +128,7 @@ var RedisAdapter = /** @class */ (function (_super) {
129
128
  setTimeout(function deferredDisconnect() {
130
129
  if (instance._runningCommands.size > 0) {
131
130
  instance.log.info(LOG_PREFIX + ("Attempting to disconnect but there are " + instance._runningCommands.size + " commands still waiting for resolution. Defering disconnection until those finish."));
132
- Promise.all((0, sets_1.setToArray)(instance._runningCommands))
131
+ Promise.all(Array.from(instance._runningCommands))
133
132
  .then(function () {
134
133
  instance.log.debug(LOG_PREFIX + 'Pending commands finished successfully, disconnecting.');
135
134
  originalMethod.apply(instance, params);
@@ -200,7 +200,7 @@ var SplitsCacheInRedis = /** @class */ (function (_super) {
200
200
  return value;
201
201
  _this.log.error(constants_1.LOG_PREFIX + ("Could not read result from get members of flag set " + flagSets[index] + " due to an error: " + e));
202
202
  }); })
203
- .then(function (namesByFlagSets) { return namesByFlagSets.map(function (namesByFlagSet) { return new sets_1._Set(namesByFlagSet); }); });
203
+ .then(function (namesByFlagSets) { return namesByFlagSets.map(function (namesByFlagSet) { return new Set(namesByFlagSet); }); });
204
204
  };
205
205
  /**
206
206
  * Check traffic type existence.
@@ -5,7 +5,6 @@ var findLatencyIndex_1 = require("../findLatencyIndex");
5
5
  var telemetrySubmitter_1 = require("../../sync/submitters/telemetrySubmitter");
6
6
  var constants_1 = require("../../utils/constants");
7
7
  var lang_1 = require("../../utils/lang");
8
- var maps_1 = require("../../utils/lang/maps");
9
8
  var TelemetryCacheInMemory_1 = require("../inMemory/TelemetryCacheInMemory");
10
9
  var utils_1 = require("../utils");
11
10
  var TelemetryCacheInRedis = /** @class */ (function () {
@@ -42,7 +41,7 @@ var TelemetryCacheInRedis = /** @class */ (function () {
42
41
  TelemetryCacheInRedis.prototype.popLatencies = function () {
43
42
  var _this = this;
44
43
  return this.redis.hgetall(this.keys.latencyPrefix).then(function (latencies) {
45
- var result = new maps_1._Map();
44
+ var result = new Map();
46
45
  Object.keys(latencies).forEach(function (field) {
47
46
  var parsedField = (0, utils_1.parseLatencyField)(field);
48
47
  if ((0, lang_1.isString)(parsedField)) {
@@ -74,7 +73,7 @@ var TelemetryCacheInRedis = /** @class */ (function () {
74
73
  TelemetryCacheInRedis.prototype.popExceptions = function () {
75
74
  var _this = this;
76
75
  return this.redis.hgetall(this.keys.exceptionPrefix).then(function (exceptions) {
77
- var result = new maps_1._Map();
76
+ var result = new Map();
78
77
  Object.keys(exceptions).forEach(function (field) {
79
78
  var parsedField = (0, utils_1.parseExceptionField)(field);
80
79
  if ((0, lang_1.isString)(parsedField)) {
@@ -101,7 +100,7 @@ var TelemetryCacheInRedis = /** @class */ (function () {
101
100
  TelemetryCacheInRedis.prototype.popConfigs = function () {
102
101
  var _this = this;
103
102
  return this.redis.hgetall(this.keys.initPrefix).then(function (configs) {
104
- var result = new maps_1._Map();
103
+ var result = new Map();
105
104
  Object.keys(configs).forEach(function (field) {
106
105
  var parsedField = (0, utils_1.parseMetadata)(field);
107
106
  if ((0, lang_1.isString)(parsedField)) {
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UniqueKeysCacheInRedis = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var UniqueKeysCacheInMemory_1 = require("../inMemory/UniqueKeysCacheInMemory");
6
- var sets_1 = require("../../utils/lang/sets");
7
6
  var constants_1 = require("./constants");
8
7
  var constants_2 = require("./constants");
9
8
  var UniqueKeysCacheInRedis = /** @class */ (function (_super) {
@@ -25,7 +24,7 @@ var UniqueKeysCacheInRedis = /** @class */ (function (_super) {
25
24
  if (!featureNames.length)
26
25
  return Promise.resolve(false);
27
26
  var uniqueKeysArray = featureNames.map(function (featureName) {
28
- var featureKeys = (0, sets_1.setToArray)(_this.uniqueKeysTracker[featureName]);
27
+ var featureKeys = Array.from(_this.uniqueKeysTracker[featureName]);
29
28
  var uniqueKeysPayload = {
30
29
  f: featureName,
31
30
  ks: featureKeys
@@ -170,7 +170,7 @@ var SplitsCachePluggable = /** @class */ (function (_super) {
170
170
  return Promise.all(flagSets.map(function (flagSet) {
171
171
  var flagSetKey = _this.keys.buildFlagSetKey(flagSet);
172
172
  return _this.wrapper.getItems(flagSetKey).catch(function () { return []; });
173
- })).then(function (namesByFlagSets) { return namesByFlagSets.map(function (namesByFlagSet) { return new sets_1._Set(namesByFlagSet); }); });
173
+ })).then(function (namesByFlagSets) { return namesByFlagSets.map(function (namesByFlagSet) { return new Set(namesByFlagSet); }); });
174
174
  };
175
175
  /**
176
176
  * Check traffic type existence.
@@ -5,7 +5,6 @@ var findLatencyIndex_1 = require("../findLatencyIndex");
5
5
  var telemetrySubmitter_1 = require("../../sync/submitters/telemetrySubmitter");
6
6
  var constants_1 = require("../../utils/constants");
7
7
  var lang_1 = require("../../utils/lang");
8
- var maps_1 = require("../../utils/lang/maps");
9
8
  var TelemetryCacheInMemory_1 = require("../inMemory/TelemetryCacheInMemory");
10
9
  var utils_1 = require("../utils");
11
10
  var TelemetryCachePluggable = /** @class */ (function () {
@@ -41,7 +40,7 @@ var TelemetryCachePluggable = /** @class */ (function () {
41
40
  return this.wrapper.getKeysByPrefix(this.keys.latencyPrefix).then(function (latencyKeys) {
42
41
  return latencyKeys.length ?
43
42
  _this.wrapper.getMany(latencyKeys).then(function (latencies) {
44
- var result = new maps_1._Map();
43
+ var result = new Map();
45
44
  for (var i = 0; i < latencyKeys.length; i++) {
46
45
  var field = latencyKeys[i].split('::')[1];
47
46
  var parsedField = (0, utils_1.parseLatencyField)(field);
@@ -68,7 +67,7 @@ var TelemetryCachePluggable = /** @class */ (function () {
68
67
  return Promise.all(latencyKeys.map(function (latencyKey) { return _this.wrapper.del(latencyKey); })).then(function () { return result; });
69
68
  }) :
70
69
  // If latencyKeys is empty, return an empty map.
71
- new maps_1._Map();
70
+ new Map();
72
71
  });
73
72
  };
74
73
  /**
@@ -80,7 +79,7 @@ var TelemetryCachePluggable = /** @class */ (function () {
80
79
  return this.wrapper.getKeysByPrefix(this.keys.exceptionPrefix).then(function (exceptionKeys) {
81
80
  return exceptionKeys.length ?
82
81
  _this.wrapper.getMany(exceptionKeys).then(function (exceptions) {
83
- var result = new maps_1._Map();
82
+ var result = new Map();
84
83
  for (var i = 0; i < exceptionKeys.length; i++) {
85
84
  var field = exceptionKeys[i].split('::')[1];
86
85
  var parsedField = (0, utils_1.parseExceptionField)(field);
@@ -102,7 +101,7 @@ var TelemetryCachePluggable = /** @class */ (function () {
102
101
  return Promise.all(exceptionKeys.map(function (exceptionKey) { return _this.wrapper.del(exceptionKey); })).then(function () { return result; });
103
102
  }) :
104
103
  // If exceptionKeys is empty, return an empty map.
105
- new maps_1._Map();
104
+ new Map();
106
105
  });
107
106
  };
108
107
  /**
@@ -114,7 +113,7 @@ var TelemetryCachePluggable = /** @class */ (function () {
114
113
  return this.wrapper.getKeysByPrefix(this.keys.initPrefix).then(function (configKeys) {
115
114
  return configKeys.length ?
116
115
  _this.wrapper.getMany(configKeys).then(function (configs) {
117
- var result = new maps_1._Map();
116
+ var result = new Map();
118
117
  for (var i = 0; i < configKeys.length; i++) {
119
118
  var field = configKeys[i].split('::')[1];
120
119
  var parsedField = (0, utils_1.parseMetadata)(field);
@@ -134,7 +133,7 @@ var TelemetryCachePluggable = /** @class */ (function () {
134
133
  return Promise.all(configKeys.map(function (configKey) { return _this.wrapper.del(configKey); })).then(function () { return result; });
135
134
  }) :
136
135
  // If configKeys is empty, return an empty map.
137
- new maps_1._Map();
136
+ new Map();
138
137
  });
139
138
  };
140
139
  return TelemetryCachePluggable;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UniqueKeysCachePluggable = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var UniqueKeysCacheInMemory_1 = require("../inMemory/UniqueKeysCacheInMemory");
6
- var sets_1 = require("../../utils/lang/sets");
7
6
  var constants_1 = require("../inRedis/constants");
8
7
  var constants_2 = require("./constants");
9
8
  var UniqueKeysCachePluggable = /** @class */ (function (_super) {
@@ -25,7 +24,7 @@ var UniqueKeysCachePluggable = /** @class */ (function (_super) {
25
24
  if (!featureNames.length)
26
25
  return Promise.resolve(false);
27
26
  var uniqueKeysArray = featureNames.map(function (featureName) {
28
- var featureKeys = (0, sets_1.setToArray)(_this.uniqueKeysTracker[featureName]);
27
+ var featureKeys = Array.from(_this.uniqueKeysTracker[featureName]);
29
28
  var uniqueKeysPayload = {
30
29
  f: featureName,
31
30
  ks: featureKeys
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.inMemoryWrapperFactory = void 0;
4
4
  var lang_1 = require("../../utils/lang");
5
- var sets_1 = require("../../utils/lang/sets");
6
5
  /**
7
6
  * Creates a IPluggableStorageWrapper implementation that stores items in memory.
8
7
  * The `_cache` property is the object were items are stored.
@@ -90,15 +89,15 @@ function inMemoryWrapperFactory(connDelay) {
90
89
  var set = _cache[key];
91
90
  if (!set)
92
91
  return Promise.resolve(false);
93
- if (set instanceof sets_1._Set)
92
+ if (set instanceof Set)
94
93
  return Promise.resolve(set.has(item));
95
94
  return Promise.reject('key is not a set');
96
95
  },
97
96
  addItems: function (key, items) {
98
97
  if (!(key in _cache))
99
- _cache[key] = new sets_1._Set();
98
+ _cache[key] = new Set();
100
99
  var set = _cache[key];
101
- if (set instanceof sets_1._Set) {
100
+ if (set instanceof Set) {
102
101
  items.forEach(function (item) { return set.add(item); });
103
102
  return Promise.resolve();
104
103
  }
@@ -106,9 +105,9 @@ function inMemoryWrapperFactory(connDelay) {
106
105
  },
107
106
  removeItems: function (key, items) {
108
107
  if (!(key in _cache))
109
- _cache[key] = new sets_1._Set();
108
+ _cache[key] = new Set();
110
109
  var set = _cache[key];
111
- if (set instanceof sets_1._Set) {
110
+ if (set instanceof Set) {
112
111
  items.forEach(function (item) { return set.delete(item); });
113
112
  return Promise.resolve();
114
113
  }
@@ -118,8 +117,8 @@ function inMemoryWrapperFactory(connDelay) {
118
117
  var set = _cache[key];
119
118
  if (!set)
120
119
  return Promise.resolve([]);
121
- if (set instanceof sets_1._Set)
122
- return Promise.resolve((0, sets_1.setToArray)(set));
120
+ if (set instanceof Set)
121
+ return Promise.resolve(Array.from(set));
123
122
  return Promise.reject('key is not a set');
124
123
  },
125
124
  // always connects and disconnects
@@ -58,7 +58,6 @@ function PluggableStorage(options) {
58
58
  var metadata = (0, utils_1.metadataBuilder)(settings);
59
59
  var keys = new KeyBuilderSS_1.KeyBuilderSS(prefix, metadata);
60
60
  var wrapper = (0, wrapperAdapter_1.wrapperAdapter)(log, options.wrapper);
61
- var connectPromise;
62
61
  var isSyncronizer = mode === undefined; // If mode is not defined, the synchronizer is running
63
62
  var isPartialConsumer = mode === constants_1.CONSUMER_PARTIAL_MODE;
64
63
  var telemetry = (0, TelemetryCacheInMemory_1.shouldRecordTelemetry)(params) || isSyncronizer ?
@@ -76,6 +75,37 @@ function PluggableStorage(options) {
76
75
  settings.core.key === undefined ? new UniqueKeysCacheInMemory_1.UniqueKeysCacheInMemory() : new UniqueKeysCacheInMemoryCS_1.UniqueKeysCacheInMemoryCS() :
77
76
  new UniqueKeysCachePluggable_1.UniqueKeysCachePluggable(log, keys.buildUniqueKeysKey(), wrapper) :
78
77
  undefined;
78
+ // Connects to wrapper and emits SDK_READY event on main client
79
+ var connectPromise = wrapper.connect().then(function () {
80
+ if (isSyncronizer) {
81
+ // In standalone or producer mode, clear storage if SDK key or feature flag filter has changed
82
+ return wrapper.get(keys.buildHashKey()).then(function (hash) {
83
+ var currentHash = (0, KeyBuilder_1.getStorageHash)(settings);
84
+ if (hash !== currentHash) {
85
+ log.info(constants_2.LOG_PREFIX + 'Storage HASH has changed (SDK key, flags filter criteria or flags spec version was modified). Clearing cache');
86
+ return wrapper.getKeysByPrefix(keys.prefix + ".").then(function (storageKeys) {
87
+ return Promise.all(storageKeys.map(function (storageKey) { return wrapper.del(storageKey); }));
88
+ }).then(function () { return wrapper.set(keys.buildHashKey(), currentHash); });
89
+ }
90
+ }).then(function () {
91
+ onReadyCb();
92
+ });
93
+ }
94
+ else {
95
+ // Start periodic flush of async storages if not running synchronizer (producer mode)
96
+ if (impressionCountsCache && impressionCountsCache.start)
97
+ impressionCountsCache.start();
98
+ if (uniqueKeysCache && uniqueKeysCache.start)
99
+ uniqueKeysCache.start();
100
+ if (telemetry && telemetry.recordConfig)
101
+ telemetry.recordConfig();
102
+ onReadyCb();
103
+ }
104
+ }).catch(function (e) {
105
+ e = e || new Error('Error connecting wrapper');
106
+ onReadyCb(e);
107
+ return e; // Propagate error for shared clients
108
+ });
79
109
  return {
80
110
  splits: new SplitsCachePluggable_1.SplitsCachePluggable(log, keys, wrapper, settings.sync.__splitFiltersValidation),
81
111
  segments: new SegmentsCachePluggable_1.SegmentsCachePluggable(log, keys, wrapper),
@@ -84,41 +114,6 @@ function PluggableStorage(options) {
84
114
  events: isPartialConsumer ? promisifyEventsTrack(new EventsCacheInMemory_1.EventsCacheInMemory(eventsQueueSize)) : new EventsCachePluggable_1.EventsCachePluggable(log, keys.buildEventsKey(), wrapper, metadata),
85
115
  telemetry: telemetry,
86
116
  uniqueKeys: uniqueKeysCache,
87
- init: function () {
88
- if (connectPromise)
89
- return connectPromise;
90
- // Connects to wrapper and emits SDK_READY event on main client
91
- return connectPromise = wrapper.connect().then(function () {
92
- if (isSyncronizer) {
93
- // In standalone or producer mode, clear storage if SDK key or feature flag filter has changed
94
- return wrapper.get(keys.buildHashKey()).then(function (hash) {
95
- var currentHash = (0, KeyBuilder_1.getStorageHash)(settings);
96
- if (hash !== currentHash) {
97
- log.info(constants_2.LOG_PREFIX + 'Storage HASH has changed (SDK key, flags filter criteria or flags spec version was modified). Clearing cache');
98
- return wrapper.getKeysByPrefix(keys.prefix + ".").then(function (storageKeys) {
99
- return Promise.all(storageKeys.map(function (storageKey) { return wrapper.del(storageKey); }));
100
- }).then(function () { return wrapper.set(keys.buildHashKey(), currentHash); });
101
- }
102
- }).then(function () {
103
- onReadyCb();
104
- });
105
- }
106
- else {
107
- // Start periodic flush of async storages if not running synchronizer (producer mode)
108
- if (impressionCountsCache && impressionCountsCache.start)
109
- impressionCountsCache.start();
110
- if (uniqueKeysCache && uniqueKeysCache.start)
111
- uniqueKeysCache.start();
112
- if (telemetry && telemetry.recordConfig)
113
- telemetry.recordConfig();
114
- onReadyCb();
115
- }
116
- }).catch(function (e) {
117
- e = e || new Error('Error connecting wrapper');
118
- onReadyCb(e);
119
- return e; // Propagate error for shared clients
120
- });
121
- },
122
117
  // Stop periodic flush and disconnect the underlying storage
123
118
  destroy: function () {
124
119
  return Promise.all(isSyncronizer ? [] : [
@@ -128,7 +123,7 @@ function PluggableStorage(options) {
128
123
  },
129
124
  // emits SDK_READY event on shared clients and returns a reference to the storage
130
125
  shared: function (_, onReadyCb) {
131
- this.init().then(onReadyCb);
126
+ connectPromise.then(onReadyCb);
132
127
  return (0, tslib_1.__assign)((0, tslib_1.__assign)({}, this), {
133
128
  // no-op destroy, to disconnect the wrapper only when the main client is destroyed
134
129
  destroy: function () { } });
@@ -46,8 +46,13 @@ function fromObjectUpdaterFactory(splitsParser, storage, readiness, settings) {
46
46
  readiness.splits.emit(constants_2.SDK_SPLITS_ARRIVED);
47
47
  if (startingUp) {
48
48
  startingUp = false;
49
- // Emits SDK_READY
50
- readiness.segments.emit(constants_2.SDK_SEGMENTS_ARRIVED);
49
+ Promise.resolve(splitsCache.checkCache()).then(function (cacheReady) {
50
+ // Emits SDK_READY_FROM_CACHE
51
+ if (cacheReady)
52
+ readiness.splits.emit(constants_2.SDK_SPLITS_CACHE_LOADED);
53
+ // Emits SDK_READY
54
+ readiness.segments.emit(constants_2.SDK_SEGMENTS_ARRIVED);
55
+ });
51
56
  }
52
57
  return true;
53
58
  });
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pollingManagerSSFactory = void 0;
4
4
  var splitsSyncTask_1 = require("./syncTasks/splitsSyncTask");
5
5
  var segmentsSyncTask_1 = require("./syncTasks/segmentsSyncTask");
6
- var thenable_1 = require("../../utils/promise/thenable");
7
6
  var constants_1 = require("../../logger/constants");
8
7
  /**
9
8
  * Expose start / stop mechanism for pulling data from services.
@@ -22,9 +21,10 @@ function pollingManagerSSFactory(params) {
22
21
  log.debug(constants_1.LOG_PREFIX_SYNC_POLLING + ("Splits will be refreshed each " + settings.scheduler.featuresRefreshRate + " millis"));
23
22
  log.debug(constants_1.LOG_PREFIX_SYNC_POLLING + ("Segments will be refreshed each " + settings.scheduler.segmentsRefreshRate + " millis"));
24
23
  var startingUp = splitsSyncTask.start();
25
- if ((0, thenable_1.thenable)(startingUp)) {
24
+ if (startingUp) {
26
25
  startingUp.then(function () {
27
- segmentsSyncTask.start();
26
+ if (splitsSyncTask.isRunning())
27
+ segmentsSyncTask.start();
28
28
  });
29
29
  }
30
30
  },
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splitChangesUpdaterFactory = exports.computeSplitsMutation = exports.parseSegments = void 0;
4
- var sets_1 = require("../../../utils/lang/sets");
5
4
  var timeout_1 = require("../../../utils/promise/timeout");
6
5
  var constants_1 = require("../../../readiness/constants");
7
6
  var constants_2 = require("../../../logger/constants");
@@ -23,7 +22,7 @@ function checkAllSegmentsExist(segments) {
23
22
  */
24
23
  function parseSegments(_a) {
25
24
  var conditions = _a.conditions;
26
- var segments = new sets_1._Set();
25
+ var segments = new Set();
27
26
  for (var i = 0; i < conditions.length; i++) {
28
27
  var matchers = conditions[i].matcherGroup.matchers;
29
28
  matchers.forEach(function (matcher) {
@@ -59,7 +58,7 @@ function matchFilters(featureFlag, filters) {
59
58
  * Exported for testing purposes.
60
59
  */
61
60
  function computeSplitsMutation(entries, filters) {
62
- var segments = new sets_1._Set();
61
+ var segments = new Set();
63
62
  var computed = entries.reduce(function (accum, split) {
64
63
  if (split.status === 'ACTIVE' && matchFilters(split, filters)) {
65
64
  accum.added.push([split.name, split]);
@@ -72,7 +71,7 @@ function computeSplitsMutation(entries, filters) {
72
71
  }
73
72
  return accum;
74
73
  }, { added: [], removed: [], segments: [] });
75
- computed.segments = (0, sets_1.setToArray)(segments);
74
+ computed.segments = Array.from(segments);
76
75
  return computed;
77
76
  }
78
77
  exports.computeSplitsMutation = computeSplitsMutation;
@@ -126,7 +125,7 @@ function splitChangesUpdaterFactory(log, splitChangesFetcher, splits, segments,
126
125
  function _splitChangesUpdater(since, retry) {
127
126
  if (retry === void 0) { retry = 0; }
128
127
  log.debug(constants_2.SYNC_SPLITS_FETCH, [since]);
129
- return Promise.resolve(splitUpdateNotification ?
128
+ var fetcherPromise = Promise.resolve(splitUpdateNotification ?
130
129
  { splits: [splitUpdateNotification.payload], till: splitUpdateNotification.changeNumber } :
131
130
  splitChangesFetcher(since, noCache, till, _promiseDecorator))
132
131
  .then(function (splitChanges) {
@@ -170,6 +169,15 @@ function splitChangesUpdaterFactory(log, splitChangesFetcher, splits, segments,
170
169
  }
171
170
  return false;
172
171
  });
172
+ // After triggering the requests, if we have cached splits information let's notify that to emit SDK_READY_FROM_CACHE.
173
+ // Wrapping in a promise since checkCache can be async.
174
+ if (splitsEventEmitter && startingUp) {
175
+ Promise.resolve(splits.checkCache()).then(function (isCacheReady) {
176
+ if (isCacheReady)
177
+ splitsEventEmitter.emit(constants_1.SDK_SPLITS_CACHE_LOADED);
178
+ });
179
+ }
180
+ return fetcherPromise;
173
181
  }
174
182
  var sincePromise = Promise.resolve(splits.getChangeNumber()); // `getChangeNumber` never rejects or throws error
175
183
  return sincePromise.then(_splitChangesUpdater);
@@ -11,7 +11,6 @@ function Uint8ArrayToString(myUint8Arr) {
11
11
  }
12
12
  function StringToUint8Array(myString) {
13
13
  var charCodes = myString.split('').map(function (e) { return e.charCodeAt(0); });
14
- // eslint-disable-next-line compat/compat
15
14
  return new Uint8Array(charCodes);
16
15
  }
17
16
  /**