@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
package/CHANGES.txt CHANGED
@@ -1,4 +1,5 @@
1
- 1.16.1 (July 10, 2024)
1
+ 1.17.0 (August XXX, 2024)
2
+ - Added `sync.requestOptions.getHeaderOverrides` configuration option to enhance SDK HTTP request Headers for Authorization Frameworks.
2
3
  - Updated some transitive dependencies for vulnerability fixes.
3
4
 
4
5
  1.16.0 (June 13, 2024)
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.matcherFactory = void 0;
4
4
  var all_1 = require("./all");
5
5
  var segment_1 = require("./segment");
6
- var large_segment_1 = require("./large_segment");
7
6
  var whitelist_1 = require("./whitelist");
8
7
  var eq_1 = require("./eq");
9
8
  var gte_1 = require("./gte");
@@ -47,8 +46,7 @@ var matchers = [
47
46
  semver_gte_1.greaterThanEqualToSemverMatcherContext,
48
47
  semver_lte_1.lessThanEqualToSemverMatcherContext,
49
48
  semver_between_1.betweenSemverMatcherContext,
50
- semver_inlist_1.inListSemverMatcherContext,
51
- large_segment_1.largeSegmentMatcherContext, // IN_LARGE_SEGMENT: 23
49
+ semver_inlist_1.inListSemverMatcherContext, // IN_LIST_SEMVER: 22
52
50
  ];
53
51
  /**
54
52
  * Matcher factory.
@@ -25,7 +25,6 @@ exports.matcherTypes = {
25
25
  LESS_THAN_OR_EQUAL_TO_SEMVER: 20,
26
26
  BETWEEN_SEMVER: 21,
27
27
  IN_LIST_SEMVER: 22,
28
- IN_LARGE_SEGMENT: 23,
29
28
  };
30
29
  exports.matcherDataTypes = {
31
30
  BOOLEAN: 'BOOLEAN',
@@ -18,7 +18,7 @@ function matchersTransform(matchers) {
18
18
  // As default input data type we use string (even for ALL_KEYS)
19
19
  var dataType = matcherTypes_1.matcherDataTypes.STRING;
20
20
  var value = undefined;
21
- if (type === matcherTypes_1.matcherTypes.IN_SEGMENT || type === matcherTypes_1.matcherTypes.IN_LARGE_SEGMENT) {
21
+ if (type === matcherTypes_1.matcherTypes.IN_SEGMENT) {
22
22
  value = (0, segment_1.segmentTransform)(userDefinedSegmentMatcherData);
23
23
  }
24
24
  else if (type === matcherTypes_1.matcherTypes.EQUAL_TO) {
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ENGINE_VALUE_NO_ATTRIBUTES = exports.ENGINE_VALUE_INVALID = exports.USER_CONSENT_INITIAL = exports.USER_CONSENT_NOT_UPDATED = exports.USER_CONSENT_UPDATED = exports.IMPRESSIONS_TRACKER_SUCCESS = exports.EVENTS_TRACKER_SUCCESS = exports.SYNC_STOP_POLLING = exports.SYNC_CONTINUE_POLLING = exports.SYNC_START_POLLING = exports.SUBMITTERS_PUSH = exports.SUBMITTERS_PUSH_FULL_QUEUE = exports.STREAMING_DISCONNECTING = exports.STREAMING_DISABLED = exports.STREAMING_CONNECTING = exports.STREAMING_RECONNECT = exports.STREAMING_REFRESH_TOKEN = exports.SYNC_SPLITS_FETCH_RETRY = exports.POLLING_STOP = exports.POLLING_START = exports.NEW_FACTORY = exports.NEW_SHARED_CLIENT = exports.IMPRESSION_QUEUEING = exports.IMPRESSION = exports.CLIENT_READY = exports.CLIENT_READY_FROM_CACHE = exports.ENGINE_MATCHER_RESULT = exports.SETTINGS_SPLITS_FILTER = exports.SYNC_TASK_STOP = exports.SYNC_TASK_EXECUTE = exports.SYNC_TASK_START = exports.STREAMING_NEW_MESSAGE = exports.SYNC_SPLITS_SEGMENTS = exports.SYNC_SPLITS_REMOVED = exports.SYNC_SPLITS_NEW = exports.SYNC_SPLITS_FETCH = exports.SYNC_OFFLINE_DATA = exports.RETRIEVE_MANAGER = exports.RETRIEVE_CLIENT_EXISTING = exports.RETRIEVE_CLIENT_DEFAULT = exports.CLEANUP_DEREGISTERING = exports.CLEANUP_REGISTERING = exports.ENGINE_SANITIZE = exports.ENGINE_VALUE = exports.ENGINE_MATCHER_DEPENDENCY_PRE = exports.ENGINE_MATCHER_DEPENDENCY = exports.ENGINE_BUCKET = exports.ENGINE_COMBINER_IFELSEIF_NO_TREATMENT = exports.ENGINE_COMBINER_IFELSEIF = exports.ENGINE_COMBINER_AND = void 0;
4
- exports.ERROR_HTTP = exports.ERROR_INVALID_CONFIG_PARAM = exports.ERROR_EMPTY_ARRAY = exports.ERROR_EMPTY = exports.ERROR_INVALID = exports.ERROR_INVALID_KEY_OBJECT = exports.ERROR_TOO_LONG = exports.ERROR_NULL = exports.ERROR_CLIENT_DESTROYED = exports.ERROR_NOT_FINITE = exports.ERROR_SIZE_EXCEEDED = exports.ERROR_NOT_PLAIN_OBJECT = exports.ERROR_EVENT_TYPE_FORMAT = exports.ERROR_EVENTS_TRACKER = exports.ERROR_IMPRESSIONS_LISTENER = exports.ERROR_IMPRESSIONS_TRACKER = exports.ERROR_STREAMING_AUTH = exports.ERROR_STREAMING_SSE = exports.ERROR_SYNC_OFFLINE_LOADING = exports.ERROR_CLIENT_CANNOT_GET_READY = exports.ERROR_CLIENT_LISTENER = exports.ERROR_LOGLEVEL_INVALID = exports.ERROR_ENGINE_COMBINER_IFELSEIF = exports.WARN_FLAGSET_WITHOUT_FLAGS = exports.WARN_FLAGSET_NOT_CONFIGURED = exports.WARN_LOWERCASE_FLAGSET = exports.WARN_INVALID_FLAGSET = exports.STREAMING_PARSING_SPLIT_UPDATE = exports.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2 = exports.WARN_SDK_KEY = exports.WARN_SPLITS_FILTER_EMPTY = exports.WARN_SPLITS_FILTER_INVALID = exports.WARN_SPLITS_FILTER_IGNORED = exports.WARN_INTEGRATION_INVALID = exports.WARN_NOT_EXISTENT_TT = exports.WARN_LOWERCASE_TRAFFIC_TYPE = exports.WARN_NOT_EXISTENT_SPLIT = exports.WARN_TRIMMING = exports.WARN_CONVERTING = exports.WARN_TRIMMING_PROPERTIES = exports.WARN_SETTING_NULL = exports.SUBMITTERS_PUSH_RETRY = exports.SUBMITTERS_PUSH_FAILS = exports.STREAMING_FALLBACK = exports.STREAMING_PARSING_MESSAGE_FAILS = exports.STREAMING_PARSING_ERROR_FAILS = exports.SYNC_SPLITS_FETCH_FAILS = exports.SYNC_MYSEGMENTS_FETCH_RETRY = exports.CLIENT_NOT_READY = exports.CLIENT_NO_LISTENER = void 0;
5
- exports.LOG_PREFIX_CLEANUP = exports.LOG_PREFIX_UNIQUE_KEYS_TRACKER = exports.LOG_PREFIX_EVENTS_TRACKER = exports.LOG_PREFIX_IMPRESSIONS_TRACKER = exports.LOG_PREFIX_SYNC_SUBMITTERS = exports.LOG_PREFIX_SYNC_POLLING = exports.LOG_PREFIX_SYNC_MYSEGMENTS = exports.LOG_PREFIX_SYNC_SEGMENTS = exports.LOG_PREFIX_SYNC_SPLITS = exports.LOG_PREFIX_SYNC_STREAMING = exports.LOG_PREFIX_SYNC_OFFLINE = exports.LOG_PREFIX_SYNC_MANAGER = exports.LOG_PREFIX_SYNC = exports.LOG_PREFIX_ENGINE_VALUE = exports.LOG_PREFIX_ENGINE_MATCHER = exports.LOG_PREFIX_ENGINE_COMBINER = exports.LOG_PREFIX_ENGINE = exports.LOG_PREFIX_CLIENT_INSTANTIATION = exports.LOG_PREFIX_INSTANTIATION = exports.LOG_PREFIX_SETTINGS = exports.ENGINE_MATCHER_ERROR = exports.ERROR_SETS_FILTER_EXCLUSIVE = exports.ERROR_TOO_MANY_SETS = exports.ERROR_MIN_CONFIG_PARAM = exports.ERROR_NOT_BOOLEAN = exports.ERROR_STORAGE_INVALID = exports.ERROR_LOCALHOST_MODULE_REQUIRED = void 0;
3
+ exports.ENGINE_VALUE_INVALID = exports.USER_CONSENT_INITIAL = exports.USER_CONSENT_NOT_UPDATED = exports.USER_CONSENT_UPDATED = exports.IMPRESSIONS_TRACKER_SUCCESS = exports.EVENTS_TRACKER_SUCCESS = exports.SYNC_STOP_POLLING = exports.SYNC_CONTINUE_POLLING = exports.SYNC_START_POLLING = exports.SUBMITTERS_PUSH = exports.SUBMITTERS_PUSH_FULL_QUEUE = exports.STREAMING_DISCONNECTING = exports.STREAMING_DISABLED = exports.STREAMING_CONNECTING = exports.STREAMING_RECONNECT = exports.STREAMING_REFRESH_TOKEN = exports.SYNC_SPLITS_FETCH_RETRY = exports.POLLING_STOP = exports.POLLING_START = exports.POLLING_SMART_PAUSING = exports.NEW_FACTORY = exports.NEW_SHARED_CLIENT = exports.IMPRESSION_QUEUEING = exports.IMPRESSION = exports.CLIENT_READY = exports.CLIENT_READY_FROM_CACHE = exports.ENGINE_MATCHER_RESULT = exports.SETTINGS_SPLITS_FILTER = exports.SYNC_TASK_STOP = exports.SYNC_TASK_EXECUTE = exports.SYNC_TASK_START = exports.STREAMING_NEW_MESSAGE = exports.SYNC_SPLITS_SEGMENTS = exports.SYNC_SPLITS_REMOVED = exports.SYNC_SPLITS_NEW = exports.SYNC_SPLITS_FETCH = exports.SYNC_OFFLINE_DATA = exports.RETRIEVE_MANAGER = exports.RETRIEVE_CLIENT_EXISTING = exports.RETRIEVE_CLIENT_DEFAULT = exports.CLEANUP_DEREGISTERING = exports.CLEANUP_REGISTERING = exports.ENGINE_SANITIZE = exports.ENGINE_VALUE = exports.ENGINE_MATCHER_DEPENDENCY_PRE = exports.ENGINE_MATCHER_DEPENDENCY = exports.ENGINE_BUCKET = exports.ENGINE_COMBINER_IFELSEIF_NO_TREATMENT = exports.ENGINE_COMBINER_IFELSEIF = exports.ENGINE_COMBINER_AND = void 0;
4
+ exports.ERROR_INVALID_CONFIG_PARAM = exports.ERROR_EMPTY_ARRAY = exports.ERROR_EMPTY = exports.ERROR_INVALID = exports.ERROR_INVALID_KEY_OBJECT = exports.ERROR_TOO_LONG = exports.ERROR_NULL = exports.ERROR_CLIENT_DESTROYED = exports.ERROR_NOT_FINITE = exports.ERROR_SIZE_EXCEEDED = exports.ERROR_NOT_PLAIN_OBJECT = exports.ERROR_EVENT_TYPE_FORMAT = exports.ERROR_EVENTS_TRACKER = exports.ERROR_IMPRESSIONS_LISTENER = exports.ERROR_IMPRESSIONS_TRACKER = exports.ERROR_STREAMING_AUTH = exports.ERROR_STREAMING_SSE = exports.ERROR_SYNC_OFFLINE_LOADING = exports.ERROR_CLIENT_CANNOT_GET_READY = exports.ERROR_CLIENT_LISTENER = exports.ERROR_LOGLEVEL_INVALID = exports.ERROR_ENGINE_COMBINER_IFELSEIF = exports.WARN_FLAGSET_WITHOUT_FLAGS = exports.WARN_FLAGSET_NOT_CONFIGURED = exports.WARN_LOWERCASE_FLAGSET = exports.WARN_INVALID_FLAGSET = exports.STREAMING_PARSING_SPLIT_UPDATE = exports.STREAMING_PARSING_MY_SEGMENTS_UPDATE_V2 = exports.WARN_SDK_KEY = exports.WARN_SPLITS_FILTER_EMPTY = exports.WARN_SPLITS_FILTER_INVALID = exports.WARN_SPLITS_FILTER_IGNORED = exports.WARN_INTEGRATION_INVALID = exports.WARN_NOT_EXISTENT_TT = exports.WARN_LOWERCASE_TRAFFIC_TYPE = exports.WARN_NOT_EXISTENT_SPLIT = exports.WARN_TRIMMING = exports.WARN_CONVERTING = exports.WARN_TRIMMING_PROPERTIES = exports.WARN_SETTING_NULL = exports.SUBMITTERS_PUSH_RETRY = exports.SUBMITTERS_PUSH_FAILS = exports.STREAMING_FALLBACK = exports.STREAMING_PARSING_MESSAGE_FAILS = exports.STREAMING_PARSING_ERROR_FAILS = exports.SYNC_SPLITS_FETCH_FAILS = exports.SYNC_MYSEGMENTS_FETCH_RETRY = exports.CLIENT_NOT_READY = exports.CLIENT_NO_LISTENER = exports.ENGINE_VALUE_NO_ATTRIBUTES = void 0;
5
+ exports.LOG_PREFIX_CLEANUP = exports.LOG_PREFIX_UNIQUE_KEYS_TRACKER = exports.LOG_PREFIX_EVENTS_TRACKER = exports.LOG_PREFIX_IMPRESSIONS_TRACKER = exports.LOG_PREFIX_SYNC_SUBMITTERS = exports.LOG_PREFIX_SYNC_POLLING = exports.LOG_PREFIX_SYNC_MYSEGMENTS = exports.LOG_PREFIX_SYNC_SEGMENTS = exports.LOG_PREFIX_SYNC_SPLITS = exports.LOG_PREFIX_SYNC_STREAMING = exports.LOG_PREFIX_SYNC_OFFLINE = exports.LOG_PREFIX_SYNC_MANAGER = exports.LOG_PREFIX_SYNC = exports.LOG_PREFIX_ENGINE_VALUE = exports.LOG_PREFIX_ENGINE_MATCHER = exports.LOG_PREFIX_ENGINE_COMBINER = exports.LOG_PREFIX_ENGINE = exports.LOG_PREFIX_CLIENT_INSTANTIATION = exports.LOG_PREFIX_INSTANTIATION = exports.LOG_PREFIX_SETTINGS = exports.ENGINE_MATCHER_ERROR = exports.ERROR_SETS_FILTER_EXCLUSIVE = exports.ERROR_TOO_MANY_SETS = exports.ERROR_MIN_CONFIG_PARAM = exports.ERROR_NOT_BOOLEAN = exports.ERROR_STORAGE_INVALID = exports.ERROR_LOCALHOST_MODULE_REQUIRED = exports.ERROR_HTTP = void 0;
6
6
  /**
7
7
  * Message codes used to trim string log messages from commons and client-side API modules,
8
8
  * in order to reduce the minimal SDK size for Browser and eventually other client-side environments.
@@ -40,6 +40,7 @@ exports.IMPRESSION = 102;
40
40
  exports.IMPRESSION_QUEUEING = 103;
41
41
  exports.NEW_SHARED_CLIENT = 104;
42
42
  exports.NEW_FACTORY = 105;
43
+ exports.POLLING_SMART_PAUSING = 106;
43
44
  exports.POLLING_START = 107;
44
45
  exports.POLLING_STOP = 108;
45
46
  exports.SYNC_SPLITS_FETCH_RETRY = 109;
@@ -20,10 +20,11 @@ exports.codesInfo = warn_1.codesWarn.concat([
20
20
  [c.USER_CONSENT_NOT_UPDATED, 'UserConsent: call had no effect because it was the current consent status (%s).'],
21
21
  [c.USER_CONSENT_INITIAL, 'Starting the SDK with %s user consent. No data will be sent.'],
22
22
  // synchronizer
23
+ [c.POLLING_SMART_PAUSING, c.LOG_PREFIX_SYNC_POLLING + 'Turning segments data polling %s.'],
23
24
  [c.POLLING_START, c.LOG_PREFIX_SYNC_POLLING + 'Starting polling'],
24
25
  [c.POLLING_STOP, c.LOG_PREFIX_SYNC_POLLING + 'Stopping polling'],
25
26
  [c.SYNC_SPLITS_FETCH_RETRY, c.LOG_PREFIX_SYNC_SPLITS + 'Retrying download of feature flags #%s. Reason: %s'],
26
- [c.SUBMITTERS_PUSH_FULL_QUEUE, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Flushing full %s queue and resetting timer.'],
27
+ [c.SUBMITTERS_PUSH_FULL_QUEUE, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Flushing full %s queue and reseting timer.'],
27
28
  [c.SUBMITTERS_PUSH, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Pushing %s.'],
28
29
  [c.STREAMING_REFRESH_TOKEN, c.LOG_PREFIX_SYNC_STREAMING + 'Refreshing streaming token in %s seconds, and connecting streaming in %s seconds.'],
29
30
  [c.STREAMING_RECONNECT, c.LOG_PREFIX_SYNC_STREAMING + 'Attempting to reconnect streaming in %s seconds.'],
@@ -16,20 +16,20 @@ function splitsEventEmitterFactory(EventEmitter) {
16
16
  splitsEventEmitter.once(constants_1.SDK_SPLITS_CACHE_LOADED, function () { splitsEventEmitter.splitsCacheLoaded = true; });
17
17
  return splitsEventEmitter;
18
18
  }
19
- function segmentsEventEmitterFactory(EventEmitter, segmentsArrived) {
20
- if (segmentsArrived === void 0) { segmentsArrived = false; }
21
- var segmentsEventEmitter = (0, objectAssign_1.objectAssign)(new EventEmitter(), { segmentsArrived: segmentsArrived });
19
+ function segmentsEventEmitterFactory(EventEmitter) {
20
+ var segmentsEventEmitter = (0, objectAssign_1.objectAssign)(new EventEmitter(), {
21
+ segmentsArrived: false
22
+ });
22
23
  segmentsEventEmitter.once(constants_1.SDK_SEGMENTS_ARRIVED, function () { segmentsEventEmitter.segmentsArrived = true; });
23
24
  return segmentsEventEmitter;
24
25
  }
25
26
  /**
26
27
  * Factory of readiness manager, which handles the ready / update event propagation.
27
28
  */
28
- function readinessManagerFactory(EventEmitter, settings, splits) {
29
+ function readinessManagerFactory(EventEmitter, readyTimeout, splits) {
30
+ if (readyTimeout === void 0) { readyTimeout = 0; }
29
31
  if (splits === void 0) { splits = splitsEventEmitterFactory(EventEmitter); }
30
- var _a = settings.startup, readyTimeout = _a.readyTimeout, waitForLargeSegments = _a.waitForLargeSegments, largeSegmentsEnabled = settings.sync.largeSegmentsEnabled;
31
32
  var segments = segmentsEventEmitterFactory(EventEmitter);
32
- var largeSegments = largeSegmentsEnabled ? segmentsEventEmitterFactory(EventEmitter, !waitForLargeSegments) : undefined;
33
33
  var gate = new EventEmitter();
34
34
  // emit SDK_READY_FROM_CACHE
35
35
  var isReadyFromCache = false;
@@ -53,8 +53,6 @@ function readinessManagerFactory(EventEmitter, settings, splits) {
53
53
  var isReady = false;
54
54
  splits.on(constants_1.SDK_SPLITS_ARRIVED, checkIsReadyOrUpdate);
55
55
  segments.on(constants_1.SDK_SEGMENTS_ARRIVED, checkIsReadyOrUpdate);
56
- if (largeSegments)
57
- largeSegments.on(constants_1.SDK_SEGMENTS_ARRIVED, checkIsReadyOrUpdate);
58
56
  var isDestroyed = false;
59
57
  function checkIsReadyFromCache() {
60
58
  isReadyFromCache = true;
@@ -80,7 +78,7 @@ function readinessManagerFactory(EventEmitter, settings, splits) {
80
78
  }
81
79
  }
82
80
  else {
83
- if (splits.splitsArrived && segments.segmentsArrived && (!largeSegments || largeSegments.segmentsArrived)) {
81
+ if (splits.splitsArrived && segments.segmentsArrived) {
84
82
  clearTimeout(readyTimeoutId);
85
83
  isReady = true;
86
84
  try {
@@ -97,11 +95,11 @@ function readinessManagerFactory(EventEmitter, settings, splits) {
97
95
  return {
98
96
  splits: splits,
99
97
  segments: segments,
100
- largeSegments: largeSegments,
101
98
  gate: gate,
102
- shared: function () {
99
+ shared: function (readyTimeout) {
100
+ if (readyTimeout === void 0) { readyTimeout = 0; }
103
101
  refCount++;
104
- return readinessManagerFactory(EventEmitter, settings, splits);
102
+ return readinessManagerFactory(EventEmitter, readyTimeout, splits);
105
103
  },
106
104
  // @TODO review/remove next methods when non-recoverable errors are reworked
107
105
  // Called on consumer mode, when storage fails to connect
@@ -112,8 +110,6 @@ function readinessManagerFactory(EventEmitter, settings, splits) {
112
110
  destroy: function () {
113
111
  isDestroyed = true;
114
112
  segments.removeAllListeners();
115
- if (largeSegments)
116
- largeSegments.removeAllListeners();
117
113
  gate.removeAllListeners();
118
114
  clearTimeout(readyTimeoutId);
119
115
  if (refCount > 0)
@@ -15,9 +15,9 @@ var REMOVE_LISTENER_EVENT = 'removeListener';
15
15
  * @param readyTimeout time in millis to emit SDK_READY_TIME_OUT event
16
16
  * @param readinessManager optional readinessManager to use. only used internally for `shared` method
17
17
  */
18
- function sdkReadinessManagerFactory(EventEmitter, settings, readinessManager) {
19
- if (readinessManager === void 0) { readinessManager = (0, readinessManager_1.readinessManagerFactory)(EventEmitter, settings); }
20
- var log = settings.log;
18
+ function sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, readinessManager) {
19
+ if (readyTimeout === void 0) { readyTimeout = 0; }
20
+ if (readinessManager === void 0) { readinessManager = (0, readinessManager_1.readinessManagerFactory)(EventEmitter, readyTimeout); }
21
21
  /** Ready callback warning */
22
22
  var internalReadyCbCount = 0;
23
23
  var readyCbCount = 0;
@@ -60,8 +60,9 @@ function sdkReadinessManagerFactory(EventEmitter, settings, readinessManager) {
60
60
  }
61
61
  return {
62
62
  readinessManager: readinessManager,
63
- shared: function () {
64
- return sdkReadinessManagerFactory(EventEmitter, settings, readinessManager.shared());
63
+ shared: function (readyTimeout) {
64
+ if (readyTimeout === void 0) { readyTimeout = 0; }
65
+ return sdkReadinessManagerFactory(log, EventEmitter, readyTimeout, readinessManager.shared(readyTimeout));
65
66
  },
66
67
  incInternalReadyCbCount: function () {
67
68
  internalReadyCbCount++;
@@ -17,7 +17,7 @@ function buildInstanceId(key) {
17
17
  * Therefore, clients don't have a bound TT for the track method.
18
18
  */
19
19
  function sdkClientMethodCSFactory(params) {
20
- var storage = params.storage, syncManager = params.syncManager, sdkReadinessManager = params.sdkReadinessManager, _a = params.settings, key = _a.core.key, log = _a.log;
20
+ var storage = params.storage, syncManager = params.syncManager, sdkReadinessManager = params.sdkReadinessManager, _a = params.settings, key = _a.core.key, readyTimeout = _a.startup.readyTimeout, log = _a.log;
21
21
  var mainClientInstance = (0, clientCS_1.clientCSDecorator)(log, (0, sdkClient_1.sdkClientFactory)(params), key);
22
22
  var parsedDefaultKey = (0, key_2.keyParser)(key);
23
23
  var defaultInstanceId = buildInstanceId(parsedDefaultKey);
@@ -37,7 +37,7 @@ function sdkClientMethodCSFactory(params) {
37
37
  var instanceId = buildInstanceId(validKey);
38
38
  if (!clientInstances[instanceId]) {
39
39
  var matchingKey = (0, key_2.getMatching)(validKey);
40
- var sharedSdkReadiness_1 = sdkReadinessManager.shared();
40
+ var sharedSdkReadiness_1 = sdkReadinessManager.shared(readyTimeout);
41
41
  var sharedStorage = storage.shared && storage.shared(matchingKey, function (err) {
42
42
  if (err) {
43
43
  sharedSdkReadiness_1.readinessManager.timeout();
@@ -19,7 +19,7 @@ function buildInstanceId(key, trafficType) {
19
19
  * (default client) or the client method (shared clients).
20
20
  */
21
21
  function sdkClientMethodCSFactory(params) {
22
- var storage = params.storage, syncManager = params.syncManager, sdkReadinessManager = params.sdkReadinessManager, _a = params.settings, _b = _a.core, key = _b.key, trafficType = _b.trafficType, log = _a.log;
22
+ var storage = params.storage, syncManager = params.syncManager, sdkReadinessManager = params.sdkReadinessManager, _a = params.settings, _b = _a.core, key = _b.key, trafficType = _b.trafficType, readyTimeout = _a.startup.readyTimeout, log = _a.log;
23
23
  var mainClientInstance = (0, clientCS_1.clientCSDecorator)(log, (0, sdkClient_1.sdkClientFactory)(params), key, trafficType);
24
24
  var parsedDefaultKey = (0, key_2.keyParser)(key);
25
25
  var defaultInstanceId = buildInstanceId(parsedDefaultKey, trafficType);
@@ -46,7 +46,7 @@ function sdkClientMethodCSFactory(params) {
46
46
  var instanceId = buildInstanceId(validKey, validTrafficType);
47
47
  if (!clientInstances[instanceId]) {
48
48
  var matchingKey = (0, key_2.getMatching)(validKey);
49
- var sharedSdkReadiness_1 = sdkReadinessManager.shared();
49
+ var sharedSdkReadiness_1 = sdkReadinessManager.shared(readyTimeout);
50
50
  var sharedStorage = storage.shared && storage.shared(matchingKey, function (err) {
51
51
  if (err) {
52
52
  sharedSdkReadiness_1.readinessManager.timeout();
@@ -25,7 +25,7 @@ function sdkFactory(params) {
25
25
  // On non-recoverable errors, we should mark the SDK as destroyed and not start synchronization.
26
26
  // We will just log and allow for the SDK to end up throwing an SDK_TIMEOUT event for devs to handle.
27
27
  (0, apiKey_1.validateAndTrackApiKey)(log, settings.core.authorizationKey);
28
- var sdkReadinessManager = (0, sdkReadinessManager_1.sdkReadinessManagerFactory)(platform.EventEmitter, settings);
28
+ var sdkReadinessManager = (0, sdkReadinessManager_1.sdkReadinessManagerFactory)(log, platform.EventEmitter, settings.startup.readyTimeout);
29
29
  var readiness = sdkReadinessManager.readinessManager;
30
30
  var storage = storageFactory({
31
31
  settings: settings,
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decorateHeaders = void 0;
4
+ var objectAssign_1 = require("../utils/lang/objectAssign");
5
+ var sets_1 = require("../utils/lang/sets");
6
+ var FORBIDDEN_HEADERS = new sets_1._Set([
7
+ 'splitsdkclientkey',
8
+ 'splitsdkversion',
9
+ 'splitsdkmachineip',
10
+ 'splitsdkmachinename',
11
+ 'splitsdkimpressionsmode',
12
+ 'host',
13
+ 'referrer',
14
+ 'content-type',
15
+ 'content-length',
16
+ 'content-encoding',
17
+ 'accept',
18
+ 'keep-alive',
19
+ 'x-fastly-debug'
20
+ ]);
21
+ function copyToLowerCase(obj) {
22
+ return Object.keys(obj).reduce(function (acc, key) {
23
+ acc[key.toLowerCase()] = obj[key];
24
+ return acc;
25
+ }, {});
26
+ }
27
+ function decorateHeaders(settings, headers) {
28
+ var _a;
29
+ if ((_a = settings.sync.requestOptions) === null || _a === void 0 ? void 0 : _a.getHeaderOverrides) {
30
+ headers = copyToLowerCase(headers);
31
+ try {
32
+ var headerOverrides_1 = copyToLowerCase(settings.sync.requestOptions.getHeaderOverrides({ headers: (0, objectAssign_1.objectAssign)({}, headers) }));
33
+ Object.keys(headerOverrides_1)
34
+ .filter(function (key) { return !FORBIDDEN_HEADERS.has(key); })
35
+ .forEach(function (key) { return headers[key] = headerOverrides_1[key]; });
36
+ }
37
+ catch (e) {
38
+ settings.log.error('Problem adding custom headers to request decorator: ' + e);
39
+ }
40
+ }
41
+ return headers;
42
+ }
43
+ exports.decorateHeaders = decorateHeaders;
@@ -64,10 +64,6 @@ function splitApiFactory(settings, platform, telemetryTracker) {
64
64
  var url = urls.sdk + "/mySegments/" + encodeURIComponent(userMatchingKey);
65
65
  return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(constants_1.MY_SEGMENT));
66
66
  },
67
- fetchMyLargeSegments: function (userMatchingKey, noCache) {
68
- var url = urls.sdk + "/myLargeSegments/" + encodeURIComponent(userMatchingKey);
69
- return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined, telemetryTracker.trackHttp(constants_1.MY_LARGE_SEGMENT));
70
- },
71
67
  /**
72
68
  * Post events.
73
69
  *
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splitHttpClientFactory = void 0;
4
4
  var objectAssign_1 = require("../utils/lang/objectAssign");
5
5
  var constants_1 = require("../logger/constants");
6
+ var decorateHeaders_1 = require("./decorateHeaders");
6
7
  var messageNoFetch = 'Global fetch API is not available.';
7
8
  /**
8
9
  * Factory of Split HTTP clients, which are HTTP clients with predefined headers for Split endpoints.
@@ -18,22 +19,22 @@ function splitHttpClientFactory(settings, _a) {
18
19
  // if fetch is not available, log Error
19
20
  if (!fetch)
20
21
  log.error(constants_1.ERROR_CLIENT_CANNOT_GET_READY, [messageNoFetch]);
21
- var headers = {
22
+ var commonHeaders = {
22
23
  'Accept': 'application/json',
23
24
  'Content-Type': 'application/json',
24
25
  'Authorization': "Bearer " + authorizationKey,
25
26
  'SplitSDKVersion': version
26
27
  };
27
28
  if (ip)
28
- headers['SplitSDKMachineIP'] = ip;
29
+ commonHeaders['SplitSDKMachineIP'] = ip;
29
30
  if (hostname)
30
- headers['SplitSDKMachineName'] = hostname;
31
+ commonHeaders['SplitSDKMachineName'] = hostname;
31
32
  return function httpClient(url, reqOpts, latencyTracker, logErrorsAsInfo) {
32
33
  if (reqOpts === void 0) { reqOpts = {}; }
33
34
  if (latencyTracker === void 0) { latencyTracker = function () { }; }
34
35
  if (logErrorsAsInfo === void 0) { logErrorsAsInfo = false; }
35
36
  var request = (0, objectAssign_1.objectAssign)({
36
- headers: reqOpts.headers ? (0, objectAssign_1.objectAssign)({}, headers, reqOpts.headers) : headers,
37
+ headers: (0, decorateHeaders_1.decorateHeaders)(settings, (0, objectAssign_1.objectAssign)({}, commonHeaders, reqOpts.headers || {})),
37
38
  method: reqOpts.method || 'GET',
38
39
  body: reqOpts.body
39
40
  }, options);
@@ -9,9 +9,9 @@ var objectAssign_1 = require("../utils/lang/objectAssign");
9
9
  var AbstractSplitsCacheAsync = /** @class */ (function () {
10
10
  function AbstractSplitsCacheAsync() {
11
11
  }
12
- // @TODO revisit segment-related methods ('usesMatcher', 'getRegisteredSegments', 'registerSegments')
12
+ // @TODO revisit segment-related methods ('usesSegments', 'getRegisteredSegments', 'registerSegments')
13
13
  // noop, just keeping the interface. This is used by standalone client-side API only, and so only implemented by InMemory and InLocalStorage.
14
- AbstractSplitsCacheAsync.prototype.usesMatcher = function () {
14
+ AbstractSplitsCacheAsync.prototype.usesSegments = function () {
15
15
  return Promise.resolve(true);
16
16
  };
17
17
  /**
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.usesMatcher = exports.AbstractSplitsCacheSync = void 0;
3
+ exports.usesSegments = exports.AbstractSplitsCacheSync = void 0;
4
4
  var objectAssign_1 = require("../utils/lang/objectAssign");
5
+ var constants_1 = require("../utils/constants");
5
6
  /**
6
7
  * This class provides a skeletal implementation of the ISplitsCacheSync interface
7
8
  * to minimize the effort required to implement this interface.
@@ -62,17 +63,17 @@ var AbstractSplitsCacheSync = /** @class */ (function () {
62
63
  exports.AbstractSplitsCacheSync = AbstractSplitsCacheSync;
63
64
  /**
64
65
  * Given a parsed split, it returns a boolean flagging if its conditions use segments matchers (rules & whitelists).
65
- * This util is intended to simplify the implementation of `splitsCache::usesMatcher` method
66
+ * This util is intended to simplify the implementation of `splitsCache::usesSegments` method
66
67
  */
67
- function usesMatcher(split, matcherType) {
68
+ function usesSegments(split) {
68
69
  var conditions = split.conditions || [];
69
70
  for (var i = 0; i < conditions.length; i++) {
70
71
  var matchers = conditions[i].matcherGroup.matchers;
71
72
  for (var j = 0; j < matchers.length; j++) {
72
- if (matchers[j].matcherType === matcherType)
73
+ if (matchers[j].matcherType === constants_1.IN_SEGMENT)
73
74
  return true;
74
75
  }
75
76
  }
76
77
  return false;
77
78
  }
78
- exports.usesMatcher = usesMatcher;
79
+ exports.usesSegments = usesSegments;
@@ -40,9 +40,6 @@ var KeyBuilder = /** @class */ (function () {
40
40
  KeyBuilder.prototype.buildSplitsWithSegmentCountKey = function () {
41
41
  return this.prefix + ".splits.usingSegments";
42
42
  };
43
- KeyBuilder.prototype.buildSplitsWithLargeSegmentCountKey = function () {
44
- return this.prefix + ".splits.usingLargeSegments";
45
- };
46
43
  KeyBuilder.prototype.buildSegmentNameKey = function (segmentName) {
47
44
  return this.prefix + ".segment." + segmentName;
48
45
  };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.myLargeSegmentsKeyBuilder = exports.KeyBuilderCS = void 0;
3
+ exports.KeyBuilderCS = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var lang_1 = require("../utils/lang");
6
6
  var KeyBuilder_1 = require("./KeyBuilder");
@@ -24,6 +24,10 @@ var KeyBuilderCS = /** @class */ (function (_super) {
24
24
  return builtSegmentKeyName.substr(prefix.length);
25
25
  };
26
26
  // @BREAKING: The key used to start with the matching key instead of the prefix, this was changed on version 10.17.3
27
+ KeyBuilderCS.prototype.buildOldSegmentNameKey = function (segmentName) {
28
+ return this.matchingKey + "." + this.prefix + ".segment." + segmentName;
29
+ };
30
+ // @BREAKING: The key used to start with the matching key instead of the prefix, this was changed on version 10.17.3
27
31
  KeyBuilderCS.prototype.extractOldSegmentKey = function (builtSegmentKeyName) {
28
32
  var prefix = this.matchingKey + "." + this.prefix + ".segment.";
29
33
  if ((0, lang_1.startsWith)(builtSegmentKeyName, prefix))
@@ -38,19 +42,3 @@ var KeyBuilderCS = /** @class */ (function (_super) {
38
42
  return KeyBuilderCS;
39
43
  }(KeyBuilder_1.KeyBuilder));
40
44
  exports.KeyBuilderCS = KeyBuilderCS;
41
- function myLargeSegmentsKeyBuilder(prefix, matchingKey) {
42
- return {
43
- buildSegmentNameKey: function (segmentName) {
44
- return prefix + "." + matchingKey + ".largeSegment." + segmentName;
45
- },
46
- extractSegmentName: function (builtSegmentKeyName) {
47
- var p = prefix + "." + matchingKey + ".largeSegment.";
48
- if ((0, lang_1.startsWith)(builtSegmentKeyName, p))
49
- return builtSegmentKeyName.substr(p.length);
50
- },
51
- extractOldSegmentKey: function () {
52
- return undefined;
53
- }
54
- };
55
- }
56
- exports.myLargeSegmentsKeyBuilder = myLargeSegmentsKeyBuilder;
@@ -7,7 +7,6 @@ var lang_1 = require("../../utils/lang");
7
7
  var constants_1 = require("./constants");
8
8
  var sets_1 = require("../../utils/lang/sets");
9
9
  var KeyBuilder_1 = require("../KeyBuilder");
10
- var constants_2 = require("../../utils/constants");
11
10
  /**
12
11
  * ISplitsCacheSync implementation that stores split definitions in browser LocalStorage.
13
12
  */
@@ -41,14 +40,10 @@ var SplitsCacheInLocal = /** @class */ (function (_super) {
41
40
  if (split) {
42
41
  var ttKey = this.keys.buildTrafficTypeKey(split.trafficTypeName);
43
42
  this._decrementCount(ttKey);
44
- if ((0, AbstractSplitsCacheSync_1.usesMatcher)(split, constants_2.IN_SEGMENT)) {
43
+ if ((0, AbstractSplitsCacheSync_1.usesSegments)(split)) {
45
44
  var segmentsCountKey = this.keys.buildSplitsWithSegmentCountKey();
46
45
  this._decrementCount(segmentsCountKey);
47
46
  }
48
- if ((0, AbstractSplitsCacheSync_1.usesMatcher)(split, constants_2.IN_LARGE_SEGMENT)) {
49
- var segmentsCountKey = this.keys.buildSplitsWithLargeSegmentCountKey();
50
- this._decrementCount(segmentsCountKey);
51
- }
52
47
  }
53
48
  }
54
49
  catch (e) {
@@ -61,16 +56,11 @@ var SplitsCacheInLocal = /** @class */ (function (_super) {
61
56
  var ttKey = this.keys.buildTrafficTypeKey(split.trafficTypeName);
62
57
  // @ts-expect-error
63
58
  localStorage.setItem(ttKey, (0, lang_1.toNumber)(localStorage.getItem(ttKey)) + 1);
64
- if ((0, AbstractSplitsCacheSync_1.usesMatcher)(split, constants_2.IN_SEGMENT)) {
59
+ if ((0, AbstractSplitsCacheSync_1.usesSegments)(split)) {
65
60
  var segmentsCountKey = this.keys.buildSplitsWithSegmentCountKey();
66
61
  // @ts-expect-error
67
62
  localStorage.setItem(segmentsCountKey, (0, lang_1.toNumber)(localStorage.getItem(segmentsCountKey)) + 1);
68
63
  }
69
- if ((0, AbstractSplitsCacheSync_1.usesMatcher)(split, constants_2.IN_LARGE_SEGMENT)) {
70
- var segmentsCountKey = this.keys.buildSplitsWithLargeSegmentCountKey();
71
- // @ts-expect-error
72
- localStorage.setItem(segmentsCountKey, (0, lang_1.toNumber)(localStorage.getItem(segmentsCountKey)) + 1);
73
- }
74
64
  }
75
65
  }
76
66
  catch (e) {
@@ -183,13 +173,11 @@ var SplitsCacheInLocal = /** @class */ (function (_super) {
183
173
  var ttCount = (0, lang_1.toNumber)(localStorage.getItem(this.keys.buildTrafficTypeKey(trafficType)));
184
174
  return (0, lang_1.isFiniteNumber)(ttCount) && ttCount > 0;
185
175
  };
186
- SplitsCacheInLocal.prototype.usesMatcher = function (matcherType) {
176
+ SplitsCacheInLocal.prototype.usesSegments = function () {
187
177
  // If cache hasn't been synchronized with the cloud, assume we need them.
188
178
  if (!this.hasSync)
189
179
  return true;
190
- var storedCount = localStorage.getItem(matcherType === constants_2.IN_SEGMENT ?
191
- this.keys.buildSplitsWithSegmentCountKey() :
192
- this.keys.buildSplitsWithLargeSegmentCountKey());
180
+ var storedCount = localStorage.getItem(this.keys.buildSplitsWithSegmentCountKey());
193
181
  var splitsWithSegmentsCount = storedCount === null ? 0 : (0, lang_1.toNumber)(storedCount);
194
182
  if ((0, lang_1.isFiniteNumber)(splitsWithSegmentsCount)) {
195
183
  return splitsWithSegmentsCount > 0;
@@ -36,11 +36,9 @@ function InLocalStorage(options) {
36
36
  var expirationTimestamp = Date.now() - browser_1.DEFAULT_CACHE_EXPIRATION_IN_MILLIS;
37
37
  var splits = new SplitsCacheInLocal_1.SplitsCacheInLocal(settings, keys, expirationTimestamp);
38
38
  var segments = new MySegmentsCacheInLocal_1.MySegmentsCacheInLocal(log, keys);
39
- var largeSegments = new MySegmentsCacheInLocal_1.MySegmentsCacheInLocal(log, (0, KeyBuilderCS_1.myLargeSegmentsKeyBuilder)(prefix, matchingKey));
40
39
  return {
41
40
  splits: splits,
42
41
  segments: segments,
43
- largeSegments: largeSegments,
44
42
  impressions: new ImpressionsCacheInMemory_1.ImpressionsCacheInMemory(impressionsQueueSize),
45
43
  impressionCounts: impressionsMode !== constants_2.DEBUG ? new ImpressionCountsCacheInMemory_1.ImpressionCountsCacheInMemory() : undefined,
46
44
  events: new EventsCacheInMemory_1.EventsCacheInMemory(eventsQueueSize),
@@ -50,7 +48,6 @@ function InLocalStorage(options) {
50
48
  var _a;
51
49
  this.splits = new SplitsCacheInMemory_1.SplitsCacheInMemory(__splitFiltersValidation);
52
50
  this.segments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
53
- this.largeSegments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
54
51
  this.impressions.clear();
55
52
  this.impressionCounts && this.impressionCounts.clear();
56
53
  this.events.clear();
@@ -58,10 +55,10 @@ function InLocalStorage(options) {
58
55
  },
59
56
  // When using shared instanciation with MEMORY we reuse everything but segments (they are customer per key).
60
57
  shared: function (matchingKey) {
58
+ var childKeysBuilder = new KeyBuilderCS_1.KeyBuilderCS(prefix, matchingKey);
61
59
  return {
62
60
  splits: this.splits,
63
- segments: new MySegmentsCacheInLocal_1.MySegmentsCacheInLocal(log, new KeyBuilderCS_1.KeyBuilderCS(prefix, matchingKey)),
64
- largeSegments: new MySegmentsCacheInLocal_1.MySegmentsCacheInLocal(log, (0, KeyBuilderCS_1.myLargeSegmentsKeyBuilder)(prefix, matchingKey)),
61
+ segments: new MySegmentsCacheInLocal_1.MySegmentsCacheInLocal(log, childKeysBuilder),
65
62
  impressions: this.impressions,
66
63
  impressionCounts: this.impressionCounts,
67
64
  events: this.events,
@@ -69,7 +66,6 @@ function InLocalStorage(options) {
69
66
  destroy: function () {
70
67
  this.splits = new SplitsCacheInMemory_1.SplitsCacheInMemory(__splitFiltersValidation);
71
68
  this.segments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
72
- this.largeSegments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
73
69
  }
74
70
  };
75
71
  },
@@ -18,11 +18,9 @@ function InMemoryStorageCSFactory(params) {
18
18
  var _a = params.settings, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize, _c = _a.sync, impressionsMode = _c.impressionsMode, __splitFiltersValidation = _c.__splitFiltersValidation;
19
19
  var splits = new SplitsCacheInMemory_1.SplitsCacheInMemory(__splitFiltersValidation);
20
20
  var segments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
21
- var largeSegments = new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory();
22
21
  var storage = {
23
22
  splits: splits,
24
23
  segments: segments,
25
- largeSegments: largeSegments,
26
24
  impressions: new ImpressionsCacheInMemory_1.ImpressionsCacheInMemory(impressionsQueueSize),
27
25
  impressionCounts: impressionsMode !== constants_1.DEBUG ? new ImpressionCountsCacheInMemory_1.ImpressionCountsCacheInMemory() : undefined,
28
26
  events: new EventsCacheInMemory_1.EventsCacheInMemory(eventsQueueSize),
@@ -32,7 +30,6 @@ function InMemoryStorageCSFactory(params) {
32
30
  destroy: function () {
33
31
  this.splits.clear();
34
32
  this.segments.clear();
35
- this.largeSegments.clear();
36
33
  this.impressions.clear();
37
34
  this.impressionCounts && this.impressionCounts.clear();
38
35
  this.events.clear();
@@ -43,7 +40,6 @@ function InMemoryStorageCSFactory(params) {
43
40
  return {
44
41
  splits: this.splits,
45
42
  segments: new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory(),
46
- largeSegments: new MySegmentsCacheInMemory_1.MySegmentsCacheInMemory(),
47
43
  impressions: this.impressions,
48
44
  impressionCounts: this.impressionCounts,
49
45
  events: this.events,
@@ -52,7 +48,6 @@ function InMemoryStorageCSFactory(params) {
52
48
  destroy: function () {
53
49
  this.splits = new SplitsCacheInMemory_1.SplitsCacheInMemory(__splitFiltersValidation);
54
50
  this.segments.clear();
55
- this.largeSegments.clear();
56
51
  }
57
52
  };
58
53
  },