@splitsoftware/splitio-commons 1.6.2-rc.1 → 1.6.2-rc.4

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 (433) hide show
  1. package/cjs/listeners/browser.js +1 -2
  2. package/cjs/logger/constants.js +1 -2
  3. package/cjs/sdkClient/clientAttributesDecoration.js +1 -1
  4. package/cjs/sdkFactory/index.js +6 -13
  5. package/cjs/services/splitApi.js +1 -20
  6. package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
  7. package/cjs/sync/submitters/submitterManager.js +0 -3
  8. package/cjs/trackers/impressionsTracker.js +28 -7
  9. package/cjs/utils/constants/index.js +2 -3
  10. package/cjs/utils/key/index.js +1 -1
  11. package/cjs/utils/settingsValidation/impressionsMode.js +2 -2
  12. package/cjs/utils/settingsValidation/index.js +1 -3
  13. package/esm/listeners/browser.js +2 -3
  14. package/esm/logger/constants.js +0 -1
  15. package/esm/sdkClient/clientAttributesDecoration.js +1 -1
  16. package/esm/sdkFactory/index.js +6 -13
  17. package/esm/services/splitApi.js +1 -20
  18. package/esm/storages/inMemory/AttributesCacheInMemory.js +1 -1
  19. package/esm/sync/submitters/submitterManager.js +0 -3
  20. package/esm/trackers/impressionsTracker.js +28 -7
  21. package/esm/utils/constants/index.js +0 -1
  22. package/esm/utils/key/index.js +1 -1
  23. package/esm/utils/settingsValidation/impressionsMode.js +3 -3
  24. package/esm/utils/settingsValidation/index.js +1 -3
  25. package/package.json +4 -5
  26. package/src/consent/sdkUserConsent.ts +4 -3
  27. package/src/dtos/types.ts +0 -8
  28. package/src/evaluator/Engine.ts +3 -3
  29. package/src/evaluator/combiners/and.ts +1 -1
  30. package/src/evaluator/combiners/ifelseif.ts +3 -3
  31. package/src/evaluator/condition/engineUtils.ts +1 -1
  32. package/src/evaluator/condition/index.ts +6 -6
  33. package/src/evaluator/index.ts +10 -10
  34. package/src/evaluator/matchers/all.ts +1 -1
  35. package/src/evaluator/matchers/between.ts +1 -1
  36. package/src/evaluator/matchers/boolean.ts +1 -1
  37. package/src/evaluator/matchers/cont_all.ts +1 -1
  38. package/src/evaluator/matchers/cont_any.ts +1 -1
  39. package/src/evaluator/matchers/cont_str.ts +1 -1
  40. package/src/evaluator/matchers/dependency.ts +1 -1
  41. package/src/evaluator/matchers/eq.ts +1 -1
  42. package/src/evaluator/matchers/eq_set.ts +1 -1
  43. package/src/evaluator/matchers/ew.ts +1 -1
  44. package/src/evaluator/matchers/gte.ts +1 -1
  45. package/src/evaluator/matchers/index.ts +1 -1
  46. package/src/evaluator/matchers/lte.ts +1 -1
  47. package/src/evaluator/matchers/part_of.ts +1 -1
  48. package/src/evaluator/matchers/segment.ts +1 -1
  49. package/src/evaluator/matchers/string.ts +1 -1
  50. package/src/evaluator/matchers/sw.ts +1 -1
  51. package/src/evaluator/matchers/whitelist.ts +1 -1
  52. package/src/evaluator/parser/index.ts +3 -3
  53. package/src/evaluator/types.ts +6 -6
  54. package/src/evaluator/value/index.ts +4 -4
  55. package/src/evaluator/value/sanitize.ts +4 -4
  56. package/src/integrations/ga/GaToSplit.ts +6 -6
  57. package/src/integrations/ga/SplitToGa.ts +10 -10
  58. package/src/integrations/ga/types.ts +4 -4
  59. package/src/integrations/pluggable.ts +3 -3
  60. package/src/integrations/types.ts +2 -2
  61. package/src/listeners/browser.ts +2 -3
  62. package/src/logger/.DS_Store +0 -0
  63. package/src/logger/constants.ts +0 -1
  64. package/src/logger/index.ts +3 -3
  65. package/src/logger/sdkLogger.ts +1 -2
  66. package/src/logger/types.ts +0 -16
  67. package/src/readiness/sdkReadinessManager.ts +1 -1
  68. package/src/readiness/types.ts +2 -9
  69. package/src/sdkClient/client.ts +13 -13
  70. package/src/sdkClient/clientAttributesDecoration.ts +13 -13
  71. package/src/sdkClient/clientCS.ts +3 -4
  72. package/src/sdkClient/clientInputValidation.ts +15 -15
  73. package/src/sdkClient/sdkClient.ts +2 -2
  74. package/src/sdkClient/sdkClientMethod.ts +2 -2
  75. package/src/sdkClient/sdkClientMethodCS.ts +9 -9
  76. package/src/sdkClient/sdkClientMethodCSWithTT.ts +9 -9
  77. package/src/sdkFactory/index.ts +8 -17
  78. package/src/sdkFactory/types.ts +8 -11
  79. package/src/sdkManager/index.ts +5 -5
  80. package/src/services/splitApi.ts +1 -22
  81. package/src/services/types.ts +0 -6
  82. package/src/storages/dataLoader.ts +2 -2
  83. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
  84. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +2 -2
  85. package/src/storages/inLocalStorage/index.ts +3 -2
  86. package/src/storages/inMemory/AttributesCacheInMemory.ts +13 -12
  87. package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
  88. package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
  89. package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
  90. package/src/storages/inRedis/RedisAdapter.ts +1 -1
  91. package/src/storages/inRedis/SegmentsCacheInRedis.ts +1 -1
  92. package/src/storages/inRedis/SplitsCacheInRedis.ts +1 -1
  93. package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
  94. package/src/storages/inRedis/index.ts +3 -2
  95. package/src/storages/pluggable/EventsCachePluggable.ts +4 -4
  96. package/src/storages/pluggable/ImpressionsCachePluggable.ts +1 -1
  97. package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
  98. package/src/storages/pluggable/SplitsCachePluggable.ts +1 -1
  99. package/src/storages/pluggable/TelemetryCachePluggable.ts +1 -1
  100. package/src/storages/pluggable/index.ts +3 -3
  101. package/src/storages/pluggable/wrapperAdapter.ts +1 -1
  102. package/src/storages/types.ts +46 -35
  103. package/src/sync/offline/LocalhostFromObject.ts +4 -4
  104. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
  105. package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
  106. package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
  107. package/src/sync/polling/updaters/splitChangesUpdater.ts +1 -1
  108. package/src/sync/streaming/SSEHandler/index.ts +1 -1
  109. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  110. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
  111. package/src/sync/submitters/submitter.ts +1 -1
  112. package/src/sync/submitters/submitterManager.ts +0 -2
  113. package/src/sync/submitters/types.ts +3 -22
  114. package/src/sync/syncTask.ts +1 -1
  115. package/src/trackers/eventTracker.ts +3 -3
  116. package/src/trackers/impressionsTracker.ts +37 -15
  117. package/src/trackers/types.ts +4 -34
  118. package/src/types.d.ts +1581 -0
  119. package/src/utils/constants/index.ts +1 -2
  120. package/src/utils/inputValidation/apiKey.ts +1 -1
  121. package/src/utils/inputValidation/attribute.ts +1 -1
  122. package/src/utils/inputValidation/attributes.ts +3 -3
  123. package/src/utils/inputValidation/event.ts +1 -1
  124. package/src/utils/inputValidation/eventProperties.ts +3 -3
  125. package/src/utils/inputValidation/eventValue.ts +1 -1
  126. package/src/utils/inputValidation/isOperational.ts +1 -1
  127. package/src/utils/inputValidation/key.ts +3 -3
  128. package/src/utils/inputValidation/preloadedData.ts +3 -3
  129. package/src/utils/inputValidation/split.ts +1 -1
  130. package/src/utils/inputValidation/splitExistance.ts +1 -1
  131. package/src/utils/inputValidation/splits.ts +1 -1
  132. package/src/utils/inputValidation/trafficType.ts +1 -1
  133. package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
  134. package/src/utils/key/index.ts +9 -9
  135. package/src/utils/settingsValidation/consent.ts +1 -2
  136. package/src/utils/settingsValidation/impressionsMode.ts +6 -6
  137. package/src/utils/settingsValidation/index.ts +1 -4
  138. package/src/utils/settingsValidation/integrations/common.ts +1 -1
  139. package/src/utils/settingsValidation/integrations/configurable.ts +1 -1
  140. package/src/utils/settingsValidation/integrations/pluggable.ts +1 -2
  141. package/src/utils/settingsValidation/localhost/builtin.ts +1 -2
  142. package/src/utils/settingsValidation/localhost/pluggable.ts +1 -2
  143. package/src/utils/settingsValidation/logger/builtinLogger.ts +1 -2
  144. package/src/utils/settingsValidation/logger/pluggableLogger.ts +1 -2
  145. package/src/utils/settingsValidation/splitFilters.ts +7 -9
  146. package/src/utils/settingsValidation/storage/storageCS.ts +1 -2
  147. package/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -70
  148. package/cjs/trackers/strategy/strategyDebug.js +0 -25
  149. package/cjs/trackers/strategy/strategyNone.js +0 -29
  150. package/cjs/trackers/strategy/strategyOptimized.js +0 -34
  151. package/cjs/trackers/uniqueKeysTracker.js +0 -69
  152. package/cjs/types.js +0 -2
  153. package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -64
  154. package/esm/trackers/strategy/strategyDebug.js +0 -21
  155. package/esm/trackers/strategy/strategyNone.js +0 -25
  156. package/esm/trackers/strategy/strategyOptimized.js +0 -30
  157. package/esm/trackers/uniqueKeysTracker.js +0 -65
  158. package/esm/types.js +0 -1
  159. package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -79
  160. package/src/trackers/strategy/strategyDebug.ts +0 -28
  161. package/src/trackers/strategy/strategyNone.ts +0 -34
  162. package/src/trackers/strategy/strategyOptimized.ts +0 -42
  163. package/src/trackers/uniqueKeysTracker.ts +0 -80
  164. package/src/types.ts +0 -1264
  165. package/types/consent/index.d.ts +0 -2
  166. package/types/consent/sdkUserConsent.d.ts +0 -13
  167. package/types/dtos/types.d.ts +0 -172
  168. package/types/evaluator/Engine.d.ts +0 -15
  169. package/types/evaluator/combiners/and.d.ts +0 -4
  170. package/types/evaluator/combiners/ifelseif.d.ts +0 -3
  171. package/types/evaluator/condition/engineUtils.d.ts +0 -11
  172. package/types/evaluator/condition/index.d.ts +0 -6
  173. package/types/evaluator/convertions/index.d.ts +0 -2
  174. package/types/evaluator/index.d.ts +0 -7
  175. package/types/evaluator/matchers/all.d.ts +0 -2
  176. package/types/evaluator/matchers/between.d.ts +0 -3
  177. package/types/evaluator/matchers/boolean.d.ts +0 -2
  178. package/types/evaluator/matchers/cont_all.d.ts +0 -2
  179. package/types/evaluator/matchers/cont_any.d.ts +0 -2
  180. package/types/evaluator/matchers/cont_str.d.ts +0 -2
  181. package/types/evaluator/matchers/dependency.d.ts +0 -5
  182. package/types/evaluator/matchers/eq.d.ts +0 -2
  183. package/types/evaluator/matchers/eq_set.d.ts +0 -2
  184. package/types/evaluator/matchers/ew.d.ts +0 -2
  185. package/types/evaluator/matchers/gte.d.ts +0 -2
  186. package/types/evaluator/matchers/index.d.ts +0 -7
  187. package/types/evaluator/matchers/lte.d.ts +0 -2
  188. package/types/evaluator/matchers/matcherTypes.d.ts +0 -10
  189. package/types/evaluator/matchers/part_of.d.ts +0 -2
  190. package/types/evaluator/matchers/segment.d.ts +0 -6
  191. package/types/evaluator/matchers/string.d.ts +0 -2
  192. package/types/evaluator/matchers/sw.d.ts +0 -2
  193. package/types/evaluator/matchers/whitelist.d.ts +0 -3
  194. package/types/evaluator/matchersTransform/index.d.ts +0 -6
  195. package/types/evaluator/matchersTransform/segment.d.ts +0 -5
  196. package/types/evaluator/matchersTransform/set.d.ts +0 -5
  197. package/types/evaluator/matchersTransform/unaryNumeric.d.ts +0 -5
  198. package/types/evaluator/matchersTransform/whitelist.d.ts +0 -5
  199. package/types/evaluator/parser/index.d.ts +0 -5
  200. package/types/evaluator/treatments/index.d.ts +0 -8
  201. package/types/evaluator/types.d.ts +0 -28
  202. package/types/evaluator/value/index.d.ts +0 -7
  203. package/types/evaluator/value/sanitize.d.ts +0 -7
  204. package/types/index.d.ts +0 -5
  205. package/types/integrations/browser.d.ts +0 -12
  206. package/types/integrations/ga/GaToSplit.d.ts +0 -40
  207. package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +0 -3
  208. package/types/integrations/ga/SplitToGa.d.ts +0 -34
  209. package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +0 -3
  210. package/types/integrations/ga/types.d.ts +0 -148
  211. package/types/integrations/pluggable.d.ts +0 -11
  212. package/types/integrations/types.d.ts +0 -17
  213. package/types/listeners/browser.d.ts +0 -40
  214. package/types/listeners/node.d.ts +0 -22
  215. package/types/listeners/types.d.ts +0 -4
  216. package/types/logger/browser/DebugLogger.d.ts +0 -2
  217. package/types/logger/browser/ErrorLogger.d.ts +0 -2
  218. package/types/logger/browser/InfoLogger.d.ts +0 -2
  219. package/types/logger/browser/WarnLogger.d.ts +0 -2
  220. package/types/logger/constants.d.ts +0 -142
  221. package/types/logger/index.d.ts +0 -22
  222. package/types/logger/messages/debug.d.ts +0 -1
  223. package/types/logger/messages/error.d.ts +0 -1
  224. package/types/logger/messages/info.d.ts +0 -1
  225. package/types/logger/messages/warn.d.ts +0 -1
  226. package/types/logger/sdkLogger.d.ts +0 -8
  227. package/types/logger/types.d.ts +0 -17
  228. package/types/readiness/constants.d.ts +0 -7
  229. package/types/readiness/readinessManager.d.ts +0 -6
  230. package/types/readiness/sdkReadinessManager.d.ts +0 -11
  231. package/types/readiness/types.d.ts +0 -60
  232. package/types/sdkClient/client.d.ts +0 -6
  233. package/types/sdkClient/clientAttributesDecoration.d.ts +0 -51
  234. package/types/sdkClient/clientCS.d.ts +0 -10
  235. package/types/sdkClient/clientInputValidation.d.ts +0 -7
  236. package/types/sdkClient/sdkClient.d.ts +0 -6
  237. package/types/sdkClient/sdkClientMethod.d.ts +0 -6
  238. package/types/sdkClient/sdkClientMethodCS.d.ts +0 -7
  239. package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +0 -8
  240. package/types/sdkClient/types.d.ts +0 -18
  241. package/types/sdkFactory/index.d.ts +0 -6
  242. package/types/sdkFactory/types.d.ts +0 -82
  243. package/types/sdkManager/index.d.ts +0 -5
  244. package/types/services/splitApi.d.ts +0 -11
  245. package/types/services/splitHttpClient.d.ts +0 -10
  246. package/types/services/types.d.ts +0 -54
  247. package/types/storages/AbstractSegmentsCacheSync.d.ts +0 -55
  248. package/types/storages/AbstractSplitsCacheAsync.d.ts +0 -36
  249. package/types/storages/AbstractSplitsCacheSync.d.ts +0 -42
  250. package/types/storages/KeyBuilder.d.ts +0 -14
  251. package/types/storages/KeyBuilderCS.d.ts +0 -16
  252. package/types/storages/KeyBuilderSS.d.ts +0 -15
  253. package/types/storages/dataLoader.d.ts +0 -10
  254. package/types/storages/findLatencyIndex.d.ts +0 -7
  255. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +0 -25
  256. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +0 -51
  257. package/types/storages/inLocalStorage/constants.d.ts +0 -2
  258. package/types/storages/inLocalStorage/index.d.ts +0 -8
  259. package/types/storages/inMemory/AttributesCacheInMemory.d.ts +0 -43
  260. package/types/storages/inMemory/CountsCacheInMemory.d.ts +0 -20
  261. package/types/storages/inMemory/EventsCacheInMemory.d.ts +0 -35
  262. package/types/storages/inMemory/ImpressionCountsCacheInMemory.d.ts +0 -24
  263. package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +0 -30
  264. package/types/storages/inMemory/InMemoryStorage.d.ts +0 -10
  265. package/types/storages/inMemory/InMemoryStorageCS.d.ts +0 -10
  266. package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +0 -20
  267. package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +0 -22
  268. package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +0 -19
  269. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +0 -20
  270. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +0 -53
  271. package/types/storages/inRedis/CountsCacheInRedis.d.ts +0 -9
  272. package/types/storages/inRedis/EventsCacheInRedis.d.ts +0 -32
  273. package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +0 -18
  274. package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +0 -9
  275. package/types/storages/inRedis/RedisAdapter.d.ts +0 -24
  276. package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +0 -18
  277. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +0 -91
  278. package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +0 -20
  279. package/types/storages/inRedis/constants.d.ts +0 -1
  280. package/types/storages/inRedis/index.d.ts +0 -10
  281. package/types/storages/metadataBuilder.d.ts +0 -3
  282. package/types/storages/pluggable/EventsCachePluggable.d.ts +0 -38
  283. package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +0 -35
  284. package/types/storages/pluggable/SegmentsCachePluggable.d.ts +0 -54
  285. package/types/storages/pluggable/SplitsCachePluggable.d.ts +0 -89
  286. package/types/storages/pluggable/TelemetryCachePluggable.d.ts +0 -18
  287. package/types/storages/pluggable/constants.d.ts +0 -1
  288. package/types/storages/pluggable/inMemoryWrapper.d.ts +0 -13
  289. package/types/storages/pluggable/index.d.ts +0 -9
  290. package/types/storages/pluggable/wrapperAdapter.d.ts +0 -12
  291. package/types/storages/types.d.ts +0 -417
  292. package/types/sync/offline/LocalhostFromFile.d.ts +0 -2
  293. package/types/sync/offline/LocalhostFromObject.d.ts +0 -2
  294. package/types/sync/offline/splitsParser/parseCondition.d.ts +0 -7
  295. package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +0 -2
  296. package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +0 -3
  297. package/types/sync/offline/splitsParser/types.d.ts +0 -3
  298. package/types/sync/offline/syncManagerOffline.d.ts +0 -10
  299. package/types/sync/offline/syncTasks/fromObjectSyncTask.d.ts +0 -17
  300. package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +0 -7
  301. package/types/sync/polling/fetchers/segmentChangesFetcher.d.ts +0 -7
  302. package/types/sync/polling/fetchers/splitChangesFetcher.d.ts +0 -7
  303. package/types/sync/polling/fetchers/types.d.ts +0 -5
  304. package/types/sync/polling/pollingManagerCS.d.ts +0 -7
  305. package/types/sync/polling/pollingManagerSS.d.ts +0 -6
  306. package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +0 -9
  307. package/types/sync/polling/syncTasks/segmentsSyncTask.d.ts +0 -9
  308. package/types/sync/polling/syncTasks/splitsSyncTask.d.ts +0 -9
  309. package/types/sync/polling/types.d.ts +0 -26
  310. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +0 -13
  311. package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +0 -18
  312. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +0 -39
  313. package/types/sync/streaming/AuthClient/index.d.ts +0 -12
  314. package/types/sync/streaming/AuthClient/types.d.ts +0 -17
  315. package/types/sync/streaming/SSEClient/index.d.ts +0 -34
  316. package/types/sync/streaming/SSEClient/types.d.ts +0 -11
  317. package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +0 -14
  318. package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +0 -20
  319. package/types/sync/streaming/SSEHandler/index.d.ts +0 -11
  320. package/types/sync/streaming/SSEHandler/types.d.ts +0 -67
  321. package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +0 -6
  322. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +0 -8
  323. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +0 -12
  324. package/types/sync/streaming/UpdateWorkers/constants.d.ts +0 -3
  325. package/types/sync/streaming/UpdateWorkers/types.d.ts +0 -4
  326. package/types/sync/streaming/constants.d.ts +0 -34
  327. package/types/sync/streaming/mySegmentsV2utils.d.ts +0 -27
  328. package/types/sync/streaming/pushManager.d.ts +0 -9
  329. package/types/sync/streaming/types.d.ts +0 -35
  330. package/types/sync/submitters/eventsSubmitter.d.ts +0 -5
  331. package/types/sync/submitters/eventsSyncTask.d.ts +0 -8
  332. package/types/sync/submitters/impressionCountsSubmitter.d.ts +0 -10
  333. package/types/sync/submitters/impressionCountsSyncTask.d.ts +0 -13
  334. package/types/sync/submitters/impressionsSubmitter.d.ts +0 -11
  335. package/types/sync/submitters/impressionsSyncTask.d.ts +0 -14
  336. package/types/sync/submitters/metricsSyncTask.d.ts +0 -12
  337. package/types/sync/submitters/submitter.d.ts +0 -12
  338. package/types/sync/submitters/submitterManager.d.ts +0 -3
  339. package/types/sync/submitters/submitterSyncTask.d.ts +0 -10
  340. package/types/sync/submitters/telemetrySubmitter.d.ts +0 -25
  341. package/types/sync/submitters/types.d.ts +0 -194
  342. package/types/sync/submitters/uniqueKeysSubmitter.d.ts +0 -19
  343. package/types/sync/syncManagerOnline.d.ts +0 -13
  344. package/types/sync/syncTask.d.ts +0 -13
  345. package/types/sync/syncTaskComposite.d.ts +0 -5
  346. package/types/sync/types.d.ts +0 -43
  347. package/types/trackers/eventTracker.d.ts +0 -10
  348. package/types/trackers/filter/bloomFilter.d.ts +0 -10
  349. package/types/trackers/filter/dictionaryFilter.d.ts +0 -8
  350. package/types/trackers/filter/types.d.ts +0 -5
  351. package/types/trackers/impressionObserver/ImpressionObserver.d.ts +0 -8
  352. package/types/trackers/impressionObserver/buildKey.d.ts +0 -2
  353. package/types/trackers/impressionObserver/impressionObserverCS.d.ts +0 -4
  354. package/types/trackers/impressionObserver/impressionObserverSS.d.ts +0 -4
  355. package/types/trackers/impressionObserver/types.d.ts +0 -4
  356. package/types/trackers/impressionObserver/utils.d.ts +0 -13
  357. package/types/trackers/impressionsTracker.d.ts +0 -13
  358. package/types/trackers/strategy/strategyDebug.d.ts +0 -9
  359. package/types/trackers/strategy/strategyNone.d.ts +0 -10
  360. package/types/trackers/strategy/strategyOptimized.d.ts +0 -11
  361. package/types/trackers/telemetryTracker.d.ts +0 -3
  362. package/types/trackers/types.d.ts +0 -65
  363. package/types/trackers/uniqueKeysTracker.d.ts +0 -13
  364. package/types/types.d.ts +0 -1262
  365. package/types/utils/Backoff.d.ts +0 -25
  366. package/types/utils/LRUCache/LinkedList.d.ts +0 -34
  367. package/types/utils/LRUCache/index.d.ts +0 -16
  368. package/types/utils/MinEventEmitter.d.ts +0 -12
  369. package/types/utils/MinEvents.d.ts +0 -4
  370. package/types/utils/base64/index.d.ts +0 -30
  371. package/types/utils/constants/browser.d.ts +0 -3
  372. package/types/utils/constants/index.d.ts +0 -63
  373. package/types/utils/decompress/index.d.ts +0 -16
  374. package/types/utils/env/isLocalStorageAvailable.d.ts +0 -1
  375. package/types/utils/env/isNode.d.ts +0 -5
  376. package/types/utils/inputValidation/apiKey.d.ts +0 -7
  377. package/types/utils/inputValidation/attribute.d.ts +0 -2
  378. package/types/utils/inputValidation/attributes.d.ts +0 -4
  379. package/types/utils/inputValidation/event.d.ts +0 -2
  380. package/types/utils/inputValidation/eventProperties.d.ts +0 -6
  381. package/types/utils/inputValidation/eventValue.d.ts +0 -2
  382. package/types/utils/inputValidation/index.d.ts +0 -13
  383. package/types/utils/inputValidation/isOperational.d.ts +0 -4
  384. package/types/utils/inputValidation/key.d.ts +0 -3
  385. package/types/utils/inputValidation/preloadedData.d.ts +0 -3
  386. package/types/utils/inputValidation/split.d.ts +0 -2
  387. package/types/utils/inputValidation/splitExistance.d.ts +0 -7
  388. package/types/utils/inputValidation/splits.d.ts +0 -2
  389. package/types/utils/inputValidation/trafficType.d.ts +0 -2
  390. package/types/utils/inputValidation/trafficTypeExistance.d.ts +0 -9
  391. package/types/utils/jwt/index.d.ts +0 -5
  392. package/types/utils/jwt/types.d.ts +0 -5
  393. package/types/utils/key/index.d.ts +0 -8
  394. package/types/utils/labels/index.d.ts +0 -7
  395. package/types/utils/lang/binarySearch.d.ts +0 -9
  396. package/types/utils/lang/getFnName.d.ts +0 -4
  397. package/types/utils/lang/getGlobal.d.ts +0 -4
  398. package/types/utils/lang/index.d.ts +0 -105
  399. package/types/utils/lang/maps.d.ts +0 -55
  400. package/types/utils/lang/objectAssign.d.ts +0 -3
  401. package/types/utils/lang/sets.d.ts +0 -60
  402. package/types/utils/murmur3/common.d.ts +0 -12
  403. package/types/utils/murmur3/legacy.d.ts +0 -2
  404. package/types/utils/murmur3/murmur3.d.ts +0 -2
  405. package/types/utils/murmur3/murmur3_128.d.ts +0 -6
  406. package/types/utils/murmur3/murmur3_128_x86.d.ts +0 -7
  407. package/types/utils/murmur3/murmur3_64.d.ts +0 -10
  408. package/types/utils/murmur3/utfx.d.ts +0 -27
  409. package/types/utils/promise/thenable.d.ts +0 -1
  410. package/types/utils/promise/timeout.d.ts +0 -1
  411. package/types/utils/promise/wrapper.d.ts +0 -21
  412. package/types/utils/settingsValidation/consent.d.ts +0 -6
  413. package/types/utils/settingsValidation/impressionsMode.d.ts +0 -3
  414. package/types/utils/settingsValidation/index.d.ts +0 -52
  415. package/types/utils/settingsValidation/integrations/common.d.ts +0 -14
  416. package/types/utils/settingsValidation/integrations/configurable.d.ts +0 -13
  417. package/types/utils/settingsValidation/integrations/pluggable.d.ts +0 -13
  418. package/types/utils/settingsValidation/localhost/builtin.d.ts +0 -16
  419. package/types/utils/settingsValidation/localhost/pluggable.d.ts +0 -16
  420. package/types/utils/settingsValidation/logger/builtinLogger.d.ts +0 -10
  421. package/types/utils/settingsValidation/logger/commons.d.ts +0 -9
  422. package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +0 -11
  423. package/types/utils/settingsValidation/mode.d.ts +0 -1
  424. package/types/utils/settingsValidation/runtime.d.ts +0 -2
  425. package/types/utils/settingsValidation/splitFilters.d.ts +0 -16
  426. package/types/utils/settingsValidation/storage/storageCS.d.ts +0 -21
  427. package/types/utils/settingsValidation/types.d.ts +0 -32
  428. package/types/utils/settingsValidation/url.d.ts +0 -10
  429. package/types/utils/time/index.d.ts +0 -4
  430. package/types/utils/timeTracker/index.d.ts +0 -70
  431. package/types/utils/timeTracker/now/browser.d.ts +0 -1
  432. package/types/utils/timeTracker/now/node.d.ts +0 -1
  433. package/types/utils/timeTracker/timer.d.ts +0 -1
@@ -1,8 +1,6 @@
1
- import { MaybeThenable, IMetadata, ISplitFiltersValidation } from '../dtos/types';
2
- import { ILogger } from '../logger/types';
1
+ import { MaybeThenable, IMetadata } from '../dtos/types';
3
2
  import { EventDataType, HttpErrors, HttpLatencies, ImpressionDataType, LastSync, Method, MethodExceptions, MethodLatencies, OperationType, StoredEventWithMetadata, StoredImpressionWithMetadata, StreamingEvent } from '../sync/submitters/types';
4
- import { SplitIO, ImpressionDTO, SDKMode } from '../types';
5
- import { ISet } from '../utils/lang/sets';
3
+ import { ImpressionDTO, SDKMode, ILogger, EventData, ISplitFiltersValidation } from '../types';
6
4
 
7
5
  /**
8
6
  * Interface of a pluggable storage wrapper.
@@ -290,7 +288,7 @@ export interface IImpressionsCacheBase {
290
288
 
291
289
  export interface IEventsCacheBase {
292
290
  // Consumer API method, used by events tracker, in standalone and consumer modes, to push events into the storage.
293
- track(data: SplitIO.EventData, size?: number): MaybeThenable<boolean>
291
+ track(data: EventData, size?: number): MaybeThenable<boolean>
294
292
  }
295
293
 
296
294
  /** Impressions and events cache for standalone mode (sync) */
@@ -313,8 +311,8 @@ export interface IImpressionsCacheSync extends IImpressionsCacheBase, IRecorderC
313
311
  setOnFullQueueCb(cb: () => void): void
314
312
  }
315
313
 
316
- export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<SplitIO.EventData[]> {
317
- track(data: SplitIO.EventData, size?: number): boolean
314
+ export interface IEventsCacheSync extends IEventsCacheBase, IRecorderCacheProducerSync<EventData[]> {
315
+ track(data: EventData, size?: number): boolean
318
316
  /* Registers callback for full queue */
319
317
  setOnFullQueueCb(cb: () => void): void
320
318
  }
@@ -340,7 +338,7 @@ export interface IImpressionsCacheAsync extends IImpressionsCacheBase, IRecorder
340
338
  export interface IEventsCacheAsync extends IEventsCacheBase, IRecorderCacheProducerAsync<StoredEventWithMetadata[]> {
341
339
  // Consumer API method, used by events tracker (in standalone and consumer modes) to push data into.
342
340
  // The result promise cannot reject.
343
- track(data: SplitIO.EventData, size?: number): Promise<boolean>
341
+ track(data: EventData, size?: number): Promise<boolean>
344
342
  }
345
343
 
346
344
  /**
@@ -353,17 +351,9 @@ export interface IImpressionCountsCacheSync extends IRecorderCacheProducerSync<R
353
351
 
354
352
  // Used by impressions count submitter in standalone and producer mode
355
353
  isEmpty(): boolean // check if cache is empty. Return true if the cache was just created or cleared.
356
- pop(toMerge?: Record<string, number> ): Record<string, number> // pop cache data
354
+ pop(toMerge?: Record<string, number>): Record<string, number> // pop cache data
357
355
  }
358
356
 
359
- export interface IUniqueKeysCacheBase extends IRecorderCacheProducerSync<{ [featureName: string]: ISet<string> }>{
360
- // Used by unique Keys tracker
361
- track(featureName: string, timeFrame: number, amount: number): void
362
-
363
- // Used by unique keys submitter in standalone and producer mode
364
- isEmpty(): boolean // check if cache is empty. Return true if the cache was just created or cleared.
365
- pop(toMerge?: { [featureName: string]: ISet<string> } ): { [featureName: string]: ISet<string> } // pop cache data
366
- }
367
357
 
368
358
  /**
369
359
  * Telemetry storage interface for standalone and partial consumer modes.
@@ -454,16 +444,14 @@ export interface IStorageBase<
454
444
  TSegmentsCache extends ISegmentsCacheBase,
455
445
  TImpressionsCache extends IImpressionsCacheBase,
456
446
  TEventsCache extends IEventsCacheBase,
457
- TTelemetryCache extends ITelemetryCacheSync | ITelemetryCacheAsync,
458
- TUniqueKeysCache extends IUniqueKeysCacheBase
447
+ TTelemetryCache extends ITelemetryCacheSync | ITelemetryCacheAsync
459
448
  > {
460
449
  splits: TSplitsCache,
461
450
  segments: TSegmentsCache,
462
451
  impressions: TImpressionsCache,
463
452
  impressionCounts?: IImpressionCountsCacheSync,
464
453
  events: TEventsCache,
465
- telemetry?: TTelemetryCache,
466
- uniqueKeys?: TUniqueKeysCache,
454
+ telemetry?: TTelemetryCache
467
455
  destroy(): void | Promise<void>,
468
456
  shared?: (matchingKey: string, onReadyCb: (error?: any) => void) => this
469
457
  }
@@ -473,8 +461,7 @@ export interface IStorageSync extends IStorageBase<
473
461
  ISegmentsCacheSync,
474
462
  IImpressionsCacheSync,
475
463
  IEventsCacheSync,
476
- ITelemetryCacheSync,
477
- IUniqueKeysCacheBase
464
+ ITelemetryCacheSync
478
465
  > { }
479
466
 
480
467
  export interface IStorageAsync extends IStorageBase<
@@ -482,8 +469,7 @@ export interface IStorageAsync extends IStorageBase<
482
469
  ISegmentsCacheAsync,
483
470
  IImpressionsCacheAsync | IImpressionsCacheSync,
484
471
  IEventsCacheAsync | IEventsCacheSync,
485
- ITelemetryCacheAsync,
486
- IUniqueKeysCacheBase
472
+ ITelemetryCacheAsync
487
473
  > { }
488
474
 
489
475
  /** StorageFactory */
@@ -508,14 +494,39 @@ export interface IStorageFactoryParams {
508
494
  metadata: IMetadata,
509
495
  }
510
496
 
511
- export type StorageType = 'MEMORY' | 'LOCALSTORAGE' | 'REDIS' | 'PLUGGABLE';
512
-
513
- export type IStorageSyncFactory = {
514
- readonly type: StorageType,
515
- (params: IStorageFactoryParams): IStorageSync
516
- }
517
-
518
- export type IStorageAsyncFactory = {
519
- type: StorageType,
520
- (params: IStorageFactoryParams): IStorageAsync
497
+ /**
498
+ * Defines the format of Split data to preload on the factory storage (cache).
499
+ */
500
+ export interface PreloadedData {
501
+ /**
502
+ * Timestamp of the last moment the data was synchronized with Split servers.
503
+ * If this value is older than 10 days ago (expiration time policy), the data is not used to update the storage content.
504
+ * @TODO configurable expiration time policy?
505
+ */
506
+ lastUpdated: number,
507
+ /**
508
+ * Change number of the preloaded data.
509
+ * If this value is older than the current changeNumber at the storage, the data is not used to update the storage content.
510
+ */
511
+ since: number,
512
+ /**
513
+ * Map of splits to their serialized definitions.
514
+ */
515
+ splitsData: {
516
+ [splitName: string]: string
517
+ },
518
+ /**
519
+ * Optional map of user keys to their list of segments.
520
+ * @TODO remove when releasing first version
521
+ */
522
+ mySegmentsData?: {
523
+ [key: string]: string[]
524
+ },
525
+ /**
526
+ * Optional map of segments to their serialized definitions.
527
+ * This property is ignored if `mySegmentsData` was provided.
528
+ */
529
+ segmentsData?: {
530
+ [segmentName: string]: string
531
+ },
521
532
  }
@@ -1,12 +1,12 @@
1
1
  import { splitsParserFromSettingsFactory } from './splitsParser/splitsParserFromSettings';
2
2
  import { syncManagerOfflineFactory } from './syncManagerOffline';
3
- import { SplitIO } from '../../types';
3
+ import { LocalhostFactory } from '../../types';
4
4
 
5
5
  // Singleton instance of the factory function for offline SyncManager from object (a.k.a. localhostFromObject)
6
6
  // SDK instances instantiate their SyncManagers with the same factory
7
- const localhostFromObject = syncManagerOfflineFactory(splitsParserFromSettingsFactory) as SplitIO.LocalhostFactory;
7
+ const localhostFromObject: any = syncManagerOfflineFactory(splitsParserFromSettingsFactory);
8
8
  localhostFromObject.type = 'LocalhostFromObject';
9
9
 
10
- export function LocalhostFromObject(): SplitIO.LocalhostFactory {
11
- return localhostFromObject;
10
+ export function LocalhostFromObject() {
11
+ return localhostFromObject as LocalhostFactory;
12
12
  }
@@ -1,23 +1,23 @@
1
1
  import { ISplitPartial } from '../../../dtos/types';
2
- import { ISettings, SplitIO } from '../../../types';
2
+ import { ISettings, MockedFeaturesMap, TreatmentWithConfig } from '../../../types';
3
3
  import { isObject, forOwn } from '../../../utils/lang';
4
4
  import { parseCondition } from './parseCondition';
5
5
 
6
- function hasTreatmentChanged(prev: string | SplitIO.TreatmentWithConfig, curr: string | SplitIO.TreatmentWithConfig) {
6
+ function hasTreatmentChanged(prev: string | TreatmentWithConfig, curr: string | TreatmentWithConfig) {
7
7
  if (typeof prev !== typeof curr) return true;
8
8
 
9
9
  if (typeof prev === 'string') { // strings treatments, just compare
10
10
  return prev !== curr;
11
11
  } else { // has treatment and config, compare both
12
- return prev.treatment !== (curr as SplitIO.TreatmentWithConfig).treatment || prev.config !== (curr as SplitIO.TreatmentWithConfig).config;
12
+ return prev.treatment !== (curr as TreatmentWithConfig).treatment || prev.config !== (curr as TreatmentWithConfig).config;
13
13
  }
14
14
  }
15
15
 
16
16
  export function splitsParserFromSettingsFactory() {
17
17
 
18
- let previousMock: SplitIO.MockedFeaturesMap = { 'emptyMock': '1' };
18
+ let previousMock: MockedFeaturesMap = { 'emptyMock': '1' };
19
19
 
20
- function mockUpdated(currentData: SplitIO.MockedFeaturesMap) {
20
+ function mockUpdated(currentData: MockedFeaturesMap) {
21
21
  const names = Object.keys(currentData);
22
22
 
23
23
  // Different amount of items
@@ -42,7 +42,7 @@ export function splitsParserFromSettingsFactory() {
42
42
  * @param settings validated object with mocked features mapping.
43
43
  */
44
44
  return function splitsParserFromSettings(settings: ISettings): false | Record<string, ISplitPartial> {
45
- const features = settings.features as SplitIO.MockedFeaturesMap || {};
45
+ const features = settings.features as MockedFeaturesMap || {};
46
46
 
47
47
  if (!mockUpdated(features)) return false;
48
48
 
@@ -53,8 +53,8 @@ export function splitsParserFromSettingsFactory() {
53
53
  let config = null;
54
54
 
55
55
  if (isObject(data)) {
56
- treatment = (data as SplitIO.TreatmentWithConfig).treatment;
57
- config = (data as SplitIO.TreatmentWithConfig).config || config;
56
+ treatment = (data as TreatmentWithConfig).treatment;
57
+ config = (data as TreatmentWithConfig).config || config;
58
58
  }
59
59
  const configurations: Record<string, string> = {};
60
60
  if (config !== null) configurations[treatment as string] = config;
@@ -3,7 +3,7 @@ import { ISegmentsCacheSync, ISplitsCacheSync } from '../../../storages/types';
3
3
  import { ISegmentsEventEmitter } from '../../../readiness/types';
4
4
  import { timeout } from '../../../utils/promise/timeout';
5
5
  import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
6
- import { ILogger } from '../../../logger/types';
6
+ import { ILogger } from '../../../types';
7
7
  import { SYNC_MYSEGMENTS_FETCH_RETRY } from '../../../logger/constants';
8
8
  import { MySegmentsData } from '../types';
9
9
 
@@ -4,7 +4,7 @@ import { IReadinessManager } from '../../../readiness/types';
4
4
  import { MaybeThenable } from '../../../dtos/types';
5
5
  import { findIndex } from '../../../utils/lang';
6
6
  import { SDK_SEGMENTS_ARRIVED } from '../../../readiness/constants';
7
- import { ILogger } from '../../../logger/types';
7
+ import { ILogger } from '../../../types';
8
8
  import { LOG_PREFIX_INSTANTIATION, LOG_PREFIX_SYNC_SEGMENTS } from '../../../logger/constants';
9
9
  import { thenable } from '../../../utils/promise/thenable';
10
10
 
@@ -5,7 +5,7 @@ import { ISplit, ISplitChangesResponse } from '../../../dtos/types';
5
5
  import { ISplitsEventEmitter } from '../../../readiness/types';
6
6
  import { timeout } from '../../../utils/promise/timeout';
7
7
  import { SDK_SPLITS_ARRIVED, SDK_SPLITS_CACHE_LOADED } from '../../../readiness/constants';
8
- import { ILogger } from '../../../logger/types';
8
+ import { ILogger } from '../../../types';
9
9
  import { SYNC_SPLITS_FETCH, SYNC_SPLITS_NEW, SYNC_SPLITS_REMOVED, SYNC_SPLITS_SEGMENTS, SYNC_SPLITS_FETCH_FAILS, SYNC_SPLITS_FETCH_RETRY } from '../../../logger/constants';
10
10
 
11
11
  type ISplitChangesUpdater = (noCache?: boolean, till?: number) => Promise<boolean>
@@ -4,7 +4,7 @@ import { PUSH_RETRYABLE_ERROR, PUSH_NONRETRYABLE_ERROR, OCCUPANCY, CONTROL, MY_S
4
4
  import { IPushEventEmitter } from '../types';
5
5
  import { ISseEventHandler } from '../SSEClient/types';
6
6
  import { INotificationError, INotificationMessage } from './types';
7
- import { ILogger } from '../../../logger/types';
7
+ import { ILogger } from '../../../types';
8
8
  import { STREAMING_PARSING_ERROR_FAILS, ERROR_STREAMING_SSE, STREAMING_PARSING_MESSAGE_FAILS, STREAMING_NEW_MESSAGE } from '../../../logger/constants';
9
9
  import { ABLY_ERROR, NON_REQUESTED, SSE_CONNECTION_ERROR } from '../../../utils/constants';
10
10
  import { ITelemetryTracker } from '../../../trackers/types';
@@ -1,4 +1,4 @@
1
- import { ILogger } from '../../../logger/types';
1
+ import { ILogger } from '../../../types';
2
2
  import { ISegmentsCacheSync } from '../../../storages/types';
3
3
  import { Backoff } from '../../../utils/Backoff';
4
4
  import { ISegmentsSyncTask } from '../../polling/types';
@@ -1,4 +1,4 @@
1
- import { ILogger } from '../../../logger/types';
1
+ import { ILogger } from '../../../types';
2
2
  import { SDK_SPLITS_ARRIVED } from '../../../readiness/constants';
3
3
  import { ISplitsEventEmitter } from '../../../readiness/types';
4
4
  import { ISplitsCacheSync } from '../../../storages/types';
@@ -1,7 +1,7 @@
1
1
  import { syncTaskFactory } from '../syncTask';
2
2
  import { ISyncTask } from '../types';
3
3
  import { IRecorderCacheProducerSync } from '../../storages/types';
4
- import { ILogger } from '../../logger/types';
4
+ import { ILogger } from '../../types';
5
5
  import { SUBMITTERS_PUSH, SUBMITTERS_PUSH_FAILS, SUBMITTERS_PUSH_RETRY } from '../../logger/constants';
6
6
  import { IResponse } from '../../services/types';
7
7
 
@@ -4,7 +4,6 @@ import { impressionCountsSubmitterFactory } from './impressionCountsSubmitter';
4
4
  import { telemetrySubmitterFactory } from './telemetrySubmitter';
5
5
  import { ISdkFactoryContextSync } from '../../sdkFactory/types';
6
6
  import { ISubmitterManager } from './types';
7
- import { uniqueKeysSubmitterFactory } from './uniqueKeysSubmitter';
8
7
 
9
8
  export function submitterManagerFactory(params: ISdkFactoryContextSync): ISubmitterManager {
10
9
 
@@ -16,7 +15,6 @@ export function submitterManagerFactory(params: ISdkFactoryContextSync): ISubmit
16
15
  const impressionCountsSubmitter = impressionCountsSubmitterFactory(params);
17
16
  if (impressionCountsSubmitter) submitters.push(impressionCountsSubmitter);
18
17
  const telemetrySubmitter = telemetrySubmitterFactory(params);
19
- if (params.uniqueKeysTracker) submitters.push(uniqueKeysSubmitterFactory(params));
20
18
 
21
19
  return {
22
20
  // `onlyTelemetry` true if SDK is created with userConsent not GRANTED
@@ -1,5 +1,5 @@
1
1
  import { IMetadata } from '../../dtos/types';
2
- import { SplitIO } from '../../types';
2
+ import { EventData } from '../../types';
3
3
  import { ISyncTask } from '../types';
4
4
 
5
5
  export type ImpressionsPayload = {
@@ -35,24 +35,6 @@ export type ImpressionCountsPayload = {
35
35
  }[]
36
36
  }
37
37
 
38
- export type UniqueKeysPayloadSs = {
39
- keys: {
40
- /** Split name */
41
- f: string
42
- /** keyNames */
43
- ks: string[]
44
- }[]
45
- }
46
-
47
- export type UniqueKeysPayloadCs = {
48
- keys: {
49
- /** keyNames */
50
- k: string
51
- /** Split name */
52
- fs: string[]
53
- }[]
54
- }
55
-
56
38
  export type StoredImpressionWithMetadata = {
57
39
  /** Metadata */
58
40
  m: IMetadata,
@@ -79,7 +61,7 @@ export type StoredEventWithMetadata = {
79
61
  /** Metadata */
80
62
  m: IMetadata,
81
63
  /** Stored event */
82
- e: SplitIO.EventData
64
+ e: EventData
83
65
  }
84
66
 
85
67
  /**
@@ -166,8 +148,7 @@ export type OperationMode = STANDALONE_ENUM | CONSUMER_ENUM | CONSUMER_PARTIAL_E
166
148
 
167
149
  export type OPTIMIZED_ENUM = 0;
168
150
  export type DEBUG_ENUM = 1;
169
- export type NONE_ENUM = 2;
170
- export type ImpressionsMode = OPTIMIZED_ENUM | DEBUG_ENUM | NONE_ENUM;
151
+ export type ImpressionsMode = OPTIMIZED_ENUM | DEBUG_ENUM;
171
152
 
172
153
  export type RefreshRates = {
173
154
  sp: number, // splits
@@ -1,5 +1,5 @@
1
1
  import { SYNC_TASK_EXECUTE, SYNC_TASK_START, SYNC_TASK_STOP } from '../logger/constants';
2
- import { ILogger } from '../logger/types';
2
+ import { ILogger } from '../types';
3
3
  import { ISyncTask } from './types';
4
4
 
5
5
  /**
@@ -2,7 +2,7 @@ import { objectAssign } from '../utils/lang/objectAssign';
2
2
  import { thenable } from '../utils/promise/thenable';
3
3
  import { IEventsCacheBase, ITelemetryCacheAsync, ITelemetryCacheSync } from '../storages/types';
4
4
  import { IEventsHandler, IEventTracker } from './types';
5
- import { ISettings, SplitIO } from '../types';
5
+ import { ISettings, EventData } from '../types';
6
6
  import { EVENTS_TRACKER_SUCCESS, ERROR_EVENTS_TRACKER } from '../logger/constants';
7
7
  import { CONSENT_DECLINED, DROPPED, QUEUED } from '../utils/constants';
8
8
  import { isStorageSync } from './impressionObserver/utils';
@@ -23,7 +23,7 @@ export function eventTrackerFactory(
23
23
  const log = settings.log;
24
24
  const isSync = isStorageSync(settings);
25
25
 
26
- function queueEventsCallback(eventData: SplitIO.EventData, tracked: boolean) {
26
+ function queueEventsCallback(eventData: EventData, tracked: boolean) {
27
27
  const { eventTypeId, trafficTypeName, key, value, timestamp, properties } = eventData;
28
28
  // Logging every prop would be too much.
29
29
  const msg = `event of type "${eventTypeId}" for traffic type "${trafficTypeName}". Key: ${key}. Value: ${value}. Timestamp: ${timestamp}. ${properties ? 'With properties.' : 'With no properties.'}`;
@@ -48,7 +48,7 @@ export function eventTrackerFactory(
48
48
  }
49
49
 
50
50
  return {
51
- track(eventData: SplitIO.EventData, size?: number) {
51
+ track(eventData: EventData, size?: number) {
52
52
  if (settings.userConsent === CONSENT_DECLINED) {
53
53
  return isSync ? false : Promise.resolve(false);
54
54
  }
@@ -1,8 +1,10 @@
1
1
  import { objectAssign } from '../utils/lang/objectAssign';
2
2
  import { thenable } from '../utils/promise/thenable';
3
- import { IImpressionsCacheBase, ITelemetryCacheSync, ITelemetryCacheAsync } from '../storages/types';
4
- import { IImpressionsHandler, IImpressionsTracker, IStrategy } from './types';
5
- import { SplitIO, ImpressionDTO, ISettings } from '../types';
3
+ import { truncateTimeFrame } from '../utils/time';
4
+ import { IImpressionCountsCacheSync, IImpressionsCacheBase, ITelemetryCacheSync, ITelemetryCacheAsync } from '../storages/types';
5
+ import { IImpressionsHandler, IImpressionsTracker } from './types';
6
+ import { ImpressionDTO, ISettings, Attributes, ImpressionData } from '../types';
7
+ import { IImpressionObserver } from './impressionObserver/types';
6
8
  import { IMPRESSIONS_TRACKER_SUCCESS, ERROR_IMPRESSIONS_TRACKER, ERROR_IMPRESSIONS_LISTENER } from '../logger/constants';
7
9
  import { CONSENT_DECLINED, DEDUPED, QUEUED } from '../utils/constants';
8
10
 
@@ -13,28 +15,48 @@ import { CONSENT_DECLINED, DEDUPED, QUEUED } from '../utils/constants';
13
15
  * @param metadata runtime metadata (ip, hostname and version)
14
16
  * @param impressionListener optional impression listener
15
17
  * @param integrationsManager optional integrations manager
16
- * @param strategy strategy for impressions tracking.
18
+ * @param observer optional impression observer. If provided, previous time (pt property) is included in impression instances
19
+ * @param countsCache optional cache to save impressions count. If provided, impressions will be deduped (OPTIMIZED mode)
17
20
  */
18
21
  export function impressionsTrackerFactory(
19
22
  settings: ISettings,
20
23
  impressionsCache: IImpressionsCacheBase,
21
- strategy: IStrategy,
22
24
  integrationsManager?: IImpressionsHandler,
23
- telemetryCache?: ITelemetryCacheSync | ITelemetryCacheAsync,
25
+ // if observer is provided, it implies `shouldAddPreviousTime` flag (i.e., if impressions previous time should be added or not)
26
+ observer?: IImpressionObserver,
27
+ // if countsCache is provided, it implies `isOptimized` flag (i.e., if impressions should be deduped or not)
28
+ countsCache?: IImpressionCountsCacheSync,
29
+ telemetryCache?: ITelemetryCacheSync | ITelemetryCacheAsync
24
30
  ): IImpressionsTracker {
25
31
 
26
32
  const { log, impressionListener, runtime: { ip, hostname }, version } = settings;
27
33
 
28
34
  return {
29
- track(impressions: ImpressionDTO[], attributes?: SplitIO.Attributes) {
35
+ track(impressions: ImpressionDTO[], attributes?: Attributes) {
30
36
  if (settings.userConsent === CONSENT_DECLINED) return;
31
37
 
32
38
  const impressionsCount = impressions.length;
33
39
 
34
- const { impressionsToStore, impressionsToListener, deduped } = strategy.process(impressions);
35
-
36
- const impressionsToListenerCount = impressionsToListener.length;
37
-
40
+ const impressionsToStore: ImpressionDTO[] = []; // Track only the impressions that are going to be stored
41
+ // Wraps impressions to store and adds previousTime if it corresponds
42
+ impressions.forEach((impression) => {
43
+ if (observer) {
44
+ // Adds previous time if it is enabled
45
+ impression.pt = observer.testAndSet(impression);
46
+ }
47
+
48
+ const now = Date.now();
49
+ if (countsCache) {
50
+ // Increments impression counter per featureName
51
+ countsCache.track(impression.feature, now, 1);
52
+ }
53
+
54
+ // Checks if the impression should be added in queue to be sent
55
+ if (!countsCache || !impression.pt || impression.pt < truncateTimeFrame(now)) {
56
+ impressionsToStore.push(impression);
57
+ }
58
+ });
59
+
38
60
  const res = impressionsCache.track(impressionsToStore);
39
61
 
40
62
  // If we're on an async storage, handle error and log it.
@@ -49,16 +71,16 @@ export function impressionsTrackerFactory(
49
71
  // @TODO we are not dropping impressions on full queue yet, so DROPPED stats are not recorded
50
72
  if (telemetryCache) {
51
73
  (telemetryCache as ITelemetryCacheSync).recordImpressionStats(QUEUED, impressionsToStore.length);
52
- (telemetryCache as ITelemetryCacheSync).recordImpressionStats(DEDUPED, deduped);
74
+ (telemetryCache as ITelemetryCacheSync).recordImpressionStats(DEDUPED, impressions.length - impressionsToStore.length);
53
75
  }
54
76
  }
55
77
 
56
78
  // @TODO next block might be handled by the integration manager. In that case, the metadata object doesn't need to be passed in the constructor
57
79
  if (impressionListener || integrationsManager) {
58
- for (let i = 0; i < impressionsToListenerCount; i++) {
59
- const impressionData: SplitIO.ImpressionData = {
80
+ for (let i = 0; i < impressionsCount; i++) {
81
+ const impressionData: ImpressionData = {
60
82
  // copy of impression, to avoid unexpected behaviour if modified by integrations or impressionListener
61
- impression: objectAssign({}, impressionsToListener[i]),
83
+ impression: objectAssign({}, impressions[i]),
62
84
  attributes,
63
85
  ip,
64
86
  hostname,
@@ -1,13 +1,12 @@
1
- import { SplitIO, ImpressionDTO } from '../types';
1
+ import { ImpressionDTO, EventData, ImpressionData, Attributes } from '../types';
2
2
  import { StreamingEventType, Method, OperationType } from '../sync/submitters/types';
3
3
  import { IEventsCacheBase } from '../storages/types';
4
4
  import { NetworkError } from '../services/types';
5
- import { ISet } from '../utils/lang/sets';
6
5
 
7
6
  /** Events tracker */
8
7
 
9
8
  export interface IEventsHandler {
10
- handleEvent(eventData: SplitIO.EventData): any
9
+ handleEvent(eventData: EventData): any
11
10
  }
12
11
 
13
12
  export type IEventTracker = IEventsCacheBase
@@ -15,11 +14,11 @@ export type IEventTracker = IEventsCacheBase
15
14
  /** Impressions tracker */
16
15
 
17
16
  export interface IImpressionsHandler {
18
- handleImpression(impressionData: SplitIO.ImpressionData): any
17
+ handleImpression(impressionData: ImpressionData): any
19
18
  }
20
19
 
21
20
  export interface IImpressionsTracker {
22
- track(impressions: ImpressionDTO[], attributes?: SplitIO.Attributes): void
21
+ track(impressions: ImpressionDTO[], attributes?: Attributes): void
23
22
  }
24
23
 
25
24
  /** Telemetry tracker */
@@ -43,32 +42,3 @@ export interface ITelemetryTracker {
43
42
  */
44
43
  streamingEvent(e: StreamingEventType | AUTH_REJECTION, d?: number): void
45
44
  }
46
-
47
- export interface IFilterAdapter {
48
- add(featureName: string, key: string): boolean;
49
- contains(featureName: string, key: string): boolean;
50
- clear(): void;
51
- }
52
-
53
- export interface IImpressionSenderAdapter {
54
- recordUniqueKeys(data: Object): void;
55
- recordImpressionCounts(data: Object): void
56
- }
57
-
58
- /** Unique keys tracker */
59
- export interface IUniqueKeysTracker {
60
- track(featureName: string, key: string): void;
61
- pop(toMerge?: { [featureName: string]: ISet<string> }): { [featureName: string]: ISet<string>; };
62
- clear(): void;
63
- isEmpty(): boolean;
64
- }
65
-
66
- export interface IStrategyResult {
67
- impressionsToStore: ImpressionDTO[],
68
- impressionsToListener: ImpressionDTO[],
69
- deduped: number
70
- }
71
-
72
- export interface IStrategy {
73
- process(impressions: ImpressionDTO[]): IStrategyResult
74
- }