@splitsoftware/splitio-commons 1.16.1-rc.7 → 1.17.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 (165) hide show
  1. package/CHANGES.txt +2 -1
  2. package/cjs/evaluator/matchers/index.js +1 -3
  3. package/cjs/evaluator/matchers/matcherTypes.js +0 -1
  4. package/cjs/evaluator/matchersTransform/index.js +1 -1
  5. package/cjs/logger/constants.js +4 -3
  6. package/cjs/logger/messages/info.js +2 -1
  7. package/cjs/readiness/readinessManager.js +10 -14
  8. package/cjs/readiness/sdkReadinessManager.js +6 -5
  9. package/cjs/sdkClient/sdkClientMethodCS.js +2 -2
  10. package/cjs/sdkClient/sdkClientMethodCSWithTT.js +2 -2
  11. package/cjs/sdkFactory/index.js +1 -1
  12. package/cjs/services/decorateHeaders.js +42 -0
  13. package/cjs/services/splitApi.js +0 -4
  14. package/cjs/services/splitHttpClient.js +5 -4
  15. package/cjs/storages/AbstractSplitsCacheAsync.js +2 -2
  16. package/cjs/storages/AbstractSplitsCacheSync.js +6 -5
  17. package/cjs/storages/KeyBuilder.js +0 -3
  18. package/cjs/storages/KeyBuilderCS.js +5 -17
  19. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +4 -16
  20. package/cjs/storages/inLocalStorage/index.js +2 -6
  21. package/cjs/storages/inMemory/InMemoryStorageCS.js +0 -5
  22. package/cjs/storages/inMemory/SplitsCacheInMemory.js +11 -20
  23. package/cjs/storages/inMemory/TelemetryCacheInMemory.js +10 -7
  24. package/cjs/storages/pluggable/inMemoryWrapper.js +1 -1
  25. package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +1 -5
  26. package/cjs/sync/polling/pollingManagerCS.js +33 -51
  27. package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +2 -2
  28. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +21 -20
  29. package/cjs/sync/streaming/SSEClient/index.js +0 -4
  30. package/cjs/sync/streaming/SSEHandler/index.js +0 -1
  31. package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +9 -23
  32. package/cjs/sync/streaming/constants.js +1 -2
  33. package/cjs/sync/streaming/parseUtils.js +8 -3
  34. package/cjs/sync/streaming/pushManager.js +68 -97
  35. package/cjs/sync/submitters/telemetrySubmitter.js +0 -4
  36. package/cjs/sync/syncManagerOnline.js +14 -24
  37. package/cjs/utils/constants/index.js +2 -4
  38. package/cjs/utils/settingsValidation/index.js +2 -7
  39. package/esm/evaluator/matchers/index.js +1 -3
  40. package/esm/evaluator/matchers/matcherTypes.js +0 -1
  41. package/esm/evaluator/matchersTransform/index.js +1 -1
  42. package/esm/logger/constants.js +1 -0
  43. package/esm/logger/messages/info.js +2 -1
  44. package/esm/readiness/readinessManager.js +10 -14
  45. package/esm/readiness/sdkReadinessManager.js +6 -5
  46. package/esm/sdkClient/sdkClientMethodCS.js +2 -2
  47. package/esm/sdkClient/sdkClientMethodCSWithTT.js +2 -2
  48. package/esm/sdkFactory/index.js +1 -1
  49. package/esm/services/decorateHeaders.js +38 -0
  50. package/esm/services/splitApi.js +1 -5
  51. package/esm/services/splitHttpClient.js +5 -4
  52. package/esm/storages/AbstractSplitsCacheAsync.js +2 -2
  53. package/esm/storages/AbstractSplitsCacheSync.js +4 -3
  54. package/esm/storages/KeyBuilder.js +0 -3
  55. package/esm/storages/KeyBuilderCS.js +4 -15
  56. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +5 -17
  57. package/esm/storages/inLocalStorage/index.js +3 -7
  58. package/esm/storages/inMemory/InMemoryStorageCS.js +0 -5
  59. package/esm/storages/inMemory/SplitsCacheInMemory.js +12 -21
  60. package/esm/storages/inMemory/TelemetryCacheInMemory.js +10 -7
  61. package/esm/storages/pluggable/inMemoryWrapper.js +1 -1
  62. package/esm/sync/polling/fetchers/mySegmentsFetcher.js +1 -5
  63. package/esm/sync/polling/pollingManagerCS.js +34 -52
  64. package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +2 -2
  65. package/esm/sync/polling/updaters/mySegmentsUpdater.js +19 -18
  66. package/esm/sync/streaming/SSEClient/index.js +1 -5
  67. package/esm/sync/streaming/SSEHandler/index.js +1 -2
  68. package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +9 -23
  69. package/esm/sync/streaming/constants.js +0 -1
  70. package/esm/sync/streaming/parseUtils.js +8 -3
  71. package/esm/sync/streaming/pushManager.js +69 -97
  72. package/esm/sync/submitters/telemetrySubmitter.js +0 -4
  73. package/esm/sync/syncManagerOnline.js +15 -25
  74. package/esm/utils/constants/index.js +1 -3
  75. package/esm/utils/settingsValidation/index.js +2 -7
  76. package/package.json +1 -1
  77. package/src/dtos/types.ts +7 -17
  78. package/src/evaluator/matchers/index.ts +0 -2
  79. package/src/evaluator/matchers/matcherTypes.ts +0 -1
  80. package/src/evaluator/matchersTransform/index.ts +1 -1
  81. package/src/logger/constants.ts +1 -0
  82. package/src/logger/messages/info.ts +2 -1
  83. package/src/readiness/readinessManager.ts +9 -13
  84. package/src/readiness/sdkReadinessManager.ts +7 -7
  85. package/src/readiness/types.ts +2 -3
  86. package/src/sdkClient/sdkClientMethodCS.ts +2 -2
  87. package/src/sdkClient/sdkClientMethodCSWithTT.ts +2 -2
  88. package/src/sdkFactory/index.ts +1 -1
  89. package/src/services/decorateHeaders.ts +40 -0
  90. package/src/services/splitApi.ts +1 -6
  91. package/src/services/splitHttpClient.ts +5 -4
  92. package/src/services/types.ts +0 -1
  93. package/src/storages/AbstractSplitsCacheAsync.ts +2 -2
  94. package/src/storages/AbstractSplitsCacheSync.ts +5 -4
  95. package/src/storages/KeyBuilder.ts +0 -3
  96. package/src/storages/KeyBuilderCS.ts +5 -25
  97. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +3 -3
  98. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +5 -20
  99. package/src/storages/inLocalStorage/index.ts +4 -8
  100. package/src/storages/inMemory/InMemoryStorageCS.ts +0 -5
  101. package/src/storages/inMemory/SplitsCacheInMemory.ts +10 -15
  102. package/src/storages/inMemory/TelemetryCacheInMemory.ts +11 -7
  103. package/src/storages/pluggable/inMemoryWrapper.ts +1 -1
  104. package/src/storages/types.ts +5 -7
  105. package/src/sync/polling/fetchers/mySegmentsFetcher.ts +2 -6
  106. package/src/sync/polling/pollingManagerCS.ts +29 -61
  107. package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +10 -10
  108. package/src/sync/polling/types.ts +3 -4
  109. package/src/sync/polling/updaters/mySegmentsUpdater.ts +20 -17
  110. package/src/sync/streaming/SSEClient/index.ts +7 -10
  111. package/src/sync/streaming/SSEHandler/index.ts +1 -2
  112. package/src/sync/streaming/SSEHandler/types.ts +2 -14
  113. package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +9 -25
  114. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  115. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
  116. package/src/sync/streaming/UpdateWorkers/types.ts +2 -2
  117. package/src/sync/streaming/constants.ts +0 -1
  118. package/src/sync/streaming/parseUtils.ts +10 -6
  119. package/src/sync/streaming/pushManager.ts +67 -101
  120. package/src/sync/streaming/types.ts +3 -5
  121. package/src/sync/submitters/telemetrySubmitter.ts +0 -4
  122. package/src/sync/submitters/types.ts +4 -11
  123. package/src/sync/syncManagerOnline.ts +11 -19
  124. package/src/types.ts +9 -28
  125. package/src/utils/constants/index.ts +1 -3
  126. package/src/utils/settingsValidation/index.ts +3 -8
  127. package/src/utils/settingsValidation/types.ts +1 -1
  128. package/types/dtos/types.d.ts +6 -14
  129. package/types/logger/constants.d.ts +1 -0
  130. package/types/readiness/readinessManager.d.ts +2 -2
  131. package/types/readiness/sdkReadinessManager.d.ts +3 -2
  132. package/types/readiness/types.d.ts +2 -3
  133. package/types/services/decorateHeaders.d.ts +2 -0
  134. package/types/services/types.d.ts +0 -1
  135. package/types/storages/AbstractSplitsCacheAsync.d.ts +1 -1
  136. package/types/storages/AbstractSplitsCacheSync.d.ts +3 -3
  137. package/types/storages/KeyBuilder.d.ts +0 -1
  138. package/types/storages/KeyBuilderCS.d.ts +2 -7
  139. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +2 -2
  140. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +1 -1
  141. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +2 -3
  142. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +6 -4
  143. package/types/storages/pluggable/inMemoryWrapper.d.ts +1 -1
  144. package/types/storages/types.d.ts +3 -4
  145. package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +3 -2
  146. package/types/sync/polling/types.d.ts +3 -10
  147. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +4 -4
  148. package/types/sync/streaming/SSEClient/index.d.ts +0 -1
  149. package/types/sync/streaming/SSEHandler/types.d.ts +2 -13
  150. package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +2 -3
  151. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -2
  152. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +2 -3
  153. package/types/sync/streaming/UpdateWorkers/types.d.ts +2 -2
  154. package/types/sync/streaming/constants.d.ts +0 -1
  155. package/types/sync/streaming/parseUtils.d.ts +4 -2
  156. package/types/sync/streaming/pushManager.d.ts +0 -2
  157. package/types/sync/streaming/types.d.ts +4 -5
  158. package/types/sync/submitters/types.d.ts +3 -10
  159. package/types/types.d.ts +11 -26
  160. package/types/utils/constants/index.d.ts +1 -3
  161. package/types/utils/settingsValidation/index.d.ts +0 -2
  162. package/types/utils/settingsValidation/types.d.ts +1 -1
  163. package/cjs/evaluator/matchers/large_segment.js +0 -16
  164. package/esm/evaluator/matchers/large_segment.js +0 -12
  165. package/src/evaluator/matchers/large_segment.ts +0 -18
@@ -1,5 +1,6 @@
1
1
  import { objectAssign } from '../utils/lang/objectAssign';
2
2
  import { ERROR_HTTP, ERROR_CLIENT_CANNOT_GET_READY } from '../logger/constants';
3
+ import { decorateHeaders } from './decorateHeaders';
3
4
  var messageNoFetch = 'Global fetch API is not available.';
4
5
  /**
5
6
  * Factory of Split HTTP clients, which are HTTP clients with predefined headers for Split endpoints.
@@ -15,22 +16,22 @@ export function splitHttpClientFactory(settings, _a) {
15
16
  // if fetch is not available, log Error
16
17
  if (!fetch)
17
18
  log.error(ERROR_CLIENT_CANNOT_GET_READY, [messageNoFetch]);
18
- var headers = {
19
+ var commonHeaders = {
19
20
  'Accept': 'application/json',
20
21
  'Content-Type': 'application/json',
21
22
  'Authorization': "Bearer " + authorizationKey,
22
23
  'SplitSDKVersion': version
23
24
  };
24
25
  if (ip)
25
- headers['SplitSDKMachineIP'] = ip;
26
+ commonHeaders['SplitSDKMachineIP'] = ip;
26
27
  if (hostname)
27
- headers['SplitSDKMachineName'] = hostname;
28
+ commonHeaders['SplitSDKMachineName'] = hostname;
28
29
  return function httpClient(url, reqOpts, latencyTracker, logErrorsAsInfo) {
29
30
  if (reqOpts === void 0) { reqOpts = {}; }
30
31
  if (latencyTracker === void 0) { latencyTracker = function () { }; }
31
32
  if (logErrorsAsInfo === void 0) { logErrorsAsInfo = false; }
32
33
  var request = objectAssign({
33
- headers: reqOpts.headers ? objectAssign({}, headers, reqOpts.headers) : headers,
34
+ headers: decorateHeaders(settings, objectAssign({}, commonHeaders, reqOpts.headers || {})),
34
35
  method: reqOpts.method || 'GET',
35
36
  body: reqOpts.body
36
37
  }, options);
@@ -6,9 +6,9 @@ import { objectAssign } from '../utils/lang/objectAssign';
6
6
  var AbstractSplitsCacheAsync = /** @class */ (function () {
7
7
  function AbstractSplitsCacheAsync() {
8
8
  }
9
- // @TODO revisit segment-related methods ('usesMatcher', 'getRegisteredSegments', 'registerSegments')
9
+ // @TODO revisit segment-related methods ('usesSegments', 'getRegisteredSegments', 'registerSegments')
10
10
  // noop, just keeping the interface. This is used by standalone client-side API only, and so only implemented by InMemory and InLocalStorage.
11
- AbstractSplitsCacheAsync.prototype.usesMatcher = function () {
11
+ AbstractSplitsCacheAsync.prototype.usesSegments = function () {
12
12
  return Promise.resolve(true);
13
13
  };
14
14
  /**
@@ -1,4 +1,5 @@
1
1
  import { objectAssign } from '../utils/lang/objectAssign';
2
+ import { IN_SEGMENT } from '../utils/constants';
2
3
  /**
3
4
  * This class provides a skeletal implementation of the ISplitsCacheSync interface
4
5
  * to minimize the effort required to implement this interface.
@@ -59,14 +60,14 @@ var AbstractSplitsCacheSync = /** @class */ (function () {
59
60
  export { AbstractSplitsCacheSync };
60
61
  /**
61
62
  * Given a parsed split, it returns a boolean flagging if its conditions use segments matchers (rules & whitelists).
62
- * This util is intended to simplify the implementation of `splitsCache::usesMatcher` method
63
+ * This util is intended to simplify the implementation of `splitsCache::usesSegments` method
63
64
  */
64
- export function usesMatcher(split, matcherType) {
65
+ export function usesSegments(split) {
65
66
  var conditions = split.conditions || [];
66
67
  for (var i = 0; i < conditions.length; i++) {
67
68
  var matchers = conditions[i].matcherGroup.matchers;
68
69
  for (var j = 0; j < matchers.length; j++) {
69
- if (matchers[j].matcherType === matcherType)
70
+ if (matchers[j].matcherType === IN_SEGMENT)
70
71
  return true;
71
72
  }
72
73
  }
@@ -36,9 +36,6 @@ var KeyBuilder = /** @class */ (function () {
36
36
  KeyBuilder.prototype.buildSplitsWithSegmentCountKey = function () {
37
37
  return this.prefix + ".splits.usingSegments";
38
38
  };
39
- KeyBuilder.prototype.buildSplitsWithLargeSegmentCountKey = function () {
40
- return this.prefix + ".splits.usingLargeSegments";
41
- };
42
39
  KeyBuilder.prototype.buildSegmentNameKey = function (segmentName) {
43
40
  return this.prefix + ".segment." + segmentName;
44
41
  };
@@ -21,6 +21,10 @@ var KeyBuilderCS = /** @class */ (function (_super) {
21
21
  return builtSegmentKeyName.substr(prefix.length);
22
22
  };
23
23
  // @BREAKING: The key used to start with the matching key instead of the prefix, this was changed on version 10.17.3
24
+ KeyBuilderCS.prototype.buildOldSegmentNameKey = function (segmentName) {
25
+ return this.matchingKey + "." + this.prefix + ".segment." + segmentName;
26
+ };
27
+ // @BREAKING: The key used to start with the matching key instead of the prefix, this was changed on version 10.17.3
24
28
  KeyBuilderCS.prototype.extractOldSegmentKey = function (builtSegmentKeyName) {
25
29
  var prefix = this.matchingKey + "." + this.prefix + ".segment.";
26
30
  if (startsWith(builtSegmentKeyName, prefix))
@@ -35,18 +39,3 @@ var KeyBuilderCS = /** @class */ (function (_super) {
35
39
  return KeyBuilderCS;
36
40
  }(KeyBuilder));
37
41
  export { KeyBuilderCS };
38
- export function myLargeSegmentsKeyBuilder(prefix, matchingKey) {
39
- return {
40
- buildSegmentNameKey: function (segmentName) {
41
- return prefix + "." + matchingKey + ".largeSegment." + segmentName;
42
- },
43
- extractSegmentName: function (builtSegmentKeyName) {
44
- var p = prefix + "." + matchingKey + ".largeSegment.";
45
- if (startsWith(builtSegmentKeyName, p))
46
- return builtSegmentKeyName.substr(p.length);
47
- },
48
- extractOldSegmentKey: function () {
49
- return undefined;
50
- }
51
- };
52
- }
@@ -1,10 +1,9 @@
1
1
  import { __extends } from "tslib";
2
- import { AbstractSplitsCacheSync, usesMatcher } from '../AbstractSplitsCacheSync';
2
+ import { AbstractSplitsCacheSync, usesSegments } from '../AbstractSplitsCacheSync';
3
3
  import { isFiniteNumber, toNumber, isNaNNumber } from '../../utils/lang';
4
4
  import { LOG_PREFIX } from './constants';
5
5
  import { _Set, setToArray } from '../../utils/lang/sets';
6
6
  import { getStorageHash } from '../KeyBuilder';
7
- import { IN_LARGE_SEGMENT, IN_SEGMENT } from '../../utils/constants';
8
7
  /**
9
8
  * ISplitsCacheSync implementation that stores split definitions in browser LocalStorage.
10
9
  */
@@ -38,14 +37,10 @@ var SplitsCacheInLocal = /** @class */ (function (_super) {
38
37
  if (split) {
39
38
  var ttKey = this.keys.buildTrafficTypeKey(split.trafficTypeName);
40
39
  this._decrementCount(ttKey);
41
- if (usesMatcher(split, IN_SEGMENT)) {
40
+ if (usesSegments(split)) {
42
41
  var segmentsCountKey = this.keys.buildSplitsWithSegmentCountKey();
43
42
  this._decrementCount(segmentsCountKey);
44
43
  }
45
- if (usesMatcher(split, IN_LARGE_SEGMENT)) {
46
- var segmentsCountKey = this.keys.buildSplitsWithLargeSegmentCountKey();
47
- this._decrementCount(segmentsCountKey);
48
- }
49
44
  }
50
45
  }
51
46
  catch (e) {
@@ -58,16 +53,11 @@ var SplitsCacheInLocal = /** @class */ (function (_super) {
58
53
  var ttKey = this.keys.buildTrafficTypeKey(split.trafficTypeName);
59
54
  // @ts-expect-error
60
55
  localStorage.setItem(ttKey, toNumber(localStorage.getItem(ttKey)) + 1);
61
- if (usesMatcher(split, IN_SEGMENT)) {
56
+ if (usesSegments(split)) {
62
57
  var segmentsCountKey = this.keys.buildSplitsWithSegmentCountKey();
63
58
  // @ts-expect-error
64
59
  localStorage.setItem(segmentsCountKey, toNumber(localStorage.getItem(segmentsCountKey)) + 1);
65
60
  }
66
- if (usesMatcher(split, IN_LARGE_SEGMENT)) {
67
- var segmentsCountKey = this.keys.buildSplitsWithLargeSegmentCountKey();
68
- // @ts-expect-error
69
- localStorage.setItem(segmentsCountKey, toNumber(localStorage.getItem(segmentsCountKey)) + 1);
70
- }
71
61
  }
72
62
  }
73
63
  catch (e) {
@@ -180,13 +170,11 @@ var SplitsCacheInLocal = /** @class */ (function (_super) {
180
170
  var ttCount = toNumber(localStorage.getItem(this.keys.buildTrafficTypeKey(trafficType)));
181
171
  return isFiniteNumber(ttCount) && ttCount > 0;
182
172
  };
183
- SplitsCacheInLocal.prototype.usesMatcher = function (matcherType) {
173
+ SplitsCacheInLocal.prototype.usesSegments = function () {
184
174
  // If cache hasn't been synchronized with the cloud, assume we need them.
185
175
  if (!this.hasSync)
186
176
  return true;
187
- var storedCount = localStorage.getItem(matcherType === IN_SEGMENT ?
188
- this.keys.buildSplitsWithSegmentCountKey() :
189
- this.keys.buildSplitsWithLargeSegmentCountKey());
177
+ var storedCount = localStorage.getItem(this.keys.buildSplitsWithSegmentCountKey());
190
178
  var splitsWithSegmentsCount = storedCount === null ? 0 : toNumber(storedCount);
191
179
  if (isFiniteNumber(splitsWithSegmentsCount)) {
192
180
  return splitsWithSegmentsCount > 0;
@@ -2,7 +2,7 @@ import { ImpressionsCacheInMemory } from '../inMemory/ImpressionsCacheInMemory';
2
2
  import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
3
3
  import { EventsCacheInMemory } from '../inMemory/EventsCacheInMemory';
4
4
  import { validatePrefix } from '../KeyBuilder';
5
- import { KeyBuilderCS, myLargeSegmentsKeyBuilder } from '../KeyBuilderCS';
5
+ import { KeyBuilderCS } from '../KeyBuilderCS';
6
6
  import { isLocalStorageAvailable } from '../../utils/env/isLocalStorageAvailable';
7
7
  import { SplitsCacheInLocal } from './SplitsCacheInLocal';
8
8
  import { MySegmentsCacheInLocal } from './MySegmentsCacheInLocal';
@@ -33,11 +33,9 @@ export function InLocalStorage(options) {
33
33
  var expirationTimestamp = Date.now() - DEFAULT_CACHE_EXPIRATION_IN_MILLIS;
34
34
  var splits = new SplitsCacheInLocal(settings, keys, expirationTimestamp);
35
35
  var segments = new MySegmentsCacheInLocal(log, keys);
36
- var largeSegments = new MySegmentsCacheInLocal(log, myLargeSegmentsKeyBuilder(prefix, matchingKey));
37
36
  return {
38
37
  splits: splits,
39
38
  segments: segments,
40
- largeSegments: largeSegments,
41
39
  impressions: new ImpressionsCacheInMemory(impressionsQueueSize),
42
40
  impressionCounts: impressionsMode !== DEBUG ? new ImpressionCountsCacheInMemory() : undefined,
43
41
  events: new EventsCacheInMemory(eventsQueueSize),
@@ -47,7 +45,6 @@ export function InLocalStorage(options) {
47
45
  var _a;
48
46
  this.splits = new SplitsCacheInMemory(__splitFiltersValidation);
49
47
  this.segments = new MySegmentsCacheInMemory();
50
- this.largeSegments = new MySegmentsCacheInMemory();
51
48
  this.impressions.clear();
52
49
  this.impressionCounts && this.impressionCounts.clear();
53
50
  this.events.clear();
@@ -55,10 +52,10 @@ export function InLocalStorage(options) {
55
52
  },
56
53
  // When using shared instanciation with MEMORY we reuse everything but segments (they are customer per key).
57
54
  shared: function (matchingKey) {
55
+ var childKeysBuilder = new KeyBuilderCS(prefix, matchingKey);
58
56
  return {
59
57
  splits: this.splits,
60
- segments: new MySegmentsCacheInLocal(log, new KeyBuilderCS(prefix, matchingKey)),
61
- largeSegments: new MySegmentsCacheInLocal(log, myLargeSegmentsKeyBuilder(prefix, matchingKey)),
58
+ segments: new MySegmentsCacheInLocal(log, childKeysBuilder),
62
59
  impressions: this.impressions,
63
60
  impressionCounts: this.impressionCounts,
64
61
  events: this.events,
@@ -66,7 +63,6 @@ export function InLocalStorage(options) {
66
63
  destroy: function () {
67
64
  this.splits = new SplitsCacheInMemory(__splitFiltersValidation);
68
65
  this.segments = new MySegmentsCacheInMemory();
69
- this.largeSegments = new MySegmentsCacheInMemory();
70
66
  }
71
67
  };
72
68
  },
@@ -15,11 +15,9 @@ export function InMemoryStorageCSFactory(params) {
15
15
  var _a = params.settings, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize, _c = _a.sync, impressionsMode = _c.impressionsMode, __splitFiltersValidation = _c.__splitFiltersValidation;
16
16
  var splits = new SplitsCacheInMemory(__splitFiltersValidation);
17
17
  var segments = new MySegmentsCacheInMemory();
18
- var largeSegments = new MySegmentsCacheInMemory();
19
18
  var storage = {
20
19
  splits: splits,
21
20
  segments: segments,
22
- largeSegments: largeSegments,
23
21
  impressions: new ImpressionsCacheInMemory(impressionsQueueSize),
24
22
  impressionCounts: impressionsMode !== DEBUG ? new ImpressionCountsCacheInMemory() : undefined,
25
23
  events: new EventsCacheInMemory(eventsQueueSize),
@@ -29,7 +27,6 @@ export function InMemoryStorageCSFactory(params) {
29
27
  destroy: function () {
30
28
  this.splits.clear();
31
29
  this.segments.clear();
32
- this.largeSegments.clear();
33
30
  this.impressions.clear();
34
31
  this.impressionCounts && this.impressionCounts.clear();
35
32
  this.events.clear();
@@ -40,7 +37,6 @@ export function InMemoryStorageCSFactory(params) {
40
37
  return {
41
38
  splits: this.splits,
42
39
  segments: new MySegmentsCacheInMemory(),
43
- largeSegments: new MySegmentsCacheInMemory(),
44
40
  impressions: this.impressions,
45
41
  impressionCounts: this.impressionCounts,
46
42
  events: this.events,
@@ -49,7 +45,6 @@ export function InMemoryStorageCSFactory(params) {
49
45
  destroy: function () {
50
46
  this.splits = new SplitsCacheInMemory(__splitFiltersValidation);
51
47
  this.segments.clear();
52
- this.largeSegments.clear();
53
48
  }
54
49
  };
55
50
  },
@@ -1,8 +1,7 @@
1
1
  import { __extends } from "tslib";
2
- import { AbstractSplitsCacheSync, usesMatcher } from '../AbstractSplitsCacheSync';
2
+ import { AbstractSplitsCacheSync, usesSegments } from '../AbstractSplitsCacheSync';
3
3
  import { isFiniteNumber } from '../../utils/lang';
4
4
  import { _Set } from '../../utils/lang/sets';
5
- import { IN_LARGE_SEGMENT, IN_SEGMENT } from '../../utils/constants';
6
5
  /**
7
6
  * Default ISplitsCacheSync implementation that stores split definitions in memory.
8
7
  * Supported by all JS runtimes.
@@ -14,8 +13,7 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
14
13
  _this.splitsCache = {};
15
14
  _this.ttCache = {};
16
15
  _this.changeNumber = -1;
17
- _this.segmentsCount = 0;
18
- _this.largeSegmentsCount = 0;
16
+ _this.splitsWithSegmentsCount = 0;
19
17
  _this.flagSetsCache = {};
20
18
  _this.flagSetsFilter = splitFiltersValidation ? splitFiltersValidation.groupedFilters.bySet : [];
21
19
  return _this;
@@ -24,8 +22,7 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
24
22
  this.splitsCache = {};
25
23
  this.ttCache = {};
26
24
  this.changeNumber = -1;
27
- this.segmentsCount = 0;
28
- this.largeSegmentsCount = 0;
25
+ this.splitsWithSegmentsCount = 0;
29
26
  };
30
27
  SplitsCacheInMemory.prototype.addSplit = function (name, split) {
31
28
  var previousSplit = this.getSplit(name);
@@ -35,11 +32,9 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
35
32
  if (!this.ttCache[previousTtName])
36
33
  delete this.ttCache[previousTtName];
37
34
  this.removeFromFlagSets(previousSplit.name, previousSplit.sets);
38
- // Substract from segments count for the previous version of this Split.
39
- if (usesMatcher(previousSplit, IN_SEGMENT))
40
- this.segmentsCount--;
41
- if (usesMatcher(previousSplit, IN_LARGE_SEGMENT))
42
- this.largeSegmentsCount--;
35
+ if (usesSegments(previousSplit)) { // Substract from segments count for the previous version of this Split.
36
+ this.splitsWithSegmentsCount--;
37
+ }
43
38
  }
44
39
  if (split) {
45
40
  // Store the Split.
@@ -49,10 +44,8 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
49
44
  this.ttCache[ttName] = (this.ttCache[ttName] || 0) + 1;
50
45
  this.addToFlagSets(split);
51
46
  // Add to segments count for the new version of the Split
52
- if (usesMatcher(split, IN_SEGMENT))
53
- this.segmentsCount++;
54
- if (usesMatcher(split, IN_LARGE_SEGMENT))
55
- this.largeSegmentsCount++;
47
+ if (usesSegments(split))
48
+ this.splitsWithSegmentsCount++;
56
49
  return true;
57
50
  }
58
51
  else {
@@ -70,10 +63,8 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
70
63
  delete this.ttCache[ttName];
71
64
  this.removeFromFlagSets(split.name, split.sets);
72
65
  // Update the segments count.
73
- if (usesMatcher(split, IN_SEGMENT))
74
- this.segmentsCount--;
75
- if (usesMatcher(split, IN_LARGE_SEGMENT))
76
- this.largeSegmentsCount--;
66
+ if (usesSegments(split))
67
+ this.splitsWithSegmentsCount--;
77
68
  return true;
78
69
  }
79
70
  else {
@@ -96,8 +87,8 @@ var SplitsCacheInMemory = /** @class */ (function (_super) {
96
87
  SplitsCacheInMemory.prototype.trafficTypeExists = function (trafficType) {
97
88
  return isFiniteNumber(this.ttCache[trafficType]) && this.ttCache[trafficType] > 0;
98
89
  };
99
- SplitsCacheInMemory.prototype.usesMatcher = function (matcherType) {
100
- return this.getChangeNumber() === -1 || (matcherType === IN_SEGMENT ? this.segmentsCount > 0 : this.largeSegmentsCount > 0);
90
+ SplitsCacheInMemory.prototype.usesSegments = function () {
91
+ return this.getChangeNumber() === -1 || this.splitsWithSegmentsCount > 0;
101
92
  };
102
93
  SplitsCacheInMemory.prototype.getNamesByFlagSets = function (flagSets) {
103
94
  var _this = this;
@@ -18,10 +18,9 @@ export function shouldRecordTelemetry(_a) {
18
18
  return settings.mode !== LOCALHOST_MODE && (settings.core.key === undefined || Math.random() <= ACCEPTANCE_RANGE);
19
19
  }
20
20
  var TelemetryCacheInMemory = /** @class */ (function () {
21
- function TelemetryCacheInMemory(splits, segments, largeSegments) {
21
+ function TelemetryCacheInMemory(splits, segments) {
22
22
  this.splits = splits;
23
23
  this.segments = segments;
24
- this.largeSegments = largeSegments;
25
24
  // isEmpty flag
26
25
  this.e = true;
27
26
  this.notReadyUsage = 0;
@@ -37,7 +36,10 @@ var TelemetryCacheInMemory = /** @class */ (function () {
37
36
  this.tags = [];
38
37
  this.exceptions = {};
39
38
  this.latencies = {};
40
- this.updatesFromSSE = {};
39
+ this.updatesFromSSE = {
40
+ sp: 0,
41
+ ms: 0
42
+ };
41
43
  }
42
44
  TelemetryCacheInMemory.prototype.isEmpty = function () { return this.e; };
43
45
  TelemetryCacheInMemory.prototype.clear = function () { };
@@ -57,8 +59,6 @@ var TelemetryCacheInMemory = /** @class */ (function () {
57
59
  spC: this.splits && this.splits.getSplitNames().length,
58
60
  seC: this.segments && this.segments.getRegisteredSegments().length,
59
61
  skC: this.segments && this.segments.getKeysCount(),
60
- lseC: this.largeSegments && this.largeSegments.getRegisteredSegments().length,
61
- lskC: this.largeSegments && this.largeSegments.getKeysCount(),
62
62
  sL: this.getSessionLength(),
63
63
  eQ: this.getEventStats(QUEUED),
64
64
  eD: this.getEventStats(DROPPED),
@@ -190,11 +190,14 @@ var TelemetryCacheInMemory = /** @class */ (function () {
190
190
  };
191
191
  TelemetryCacheInMemory.prototype.popUpdatesFromSSE = function () {
192
192
  var result = this.updatesFromSSE;
193
- this.updatesFromSSE = {};
193
+ this.updatesFromSSE = {
194
+ sp: 0,
195
+ ms: 0,
196
+ };
194
197
  return result;
195
198
  };
196
199
  TelemetryCacheInMemory.prototype.recordUpdatesFromSSE = function (type) {
197
- this.updatesFromSSE[type] = (this.updatesFromSSE[type] || 0) + 1;
200
+ this.updatesFromSSE[type]++;
198
201
  this.e = false;
199
202
  };
200
203
  return TelemetryCacheInMemory;
@@ -5,7 +5,7 @@ import { setToArray, _Set } from '../../utils/lang/sets';
5
5
  * The `_cache` property is the object were items are stored.
6
6
  * Intended for testing purposes.
7
7
  *
8
- * @param connDelay delay in millis for `connect` resolve. If not provided, `connect` resolves immediately.
8
+ * @param connDelay delay in millis for `connect` resolve. If not provided, `connect` resolves inmediatelly.
9
9
  */
10
10
  export function inMemoryWrapperFactory(connDelay) {
11
11
  var _cache = {};
@@ -12,10 +12,6 @@ export function mySegmentsFetcherFactory(fetchMySegments) {
12
12
  // Extract segment names
13
13
  return mySegmentsPromise
14
14
  .then(function (resp) { return resp.json(); })
15
- .then(function (json) {
16
- return json.mySegments ?
17
- json.mySegments.map(function (segment) { return segment.name; }) :
18
- json.myLargeSegments;
19
- });
15
+ .then(function (json) { return json.mySegments.map(function (segment) { return segment.name; }); });
20
16
  };
21
17
  }
@@ -3,8 +3,7 @@ import { mySegmentsSyncTaskFactory } from './syncTasks/mySegmentsSyncTask';
3
3
  import { splitsSyncTaskFactory } from './syncTasks/splitsSyncTask';
4
4
  import { getMatching } from '../../utils/key';
5
5
  import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED } from '../../readiness/constants';
6
- import { POLLING_START, POLLING_STOP } from '../../logger/constants';
7
- import { IN_LARGE_SEGMENT, IN_SEGMENT } from '../../utils/constants';
6
+ import { POLLING_SMART_PAUSING, POLLING_START, POLLING_STOP } from '../../logger/constants';
8
7
  /**
9
8
  * Expose start / stop mechanism for polling data from services.
10
9
  * For client-side API with multiple clients.
@@ -13,74 +12,59 @@ export function pollingManagerCSFactory(params) {
13
12
  var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
14
13
  var log = settings.log;
15
14
  var splitsSyncTask = splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings, true);
16
- // Map of matching keys to their corresponding MySegmentsSyncTask for segments and large segments.
15
+ // Map of matching keys to their corresponding MySegmentsSyncTask.
17
16
  var mySegmentsSyncTasks = {};
18
17
  var matchingKey = getMatching(settings.core.key);
19
- var _a = add(matchingKey, readiness, storage), msSyncTask = _a.msSyncTask, mlsSyncTask = _a.mlsSyncTask;
18
+ var mySegmentsSyncTask = add(matchingKey, readiness, storage);
20
19
  function startMySegmentsSyncTasks() {
21
- var splitsHaveSegments = storage.splits.usesMatcher(IN_SEGMENT);
22
- var splitsHaveLargeSegments = storage.splits.usesMatcher(IN_LARGE_SEGMENT);
23
- forOwn(mySegmentsSyncTasks, function (_a) {
24
- var msSyncTask = _a.msSyncTask, mlsSyncTask = _a.mlsSyncTask;
25
- if (splitsHaveSegments)
26
- msSyncTask.start();
27
- else
28
- msSyncTask.stop(); // smart pausing
29
- if (mlsSyncTask) {
30
- if (splitsHaveLargeSegments)
31
- mlsSyncTask.start();
32
- else
33
- mlsSyncTask.stop(); // smart pausing
34
- }
20
+ forOwn(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
21
+ mySegmentsSyncTask.start();
35
22
  });
36
23
  }
37
24
  function stopMySegmentsSyncTasks() {
38
- forOwn(mySegmentsSyncTasks, function (_a) {
39
- var msSyncTask = _a.msSyncTask, mlsSyncTask = _a.mlsSyncTask;
40
- msSyncTask.stop();
41
- mlsSyncTask && mlsSyncTask.stop();
25
+ forOwn(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
26
+ if (mySegmentsSyncTask.isRunning())
27
+ mySegmentsSyncTask.stop();
42
28
  });
43
29
  }
30
+ // smart pausing
44
31
  readiness.splits.on(SDK_SPLITS_ARRIVED, function () {
45
- if (splitsSyncTask.isRunning())
46
- startMySegmentsSyncTasks();
32
+ if (!splitsSyncTask.isRunning())
33
+ return; // noop if not doing polling
34
+ var splitsHaveSegments = storage.splits.usesSegments();
35
+ if (splitsHaveSegments !== mySegmentsSyncTask.isRunning()) {
36
+ log.info(POLLING_SMART_PAUSING, [splitsHaveSegments ? 'ON' : 'OFF']);
37
+ if (splitsHaveSegments) {
38
+ startMySegmentsSyncTasks();
39
+ }
40
+ else {
41
+ stopMySegmentsSyncTasks();
42
+ }
43
+ }
47
44
  });
48
45
  function add(matchingKey, readiness, storage) {
49
- var msSyncTask = mySegmentsSyncTaskFactory(splitApi.fetchMySegments, storage.segments, function () { if (storage.splits.usesMatcher(IN_SEGMENT))
50
- readiness.segments.emit(SDK_SEGMENTS_ARRIVED); }, settings, matchingKey, settings.scheduler.segmentsRefreshRate, 'mySegmentsUpdater');
51
- var mlsSyncTask;
52
- if (settings.sync.largeSegmentsEnabled) {
53
- mlsSyncTask = mySegmentsSyncTaskFactory(splitApi.fetchMyLargeSegments, storage.largeSegments, function () { if (readiness.largeSegments && storage.splits.usesMatcher(IN_LARGE_SEGMENT))
54
- readiness.largeSegments.emit(SDK_SEGMENTS_ARRIVED); }, settings, matchingKey, settings.scheduler.largeSegmentsRefreshRate, 'myLargeSegmentsUpdater');
55
- }
46
+ var mySegmentsSyncTask = mySegmentsSyncTaskFactory(splitApi.fetchMySegments, storage, readiness, settings, matchingKey);
56
47
  // smart ready
57
48
  function smartReady() {
58
- if (!readiness.isReady()) {
59
- if (readiness.largeSegments && !storage.splits.usesMatcher(IN_LARGE_SEGMENT))
60
- readiness.largeSegments.emit(SDK_SEGMENTS_ARRIVED);
61
- if (!storage.splits.usesMatcher(IN_SEGMENT))
62
- readiness.segments.emit(SDK_SEGMENTS_ARRIVED);
63
- }
49
+ if (!readiness.isReady() && !storage.splits.usesSegments())
50
+ readiness.segments.emit(SDK_SEGMENTS_ARRIVED);
64
51
  }
65
- if (storage.splits.usesMatcher(IN_SEGMENT) && storage.splits.usesMatcher(IN_LARGE_SEGMENT))
66
- readiness.splits.once(SDK_SPLITS_ARRIVED, smartReady);
67
- else
52
+ if (!storage.splits.usesSegments())
68
53
  setTimeout(smartReady, 0);
69
- mySegmentsSyncTasks[matchingKey] = { msSyncTask: msSyncTask, mlsSyncTask: mlsSyncTask };
70
- return {
71
- msSyncTask: msSyncTask,
72
- mlsSyncTask: mlsSyncTask
73
- };
54
+ else
55
+ readiness.splits.once(SDK_SPLITS_ARRIVED, smartReady);
56
+ mySegmentsSyncTasks[matchingKey] = mySegmentsSyncTask;
57
+ return mySegmentsSyncTask;
74
58
  }
75
59
  return {
76
60
  splitsSyncTask: splitsSyncTask,
77
- segmentsSyncTask: msSyncTask,
78
- largeSegmentsSyncTask: mlsSyncTask,
61
+ segmentsSyncTask: mySegmentsSyncTask,
79
62
  // Start periodic fetching (polling)
80
63
  start: function () {
81
64
  log.info(POLLING_START);
82
65
  splitsSyncTask.start();
83
- startMySegmentsSyncTasks();
66
+ if (storage.splits.usesSegments())
67
+ startMySegmentsSyncTasks();
84
68
  },
85
69
  // Stop periodic fetching (polling)
86
70
  stop: function () {
@@ -94,10 +78,8 @@ export function pollingManagerCSFactory(params) {
94
78
  // fetch splits and segments
95
79
  syncAll: function () {
96
80
  var promises = [splitsSyncTask.execute()];
97
- forOwn(mySegmentsSyncTasks, function (_a) {
98
- var msSyncTask = _a.msSyncTask, mlsSyncTask = _a.mlsSyncTask;
99
- promises.push(msSyncTask.execute());
100
- mlsSyncTask && promises.push(mlsSyncTask.execute());
81
+ forOwn(mySegmentsSyncTasks, function (mySegmentsSyncTask) {
82
+ promises.push(mySegmentsSyncTask.execute());
101
83
  });
102
84
  return Promise.all(promises);
103
85
  },
@@ -4,6 +4,6 @@ import { mySegmentsUpdaterFactory } from '../updaters/mySegmentsUpdater';
4
4
  /**
5
5
  * Creates a sync task that periodically executes a `mySegmentsUpdater` task
6
6
  */
7
- export function mySegmentsSyncTaskFactory(fetchMySegments, mySegmentsCache, notifyUpdate, settings, matchingKey, segmentsRefreshRate, NAME) {
8
- return syncTaskFactory(settings.log, mySegmentsUpdaterFactory(settings.log, mySegmentsFetcherFactory(fetchMySegments), mySegmentsCache, notifyUpdate, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady, matchingKey), segmentsRefreshRate, NAME);
7
+ export function mySegmentsSyncTaskFactory(fetchMySegments, storage, readiness, settings, matchingKey) {
8
+ return syncTaskFactory(settings.log, mySegmentsUpdaterFactory(settings.log, mySegmentsFetcherFactory(fetchMySegments), storage.splits, storage.segments, readiness.segments, settings.startup.requestTimeoutBeforeReady, settings.startup.retriesOnFailureBeforeReady, matchingKey), settings.scheduler.segmentsRefreshRate, 'mySegmentsUpdater');
9
9
  }
@@ -1,13 +1,13 @@
1
1
  import { timeout } from '../../../utils/promise/timeout';
2
+ import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
2
3
  import { SYNC_MYSEGMENTS_FETCH_RETRY } from '../../../logger/constants';
3
- import { isObject } from '../../../utils/lang';
4
4
  /**
5
5
  * factory of MySegments updater, a task that:
6
6
  * - fetches mySegments using `mySegmentsFetcher`
7
7
  * - updates `mySegmentsCache`
8
8
  * - uses `segmentsEventEmitter` to emit events related to segments data updates
9
9
  */
10
- export function mySegmentsUpdaterFactory(log, mySegmentsFetcher, mySegmentsCache, notifyUpdate, requestTimeoutBeforeReady, retriesOnFailureBeforeReady, matchingKey) {
10
+ export function mySegmentsUpdaterFactory(log, mySegmentsFetcher, splitsCache, mySegmentsCache, segmentsEventEmitter, requestTimeoutBeforeReady, retriesOnFailureBeforeReady, matchingKey) {
11
11
  var readyOnAlreadyExistentState = true;
12
12
  var startingUp = true;
13
13
  /** timeout and telemetry decorator for `splitChangesFetcher` promise */
@@ -19,27 +19,28 @@ export function mySegmentsUpdaterFactory(log, mySegmentsFetcher, mySegmentsCache
19
19
  // @TODO if allowing pluggable storages, handle async execution
20
20
  function updateSegments(segmentsData) {
21
21
  var shouldNotifyUpdate;
22
- if (isObject(segmentsData[0])) {
23
- // Add/Delete the segment names
24
- segmentsData.forEach(function (_a) {
25
- var name = _a.name, add = _a.add;
26
- if (mySegmentsCache.isInSegment(name) !== add) {
27
- shouldNotifyUpdate = true;
28
- if (add)
29
- mySegmentsCache.addToSegment(name);
30
- else
31
- mySegmentsCache.removeFromSegment(name);
32
- }
33
- });
22
+ if (Array.isArray(segmentsData)) {
23
+ // Update the list of segment names available
24
+ shouldNotifyUpdate = mySegmentsCache.resetSegments(segmentsData);
34
25
  }
35
26
  else {
36
- // Reset the list of segment names
37
- shouldNotifyUpdate = mySegmentsCache.resetSegments(segmentsData);
27
+ // Add/Delete the segment
28
+ var name_1 = segmentsData.name, add = segmentsData.add;
29
+ if (mySegmentsCache.isInSegment(name_1) !== add) {
30
+ shouldNotifyUpdate = true;
31
+ if (add)
32
+ mySegmentsCache.addToSegment(name_1);
33
+ else
34
+ mySegmentsCache.removeFromSegment(name_1);
35
+ }
36
+ else {
37
+ shouldNotifyUpdate = false;
38
+ }
38
39
  }
39
40
  // Notify update if required
40
- if (shouldNotifyUpdate || readyOnAlreadyExistentState) {
41
+ if (splitsCache.usesSegments() && (shouldNotifyUpdate || readyOnAlreadyExistentState)) {
41
42
  readyOnAlreadyExistentState = false;
42
- notifyUpdate();
43
+ segmentsEventEmitter.emit(SDK_SEGMENTS_ARRIVED);
43
44
  }
44
45
  }
45
46
  function _mySegmentsUpdater(retry, segmentsData, noCache) {
@@ -1,4 +1,4 @@
1
- import { endsWith, isString } from '../../../utils/lang';
1
+ import { isString } from '../../../utils/lang';
2
2
  import { objectAssign } from '../../../utils/lang/objectAssign';
3
3
  var ABLY_API_VERSION = '1.1';
4
4
  var CONTROL_CHANNEL_REGEX = /^control_/;
@@ -44,7 +44,6 @@ var SSEClient = /** @class */ (function () {
44
44
  this.useHeaders = useHeaders;
45
45
  this.headers = buildSSEHeaders(settings);
46
46
  this.options = getOptions && getOptions(settings);
47
- this.lse = settings.sync.largeSegmentsEnabled;
48
47
  }
49
48
  SSEClient.prototype.setEventHandler = function (handler) {
50
49
  this.handler = handler;
@@ -56,13 +55,10 @@ var SSEClient = /** @class */ (function () {
56
55
  * @throws {TypeError} Will throw an error if `authToken` is undefined
57
56
  */
58
57
  SSEClient.prototype.open = function (authToken) {
59
- var _this = this;
60
58
  this.close(); // it closes connection if previously opened
61
59
  var channelsQueryParam = Object.keys(authToken.channels).map(function (channel) {
62
60
  var params = CONTROL_CHANNEL_REGEX.test(channel) ? '[?occupancy=metrics.publishers]' : '';
63
61
  return encodeURIComponent(params + channel);
64
- }).filter(function (channel) {
65
- return _this.lse || !endsWith(channel, 'myLargeSegments');
66
62
  }).join(',');
67
63
  var url = this.streamingUrl + "?channels=" + channelsQueryParam + "&accessToken=" + authToken.token + "&v=" + ABLY_API_VERSION + "&heartbeats=true"; // same results using `&heartbeats=false`
68
64
  this.connection = new this.eventSource(