@splitsoftware/splitio-commons 1.16.1-rc.8 → 1.17.0-rc.1

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 (167) 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 +43 -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 +9 -12
  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 +69 -100
  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 +39 -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 +10 -13
  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 +70 -100
  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 +41 -0
  90. package/src/services/splitApi.ts +2 -7
  91. package/src/services/splitHttpClient.ts +6 -5
  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 +14 -20
  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 +10 -26
  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 +68 -104
  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/splitApi.d.ts +1 -1
  135. package/types/services/splitHttpClient.d.ts +1 -1
  136. package/types/services/types.d.ts +0 -1
  137. package/types/storages/AbstractSplitsCacheAsync.d.ts +1 -1
  138. package/types/storages/AbstractSplitsCacheSync.d.ts +3 -3
  139. package/types/storages/KeyBuilder.d.ts +0 -1
  140. package/types/storages/KeyBuilderCS.d.ts +2 -7
  141. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +2 -2
  142. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +1 -1
  143. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +2 -3
  144. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +6 -4
  145. package/types/storages/pluggable/inMemoryWrapper.d.ts +1 -1
  146. package/types/storages/types.d.ts +3 -4
  147. package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +3 -2
  148. package/types/sync/polling/types.d.ts +3 -10
  149. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +4 -4
  150. package/types/sync/streaming/SSEClient/index.d.ts +2 -5
  151. package/types/sync/streaming/SSEHandler/types.d.ts +2 -13
  152. package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +2 -3
  153. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -2
  154. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +2 -3
  155. package/types/sync/streaming/UpdateWorkers/types.d.ts +2 -2
  156. package/types/sync/streaming/constants.d.ts +0 -1
  157. package/types/sync/streaming/parseUtils.d.ts +4 -2
  158. package/types/sync/streaming/pushManager.d.ts +0 -2
  159. package/types/sync/streaming/types.d.ts +4 -5
  160. package/types/sync/submitters/types.d.ts +3 -10
  161. package/types/types.d.ts +11 -26
  162. package/types/utils/constants/index.d.ts +1 -3
  163. package/types/utils/settingsValidation/index.d.ts +0 -2
  164. package/types/utils/settingsValidation/types.d.ts +1 -1
  165. package/cjs/evaluator/matchers/large_segment.js +0 -16
  166. package/esm/evaluator/matchers/large_segment.js +0 -12
  167. package/src/evaluator/matchers/large_segment.ts +0 -18
@@ -1,4 +1,5 @@
1
- import { endsWith, isString } from '../../../utils/lang';
1
+ import { decorateHeaders } from '../../../services/decorateHeaders';
2
+ import { isString } from '../../../utils/lang';
2
3
  import { objectAssign } from '../../../utils/lang/objectAssign';
3
4
  var ABLY_API_VERSION = '1.1';
4
5
  var CONTROL_CHANNEL_REGEX = /^control_/;
@@ -29,22 +30,18 @@ var SSEClient = /** @class */ (function () {
29
30
  * SSEClient constructor.
30
31
  *
31
32
  * @param settings Validated settings.
32
- * @param useHeaders True to send metadata as headers or false to send as query params. If `true`, the provided EventSource must support headers.
33
33
  * @param platform object containing environment-specific dependencies
34
34
  * @throws 'EventSource API is not available.' if EventSource is not available.
35
35
  */
36
- function SSEClient(settings, useHeaders, _a) {
36
+ function SSEClient(settings, _a) {
37
37
  var getEventSource = _a.getEventSource, getOptions = _a.getOptions;
38
+ this.settings = settings;
38
39
  this.eventSource = getEventSource && getEventSource(settings);
39
40
  // if eventSource is not available, throw an exception
40
41
  if (!this.eventSource)
41
42
  throw new Error('EventSource API is not available.');
42
- this.streamingUrl = settings.urls.streaming + '/sse';
43
- // @TODO get `useHeaders` flag from `getEventSource`, to use EventSource headers on client-side SDKs when possible.
44
- this.useHeaders = useHeaders;
45
43
  this.headers = buildSSEHeaders(settings);
46
44
  this.options = getOptions && getOptions(settings);
47
- this.lse = settings.sync.largeSegmentsEnabled;
48
45
  }
49
46
  SSEClient.prototype.setEventHandler = function (handler) {
50
47
  this.handler = handler;
@@ -56,21 +53,21 @@ var SSEClient = /** @class */ (function () {
56
53
  * @throws {TypeError} Will throw an error if `authToken` is undefined
57
54
  */
58
55
  SSEClient.prototype.open = function (authToken) {
59
- var _this = this;
56
+ var _a;
60
57
  this.close(); // it closes connection if previously opened
61
58
  var channelsQueryParam = Object.keys(authToken.channels).map(function (channel) {
62
59
  var params = CONTROL_CHANNEL_REGEX.test(channel) ? '[?occupancy=metrics.publishers]' : '';
63
60
  return encodeURIComponent(params + channel);
64
- }).filter(function (channel) {
65
- return _this.lse || !endsWith(channel, 'myLargeSegments');
66
61
  }).join(',');
67
- var url = this.streamingUrl + "?channels=" + channelsQueryParam + "&accessToken=" + authToken.token + "&v=" + ABLY_API_VERSION + "&heartbeats=true"; // same results using `&heartbeats=false`
62
+ var url = this.settings.urls.streaming + "/sse?channels=" + channelsQueryParam + "&accessToken=" + authToken.token + "&v=" + ABLY_API_VERSION + "&heartbeats=true"; // same results using `&heartbeats=false`
63
+ // use headers in server-side or if getHeaderOverrides is defined
64
+ var useHeaders = !this.settings.core.key || ((_a = this.settings.sync.requestOptions) === null || _a === void 0 ? void 0 : _a.getHeaderOverrides);
68
65
  this.connection = new this.eventSource(
69
66
  // For client-side SDKs, SplitSDKClientKey and SplitSDKClientKey metadata is passed as query params,
70
67
  // because native EventSource implementations for browser doesn't support headers.
71
- this.useHeaders ? url : url + ("&SplitSDKVersion=" + this.headers.SplitSDKVersion + "&SplitSDKClientKey=" + this.headers.SplitSDKClientKey),
68
+ useHeaders ? url : url + ("&SplitSDKVersion=" + this.headers.SplitSDKVersion + "&SplitSDKClientKey=" + this.headers.SplitSDKClientKey),
72
69
  // For server-side SDKs, metadata is passed via headers. EventSource must support headers, like 'eventsource' package for Node.
73
- objectAssign(this.useHeaders ? { headers: this.headers } : {}, this.options));
70
+ objectAssign(useHeaders ? { headers: decorateHeaders(this.settings, this.headers) } : {}, this.options));
74
71
  if (this.handler) { // no need to check if SSEClient is used only by PushManager
75
72
  this.connection.addEventListener('open', this.handler.handleOpen);
76
73
  this.connection.addEventListener('message', this.handler.handleMessage);
@@ -1,6 +1,6 @@
1
1
  import { errorParser, messageParser } from './NotificationParser';
2
2
  import { notificationKeeperFactory } from './NotificationKeeper';
3
- import { PUSH_RETRYABLE_ERROR, PUSH_NONRETRYABLE_ERROR, OCCUPANCY, CONTROL, MY_SEGMENTS_UPDATE, MY_SEGMENTS_UPDATE_V2, SEGMENT_UPDATE, SPLIT_KILL, SPLIT_UPDATE, MY_LARGE_SEGMENTS_UPDATE } from '../constants';
3
+ import { PUSH_RETRYABLE_ERROR, PUSH_NONRETRYABLE_ERROR, OCCUPANCY, CONTROL, MY_SEGMENTS_UPDATE, MY_SEGMENTS_UPDATE_V2, SEGMENT_UPDATE, SPLIT_KILL, SPLIT_UPDATE } from '../constants';
4
4
  import { STREAMING_PARSING_ERROR_FAILS, ERROR_STREAMING_SSE, STREAMING_PARSING_MESSAGE_FAILS, STREAMING_NEW_MESSAGE } from '../../../logger/constants';
5
5
  import { ABLY_ERROR, NON_REQUESTED, SSE_CONNECTION_ERROR } from '../../../utils/constants';
6
6
  /**
@@ -73,7 +73,6 @@ export function SSEHandlerFactory(log, pushEmitter, telemetryTracker) {
73
73
  case SPLIT_UPDATE:
74
74
  case SEGMENT_UPDATE:
75
75
  case MY_SEGMENTS_UPDATE_V2:
76
- case MY_LARGE_SEGMENTS_UPDATE:
77
76
  case SPLIT_KILL:
78
77
  pushEmitter.emit(parsedData.type, parsedData);
79
78
  break;
@@ -1,15 +1,14 @@
1
1
  import { Backoff } from '../../../utils/Backoff';
2
+ import { MY_SEGMENT } from '../../../utils/constants';
2
3
  /**
3
4
  * MySegmentsUpdateWorker factory
4
5
  */
5
- export function MySegmentsUpdateWorker(mySegmentsSyncTask, telemetryTracker, updateType) {
6
+ export function MySegmentsUpdateWorker(mySegmentsSyncTask, telemetryTracker) {
6
7
  var maxChangeNumber = 0; // keeps the maximum changeNumber among queued events
7
8
  var currentChangeNumber = -1;
8
9
  var handleNewEvent = false;
9
10
  var isHandlingEvent;
10
11
  var _segmentsData; // keeps the segmentsData (if included in notification payload) from the queued event with maximum changeNumber
11
- var _delay;
12
- var _delayTimeoutID;
13
12
  var backoff = new Backoff(__handleMySegmentsUpdateCall);
14
13
  function __handleMySegmentsUpdateCall() {
15
14
  isHandlingEvent = true;
@@ -17,20 +16,12 @@ export function MySegmentsUpdateWorker(mySegmentsSyncTask, telemetryTracker, upd
17
16
  handleNewEvent = false;
18
17
  var currentMaxChangeNumber_1 = maxChangeNumber;
19
18
  // fetch mySegments revalidating data if cached
20
- var syncTask = _delay ?
21
- new Promise(function (res) {
22
- _delayTimeoutID = setTimeout(function () {
23
- _delay = undefined;
24
- mySegmentsSyncTask.execute(_segmentsData, true).then(res);
25
- }, _delay);
26
- }) :
27
- mySegmentsSyncTask.execute(_segmentsData, true);
28
- syncTask.then(function (result) {
19
+ mySegmentsSyncTask.execute(_segmentsData, true).then(function (result) {
29
20
  if (!isHandlingEvent)
30
21
  return; // halt if `stop` has been called
31
22
  if (result !== false) { // Unlike `Splits|SegmentsUpdateWorker`, we cannot use `mySegmentsCache.getChangeNumber` since `/mySegments` endpoint doesn't provide this value.
32
23
  if (_segmentsData)
33
- telemetryTracker.trackUpdatesFromSSE(updateType);
24
+ telemetryTracker.trackUpdatesFromSSE(MY_SEGMENT);
34
25
  currentChangeNumber = Math.max(currentChangeNumber, currentMaxChangeNumber_1); // use `currentMaxChangeNumber`, in case that `maxChangeNumber` was updated during fetch.
35
26
  }
36
27
  if (handleNewEvent) {
@@ -47,27 +38,22 @@ export function MySegmentsUpdateWorker(mySegmentsSyncTask, telemetryTracker, upd
47
38
  }
48
39
  return {
49
40
  /**
50
- * Invoked by NotificationProcessor on MY_(LARGE)_SEGMENTS_UPDATE notifications
41
+ * Invoked by NotificationProcessor on MY_SEGMENTS_UPDATE event
51
42
  *
52
- * @param changeNumber change number of the notification
53
- * @param segmentsData data for KeyList or SegmentRemoval instant updates
54
- * @param delay optional time to wait for BoundedFetchRequest or BoundedFetchRequest updates
43
+ * @param {number} changeNumber change number of the MY_SEGMENTS_UPDATE notification
44
+ * @param {SegmentsData | undefined} segmentsData might be undefined
55
45
  */
56
- put: function (changeNumber, segmentsData, delay) {
57
- // Ignore event if it is outdated or if there is a pending fetch request (_delay is set)
58
- if (changeNumber <= currentChangeNumber || changeNumber <= maxChangeNumber || _delay)
46
+ put: function (changeNumber, segmentsData) {
47
+ if (changeNumber <= currentChangeNumber || changeNumber <= maxChangeNumber)
59
48
  return;
60
49
  maxChangeNumber = changeNumber;
61
50
  handleNewEvent = true;
62
51
  _segmentsData = segmentsData;
63
- _delay = delay;
64
52
  if (backoff.timeoutID || !isHandlingEvent)
65
53
  __handleMySegmentsUpdateCall();
66
54
  backoff.reset();
67
55
  },
68
56
  stop: function () {
69
- clearTimeout(_delayTimeoutID);
70
- _delay = undefined;
71
57
  isHandlingEvent = false;
72
58
  backoff.reset();
73
59
  }
@@ -27,7 +27,6 @@ export var MY_SEGMENTS_UPDATE_V2 = 'MY_SEGMENTS_UPDATE_V2';
27
27
  export var SEGMENT_UPDATE = 'SEGMENT_UPDATE';
28
28
  export var SPLIT_KILL = 'SPLIT_KILL';
29
29
  export var SPLIT_UPDATE = 'SPLIT_UPDATE';
30
- export var MY_LARGE_SEGMENTS_UPDATE = 'MY_LARGE_SEGMENTS_UPDATE';
31
30
  // Control-type push notifications, handled by NotificationKeeper
32
31
  export var CONTROL = 'CONTROL';
33
32
  export var OCCUPANCY = 'OCCUPANCY';
@@ -74,9 +74,14 @@ export function isInBitmap(bitmap, hash64hex) {
74
74
  }
75
75
  /**
76
76
  * Parse feature flags notifications for instant feature flag updates
77
+ *
78
+ * @param {ISplitUpdateData} data
79
+ * @returns {KeyList}
77
80
  */
78
81
  export function parseFFUpdatePayload(compression, data) {
79
- return compression > 0 ?
80
- parseKeyList(data, compression, false) :
81
- JSON.parse(decodeFromBase64(data));
82
+ var avoidPrecisionLoss = false;
83
+ if (compression > 0)
84
+ return parseKeyList(data, compression, avoidPrecisionLoss);
85
+ else
86
+ return JSON.parse(decodeFromBase64(data));
82
87
  }
@@ -8,21 +8,13 @@ import { authenticateFactory, hashUserKey } from './AuthClient';
8
8
  import { forOwn } from '../../utils/lang';
9
9
  import { SSEClient } from './SSEClient';
10
10
  import { getMatching } from '../../utils/key';
11
- import { MY_SEGMENTS_UPDATE, MY_SEGMENTS_UPDATE_V2, PUSH_NONRETRYABLE_ERROR, PUSH_SUBSYSTEM_DOWN, SECONDS_BEFORE_EXPIRATION, SEGMENT_UPDATE, SPLIT_KILL, SPLIT_UPDATE, PUSH_RETRYABLE_ERROR, PUSH_SUBSYSTEM_UP, ControlType, MY_LARGE_SEGMENTS_UPDATE } from './constants';
11
+ import { MY_SEGMENTS_UPDATE, MY_SEGMENTS_UPDATE_V2, PUSH_NONRETRYABLE_ERROR, PUSH_SUBSYSTEM_DOWN, SECONDS_BEFORE_EXPIRATION, SEGMENT_UPDATE, SPLIT_KILL, SPLIT_UPDATE, PUSH_RETRYABLE_ERROR, PUSH_SUBSYSTEM_UP, ControlType } from './constants';
12
12
  import { STREAMING_FALLBACK, STREAMING_REFRESH_TOKEN, STREAMING_CONNECTING, STREAMING_DISABLED, ERROR_STREAMING_AUTH, STREAMING_DISCONNECTING, STREAMING_RECONNECT, STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, STREAMING_PARSING_SPLIT_UPDATE } from '../../logger/constants';
13
13
  import { UpdateStrategy } from './SSEHandler/types';
14
14
  import { isInBitmap, parseBitmap, parseFFUpdatePayload, parseKeyList } from './parseUtils';
15
15
  import { _Set } from '../../utils/lang/sets';
16
- import { hash } from '../../utils/murmur3/murmur3';
17
16
  import { hash64 } from '../../utils/murmur3/murmur3_64';
18
- import { TOKEN_REFRESH, AUTH_REJECTION, MY_LARGE_SEGMENT, MY_SEGMENT } from '../../utils/constants';
19
- export function getDelay(parsedData, matchingKey) {
20
- if (parsedData.h === 0)
21
- return 0;
22
- var interval = parsedData.i || 60000;
23
- var seed = parsedData.s || 0;
24
- return hash(matchingKey, seed) % interval;
25
- }
17
+ import { TOKEN_REFRESH, AUTH_REJECTION } from '../../utils/constants';
26
18
  /**
27
19
  * PushManager factory:
28
20
  * - for server-side if key is not provided in settings.
@@ -37,7 +29,7 @@ export function pushManagerFactory(params, pollingManager) {
37
29
  var sseClient;
38
30
  try {
39
31
  // `useHeaders` false for client-side, even if the platform EventSource supports headers (e.g., React Native).
40
- sseClient = new SSEClient(settings, userKey ? false : true, platform);
32
+ sseClient = new SSEClient(settings, platform);
41
33
  }
42
34
  catch (e) {
43
35
  log.warn(STREAMING_FALLBACK, [e]);
@@ -148,9 +140,8 @@ export function pushManagerFactory(params, pollingManager) {
148
140
  splitsUpdateWorker.stop();
149
141
  if (userKey)
150
142
  forOwn(clients, function (_a) {
151
- var worker = _a.worker, workerLarge = _a.workerLarge;
152
- worker.stop();
153
- workerLarge && workerLarge.stop();
143
+ var worker = _a.worker;
144
+ return worker.stop();
154
145
  });
155
146
  else
156
147
  segmentsUpdateWorker.stop();
@@ -204,83 +195,6 @@ export function pushManagerFactory(params, pollingManager) {
204
195
  }
205
196
  splitsUpdateWorker.put(parsedData);
206
197
  });
207
- function handleMySegmentsUpdate(parsedData) {
208
- var isLS = parsedData.type === MY_LARGE_SEGMENTS_UPDATE;
209
- switch (parsedData.u) {
210
- case UpdateStrategy.BoundedFetchRequest: {
211
- var bitmap_1;
212
- try {
213
- bitmap_1 = parseBitmap(parsedData.d, parsedData.c);
214
- }
215
- catch (e) {
216
- log.warn(STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['BoundedFetchRequest', e]);
217
- break;
218
- }
219
- forOwn(clients, function (_a, matchingKey) {
220
- var hash64 = _a.hash64, worker = _a.worker, workerLarge = _a.workerLarge;
221
- if (isInBitmap(bitmap_1, hash64.hex)) {
222
- isLS ?
223
- workerLarge && workerLarge.put(parsedData.changeNumber, undefined, getDelay(parsedData, matchingKey)) :
224
- worker.put(parsedData.changeNumber);
225
- }
226
- });
227
- return;
228
- }
229
- case UpdateStrategy.KeyList: {
230
- var keyList = void 0, added_1, removed_1;
231
- try {
232
- keyList = parseKeyList(parsedData.d, parsedData.c);
233
- added_1 = new _Set(keyList.a);
234
- removed_1 = new _Set(keyList.r);
235
- }
236
- catch (e) {
237
- log.warn(STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['KeyList', e]);
238
- break;
239
- }
240
- forOwn(clients, function (_a) {
241
- var hash64 = _a.hash64, worker = _a.worker, workerLarge = _a.workerLarge;
242
- var add = added_1.has(hash64.dec) ? true : removed_1.has(hash64.dec) ? false : undefined;
243
- if (add !== undefined) {
244
- isLS ?
245
- workerLarge && workerLarge.put(parsedData.changeNumber, [{
246
- name: parsedData.largeSegments[0],
247
- add: add
248
- }]) :
249
- worker.put(parsedData.changeNumber, [{
250
- name: parsedData.segmentName,
251
- add: add
252
- }]);
253
- }
254
- });
255
- return;
256
- }
257
- case UpdateStrategy.SegmentRemoval:
258
- if ((isLS && parsedData.largeSegments.length === 0) || (!isLS && !parsedData.segmentName)) {
259
- log.warn(STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['SegmentRemoval', 'No segment name was provided']);
260
- break;
261
- }
262
- forOwn(clients, function (_a) {
263
- var worker = _a.worker, workerLarge = _a.workerLarge;
264
- isLS ?
265
- workerLarge && workerLarge.put(parsedData.changeNumber, parsedData.largeSegments.map(function (largeSegment) { return ({
266
- name: largeSegment,
267
- add: false
268
- }); })) :
269
- worker.put(parsedData.changeNumber, [{
270
- name: parsedData.segmentName,
271
- add: false
272
- }]);
273
- });
274
- return;
275
- }
276
- // `UpdateStrategy.UnboundedFetchRequest` and fallbacks of other cases
277
- forOwn(clients, function (_a, matchingKey) {
278
- var worker = _a.worker, workerLarge = _a.workerLarge;
279
- isLS ?
280
- workerLarge && workerLarge.put(parsedData.changeNumber, undefined, getDelay(parsedData, matchingKey)) :
281
- worker.put(parsedData.changeNumber);
282
- });
283
- }
284
198
  if (userKey) {
285
199
  pushEmitter.on(MY_SEGMENTS_UPDATE, function handleMySegmentsUpdate(parsedData, channel) {
286
200
  var userKeyHash = channel.split('_')[2];
@@ -289,8 +203,68 @@ export function pushManagerFactory(params, pollingManager) {
289
203
  clients[userKey].worker.put(parsedData.changeNumber, parsedData.includesPayload ? parsedData.segmentList ? parsedData.segmentList : [] : undefined);
290
204
  }
291
205
  });
292
- pushEmitter.on(MY_SEGMENTS_UPDATE_V2, handleMySegmentsUpdate);
293
- pushEmitter.on(MY_LARGE_SEGMENTS_UPDATE, handleMySegmentsUpdate);
206
+ pushEmitter.on(MY_SEGMENTS_UPDATE_V2, function handleMySegmentsUpdate(parsedData) {
207
+ switch (parsedData.u) {
208
+ case UpdateStrategy.BoundedFetchRequest: {
209
+ var bitmap_1;
210
+ try {
211
+ bitmap_1 = parseBitmap(parsedData.d, parsedData.c);
212
+ }
213
+ catch (e) {
214
+ log.warn(STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['BoundedFetchRequest', e]);
215
+ break;
216
+ }
217
+ forOwn(clients, function (_a) {
218
+ var hash64 = _a.hash64, worker = _a.worker;
219
+ if (isInBitmap(bitmap_1, hash64.hex)) {
220
+ worker.put(parsedData.changeNumber); // fetch mySegments
221
+ }
222
+ });
223
+ return;
224
+ }
225
+ case UpdateStrategy.KeyList: {
226
+ var keyList = void 0, added_1, removed_1;
227
+ try {
228
+ keyList = parseKeyList(parsedData.d, parsedData.c);
229
+ added_1 = new _Set(keyList.a);
230
+ removed_1 = new _Set(keyList.r);
231
+ }
232
+ catch (e) {
233
+ log.warn(STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['KeyList', e]);
234
+ break;
235
+ }
236
+ forOwn(clients, function (_a) {
237
+ var hash64 = _a.hash64, worker = _a.worker;
238
+ var add = added_1.has(hash64.dec) ? true : removed_1.has(hash64.dec) ? false : undefined;
239
+ if (add !== undefined) {
240
+ worker.put(parsedData.changeNumber, {
241
+ name: parsedData.segmentName,
242
+ add: add
243
+ });
244
+ }
245
+ });
246
+ return;
247
+ }
248
+ case UpdateStrategy.SegmentRemoval:
249
+ if (!parsedData.segmentName) {
250
+ log.warn(STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2, ['SegmentRemoval', 'No segment name was provided']);
251
+ break;
252
+ }
253
+ forOwn(clients, function (_a) {
254
+ var worker = _a.worker;
255
+ return worker.put(parsedData.changeNumber, {
256
+ name: parsedData.segmentName,
257
+ add: false
258
+ });
259
+ });
260
+ return;
261
+ }
262
+ // `UpdateStrategy.UnboundedFetchRequest` and fallbacks of other cases
263
+ forOwn(clients, function (_a) {
264
+ var worker = _a.worker;
265
+ worker.put(parsedData.changeNumber);
266
+ });
267
+ });
294
268
  }
295
269
  else {
296
270
  pushEmitter.on(SEGMENT_UPDATE, segmentsUpdateWorker.put);
@@ -313,7 +287,7 @@ export function pushManagerFactory(params, pollingManager) {
313
287
  return;
314
288
  disconnected = false;
315
289
  if (userKey)
316
- this.add(userKey, pollingManager.segmentsSyncTask, pollingManager.largeSegmentsSyncTask); // client-side
290
+ this.add(userKey, pollingManager.segmentsSyncTask); // client-side
317
291
  else
318
292
  setTimeout(connectPush); // server-side runs in next cycle as in client-side, for consistency with client-side
319
293
  },
@@ -322,15 +296,11 @@ export function pushManagerFactory(params, pollingManager) {
322
296
  return disconnected === false;
323
297
  },
324
298
  // [Only for client-side]
325
- add: function (userKey, mySegmentsSyncTask, myLargeSegmentsSyncTask) {
299
+ add: function (userKey, mySegmentsSyncTask) {
326
300
  var hash = hashUserKey(userKey);
327
301
  if (!userKeyHashes[hash]) {
328
302
  userKeyHashes[hash] = userKey;
329
- clients[userKey] = {
330
- hash64: hash64(userKey),
331
- worker: MySegmentsUpdateWorker(mySegmentsSyncTask, telemetryTracker, MY_SEGMENT),
332
- workerLarge: myLargeSegmentsSyncTask ? MySegmentsUpdateWorker(myLargeSegmentsSyncTask, telemetryTracker, MY_LARGE_SEGMENT) : undefined
333
- };
303
+ clients[userKey] = { hash64: hash64(userKey), worker: MySegmentsUpdateWorker(mySegmentsSyncTask, telemetryTracker) };
334
304
  connectForNewClient = true; // we must reconnect on start, to listen the channel for the new user key
335
305
  // Reconnects in case of a new client.
336
306
  // Run in next event-loop cycle to save authentication calls
@@ -58,17 +58,13 @@ export function telemetryCacheConfigAdapter(telemetry, settings) {
58
58
  pop: function () {
59
59
  var urls = settings.urls, scheduler = settings.scheduler;
60
60
  var isClientSide = settings.core.key !== undefined;
61
- var largeSegmentsEnabled = isClientSide && settings.sync.largeSegmentsEnabled;
62
61
  var _a = getTelemetryFlagSetsStats(settings.sync.__splitFiltersValidation), flagSetsTotal = _a.flagSetsTotal, flagSetsIgnored = _a.flagSetsIgnored;
63
62
  return objectAssign(getTelemetryConfigStats(settings.mode, settings.storage.type), {
64
63
  sE: settings.streamingEnabled,
65
- lsE: largeSegmentsEnabled ? largeSegmentsEnabled : undefined,
66
- wls: largeSegmentsEnabled ? settings.startup.waitForLargeSegments : undefined,
67
64
  rR: {
68
65
  sp: scheduler.featuresRefreshRate / 1000,
69
66
  se: isClientSide ? undefined : scheduler.segmentsRefreshRate / 1000,
70
67
  ms: isClientSide ? scheduler.segmentsRefreshRate / 1000 : undefined,
71
- mls: largeSegmentsEnabled ? scheduler.largeSegmentsRefreshRate / 1000 : undefined,
72
68
  im: scheduler.impressionsRefreshRate / 1000,
73
69
  ev: scheduler.eventsPushRate / 1000,
74
70
  te: scheduler.telemetryRefreshRate / 1000,
@@ -2,7 +2,7 @@ import { submitterManagerFactory } from './submitters/submitterManager';
2
2
  import { PUSH_SUBSYSTEM_UP, PUSH_SUBSYSTEM_DOWN } from './streaming/constants';
3
3
  import { SYNC_START_POLLING, SYNC_CONTINUE_POLLING, SYNC_STOP_POLLING } from '../logger/constants';
4
4
  import { isConsentGranted } from '../consent';
5
- import { IN_LARGE_SEGMENT, IN_SEGMENT, POLLING, STREAMING, SYNC_MODE_UPDATE } from '../utils/constants';
5
+ import { POLLING, STREAMING, SYNC_MODE_UPDATE } from '../utils/constants';
6
6
  /**
7
7
  * Online SyncManager factory.
8
8
  * Can be used for server-side API, and client-side API with or without multiple clients.
@@ -114,53 +114,43 @@ export function syncManagerOnlineFactory(pollingManagerFactory, pushManagerFacto
114
114
  shared: function (matchingKey, readinessManager, storage) {
115
115
  if (!pollingManager)
116
116
  return;
117
- var _a = pollingManager.add(matchingKey, readinessManager, storage), msSyncTask = _a.msSyncTask, mlsSyncTask = _a.mlsSyncTask;
117
+ var mySegmentsSyncTask = pollingManager.add(matchingKey, readinessManager, storage);
118
118
  return {
119
- isRunning: msSyncTask.isRunning,
119
+ isRunning: mySegmentsSyncTask.isRunning,
120
120
  start: function () {
121
121
  if (syncEnabled) {
122
122
  if (pushManager) {
123
123
  if (pollingManager.isRunning()) {
124
124
  // if doing polling, we must start the periodic fetch of data
125
- if (storage.splits.usesMatcher(IN_SEGMENT))
126
- msSyncTask.start();
127
- if (mlsSyncTask && storage.splits.usesMatcher(IN_LARGE_SEGMENT))
128
- mlsSyncTask.start();
125
+ if (storage.splits.usesSegments())
126
+ mySegmentsSyncTask.start();
129
127
  }
130
128
  else {
131
129
  // if not polling, we must execute the sync task for the initial fetch
132
130
  // of segments since `syncAll` was already executed when starting the main client
133
- msSyncTask.execute();
134
- mlsSyncTask && mlsSyncTask.execute();
131
+ mySegmentsSyncTask.execute();
135
132
  }
136
- pushManager.add(matchingKey, msSyncTask, mlsSyncTask);
133
+ pushManager.add(matchingKey, mySegmentsSyncTask);
137
134
  }
138
135
  else {
139
- if (storage.splits.usesMatcher(IN_SEGMENT))
140
- msSyncTask.start();
141
- if (mlsSyncTask && storage.splits.usesMatcher(IN_LARGE_SEGMENT))
142
- mlsSyncTask.start();
136
+ if (storage.splits.usesSegments())
137
+ mySegmentsSyncTask.start();
143
138
  }
144
139
  }
145
140
  else {
146
- if (!readinessManager.isReady()) {
147
- msSyncTask.execute();
148
- mlsSyncTask && mlsSyncTask.execute();
149
- }
141
+ if (!readinessManager.isReady())
142
+ mySegmentsSyncTask.execute();
150
143
  }
151
144
  },
152
145
  stop: function () {
153
146
  // check in case `client.destroy()` has been invoked more than once for the same client
154
- var syncTasks = pollingManager.get(matchingKey);
155
- if (syncTasks) {
156
- var msSyncTask_1 = syncTasks.msSyncTask, mlsSyncTask_1 = syncTasks.mlsSyncTask;
147
+ var mySegmentsSyncTask = pollingManager.get(matchingKey);
148
+ if (mySegmentsSyncTask) {
157
149
  // stop syncing
158
150
  if (pushManager)
159
151
  pushManager.remove(matchingKey);
160
- if (msSyncTask_1.isRunning())
161
- msSyncTask_1.stop();
162
- if (mlsSyncTask_1 && mlsSyncTask_1.isRunning())
163
- mlsSyncTask_1.stop();
152
+ if (mySegmentsSyncTask.isRunning())
153
+ mySegmentsSyncTask.stop();
164
154
  pollingManager.remove(matchingKey);
165
155
  }
166
156
  },
@@ -61,7 +61,6 @@ export var TELEMETRY = 'te';
61
61
  export var TOKEN = 'to';
62
62
  export var SEGMENT = 'se';
63
63
  export var MY_SEGMENT = 'ms';
64
- export var MY_LARGE_SEGMENT = 'mls';
65
64
  export var TREATMENT = 't';
66
65
  export var TREATMENTS = 'ts';
67
66
  export var TREATMENT_WITH_CONFIG = 'tc';
@@ -87,7 +86,6 @@ export var NON_REQUESTED = 1;
87
86
  export var DISABLED = 0;
88
87
  export var ENABLED = 1;
89
88
  export var PAUSED = 2;
90
- export var FLAG_SPEC_VERSION = '1.2';
89
+ export var FLAG_SPEC_VERSION = '1.1';
91
90
  // Matcher types
92
91
  export var IN_SEGMENT = 'IN_SEGMENT';
93
- export var IN_LARGE_SEGMENT = 'IN_LARGE_SEGMENT';
@@ -27,8 +27,6 @@ export var base = {
27
27
  featuresRefreshRate: 60,
28
28
  // fetch segments updates each 60 sec
29
29
  segmentsRefreshRate: 60,
30
- // fetch large segments updates each 60 sec
31
- largeSegmentsRefreshRate: 60,
32
30
  // publish telemetry stats each 3600 secs (1 hour)
33
31
  telemetryRefreshRate: 3600,
34
32
  // publish evaluations each 300 sec (default value for OPTIMIZED impressions mode)
@@ -74,8 +72,7 @@ export var base = {
74
72
  impressionsMode: OPTIMIZED,
75
73
  localhostMode: undefined,
76
74
  enabled: true,
77
- flagSpecVersion: FLAG_SPEC_VERSION,
78
- largeSegmentsEnabled: false
75
+ flagSpecVersion: FLAG_SPEC_VERSION
79
76
  },
80
77
  // Logger
81
78
  log: undefined
@@ -114,7 +111,6 @@ export function settingsValidation(config, validationParams) {
114
111
  var scheduler = withDefaults.scheduler, startup = withDefaults.startup;
115
112
  scheduler.featuresRefreshRate = fromSecondsToMillis(scheduler.featuresRefreshRate);
116
113
  scheduler.segmentsRefreshRate = fromSecondsToMillis(scheduler.segmentsRefreshRate);
117
- scheduler.largeSegmentsRefreshRate = fromSecondsToMillis(scheduler.largeSegmentsRefreshRate);
118
114
  scheduler.offlineRefreshRate = fromSecondsToMillis(scheduler.offlineRefreshRate);
119
115
  scheduler.eventsPushRate = fromSecondsToMillis(scheduler.eventsPushRate);
120
116
  scheduler.telemetryRefreshRate = fromSecondsToMillis(validateMinValue('telemetryRefreshRate', scheduler.telemetryRefreshRate, 60));
@@ -187,10 +183,9 @@ export function settingsValidation(config, validationParams) {
187
183
  var splitFiltersValidation = validateSplitFilters(log, sync.splitFilters, withDefaults.mode);
188
184
  sync.splitFilters = splitFiltersValidation.validFilters;
189
185
  sync.__splitFiltersValidation = splitFiltersValidation;
190
- // ensure a valid flag spec version
191
186
  sync.flagSpecVersion = flagSpec ? flagSpec(withDefaults) : FLAG_SPEC_VERSION;
192
187
  // ensure a valid user consent value
193
188
  // @ts-ignore, modify readonly prop
194
- withDefaults.userConsent = consent ? consent(withDefaults) : undefined;
189
+ withDefaults.userConsent = consent(withDefaults);
195
190
  return withDefaults;
196
191
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splitsoftware/splitio-commons",
3
- "version": "1.16.1-rc.8",
3
+ "version": "1.17.0-rc.1",
4
4
  "description": "Split JavaScript SDK common components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
package/src/dtos/types.ts CHANGED
@@ -61,11 +61,6 @@ interface IInSegmentMatcher extends ISplitMatcherBase {
61
61
  userDefinedSegmentMatcherData: IInSegmentMatcherData
62
62
  }
63
63
 
64
- interface IInLargeSegmentMatcher extends ISplitMatcherBase {
65
- matcherType: 'IN_LARGE_SEGMENT',
66
- userDefinedSegmentMatcherData: IInSegmentMatcherData
67
- }
68
-
69
64
  interface IWhitelistMatcher extends ISplitMatcherBase {
70
65
  matcherType: 'WHITELIST',
71
66
  whitelistMatcherData: IWhitelistMatcherData
@@ -170,8 +165,7 @@ interface IInListSemverMatcher extends ISplitMatcherBase {
170
165
  export type ISplitMatcher = IAllKeysMatcher | IInSegmentMatcher | IWhitelistMatcher | IEqualToMatcher | IGreaterThanOrEqualToMatcher |
171
166
  ILessThanOrEqualToMatcher | IBetweenMatcher | IEqualToSetMatcher | IContainsAnyOfSetMatcher | IContainsAllOfSetMatcher | IPartOfSetMatcher |
172
167
  IStartsWithMatcher | IEndsWithMatcher | IContainsStringMatcher | IInSplitTreatmentMatcher | IEqualToBooleanMatcher | IMatchesStringMatcher |
173
- IEqualToSemverMatcher | IGreaterThanOrEqualToSemverMatcher | ILessThanOrEqualToSemverMatcher | IBetweenSemverMatcher | IInListSemverMatcher |
174
- IInLargeSegmentMatcher
168
+ IEqualToSemverMatcher | IGreaterThanOrEqualToSemverMatcher | ILessThanOrEqualToSemverMatcher | IBetweenSemverMatcher | IInListSemverMatcher
175
169
 
176
170
  /** Split object */
177
171
  export interface ISplitPartition {
@@ -224,18 +218,14 @@ export interface ISegmentChangesResponse {
224
218
  till: number
225
219
  }
226
220
 
227
- /** Interface of the parsed JSON response of `/mySegments/{userKey}` */
228
- export interface IMySegmentsResponse {
229
- mySegments: {
230
- id: string,
231
- name: string
232
- }[]
221
+ export interface IMySegmentsResponseItem {
222
+ id: string,
223
+ name: string
233
224
  }
234
225
 
235
- /** Interface of the parsed JSON response of `/myLargeSegments/{userKey}` */
236
- export interface IMyLargeSegmentsResponse {
237
- myLargeSegments: string[],
238
- changeNumber: number
226
+ /** Interface of the parsed JSON response of `/mySegments/{userKey}` */
227
+ export interface IMySegmentsResponse {
228
+ mySegments: IMySegmentsResponseItem[]
239
229
  }
240
230
 
241
231
  /** Metadata internal type for storages */
@@ -1,6 +1,5 @@
1
1
  import { allMatcherContext } from './all';
2
2
  import { segmentMatcherContext } from './segment';
3
- import { largeSegmentMatcherContext } from './large_segment';
4
3
  import { whitelistMatcherContext } from './whitelist';
5
4
  import { equalToMatcherContext } from './eq';
6
5
  import { greaterThanEqualMatcherContext } from './gte';
@@ -49,7 +48,6 @@ const matchers = [
49
48
  lessThanEqualToSemverMatcherContext, // LESS_THAN_OR_EQUAL_TO_SEMVER: 20
50
49
  betweenSemverMatcherContext, // BETWEEN_SEMVER: 21
51
50
  inListSemverMatcherContext, // IN_LIST_SEMVER: 22
52
- largeSegmentMatcherContext, // IN_LARGE_SEGMENT: 23
53
51
  ];
54
52
 
55
53
  /**
@@ -22,7 +22,6 @@ export const matcherTypes: Record<string, number> = {
22
22
  LESS_THAN_OR_EQUAL_TO_SEMVER: 20,
23
23
  BETWEEN_SEMVER: 21,
24
24
  IN_LIST_SEMVER: 22,
25
- IN_LARGE_SEGMENT: 23,
26
25
  };
27
26
 
28
27
  export const matcherDataTypes = {
@@ -33,7 +33,7 @@ export function matchersTransform(matchers: ISplitMatcher[]): IMatcherDto[] {
33
33
  let dataType = matcherDataTypes.STRING;
34
34
  let value = undefined;
35
35
 
36
- if (type === matcherTypes.IN_SEGMENT || type === matcherTypes.IN_LARGE_SEGMENT) {
36
+ if (type === matcherTypes.IN_SEGMENT) {
37
37
  value = segmentTransform(userDefinedSegmentMatcherData as IInSegmentMatcherData);
38
38
  } else if (type === matcherTypes.EQUAL_TO) {
39
39
  value = numericTransform(unaryNumericMatcherData as IUnaryNumericMatcherData);