@splitsoftware/splitio-commons 1.6.2-rc.2 → 1.6.2-rc.3

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 (315) hide show
  1. package/cjs/listeners/browser.js +1 -2
  2. package/cjs/logger/constants.js +1 -2
  3. package/cjs/sdkFactory/index.js +6 -14
  4. package/cjs/services/splitApi.js +1 -20
  5. package/cjs/storages/inLocalStorage/index.js +0 -4
  6. package/cjs/storages/inMemory/InMemoryStorage.js +1 -5
  7. package/cjs/storages/inMemory/InMemoryStorageCS.js +1 -5
  8. package/cjs/sync/submitters/submitterManager.js +0 -3
  9. package/cjs/sync/submitters/telemetrySubmitter.js +0 -1
  10. package/cjs/trackers/impressionsTracker.js +28 -7
  11. package/cjs/utils/constants/index.js +2 -4
  12. package/cjs/utils/key/index.js +1 -1
  13. package/cjs/utils/settingsValidation/impressionsMode.js +2 -2
  14. package/cjs/utils/settingsValidation/index.js +1 -3
  15. package/esm/listeners/browser.js +2 -3
  16. package/esm/logger/constants.js +0 -1
  17. package/esm/sdkFactory/index.js +6 -14
  18. package/esm/services/splitApi.js +1 -20
  19. package/esm/storages/inLocalStorage/index.js +1 -5
  20. package/esm/storages/inMemory/InMemoryStorage.js +2 -6
  21. package/esm/storages/inMemory/InMemoryStorageCS.js +2 -6
  22. package/esm/sync/submitters/submitterManager.js +0 -3
  23. package/esm/sync/submitters/telemetrySubmitter.js +1 -2
  24. package/esm/trackers/impressionsTracker.js +28 -7
  25. package/esm/utils/constants/index.js +0 -2
  26. package/esm/utils/key/index.js +1 -1
  27. package/esm/utils/settingsValidation/impressionsMode.js +3 -3
  28. package/esm/utils/settingsValidation/index.js +1 -3
  29. package/package.json +2 -2
  30. package/src/consent/sdkUserConsent.ts +4 -3
  31. package/src/dtos/types.ts +0 -8
  32. package/src/evaluator/Engine.ts +3 -3
  33. package/src/evaluator/combiners/and.ts +1 -1
  34. package/src/evaluator/combiners/ifelseif.ts +3 -3
  35. package/src/evaluator/condition/engineUtils.ts +1 -1
  36. package/src/evaluator/condition/index.ts +6 -6
  37. package/src/evaluator/index.ts +10 -10
  38. package/src/evaluator/matchers/all.ts +1 -1
  39. package/src/evaluator/matchers/between.ts +1 -1
  40. package/src/evaluator/matchers/boolean.ts +1 -1
  41. package/src/evaluator/matchers/cont_all.ts +1 -1
  42. package/src/evaluator/matchers/cont_any.ts +1 -1
  43. package/src/evaluator/matchers/cont_str.ts +1 -1
  44. package/src/evaluator/matchers/dependency.ts +1 -1
  45. package/src/evaluator/matchers/eq.ts +1 -1
  46. package/src/evaluator/matchers/eq_set.ts +1 -1
  47. package/src/evaluator/matchers/ew.ts +1 -1
  48. package/src/evaluator/matchers/gte.ts +1 -1
  49. package/src/evaluator/matchers/index.ts +1 -1
  50. package/src/evaluator/matchers/lte.ts +1 -1
  51. package/src/evaluator/matchers/part_of.ts +1 -1
  52. package/src/evaluator/matchers/segment.ts +1 -1
  53. package/src/evaluator/matchers/string.ts +1 -1
  54. package/src/evaluator/matchers/sw.ts +1 -1
  55. package/src/evaluator/matchers/whitelist.ts +1 -1
  56. package/src/evaluator/parser/index.ts +3 -3
  57. package/src/evaluator/types.ts +6 -6
  58. package/src/evaluator/value/index.ts +4 -4
  59. package/src/evaluator/value/sanitize.ts +4 -4
  60. package/src/integrations/ga/GaToSplit.ts +6 -6
  61. package/src/integrations/ga/SplitToGa.ts +10 -10
  62. package/src/integrations/ga/types.ts +4 -4
  63. package/src/integrations/pluggable.ts +3 -3
  64. package/src/integrations/types.ts +2 -2
  65. package/src/listeners/browser.ts +2 -3
  66. package/src/logger/.DS_Store +0 -0
  67. package/src/logger/constants.ts +0 -1
  68. package/src/logger/index.ts +3 -3
  69. package/src/logger/sdkLogger.ts +1 -2
  70. package/src/logger/types.ts +0 -16
  71. package/src/readiness/sdkReadinessManager.ts +1 -1
  72. package/src/readiness/types.ts +2 -9
  73. package/src/sdkClient/client.ts +13 -13
  74. package/src/sdkClient/clientAttributesDecoration.ts +9 -9
  75. package/src/sdkClient/clientCS.ts +3 -4
  76. package/src/sdkClient/clientInputValidation.ts +15 -15
  77. package/src/sdkClient/sdkClient.ts +2 -2
  78. package/src/sdkClient/sdkClientMethod.ts +2 -2
  79. package/src/sdkClient/sdkClientMethodCS.ts +9 -9
  80. package/src/sdkClient/sdkClientMethodCSWithTT.ts +9 -9
  81. package/src/sdkFactory/index.ts +8 -18
  82. package/src/sdkFactory/types.ts +8 -11
  83. package/src/sdkManager/index.ts +5 -5
  84. package/src/services/splitApi.ts +1 -22
  85. package/src/services/types.ts +0 -6
  86. package/src/storages/dataLoader.ts +2 -2
  87. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
  88. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +2 -2
  89. package/src/storages/inLocalStorage/index.ts +4 -6
  90. package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
  91. package/src/storages/inMemory/InMemoryStorage.ts +2 -5
  92. package/src/storages/inMemory/InMemoryStorageCS.ts +2 -6
  93. package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
  94. package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
  95. package/src/storages/inRedis/RedisAdapter.ts +1 -1
  96. package/src/storages/inRedis/SegmentsCacheInRedis.ts +1 -1
  97. package/src/storages/inRedis/SplitsCacheInRedis.ts +1 -1
  98. package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
  99. package/src/storages/inRedis/index.ts +3 -2
  100. package/src/storages/pluggable/EventsCachePluggable.ts +4 -4
  101. package/src/storages/pluggable/ImpressionsCachePluggable.ts +1 -1
  102. package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
  103. package/src/storages/pluggable/SplitsCachePluggable.ts +1 -1
  104. package/src/storages/pluggable/TelemetryCachePluggable.ts +1 -1
  105. package/src/storages/pluggable/index.ts +3 -3
  106. package/src/storages/pluggable/wrapperAdapter.ts +1 -1
  107. package/src/storages/types.ts +48 -40
  108. package/src/sync/offline/LocalhostFromObject.ts +4 -4
  109. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
  110. package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
  111. package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
  112. package/src/sync/polling/updaters/splitChangesUpdater.ts +1 -1
  113. package/src/sync/streaming/SSEHandler/index.ts +1 -1
  114. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  115. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
  116. package/src/sync/submitters/submitter.ts +1 -1
  117. package/src/sync/submitters/submitterManager.ts +0 -2
  118. package/src/sync/submitters/telemetrySubmitter.ts +3 -4
  119. package/src/sync/submitters/types.ts +3 -22
  120. package/src/sync/syncTask.ts +1 -1
  121. package/src/trackers/eventTracker.ts +3 -3
  122. package/src/trackers/impressionsTracker.ts +38 -15
  123. package/src/trackers/types.ts +4 -30
  124. package/src/types.d.ts +1646 -0
  125. package/src/utils/constants/index.ts +1 -3
  126. package/src/utils/inputValidation/apiKey.ts +1 -1
  127. package/src/utils/inputValidation/attribute.ts +1 -1
  128. package/src/utils/inputValidation/attributes.ts +3 -3
  129. package/src/utils/inputValidation/event.ts +1 -1
  130. package/src/utils/inputValidation/eventProperties.ts +3 -3
  131. package/src/utils/inputValidation/eventValue.ts +1 -1
  132. package/src/utils/inputValidation/isOperational.ts +1 -1
  133. package/src/utils/inputValidation/key.ts +3 -3
  134. package/src/utils/inputValidation/preloadedData.ts +3 -3
  135. package/src/utils/inputValidation/split.ts +1 -1
  136. package/src/utils/inputValidation/splitExistance.ts +1 -1
  137. package/src/utils/inputValidation/splits.ts +1 -1
  138. package/src/utils/inputValidation/trafficType.ts +1 -1
  139. package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
  140. package/src/utils/key/index.ts +9 -9
  141. package/src/utils/settingsValidation/consent.ts +1 -2
  142. package/src/utils/settingsValidation/impressionsMode.ts +6 -6
  143. package/src/utils/settingsValidation/index.ts +1 -4
  144. package/src/utils/settingsValidation/integrations/common.ts +1 -1
  145. package/src/utils/settingsValidation/integrations/configurable.ts +1 -1
  146. package/src/utils/settingsValidation/integrations/pluggable.ts +1 -2
  147. package/src/utils/settingsValidation/localhost/builtin.ts +1 -2
  148. package/src/utils/settingsValidation/localhost/pluggable.ts +1 -2
  149. package/src/utils/settingsValidation/logger/builtinLogger.ts +1 -2
  150. package/src/utils/settingsValidation/logger/pluggableLogger.ts +1 -2
  151. package/src/utils/settingsValidation/splitFilters.ts +7 -9
  152. package/src/utils/settingsValidation/storage/storageCS.ts +1 -2
  153. package/types/consent/sdkUserConsent.d.ts +2 -9
  154. package/types/dtos/types.d.ts +0 -6
  155. package/types/evaluator/Engine.d.ts +3 -3
  156. package/types/evaluator/combiners/and.d.ts +1 -1
  157. package/types/evaluator/combiners/ifelseif.d.ts +1 -1
  158. package/types/evaluator/condition/engineUtils.d.ts +1 -1
  159. package/types/evaluator/condition/index.d.ts +1 -1
  160. package/types/evaluator/index.d.ts +4 -4
  161. package/types/evaluator/matchers/all.d.ts +1 -1
  162. package/types/evaluator/matchers/between.d.ts +1 -1
  163. package/types/evaluator/matchers/boolean.d.ts +1 -1
  164. package/types/evaluator/matchers/cont_all.d.ts +1 -1
  165. package/types/evaluator/matchers/cont_any.d.ts +1 -1
  166. package/types/evaluator/matchers/cont_str.d.ts +1 -1
  167. package/types/evaluator/matchers/dependency.d.ts +1 -1
  168. package/types/evaluator/matchers/eq.d.ts +1 -1
  169. package/types/evaluator/matchers/eq_set.d.ts +1 -1
  170. package/types/evaluator/matchers/ew.d.ts +1 -1
  171. package/types/evaluator/matchers/gte.d.ts +1 -1
  172. package/types/evaluator/matchers/index.d.ts +1 -1
  173. package/types/evaluator/matchers/lte.d.ts +1 -1
  174. package/types/evaluator/matchers/part_of.d.ts +1 -1
  175. package/types/evaluator/matchers/segment.d.ts +1 -1
  176. package/types/evaluator/matchers/string.d.ts +1 -1
  177. package/types/evaluator/matchers/sw.d.ts +1 -1
  178. package/types/evaluator/matchers/whitelist.d.ts +1 -1
  179. package/types/evaluator/parser/index.d.ts +1 -1
  180. package/types/evaluator/types.d.ts +6 -6
  181. package/types/evaluator/value/index.d.ts +3 -3
  182. package/types/evaluator/value/sanitize.d.ts +3 -3
  183. package/types/integrations/ga/GaToSplit.d.ts +4 -4
  184. package/types/integrations/ga/SplitToGa.d.ts +4 -4
  185. package/types/integrations/ga/types.d.ts +4 -4
  186. package/types/integrations/types.d.ts +2 -2
  187. package/types/logger/constants.d.ts +0 -1
  188. package/types/logger/index.d.ts +3 -5
  189. package/types/logger/sdkLogger.d.ts +1 -2
  190. package/types/logger/types.d.ts +0 -11
  191. package/types/readiness/sdkReadinessManager.d.ts +1 -1
  192. package/types/readiness/types.d.ts +2 -8
  193. package/types/sdkClient/client.d.ts +2 -2
  194. package/types/sdkClient/clientAttributesDecoration.d.ts +8 -8
  195. package/types/sdkClient/clientCS.d.ts +2 -3
  196. package/types/sdkClient/clientInputValidation.d.ts +2 -2
  197. package/types/sdkClient/sdkClient.d.ts +2 -2
  198. package/types/sdkClient/sdkClientMethod.d.ts +2 -2
  199. package/types/sdkClient/sdkClientMethodCS.d.ts +2 -2
  200. package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +2 -2
  201. package/types/sdkFactory/index.d.ts +2 -2
  202. package/types/sdkFactory/types.d.ts +8 -10
  203. package/types/sdkManager/index.d.ts +3 -3
  204. package/types/services/types.d.ts +0 -4
  205. package/types/storages/dataLoader.d.ts +2 -2
  206. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +1 -1
  207. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +1 -2
  208. package/types/storages/inLocalStorage/index.d.ts +2 -2
  209. package/types/storages/inMemory/EventsCacheInMemory.d.ts +3 -3
  210. package/types/storages/inMemory/InMemoryStorage.d.ts +1 -1
  211. package/types/storages/inMemory/InMemoryStorageCS.d.ts +1 -1
  212. package/types/storages/inRedis/EventsCacheInRedis.d.ts +3 -3
  213. package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +1 -1
  214. package/types/storages/inRedis/RedisAdapter.d.ts +1 -1
  215. package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +1 -1
  216. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +1 -1
  217. package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +1 -1
  218. package/types/storages/inRedis/index.d.ts +2 -2
  219. package/types/storages/pluggable/EventsCachePluggable.d.ts +3 -3
  220. package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +1 -1
  221. package/types/storages/pluggable/SegmentsCachePluggable.d.ts +1 -1
  222. package/types/storages/pluggable/SplitsCachePluggable.d.ts +1 -1
  223. package/types/storages/pluggable/TelemetryCachePluggable.d.ts +1 -1
  224. package/types/storages/pluggable/index.d.ts +3 -2
  225. package/types/storages/pluggable/wrapperAdapter.d.ts +1 -1
  226. package/types/storages/types.d.ts +46 -30
  227. package/types/sync/offline/LocalhostFromObject.d.ts +2 -2
  228. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +1 -1
  229. package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +1 -1
  230. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +1 -1
  231. package/types/sync/streaming/SSEHandler/index.d.ts +1 -1
  232. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -1
  233. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +1 -1
  234. package/types/sync/submitters/submitter.d.ts +1 -1
  235. package/types/sync/submitters/types.d.ts +3 -20
  236. package/types/sync/syncTask.d.ts +1 -1
  237. package/types/trackers/impressionsTracker.d.ts +6 -4
  238. package/types/trackers/types.d.ts +4 -25
  239. package/types/utils/constants/index.d.ts +1 -3
  240. package/types/utils/inputValidation/apiKey.d.ts +1 -1
  241. package/types/utils/inputValidation/attribute.d.ts +1 -1
  242. package/types/utils/inputValidation/attributes.d.ts +3 -3
  243. package/types/utils/inputValidation/event.d.ts +1 -1
  244. package/types/utils/inputValidation/eventProperties.d.ts +3 -3
  245. package/types/utils/inputValidation/eventValue.d.ts +1 -1
  246. package/types/utils/inputValidation/isOperational.d.ts +1 -1
  247. package/types/utils/inputValidation/key.d.ts +3 -3
  248. package/types/utils/inputValidation/preloadedData.d.ts +3 -3
  249. package/types/utils/inputValidation/split.d.ts +1 -1
  250. package/types/utils/inputValidation/splitExistance.d.ts +1 -1
  251. package/types/utils/inputValidation/splits.d.ts +1 -1
  252. package/types/utils/inputValidation/trafficType.d.ts +1 -1
  253. package/types/utils/inputValidation/trafficTypeExistance.d.ts +1 -1
  254. package/types/utils/key/index.d.ts +4 -4
  255. package/types/utils/settingsValidation/consent.d.ts +1 -2
  256. package/types/utils/settingsValidation/impressionsMode.d.ts +3 -3
  257. package/types/utils/settingsValidation/index.d.ts +0 -1
  258. package/types/utils/settingsValidation/integrations/common.d.ts +1 -1
  259. package/types/utils/settingsValidation/integrations/configurable.d.ts +1 -1
  260. package/types/utils/settingsValidation/integrations/pluggable.d.ts +1 -2
  261. package/types/utils/settingsValidation/localhost/builtin.d.ts +1 -2
  262. package/types/utils/settingsValidation/localhost/pluggable.d.ts +1 -2
  263. package/types/utils/settingsValidation/logger/builtinLogger.d.ts +1 -1
  264. package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +1 -1
  265. package/types/utils/settingsValidation/splitFilters.d.ts +1 -2
  266. package/types/utils/settingsValidation/storage/storageCS.d.ts +2 -3
  267. package/cjs/storages/inMemory/uniqueKeysCacheInMemory.js +0 -73
  268. package/cjs/storages/inMemory/uniqueKeysCacheInMemoryCS.js +0 -78
  269. package/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -26
  270. package/cjs/trackers/strategy/strategyDebug.js +0 -25
  271. package/cjs/trackers/strategy/strategyNone.js +0 -29
  272. package/cjs/trackers/strategy/strategyOptimized.js +0 -34
  273. package/cjs/trackers/uniqueKeysTracker.js +0 -31
  274. package/cjs/types.js +0 -2
  275. package/esm/storages/inMemory/uniqueKeysCacheInMemory.js +0 -70
  276. package/esm/storages/inMemory/uniqueKeysCacheInMemoryCS.js +0 -75
  277. package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -22
  278. package/esm/trackers/strategy/strategyDebug.js +0 -21
  279. package/esm/trackers/strategy/strategyNone.js +0 -25
  280. package/esm/trackers/strategy/strategyOptimized.js +0 -30
  281. package/esm/trackers/uniqueKeysTracker.js +0 -27
  282. package/esm/types.js +0 -1
  283. package/src/storages/inMemory/uniqueKeysCacheInMemory.ts +0 -83
  284. package/src/storages/inMemory/uniqueKeysCacheInMemoryCS.ts +0 -89
  285. package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -35
  286. package/src/trackers/strategy/strategyDebug.ts +0 -28
  287. package/src/trackers/strategy/strategyNone.ts +0 -34
  288. package/src/trackers/strategy/strategyOptimized.ts +0 -42
  289. package/src/trackers/uniqueKeysTracker.ts +0 -37
  290. package/src/types.ts +0 -1265
  291. package/types/sdkClient/types.d.ts +0 -18
  292. package/types/storages/inMemory/CountsCacheInMemory.d.ts +0 -20
  293. package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +0 -20
  294. package/types/storages/inMemory/uniqueKeysCacheInMemory.d.ts +0 -32
  295. package/types/storages/inMemory/uniqueKeysCacheInMemoryCS.d.ts +0 -37
  296. package/types/storages/inRedis/CountsCacheInRedis.d.ts +0 -9
  297. package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +0 -9
  298. package/types/sync/offline/LocalhostFromFile.d.ts +0 -2
  299. package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +0 -2
  300. package/types/sync/submitters/eventsSyncTask.d.ts +0 -8
  301. package/types/sync/submitters/impressionCountsSyncTask.d.ts +0 -13
  302. package/types/sync/submitters/impressionsSyncTask.d.ts +0 -14
  303. package/types/sync/submitters/metricsSyncTask.d.ts +0 -12
  304. package/types/sync/submitters/submitterSyncTask.d.ts +0 -10
  305. package/types/sync/submitters/uniqueKeysSubmitter.d.ts +0 -5
  306. package/types/sync/syncTaskComposite.d.ts +0 -5
  307. package/types/trackers/filter/bloomFilter.d.ts +0 -10
  308. package/types/trackers/filter/dictionaryFilter.d.ts +0 -8
  309. package/types/trackers/filter/types.d.ts +0 -5
  310. package/types/trackers/strategy/strategyDebug.d.ts +0 -9
  311. package/types/trackers/strategy/strategyNone.d.ts +0 -10
  312. package/types/trackers/strategy/strategyOptimized.d.ts +0 -11
  313. package/types/trackers/uniqueKeysTracker.d.ts +0 -13
  314. package/types/types.d.ts +0 -1263
  315. package/types/utils/timeTracker/index.d.ts +0 -70
@@ -1,5 +1,5 @@
1
1
  import { clientCSDecorator } from './clientCS';
2
- import { SplitIO } from '../types';
2
+ import { IClientSS, IClientWithKey, SplitKey } from '../types';
3
3
  import { validateKey } from '../utils/inputValidation/key';
4
4
  import { getMatching, keyParser } from '../utils/key';
5
5
  import { sdkClientFactory } from './sdkClient';
@@ -9,7 +9,7 @@ import { RETRIEVE_CLIENT_DEFAULT, NEW_SHARED_CLIENT, RETRIEVE_CLIENT_EXISTING }
9
9
  import { SDK_SEGMENTS_ARRIVED } from '../readiness/constants';
10
10
  import { ISdkFactoryContext } from '../sdkFactory/types';
11
11
 
12
- function buildInstanceId(key: SplitIO.SplitKey) {
12
+ function buildInstanceId(key: SplitKey) {
13
13
  // @ts-ignore
14
14
  return `${key.matchingKey ? key.matchingKey : key}-${key.bucketingKey ? key.bucketingKey : key}-`;
15
15
  }
@@ -20,23 +20,23 @@ const method = 'Client instantiation';
20
20
  * Factory of client method for the client-side API variant where TT is ignored and thus
21
21
  * clients don't have a binded TT for the track method.
22
22
  */
23
- export function sdkClientMethodCSFactory(params: ISdkFactoryContext): (key?: SplitIO.SplitKey) => SplitIO.ICsClient {
23
+ export function sdkClientMethodCSFactory(params: ISdkFactoryContext): (key?: SplitKey) => IClientWithKey {
24
24
  const { storage, syncManager, sdkReadinessManager, settings: { core: { key }, startup: { readyTimeout }, log } } = params;
25
25
 
26
26
  const mainClientInstance = clientCSDecorator(
27
27
  log,
28
- sdkClientFactory(params) as SplitIO.IClient,
29
- key
28
+ sdkClientFactory(params) as IClientSS,
29
+ key!
30
30
  );
31
31
 
32
- const parsedDefaultKey = keyParser(key);
32
+ const parsedDefaultKey = keyParser(key!);
33
33
  const defaultInstanceId = buildInstanceId(parsedDefaultKey);
34
34
 
35
35
  // Cache instances created per factory.
36
- const clientInstances: Record<string, SplitIO.ICsClient> = {};
36
+ const clientInstances: Record<string, IClientWithKey> = {};
37
37
  clientInstances[defaultInstanceId] = mainClientInstance;
38
38
 
39
- return function client(key?: SplitIO.SplitKey) {
39
+ return function client(key?: SplitKey) {
40
40
  if (key === undefined) {
41
41
  log.debug(RETRIEVE_CLIENT_DEFAULT);
42
42
  return mainClientInstance;
@@ -76,7 +76,7 @@ export function sdkClientMethodCSFactory(params: ISdkFactoryContext): (key?: Spl
76
76
  storage: sharedStorage || storage,
77
77
  syncManager: sharedSyncManager,
78
78
  signalListener: undefined, // only the main client "destroy" method stops the signal listener
79
- }), true) as SplitIO.IClient,
79
+ }), true) as IClientSS,
80
80
  validKey
81
81
  );
82
82
 
@@ -1,5 +1,5 @@
1
1
  import { clientCSDecorator } from './clientCS';
2
- import { SplitIO } from '../types';
2
+ import { IClientSS, IClientWithKeyLegacy, SplitKey } from '../types';
3
3
  import { validateKey } from '../utils/inputValidation/key';
4
4
  import { validateTrafficType } from '../utils/inputValidation/trafficType';
5
5
  import { getMatching, keyParser } from '../utils/key';
@@ -10,7 +10,7 @@ import { RETRIEVE_CLIENT_DEFAULT, NEW_SHARED_CLIENT, RETRIEVE_CLIENT_EXISTING }
10
10
  import { SDK_SEGMENTS_ARRIVED } from '../readiness/constants';
11
11
  import { ISdkFactoryContext } from '../sdkFactory/types';
12
12
 
13
- function buildInstanceId(key: SplitIO.SplitKey, trafficType?: string) {
13
+ function buildInstanceId(key: SplitKey, trafficType?: string) {
14
14
  // @ts-ignore
15
15
  return `${key.matchingKey ? key.matchingKey : key}-${key.bucketingKey ? key.bucketingKey : key}-${trafficType !== undefined ? trafficType : ''}`;
16
16
  }
@@ -22,24 +22,24 @@ const method = 'Client instantiation';
22
22
  * where clients can have a binded TT for the track method, which is provided via the settings
23
23
  * (default client) or the client method (shared clients).
24
24
  */
25
- export function sdkClientMethodCSFactory(params: ISdkFactoryContext): (key?: SplitIO.SplitKey, trafficType?: string) => SplitIO.ICsClient {
25
+ export function sdkClientMethodCSFactory(params: ISdkFactoryContext): (key?: SplitKey, trafficType?: string) => IClientWithKeyLegacy {
26
26
  const { storage, syncManager, sdkReadinessManager, settings: { core: { key, trafficType }, startup: { readyTimeout }, log } } = params;
27
27
 
28
28
  const mainClientInstance = clientCSDecorator(
29
29
  log,
30
- sdkClientFactory(params) as SplitIO.IClient,
31
- key,
30
+ sdkClientFactory(params) as IClientSS,
31
+ key!,
32
32
  trafficType
33
33
  );
34
34
 
35
- const parsedDefaultKey = keyParser(key);
35
+ const parsedDefaultKey = keyParser(key!);
36
36
  const defaultInstanceId = buildInstanceId(parsedDefaultKey, trafficType);
37
37
 
38
38
  // Cache instances created per factory.
39
- const clientInstances: Record<string, SplitIO.ICsClient> = {};
39
+ const clientInstances: Record<string, IClientWithKeyLegacy> = {};
40
40
  clientInstances[defaultInstanceId] = mainClientInstance;
41
41
 
42
- return function client(key?: SplitIO.SplitKey, trafficType?: string) {
42
+ return function client(key?: SplitKey, trafficType?: string) {
43
43
  if (key === undefined) {
44
44
  log.debug(RETRIEVE_CLIENT_DEFAULT);
45
45
  return mainClientInstance;
@@ -86,7 +86,7 @@ export function sdkClientMethodCSFactory(params: ISdkFactoryContext): (key?: Spl
86
86
  storage: sharedStorage || storage,
87
87
  syncManager: sharedSyncManager,
88
88
  signalListener: undefined, // only the main client "destroy" method stops the signal listener
89
- }), true) as SplitIO.IClient,
89
+ }), true) as IClientSS,
90
90
  validKey,
91
91
  validTrafficType
92
92
  );
@@ -4,7 +4,7 @@ import { impressionsTrackerFactory } from '../trackers/impressionsTracker';
4
4
  import { eventTrackerFactory } from '../trackers/eventTracker';
5
5
  import { telemetryTrackerFactory } from '../trackers/telemetryTracker';
6
6
  import { IStorageFactoryParams } from '../storages/types';
7
- import { SplitIO } from '../types';
7
+ import { IBasicSDK } from '../types';
8
8
  import { getMatching } from '../utils/key';
9
9
  import { shouldBeOptimized } from '../trackers/impressionObserver/utils';
10
10
  import { validateAndTrackApiKey } from '../utils/inputValidation/apiKey';
@@ -13,21 +13,15 @@ import { NEW_FACTORY, RETRIEVE_MANAGER } from '../logger/constants';
13
13
  import { metadataBuilder } from '../storages/metadataBuilder';
14
14
  import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED } from '../readiness/constants';
15
15
  import { objectAssign } from '../utils/lang/objectAssign';
16
- import { strategyDebugFactory } from '../trackers/strategy/strategyDebug';
17
- import { strategyOptimizedFactory } from '../trackers/strategy/strategyOptimized';
18
- import { strategyNoneFactory } from '../trackers/strategy/strategyNone';
19
- import { uniqueKeysTrackerFactory } from '../trackers/uniqueKeysTracker';
20
- import { NONE } from '../utils/constants';
21
16
 
22
17
  /**
23
18
  * Modular SDK factory
24
19
  */
25
- export function sdkFactory(params: ISdkFactoryParams): SplitIO.ICsSDK | SplitIO.ISDK | SplitIO.IAsyncSDK {
20
+ export function sdkFactory(params: ISdkFactoryParams): IBasicSDK<any, any> {
26
21
 
27
22
  const { settings, platform, storageFactory, splitApiFactory, extraProps,
28
23
  syncManagerFactory, SignalListener, impressionsObserverFactory,
29
- integrationsManagerFactory, sdkManagerFactory, sdkClientMethodFactory,
30
- filterAdapterFactory } = params;
24
+ integrationsManagerFactory, sdkManagerFactory, sdkClientMethodFactory } = params;
31
25
  const log = settings.log;
32
26
 
33
27
  // @TODO handle non-recoverable errors, such as, global `fetch` not available, invalid API Key, etc.
@@ -43,16 +37,15 @@ export function sdkFactory(params: ISdkFactoryParams): SplitIO.ICsSDK | SplitIO.
43
37
  const storageFactoryParams: IStorageFactoryParams = {
44
38
  impressionsQueueSize: settings.scheduler.impressionsQueueSize,
45
39
  eventsQueueSize: settings.scheduler.eventsQueueSize,
46
- uniqueKeysCacheSize: settings.scheduler.uniqueKeysCacheSize,
47
40
  optimize: shouldBeOptimized(settings),
48
41
 
49
42
  // ATM, only used by InLocalStorage
50
43
  matchingKey: getMatching(settings.core.key),
44
+ // @ts-ignore
51
45
  splitFiltersValidation: settings.sync.__splitFiltersValidation,
52
46
 
53
47
  // ATM, only used by PluggableStorage
54
48
  mode: settings.mode,
55
- impressionsMode: settings.sync.impressionsMode,
56
49
 
57
50
  // Callback used to emit SDK_READY in consumer mode, where `syncManagerFactory` is undefined,
58
51
  // or partial consumer mode, where it only has submitters, and therefore it doesn't emit readiness events.
@@ -70,19 +63,16 @@ export function sdkFactory(params: ISdkFactoryParams): SplitIO.ICsSDK | SplitIO.
70
63
 
71
64
  const integrationsManager = integrationsManagerFactory && integrationsManagerFactory({ settings, storage });
72
65
 
73
- const observer = impressionsObserverFactory();
74
- const uniqueKeysTracker = storageFactoryParams.impressionsMode === NONE ? uniqueKeysTrackerFactory(log, storage.uniqueKeys!, filterAdapterFactory && filterAdapterFactory()) : undefined;
75
- const strategy = (storageFactoryParams.optimize) ? strategyOptimizedFactory(observer, storage.impressionCounts!) :
76
- (storageFactoryParams.impressionsMode === NONE) ? strategyNoneFactory(storage.impressionCounts!, uniqueKeysTracker!) : strategyDebugFactory(observer);
77
-
78
- const impressionsTracker = impressionsTrackerFactory(settings, storage.impressions, strategy, integrationsManager, storage.telemetry);
66
+ // trackers
67
+ const observer = impressionsObserverFactory && impressionsObserverFactory();
68
+ const impressionsTracker = impressionsTrackerFactory(settings, storage.impressions, integrationsManager, observer, storage.impressionCounts, storage.telemetry);
79
69
  const eventTracker = eventTrackerFactory(settings, storage.events, integrationsManager, storage.telemetry);
80
70
  const telemetryTracker = telemetryTrackerFactory(storage.telemetry, platform.now);
81
71
 
82
72
  // splitApi is used by SyncManager and Browser signal listener
83
73
  const splitApi = splitApiFactory && splitApiFactory(settings, platform, telemetryTracker);
84
74
 
85
- const ctx: ISdkFactoryContext = { splitApi, eventTracker, impressionsTracker, telemetryTracker, uniqueKeysTracker, sdkReadinessManager, readiness, settings, storage, platform };
75
+ const ctx: ISdkFactoryContext = { splitApi, eventTracker, impressionsTracker, telemetryTracker, sdkReadinessManager, readiness, settings, storage, platform };
86
76
 
87
77
  const syncManager = syncManagerFactory && syncManagerFactory(ctx as ISdkFactoryContextSync);
88
78
  ctx.syncManager = syncManager;
@@ -1,13 +1,13 @@
1
1
  import { IIntegrationManager, IIntegrationFactoryParams } from '../integrations/types';
2
2
  import { ISignalListener } from '../listeners/types';
3
- import { ILogger } from '../logger/types';
3
+ import { IAsyncClientSS, IAsyncManager, IClientSS, IClientWithKey, ILogger, IManager, SplitKey } from '../types';
4
4
  import { IReadinessManager, ISdkReadinessManager } from '../readiness/types';
5
5
  import { IFetch, ISplitApi, IEventSourceConstructor } from '../services/types';
6
6
  import { IStorageAsync, IStorageSync, ISplitsCacheSync, ISplitsCacheAsync, IStorageFactoryParams } from '../storages/types';
7
7
  import { ISyncManager } from '../sync/types';
8
8
  import { IImpressionObserver } from '../trackers/impressionObserver/types';
9
- import { IImpressionsTracker, IEventTracker, ITelemetryTracker, IFilterAdapter, IUniqueKeysTracker } from '../trackers/types';
10
- import { SplitIO, ISettings, IEventEmitter } from '../types';
9
+ import { IImpressionsTracker, IEventTracker, ITelemetryTracker } from '../trackers/types';
10
+ import { ISettings, IEventEmitter } from '../types';
11
11
 
12
12
  /**
13
13
  * Environment related dependencies.
@@ -44,7 +44,6 @@ export interface ISdkFactoryContext {
44
44
  eventTracker: IEventTracker,
45
45
  telemetryTracker: ITelemetryTracker,
46
46
  storage: IStorageSync | IStorageAsync,
47
- uniqueKeysTracker?: IUniqueKeysTracker,
48
47
  signalListener?: ISignalListener
49
48
  splitApi?: ISplitApi
50
49
  syncManager?: ISyncManager,
@@ -91,16 +90,11 @@ export interface ISdkFactoryParams {
91
90
  log: ILogger,
92
91
  splits: ISplitsCacheSync | ISplitsCacheAsync,
93
92
  sdkReadinessManager: ISdkReadinessManager
94
- ) => SplitIO.IManager | SplitIO.IAsyncManager,
93
+ ) => IManager | IAsyncManager,
95
94
 
96
95
  // Sdk client method factory (ISDK::client method).
97
96
  // It Allows to distinguish SDK clients with the client-side API (`ICsSDK`) or server-side API (`ISDK` or `IAsyncSDK`).
98
- sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ (): SplitIO.ICsClient; (key: SplitIO.SplitKey, trafficType?: string | undefined): SplitIO.ICsClient; } | (() => SplitIO.IClient) | (() => SplitIO.IAsyncClient))
99
-
100
- // Impression observer factory. If provided, will be used for impressions dedupe
101
- impressionsObserverFactory: () => IImpressionObserver
102
-
103
- filterAdapterFactory?: () => IFilterAdapter
97
+ sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ (): IClientWithKey; (key: SplitKey, trafficType?: string | undefined): IClientWithKey; } | (() => IClientSS) | (() => IAsyncClientSS))
104
98
 
105
99
  // Optional signal listener constructor. Used to handle special app states, like shutdown, app paused or resumed.
106
100
  // Pass only if `syncManager` (used by Node listener) and `splitApi` (used by Browser listener) are passed.
@@ -113,6 +107,9 @@ export interface ISdkFactoryParams {
113
107
  // @TODO review impressionListener and integrations interfaces. What about handling impressionListener as an integration ?
114
108
  integrationsManagerFactory?: (params: IIntegrationFactoryParams) => IIntegrationManager | undefined,
115
109
 
110
+ // Impression observer factory. If provided, will be used for impressions dedupe
111
+ impressionsObserverFactory?: () => IImpressionObserver
112
+
116
113
  // Optional function to assign additional properties to the factory instance
117
114
  extraProps?: (params: ISdkFactoryContext) => object
118
115
  }
@@ -5,8 +5,8 @@ import { validateSplit, validateSplitExistance, validateIfNotDestroyed, validate
5
5
  import { ISplitsCacheAsync, ISplitsCacheSync } from '../storages/types';
6
6
  import { ISdkReadinessManager } from '../readiness/types';
7
7
  import { ISplit } from '../dtos/types';
8
- import { SplitIO } from '../types';
9
- import { ILogger } from '../logger/types';
8
+ import { IAsyncManager, IManager, SplitView } from '../types';
9
+ import { ILogger } from '../types';
10
10
 
11
11
  function collectTreatments(splitObject: ISplit) {
12
12
  const conditions = splitObject.conditions;
@@ -18,7 +18,7 @@ function collectTreatments(splitObject: ISplit) {
18
18
  return allTreatmentsCondition ? allTreatmentsCondition.partitions.map(v => v.treatment) : [];
19
19
  }
20
20
 
21
- function objectToView(json: string | null): SplitIO.SplitView | null {
21
+ function objectToView(json: string | null): SplitView | null {
22
22
  let splitObject: ISplit | null;
23
23
 
24
24
  try {
@@ -41,7 +41,7 @@ function objectToView(json: string | null): SplitIO.SplitView | null {
41
41
  }
42
42
 
43
43
  function objectsToViews(jsons: string[]) {
44
- let views: SplitIO.SplitView[] = [];
44
+ let views: SplitView[] = [];
45
45
 
46
46
  jsons.forEach(split => {
47
47
  const view = objectToView(split);
@@ -55,7 +55,7 @@ export function sdkManagerFactory<TSplitCache extends ISplitsCacheSync | ISplits
55
55
  log: ILogger,
56
56
  splits: TSplitCache,
57
57
  { readinessManager, sdkStatus }: ISdkReadinessManager
58
- ): TSplitCache extends ISplitsCacheAsync ? SplitIO.IAsyncManager : SplitIO.IManager {
58
+ ): TSplitCache extends ISplitsCacheAsync ? IAsyncManager : IManager {
59
59
  const SPLIT_FN_LABEL = 'split';
60
60
 
61
61
  return objectAssign(
@@ -25,6 +25,7 @@ export function splitApiFactory(
25
25
  ): ISplitApi {
26
26
 
27
27
  const urls = settings.urls;
28
+ // @ts-ignore
28
29
  const filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString;
29
30
  const SplitSDKImpressionsMode = settings.sync.impressionsMode;
30
31
  const splitHttpClient = splitHttpClientFactory(settings, platform.getFetch, platform.getOptions);
@@ -106,28 +107,6 @@ export function splitApiFactory(
106
107
  const url = `${urls.events}/testImpressions/count`;
107
108
  return splitHttpClient(url, { method: 'POST', body, headers }, telemetryTracker.trackHttp(IMPRESSIONS_COUNT));
108
109
  },
109
-
110
- /**
111
- * Post unique keys for client side.
112
- *
113
- * @param body unique keys payload
114
- * @param headers Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
115
- */
116
- postUniqueKeysBulkCs(body: string, headers?: Record<string, string>) {
117
- const url = `${urls.telemetry}/v1/keys/cs`;
118
- return splitHttpClient(url, { method: 'POST', body, headers }, telemetryTracker.trackHttp(TELEMETRY));
119
- },
120
-
121
- /**
122
- * Post unique keys for server side.
123
- *
124
- * @param body unique keys payload
125
- * @param headers Optionals headers to overwrite default ones. For example, it is used in producer mode to overwrite metadata headers.
126
- */
127
- postUniqueKeysBulkSs(body: string, headers?: Record<string, string>) {
128
- const url = `${urls.telemetry}/v1/keys/ss`;
129
- return splitHttpClient(url, { method: 'POST', body, headers }, telemetryTracker.trackHttp(TELEMETRY));
130
- },
131
110
 
132
111
  postMetricsConfig(body: string) {
133
112
  const url = `${urls.telemetry}/v1/metrics/config`;
@@ -43,10 +43,6 @@ export type IFetchMySegments = (userMatchingKey: string, noCache?: boolean) => P
43
43
 
44
44
  export type IPostEventsBulk = (body: string, headers?: Record<string, string>) => Promise<IResponse>
45
45
 
46
- export type IPostUniqueKeysBulkCs = (body: string, headers?: Record<string, string>) => Promise<IResponse>
47
-
48
- export type IPostUniqueKeysBulkSs = (body: string, headers?: Record<string, string>) => Promise<IResponse>
49
-
50
46
  export type IPostTestImpressionsBulk = (body: string, headers?: Record<string, string>) => Promise<IResponse>
51
47
 
52
48
  export type IPostTestImpressionsCount = (body: string, headers?: Record<string, string>) => Promise<IResponse>
@@ -63,8 +59,6 @@ export interface ISplitApi {
63
59
  fetchSegmentChanges: IFetchSegmentChanges
64
60
  fetchMySegments: IFetchMySegments
65
61
  postEventsBulk: IPostEventsBulk
66
- postUniqueKeysBulkCs: IPostUniqueKeysBulkCs
67
- postUniqueKeysBulkSs: IPostUniqueKeysBulkSs
68
62
  postTestImpressionsBulk: IPostTestImpressionsBulk
69
63
  postTestImpressionsCount: IPostTestImpressionsCount
70
64
  postMetricsConfig: IPostMetricsConfig
@@ -1,4 +1,4 @@
1
- import { SplitIO } from '../types';
1
+ import { PreloadedData } from './types';
2
2
  import { DEFAULT_CACHE_EXPIRATION_IN_MILLIS } from '../utils/constants/browser';
3
3
  import { DataLoader, ISegmentsCacheSync, ISplitsCacheSync } from './types';
4
4
 
@@ -9,7 +9,7 @@ import { DataLoader, ISegmentsCacheSync, ISplitsCacheSync } from './types';
9
9
  * and extended with a `mySegmentsData` property.
10
10
  * @returns function to preload the storage
11
11
  */
12
- export function dataLoaderFactory(preloadedData: SplitIO.PreloadedData): DataLoader {
12
+ export function dataLoaderFactory(preloadedData: PreloadedData): DataLoader {
13
13
 
14
14
  /**
15
15
  * Storage-agnostic adaptation of `loadDataIntoLocalStorage` function
@@ -1,4 +1,4 @@
1
- import { ILogger } from '../../logger/types';
1
+ import { ILogger } from '../../types';
2
2
  import { AbstractSegmentsCacheSync } from '../AbstractSegmentsCacheSync';
3
3
  import { KeyBuilderCS } from '../KeyBuilderCS';
4
4
  import { LOG_PREFIX, DEFINED } from './constants';
@@ -1,8 +1,8 @@
1
- import { ISplit, ISplitFiltersValidation } from '../../dtos/types';
1
+ import { ISplit } from '../../dtos/types';
2
2
  import { AbstractSplitsCacheSync, usesSegments } from '../AbstractSplitsCacheSync';
3
3
  import { isFiniteNumber, toNumber, isNaNNumber } from '../../utils/lang';
4
4
  import { KeyBuilderCS } from '../KeyBuilderCS';
5
- import { ILogger } from '../../logger/types';
5
+ import { ILogger, ISplitFiltersValidation } from '../../types';
6
6
  import { LOG_PREFIX } from './constants';
7
7
 
8
8
  /**
@@ -1,7 +1,8 @@
1
1
  import { ImpressionsCacheInMemory } from '../inMemory/ImpressionsCacheInMemory';
2
2
  import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
3
3
  import { EventsCacheInMemory } from '../inMemory/EventsCacheInMemory';
4
- import { IStorageFactoryParams, IStorageSync, IStorageSyncFactory } from '../types';
4
+ import { IStorageFactoryParams, IStorageSync } from '../types';
5
+ import { StorageSyncFactory } from '../../types';
5
6
  import { validatePrefix } from '../KeyBuilder';
6
7
  import { KeyBuilderCS } from '../KeyBuilderCS';
7
8
  import { isLocalStorageAvailable } from '../../utils/env/isLocalStorageAvailable';
@@ -12,9 +13,8 @@ import { SplitsCacheInMemory } from '../inMemory/SplitsCacheInMemory';
12
13
  import { DEFAULT_CACHE_EXPIRATION_IN_MILLIS } from '../../utils/constants/browser';
13
14
  import { InMemoryStorageCSFactory } from '../inMemory/InMemoryStorageCS';
14
15
  import { LOG_PREFIX } from './constants';
15
- import { LOCALHOST_MODE, NONE, STORAGE_LOCALSTORAGE } from '../../utils/constants';
16
+ import { LOCALHOST_MODE, STORAGE_LOCALSTORAGE } from '../../utils/constants';
16
17
  import { shouldRecordTelemetry, TelemetryCacheInMemory } from '../inMemory/TelemetryCacheInMemory';
17
- import { UniqueKeysCacheInMemoryCS } from '../inMemory/uniqueKeysCacheInMemoryCS';
18
18
 
19
19
  export interface InLocalStorageOptions {
20
20
  prefix?: string
@@ -23,7 +23,7 @@ export interface InLocalStorageOptions {
23
23
  /**
24
24
  * InLocal storage factory for standalone client-side SplitFactory
25
25
  */
26
- export function InLocalStorage(options: InLocalStorageOptions = {}): IStorageSyncFactory {
26
+ export function InLocalStorage(options: InLocalStorageOptions = {}): StorageSyncFactory {
27
27
 
28
28
  const prefix = validatePrefix(options.prefix);
29
29
 
@@ -46,7 +46,6 @@ export function InLocalStorage(options: InLocalStorageOptions = {}): IStorageSyn
46
46
  impressionCounts: params.optimize ? new ImpressionCountsCacheInMemory() : undefined,
47
47
  events: new EventsCacheInMemory(params.eventsQueueSize),
48
48
  telemetry: params.mode !== LOCALHOST_MODE && shouldRecordTelemetry() ? new TelemetryCacheInMemory() : undefined,
49
- uniqueKeys: params.impressionsMode === NONE ? new UniqueKeysCacheInMemoryCS() : undefined,
50
49
 
51
50
  destroy() {
52
51
  this.splits = new SplitsCacheInMemory();
@@ -54,7 +53,6 @@ export function InLocalStorage(options: InLocalStorageOptions = {}): IStorageSyn
54
53
  this.impressions.clear();
55
54
  this.impressionCounts && this.impressionCounts.clear();
56
55
  this.events.clear();
57
- this.uniqueKeys?.clear();
58
56
  },
59
57
 
60
58
  // When using shared instanciation with MEMORY we reuse everything but segments (they are customer per key).
@@ -1,4 +1,4 @@
1
- import { SplitIO } from '../../types';
1
+ import { EventData } from '../../types';
2
2
  import { IEventsCacheSync } from '../types';
3
3
 
4
4
  const MAX_QUEUE_BYTE_SIZE = 5 * 1024 * 1024; // 5M
@@ -7,7 +7,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
7
7
 
8
8
  private onFullQueue?: () => void;
9
9
  private readonly maxQueue: number;
10
- private queue: SplitIO.EventData[];
10
+ private queue: EventData[];
11
11
  private queueByteSize: number;
12
12
 
13
13
  /**
@@ -28,7 +28,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
28
28
  /**
29
29
  * Add a new event object at the end of the queue.
30
30
  */
31
- track(data: SplitIO.EventData, size = 0) {
31
+ track(data: EventData, size = 0) {
32
32
  this.queueByteSize += size;
33
33
  this.queue.push(data);
34
34
 
@@ -48,7 +48,7 @@ export class EventsCacheInMemory implements IEventsCacheSync {
48
48
  /**
49
49
  * Pop the collected data, used as payload for posting.
50
50
  */
51
- pop(toMerge?: SplitIO.EventData[]) {
51
+ pop(toMerge?: EventData[]) {
52
52
  const data = this.queue;
53
53
  this.clear();
54
54
  return toMerge ? toMerge.concat(data) : data;
@@ -4,9 +4,8 @@ import { ImpressionsCacheInMemory } from './ImpressionsCacheInMemory';
4
4
  import { EventsCacheInMemory } from './EventsCacheInMemory';
5
5
  import { IStorageFactoryParams, IStorageSync } from '../types';
6
6
  import { ImpressionCountsCacheInMemory } from './ImpressionCountsCacheInMemory';
7
- import { DEBUG, LOCALHOST_MODE, NONE, STORAGE_MEMORY } from '../../utils/constants';
7
+ import { LOCALHOST_MODE, STORAGE_MEMORY } from '../../utils/constants';
8
8
  import { TelemetryCacheInMemory } from './TelemetryCacheInMemory';
9
- import { UniqueKeysCacheInMemory } from './uniqueKeysCacheInMemory';
10
9
 
11
10
  /**
12
11
  * InMemory storage factory for standalone server-side SplitFactory
@@ -19,10 +18,9 @@ export function InMemoryStorageFactory(params: IStorageFactoryParams): IStorageS
19
18
  splits: new SplitsCacheInMemory(),
20
19
  segments: new SegmentsCacheInMemory(),
21
20
  impressions: new ImpressionsCacheInMemory(params.impressionsQueueSize),
22
- impressionCounts: params.impressionsMode !== DEBUG ? new ImpressionCountsCacheInMemory() : undefined,
21
+ impressionCounts: params.optimize ? new ImpressionCountsCacheInMemory() : undefined,
23
22
  events: new EventsCacheInMemory(params.eventsQueueSize),
24
23
  telemetry: params.mode !== LOCALHOST_MODE ? new TelemetryCacheInMemory() : undefined, // Always track telemetry in standalone mode on server-side
25
- uniqueKeys: params.impressionsMode === NONE ? new UniqueKeysCacheInMemory(params.uniqueKeysCacheSize) : undefined,
26
24
 
27
25
  // When using MEMORY we should clean all the caches to leave them empty
28
26
  destroy() {
@@ -31,7 +29,6 @@ export function InMemoryStorageFactory(params: IStorageFactoryParams): IStorageS
31
29
  this.impressions.clear();
32
30
  this.impressionCounts && this.impressionCounts.clear();
33
31
  this.events.clear();
34
- this.uniqueKeys?.clear();
35
32
  }
36
33
  };
37
34
  }
@@ -4,9 +4,8 @@ import { ImpressionsCacheInMemory } from './ImpressionsCacheInMemory';
4
4
  import { EventsCacheInMemory } from './EventsCacheInMemory';
5
5
  import { IStorageSync, IStorageFactoryParams } from '../types';
6
6
  import { ImpressionCountsCacheInMemory } from './ImpressionCountsCacheInMemory';
7
- import { DEBUG, LOCALHOST_MODE, NONE, STORAGE_MEMORY } from '../../utils/constants';
7
+ import { LOCALHOST_MODE, STORAGE_MEMORY } from '../../utils/constants';
8
8
  import { shouldRecordTelemetry, TelemetryCacheInMemory } from './TelemetryCacheInMemory';
9
- import { UniqueKeysCacheInMemoryCS } from './uniqueKeysCacheInMemoryCS';
10
9
 
11
10
  /**
12
11
  * InMemory storage factory for standalone client-side SplitFactory
@@ -19,11 +18,9 @@ export function InMemoryStorageCSFactory(params: IStorageFactoryParams): IStorag
19
18
  splits: new SplitsCacheInMemory(),
20
19
  segments: new MySegmentsCacheInMemory(),
21
20
  impressions: new ImpressionsCacheInMemory(params.impressionsQueueSize),
22
- impressionCounts: params.impressionsMode !== DEBUG ? new ImpressionCountsCacheInMemory() : undefined,
21
+ impressionCounts: params.optimize ? new ImpressionCountsCacheInMemory() : undefined,
23
22
  events: new EventsCacheInMemory(params.eventsQueueSize),
24
23
  telemetry: params.mode !== LOCALHOST_MODE && shouldRecordTelemetry() ? new TelemetryCacheInMemory() : undefined,
25
- uniqueKeys: params.impressionsMode === NONE ? new UniqueKeysCacheInMemoryCS(params.uniqueKeysCacheSize) : undefined,
26
-
27
24
 
28
25
  // When using MEMORY we should clean all the caches to leave them empty
29
26
  destroy() {
@@ -32,7 +29,6 @@ export function InMemoryStorageCSFactory(params: IStorageFactoryParams): IStorag
32
29
  this.impressions.clear();
33
30
  this.impressionCounts && this.impressionCounts.clear();
34
31
  this.events.clear();
35
- this.uniqueKeys?.clear();
36
32
  },
37
33
 
38
34
  // When using shared instanciation with MEMORY we reuse everything but segments (they are unique per key)
@@ -1,8 +1,8 @@
1
1
  import { IEventsCacheAsync } from '../types';
2
2
  import { IMetadata } from '../../dtos/types';
3
3
  import { Redis } from 'ioredis';
4
- import { SplitIO } from '../../types';
5
- import { ILogger } from '../../logger/types';
4
+ import { EventData } from '../../types';
5
+ import { ILogger } from '../../types';
6
6
  import { LOG_PREFIX } from './constants';
7
7
  import { StoredEventWithMetadata } from '../../sync/submitters/types';
8
8
 
@@ -24,7 +24,7 @@ export class EventsCacheInRedis implements IEventsCacheAsync {
24
24
  * Add a new event object into the queue.
25
25
  * Unlike `impressions::track`, result promise is never rejected.
26
26
  */
27
- track(eventData: SplitIO.EventData): Promise<boolean> {
27
+ track(eventData: EventData): Promise<boolean> {
28
28
  return this.redis.rpush(
29
29
  this.key,
30
30
  this._toJSON(eventData)
@@ -40,7 +40,7 @@ export class EventsCacheInRedis implements IEventsCacheAsync {
40
40
  /**
41
41
  * Generates the JSON as we'll store it on Redis.
42
42
  */
43
- private _toJSON(eventData: SplitIO.EventData): string {
43
+ private _toJSON(eventData: EventData): string {
44
44
  return JSON.stringify({
45
45
  m: this.metadata,
46
46
  e: eventData
@@ -3,7 +3,7 @@ import { IMetadata } from '../../dtos/types';
3
3
  import { ImpressionDTO } from '../../types';
4
4
  import { Redis } from 'ioredis';
5
5
  import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
6
- import { ILogger } from '../../logger/types';
6
+ import { ILogger } from '../../types';
7
7
 
8
8
  const IMPRESSIONS_TTL_REFRESH = 3600; // 1 hr
9
9
 
@@ -1,5 +1,5 @@
1
1
  import ioredis from 'ioredis';
2
- import { ILogger } from '../../logger/types';
2
+ import { ILogger } from '../../types';
3
3
  import { merge, isString } from '../../utils/lang';
4
4
  import { _Set, setToArray, ISet } from '../../utils/lang/sets';
5
5
  import { thenable } from '../../utils/promise/thenable';
@@ -1,5 +1,5 @@
1
1
  import { Redis } from 'ioredis';
2
- import { ILogger } from '../../logger/types';
2
+ import { ILogger } from '../../types';
3
3
  import { isNaNNumber } from '../../utils/lang';
4
4
  import { LOG_PREFIX } from '../inLocalStorage/constants';
5
5
  import { KeyBuilderSS } from '../KeyBuilderSS';
@@ -1,7 +1,7 @@
1
1
  import { isFiniteNumber, isNaNNumber } from '../../utils/lang';
2
2
  import { KeyBuilderSS } from '../KeyBuilderSS';
3
3
  import { Redis } from 'ioredis';
4
- import { ILogger } from '../../logger/types';
4
+ import { ILogger } from '../../types';
5
5
  import { LOG_PREFIX } from './constants';
6
6
  import { ISplit } from '../../dtos/types';
7
7
  import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
@@ -1,4 +1,4 @@
1
- import { ILogger } from '../../logger/types';
1
+ import { ILogger } from '../../types';
2
2
  import { Method } from '../../sync/submitters/types';
3
3
  import { KeyBuilderSS } from '../KeyBuilderSS';
4
4
  import { ITelemetryCacheAsync } from '../types';
@@ -1,5 +1,6 @@
1
1
  import { RedisAdapter } from './RedisAdapter';
2
- import { IStorageAsync, IStorageAsyncFactory, IStorageFactoryParams } from '../types';
2
+ import { IStorageAsync, IStorageFactoryParams } from '../types';
3
+ import { StorageAsyncFactory } from '../../types';
3
4
  import { validatePrefix } from '../KeyBuilder';
4
5
  import { KeyBuilderSS } from '../KeyBuilderSS';
5
6
  import { SplitsCacheInRedis } from './SplitsCacheInRedis';
@@ -18,7 +19,7 @@ export interface InRedisStorageOptions {
18
19
  * InRedis storage factory for consumer server-side SplitFactory, that uses `Ioredis` Redis client for Node.
19
20
  * @see {@link https://www.npmjs.com/package/ioredis}
20
21
  */
21
- export function InRedisStorage(options: InRedisStorageOptions = {}): IStorageAsyncFactory {
22
+ export function InRedisStorage(options: InRedisStorageOptions = {}): StorageAsyncFactory {
22
23
 
23
24
  const prefix = validatePrefix(options.prefix);
24
25
 
@@ -1,7 +1,7 @@
1
1
  import { IPluggableStorageWrapper, IEventsCacheAsync } from '../types';
2
2
  import { IMetadata } from '../../dtos/types';
3
- import { SplitIO } from '../../types';
4
- import { ILogger } from '../../logger/types';
3
+ import { EventData } from '../../types';
4
+ import { ILogger } from '../../types';
5
5
  import { LOG_PREFIX } from './constants';
6
6
  import { StoredEventWithMetadata } from '../../sync/submitters/types';
7
7
 
@@ -25,7 +25,7 @@ export class EventsCachePluggable implements IEventsCacheAsync {
25
25
  * @returns A promise that is resolved with a boolean value indicating if the push operation succeeded or failed.
26
26
  * Unlike `impressions::track`, The promise will never be rejected.
27
27
  */
28
- track(eventData: SplitIO.EventData): Promise<boolean> {
28
+ track(eventData: EventData): Promise<boolean> {
29
29
  return this.wrapper.pushItems(
30
30
  this.key,
31
31
  [this._toJSON(eventData)]
@@ -38,7 +38,7 @@ export class EventsCachePluggable implements IEventsCacheAsync {
38
38
  });
39
39
  }
40
40
 
41
- private _toJSON(eventData: SplitIO.EventData): string {
41
+ private _toJSON(eventData: EventData): string {
42
42
  return JSON.stringify({
43
43
  m: this.metadata,
44
44
  e: eventData
@@ -1,7 +1,7 @@
1
1
  import { IPluggableStorageWrapper, IImpressionsCacheAsync } from '../types';
2
2
  import { IMetadata } from '../../dtos/types';
3
3
  import { ImpressionDTO } from '../../types';
4
- import { ILogger } from '../../logger/types';
4
+ import { ILogger } from '../../types';
5
5
  import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
6
6
 
7
7
  export class ImpressionsCachePluggable implements IImpressionsCacheAsync {