@splitsoftware/splitio-commons 1.17.1-rc.2 → 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 (195) 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/sdkClient/clientCS.js +5 -8
  12. package/cjs/sdkClient/sdkClientMethodCS.js +1 -1
  13. package/cjs/sdkFactory/index.js +1 -3
  14. package/cjs/services/decorateHeaders.js +1 -2
  15. package/cjs/storages/AbstractSplitsCacheAsync.js +7 -0
  16. package/cjs/storages/AbstractSplitsCacheSync.js +7 -0
  17. package/cjs/storages/KeyBuilderCS.js +0 -9
  18. package/cjs/storages/dataLoader.js +32 -65
  19. package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -21
  20. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +14 -7
  21. package/cjs/storages/inLocalStorage/index.js +1 -4
  22. package/cjs/storages/inMemory/InMemoryStorageCS.js +4 -16
  23. package/cjs/storages/inMemory/SegmentsCacheInMemory.js +3 -4
  24. package/cjs/storages/inMemory/SplitsCacheInMemory.js +2 -3
  25. package/cjs/storages/inMemory/UniqueKeysCacheInMemory.js +2 -3
  26. package/cjs/storages/inMemory/UniqueKeysCacheInMemoryCS.js +2 -3
  27. package/cjs/storages/inRedis/RedisAdapter.js +2 -3
  28. package/cjs/storages/inRedis/SplitsCacheInRedis.js +1 -1
  29. package/cjs/storages/inRedis/TelemetryCacheInRedis.js +3 -4
  30. package/cjs/storages/inRedis/UniqueKeysCacheInRedis.js +1 -2
  31. package/cjs/storages/pluggable/SplitsCachePluggable.js +1 -1
  32. package/cjs/storages/pluggable/TelemetryCachePluggable.js +6 -7
  33. package/cjs/storages/pluggable/UniqueKeysCachePluggable.js +1 -2
  34. package/cjs/storages/pluggable/inMemoryWrapper.js +7 -8
  35. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +7 -2
  36. package/cjs/sync/polling/pollingManagerSS.js +3 -3
  37. package/cjs/sync/polling/updaters/splitChangesUpdater.js +13 -5
  38. package/cjs/sync/streaming/parseUtils.js +0 -1
  39. package/cjs/sync/streaming/pushManager.js +2 -3
  40. package/cjs/utils/LRUCache/index.js +1 -2
  41. package/cjs/utils/constants/browser.js +1 -4
  42. package/cjs/utils/lang/index.js +6 -9
  43. package/cjs/utils/lang/objectAssign.js +12 -77
  44. package/cjs/utils/lang/sets.js +3 -110
  45. package/cjs/utils/settingsValidation/index.js +0 -9
  46. package/cjs/utils/settingsValidation/logger/builtinLogger.js +1 -2
  47. package/cjs/utils/settingsValidation/storage/storageCS.js +12 -1
  48. package/esm/evaluator/index.js +3 -3
  49. package/esm/evaluator/matchers/semver_inlist.js +1 -2
  50. package/esm/evaluator/matchers/whitelist.js +1 -2
  51. package/esm/listeners/browser.js +1 -2
  52. package/esm/logger/browser/DebugLogger.js +1 -2
  53. package/esm/logger/browser/ErrorLogger.js +1 -2
  54. package/esm/logger/browser/InfoLogger.js +1 -2
  55. package/esm/logger/browser/WarnLogger.js +1 -2
  56. package/esm/logger/index.js +1 -2
  57. package/esm/sdkClient/clientCS.js +5 -8
  58. package/esm/sdkClient/sdkClientMethodCS.js +1 -1
  59. package/esm/sdkFactory/index.js +2 -4
  60. package/esm/services/decorateHeaders.js +1 -2
  61. package/esm/storages/AbstractSplitsCacheAsync.js +7 -0
  62. package/esm/storages/AbstractSplitsCacheSync.js +7 -0
  63. package/esm/storages/KeyBuilderCS.js +0 -9
  64. package/esm/storages/dataLoader.js +30 -62
  65. package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -21
  66. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +14 -7
  67. package/esm/storages/inLocalStorage/index.js +2 -5
  68. package/esm/storages/inMemory/InMemoryStorageCS.js +4 -16
  69. package/esm/storages/inMemory/SegmentsCacheInMemory.js +3 -4
  70. package/esm/storages/inMemory/SplitsCacheInMemory.js +2 -3
  71. package/esm/storages/inMemory/UniqueKeysCacheInMemory.js +2 -3
  72. package/esm/storages/inMemory/UniqueKeysCacheInMemoryCS.js +2 -3
  73. package/esm/storages/inRedis/RedisAdapter.js +2 -3
  74. package/esm/storages/inRedis/SplitsCacheInRedis.js +2 -2
  75. package/esm/storages/inRedis/TelemetryCacheInRedis.js +3 -4
  76. package/esm/storages/inRedis/UniqueKeysCacheInRedis.js +1 -2
  77. package/esm/storages/pluggable/SplitsCachePluggable.js +2 -2
  78. package/esm/storages/pluggable/TelemetryCachePluggable.js +6 -7
  79. package/esm/storages/pluggable/UniqueKeysCachePluggable.js +1 -2
  80. package/esm/storages/pluggable/inMemoryWrapper.js +7 -8
  81. package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +8 -3
  82. package/esm/sync/polling/pollingManagerSS.js +3 -3
  83. package/esm/sync/polling/updaters/splitChangesUpdater.js +14 -6
  84. package/esm/sync/streaming/parseUtils.js +0 -1
  85. package/esm/sync/streaming/pushManager.js +2 -3
  86. package/esm/utils/LRUCache/index.js +1 -2
  87. package/esm/utils/constants/browser.js +0 -3
  88. package/esm/utils/lang/index.js +6 -9
  89. package/esm/utils/lang/objectAssign.js +12 -77
  90. package/esm/utils/lang/sets.js +2 -107
  91. package/esm/utils/settingsValidation/index.js +0 -9
  92. package/esm/utils/settingsValidation/logger/builtinLogger.js +1 -2
  93. package/esm/utils/settingsValidation/storage/storageCS.js +10 -0
  94. package/package.json +2 -2
  95. package/src/evaluator/index.ts +5 -5
  96. package/src/evaluator/matchers/semver_inlist.ts +1 -2
  97. package/src/evaluator/matchers/whitelist.ts +1 -3
  98. package/src/listeners/browser.ts +1 -2
  99. package/src/logger/browser/DebugLogger.ts +1 -2
  100. package/src/logger/browser/ErrorLogger.ts +1 -2
  101. package/src/logger/browser/InfoLogger.ts +1 -2
  102. package/src/logger/browser/WarnLogger.ts +1 -2
  103. package/src/logger/index.ts +3 -4
  104. package/src/sdkClient/clientCS.ts +5 -8
  105. package/src/sdkClient/sdkClientMethodCS.ts +1 -1
  106. package/src/sdkFactory/index.ts +2 -5
  107. package/src/sdkFactory/types.ts +1 -1
  108. package/src/services/decorateHeaders.ts +1 -2
  109. package/src/storages/AbstractSplitsCacheAsync.ts +9 -2
  110. package/src/storages/AbstractSplitsCacheSync.ts +9 -2
  111. package/src/storages/KeyBuilderCS.ts +0 -13
  112. package/src/storages/dataLoader.ts +32 -63
  113. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -21
  114. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +16 -8
  115. package/src/storages/inLocalStorage/index.ts +2 -6
  116. package/src/storages/inMemory/InMemoryStorageCS.ts +4 -19
  117. package/src/storages/inMemory/SegmentsCacheInMemory.ts +4 -5
  118. package/src/storages/inMemory/SplitsCacheInMemory.ts +4 -5
  119. package/src/storages/inMemory/UniqueKeysCacheInMemory.ts +4 -5
  120. package/src/storages/inMemory/UniqueKeysCacheInMemoryCS.ts +4 -5
  121. package/src/storages/inRedis/RedisAdapter.ts +3 -4
  122. package/src/storages/inRedis/SplitsCacheInRedis.ts +3 -3
  123. package/src/storages/inRedis/TelemetryCacheInRedis.ts +3 -4
  124. package/src/storages/inRedis/UniqueKeysCacheInRedis.ts +1 -2
  125. package/src/storages/pluggable/SegmentsCachePluggable.ts +0 -1
  126. package/src/storages/pluggable/SplitsCachePluggable.ts +3 -3
  127. package/src/storages/pluggable/TelemetryCachePluggable.ts +6 -7
  128. package/src/storages/pluggable/UniqueKeysCachePluggable.ts +1 -2
  129. package/src/storages/pluggable/inMemoryWrapper.ts +8 -9
  130. package/src/storages/types.ts +9 -5
  131. package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +7 -3
  132. package/src/sync/polling/pollingManagerSS.ts +2 -3
  133. package/src/sync/polling/updaters/splitChangesUpdater.ts +15 -8
  134. package/src/sync/streaming/parseUtils.ts +0 -1
  135. package/src/sync/streaming/pushManager.ts +3 -4
  136. package/src/sync/submitters/types.ts +3 -4
  137. package/src/types.ts +9 -18
  138. package/src/utils/LRUCache/index.ts +2 -3
  139. package/src/utils/constants/browser.ts +0 -4
  140. package/src/utils/lang/index.ts +6 -7
  141. package/src/utils/lang/objectAssign.ts +13 -92
  142. package/src/utils/lang/sets.ts +3 -125
  143. package/src/utils/settingsValidation/index.ts +0 -10
  144. package/src/utils/settingsValidation/logger/builtinLogger.ts +1 -2
  145. package/src/utils/settingsValidation/storage/storageCS.ts +13 -0
  146. package/src/utils/settingsValidation/types.ts +0 -2
  147. package/types/logger/index.d.ts +1 -2
  148. package/types/sdkClient/clientCS.d.ts +2 -3
  149. package/types/sdkFactory/types.d.ts +1 -1
  150. package/types/storages/AbstractSplitsCacheAsync.d.ts +6 -2
  151. package/types/storages/AbstractSplitsCacheSync.d.ts +6 -2
  152. package/types/storages/KeyBuilderCS.d.ts +0 -2
  153. package/types/storages/dataLoader.d.ts +6 -17
  154. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +7 -2
  155. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +1 -2
  156. package/types/storages/inMemory/UniqueKeysCacheInMemory.d.ts +2 -3
  157. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +1 -2
  158. package/types/storages/pluggable/SplitsCachePluggable.d.ts +1 -2
  159. package/types/storages/pluggable/inMemoryWrapper.d.ts +1 -2
  160. package/types/storages/types.d.ts +7 -5
  161. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +1 -2
  162. package/types/sync/submitters/types.d.ts +3 -4
  163. package/types/types.d.ts +9 -17
  164. package/types/utils/LRUCache/index.d.ts +1 -2
  165. package/types/utils/constants/browser.d.ts +0 -2
  166. package/types/utils/lang/objectAssign.d.ts +3 -0
  167. package/types/utils/lang/sets.d.ts +1 -61
  168. package/types/utils/settingsValidation/index.d.ts +0 -1
  169. package/types/utils/settingsValidation/storage/storageCS.d.ts +5 -0
  170. package/types/utils/settingsValidation/types.d.ts +0 -2
  171. package/cjs/integrations/browser.js +0 -31
  172. package/cjs/integrations/ga/GaToSplit.js +0 -257
  173. package/cjs/integrations/ga/GoogleAnalyticsToSplit.js +0 -14
  174. package/cjs/integrations/ga/SplitToGa.js +0 -123
  175. package/cjs/integrations/ga/SplitToGoogleAnalytics.js +0 -14
  176. package/cjs/integrations/ga/types.js +0 -2
  177. package/cjs/sdkClient/sdkClientMethodCSWithTT.js +0 -76
  178. package/cjs/utils/lang/maps.js +0 -96
  179. package/esm/integrations/browser.js +0 -27
  180. package/esm/integrations/ga/GaToSplit.js +0 -250
  181. package/esm/integrations/ga/GoogleAnalyticsToSplit.js +0 -10
  182. package/esm/integrations/ga/SplitToGa.js +0 -120
  183. package/esm/integrations/ga/SplitToGoogleAnalytics.js +0 -10
  184. package/esm/integrations/ga/types.js +0 -1
  185. package/esm/sdkClient/sdkClientMethodCSWithTT.js +0 -72
  186. package/esm/utils/lang/maps.js +0 -92
  187. package/src/integrations/browser.ts +0 -35
  188. package/src/integrations/ga/GaToSplit.ts +0 -299
  189. package/src/integrations/ga/GoogleAnalyticsToSplit.ts +0 -14
  190. package/src/integrations/ga/SplitToGa.ts +0 -135
  191. package/src/integrations/ga/SplitToGoogleAnalytics.ts +0 -14
  192. package/src/integrations/ga/autoRequire.js +0 -33
  193. package/src/integrations/ga/types.ts +0 -153
  194. package/src/sdkClient/sdkClientMethodCSWithTT.ts +0 -98
  195. package/src/utils/lang/maps.ts +0 -108
@@ -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: ';
@@ -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
@@ -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
  /**
@@ -15,7 +15,6 @@ var constants_1 = require("./constants");
15
15
  var constants_2 = require("../../logger/constants");
16
16
  var types_1 = require("./SSEHandler/types");
17
17
  var parseUtils_1 = require("./parseUtils");
18
- var sets_1 = require("../../utils/lang/sets");
19
18
  var murmur3_64_1 = require("../../utils/murmur3/murmur3_64");
20
19
  var constants_3 = require("../../utils/constants");
21
20
  /**
@@ -221,8 +220,8 @@ function pushManagerFactory(params, pollingManager) {
221
220
  var keyList = void 0, added_1, removed_1;
222
221
  try {
223
222
  keyList = (0, parseUtils_1.parseKeyList)(parsedData.d, parsedData.c);
224
- added_1 = new sets_1._Set(keyList.a);
225
- removed_1 = new sets_1._Set(keyList.r);
223
+ added_1 = new Set(keyList.a);
224
+ removed_1 = new Set(keyList.r);
226
225
  }
227
226
  catch (e) {
228
227
  log.warn(constants_2.STREAMING_PARSING_MEMBERSHIPS_UPDATE, ['KeyList', e]);
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LRUCache = void 0;
4
- var maps_1 = require("../lang/maps");
5
4
  var LinkedList_1 = require("./LinkedList");
6
5
  var LRUCache = /** @class */ (function () {
7
6
  function LRUCache(maxSize) {
8
7
  this.maxLen = maxSize || 1;
9
- this.items = new maps_1._Map();
8
+ this.items = new Map();
10
9
  this.lru = new LinkedList_1.LinkedList();
11
10
  }
12
11
  LRUCache.prototype.get = function (key) {
@@ -1,8 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_CACHE_EXPIRATION_IN_MILLIS = exports.SPLIT_TO_GOOGLE_ANALYTICS = exports.GOOGLE_ANALYTICS_TO_SPLIT = void 0;
4
- // Integration types
5
- exports.GOOGLE_ANALYTICS_TO_SPLIT = 'GOOGLE_ANALYTICS_TO_SPLIT';
6
- exports.SPLIT_TO_GOOGLE_ANALYTICS = 'SPLIT_TO_GOOGLE_ANALYTICS';
3
+ exports.DEFAULT_CACHE_EXPIRATION_IN_MILLIS = void 0;
7
4
  // This value might be eventually set via a config parameter
8
5
  exports.DEFAULT_CACHE_EXPIRATION_IN_MILLIS = 864000000; // 10 days
@@ -121,11 +121,9 @@ exports.isBoolean = isBoolean;
121
121
  function isFiniteNumber(val) {
122
122
  if (val instanceof Number)
123
123
  val = val.valueOf();
124
- // @TODO remove `isFinite` once `Number.isFinite` is fully supported by targets
125
- // eslint-disable-next-line compat/compat
126
- if (typeof val === 'number')
127
- return Number.isFinite ? Number.isFinite(val) : isFinite(val);
128
- return false;
124
+ return typeof val === 'number' ?
125
+ Number.isFinite ? Number.isFinite(val) : isFinite(val) :
126
+ false;
129
127
  }
130
128
  exports.isFiniteNumber = isFiniteNumber;
131
129
  /**
@@ -135,10 +133,9 @@ exports.isFiniteNumber = isFiniteNumber;
135
133
  function isIntegerNumber(val) {
136
134
  if (val instanceof Number)
137
135
  val = val.valueOf();
138
- // eslint-disable-next-line compat/compat
139
- if (typeof val === 'number')
140
- return Number.isInteger ? Number.isInteger(val) : isFinite(val) && Math.floor(val) === val;
141
- return false;
136
+ return typeof val === 'number' ?
137
+ Number.isInteger ? Number.isInteger(val) : isFinite(val) && Math.floor(val) === val :
138
+ false;
142
139
  }
143
140
  exports.isIntegerNumber = isIntegerNumber;
144
141
  /**
@@ -1,85 +1,20 @@
1
1
  "use strict";
2
- /*
3
- Adaptation of "object-assign" library (https://www.npmjs.com/package/object-assign)
4
- exported as an ES module instead of CommonJS, to avoid extra configuration steps when using
5
- the ESM build of the SDK with tools that doesn't support CommonJS by default (e.g. Rollup).
6
-
7
- object-assign
8
- (c) Sindre Sorhus
9
- @license MIT
10
- */
2
+ /**
3
+ * A tiny polyfill for Object.assign
4
+ */
11
5
  Object.defineProperty(exports, "__esModule", { value: true });
12
6
  exports.objectAssign = void 0;
13
- /* eslint-disable */
14
- // @ts-nocheck
15
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
16
- var hasOwnProperty = Object.prototype.hasOwnProperty;
17
- var propIsEnumerable = Object.prototype.propertyIsEnumerable;
18
- function toObject(val) {
19
- if (val === null || val === undefined) {
7
+ exports.objectAssign = Object.assign || function (target) {
8
+ if (target === null || target === undefined)
20
9
  throw new TypeError('Object.assign cannot be called with null or undefined');
21
- }
22
- return Object(val);
23
- }
24
- function shouldUseNative() {
25
- try {
26
- if (!Object.assign) {
27
- return false;
28
- }
29
- // Detect buggy property enumeration order in older V8 versions.
30
- // https://bugs.chromium.org/p/v8/issues/detail?id=4118
31
- var test1 = new String('abc');
32
- test1[5] = 'de';
33
- if (Object.getOwnPropertyNames(test1)[0] === '5') {
34
- return false;
35
- }
36
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
37
- var test2 = {};
38
- for (var i = 0; i < 10; i++) {
39
- test2['_' + String.fromCharCode(i)] = i;
40
- }
41
- var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
42
- return test2[n];
43
- });
44
- if (order2.join('') !== '0123456789') {
45
- return false;
46
- }
47
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
48
- var test3 = {};
49
- 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
50
- test3[letter] = letter;
51
- });
52
- if (Object.keys(Object.assign({}, test3)).join('') !==
53
- 'abcdefghijklmnopqrst') {
54
- return false;
55
- }
56
- return true;
57
- }
58
- catch (err) {
59
- // We don't expect any of the above to throw, but better to be safe.
60
- return false;
61
- }
62
- }
63
- exports.objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
64
- var from;
65
- var to = toObject(target);
66
- var symbols;
67
- for (var s = 1; s < arguments.length; s++) {
68
- from = Object(arguments[s]);
69
- // eslint-disable-next-line no-restricted-syntax
70
- for (var key in from) {
71
- if (hasOwnProperty.call(from, key)) {
72
- to[key] = from[key];
73
- }
74
- }
75
- if (getOwnPropertySymbols) {
76
- symbols = getOwnPropertySymbols(from);
77
- for (var i = 0; i < symbols.length; i++) {
78
- if (propIsEnumerable.call(from, symbols[i])) {
79
- to[symbols[i]] = from[symbols[i]];
80
- }
10
+ target = Object(target);
11
+ for (var i = 1; i < arguments.length; i++) {
12
+ var source = Object(arguments[i]); // eslint-disable-next-line no-restricted-syntax
13
+ for (var key in source) {
14
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
15
+ target[key] = source[key];
81
16
  }
82
17
  }
83
18
  }
84
- return to;
19
+ return target;
85
20
  };