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

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 (509) hide show
  1. package/CHANGES.txt +3 -0
  2. package/cjs/consent/sdkUserConsent.js +2 -2
  3. package/cjs/evaluator/index.js +10 -11
  4. package/cjs/integrations/ga/GaToSplit.js +8 -5
  5. package/cjs/listeners/browser.js +2 -1
  6. package/cjs/logger/constants.js +2 -1
  7. package/cjs/sdkClient/clientAttributesDecoration.js +1 -1
  8. package/cjs/sdkClient/sdkClient.js +3 -1
  9. package/cjs/sdkFactory/index.js +28 -8
  10. package/cjs/sdkManager/index.js +3 -11
  11. package/cjs/services/splitApi.js +20 -1
  12. package/cjs/storages/AbstractSplitsCacheAsync.js +7 -9
  13. package/cjs/storages/AbstractSplitsCacheSync.js +7 -9
  14. package/cjs/storages/KeyBuilderSS.js +6 -0
  15. package/cjs/storages/dataLoader.js +1 -1
  16. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +5 -6
  17. package/cjs/storages/inLocalStorage/index.js +4 -0
  18. package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
  19. package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +12 -1
  20. package/cjs/storages/inMemory/InMemoryStorage.js +5 -1
  21. package/cjs/storages/inMemory/InMemoryStorageCS.js +5 -1
  22. package/cjs/storages/inMemory/SplitsCacheInMemory.js +7 -10
  23. package/cjs/storages/inMemory/uniqueKeysCacheInMemory.js +73 -0
  24. package/cjs/storages/inMemory/uniqueKeysCacheInMemoryCS.js +78 -0
  25. package/cjs/storages/inRedis/ImpressionCountsCacheInRedis.js +49 -0
  26. package/cjs/storages/inRedis/SplitsCacheInRedis.js +15 -9
  27. package/cjs/storages/inRedis/constants.js +4 -1
  28. package/cjs/storages/inRedis/index.js +15 -1
  29. package/cjs/storages/inRedis/uniqueKeysCacheInRedis.js +56 -0
  30. package/cjs/storages/pluggable/SplitsCachePluggable.js +14 -9
  31. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +2 -3
  32. package/cjs/sync/polling/updaters/splitChangesUpdater.js +1 -1
  33. package/cjs/sync/submitters/submitterManager.js +3 -0
  34. package/cjs/sync/submitters/telemetrySubmitter.js +1 -0
  35. package/cjs/sync/submitters/uniqueKeysSubmitter.js +26 -0
  36. package/cjs/trackers/impressionsTracker.js +22 -41
  37. package/cjs/trackers/strategy/strategyDebug.js +25 -0
  38. package/cjs/trackers/strategy/strategyNone.js +29 -0
  39. package/cjs/trackers/strategy/strategyOptimized.js +35 -0
  40. package/cjs/trackers/telemetryTracker.js +6 -0
  41. package/cjs/trackers/uniqueKeysTracker.js +38 -0
  42. package/cjs/types.js +2 -0
  43. package/cjs/utils/constants/index.js +4 -2
  44. package/cjs/utils/key/index.js +1 -1
  45. package/cjs/utils/settingsValidation/impressionsMode.js +2 -2
  46. package/cjs/utils/settingsValidation/index.js +4 -1
  47. package/esm/consent/sdkUserConsent.js +2 -2
  48. package/esm/evaluator/index.js +10 -11
  49. package/esm/integrations/ga/GaToSplit.js +8 -5
  50. package/esm/listeners/browser.js +3 -2
  51. package/esm/logger/constants.js +1 -0
  52. package/esm/sdkClient/clientAttributesDecoration.js +1 -1
  53. package/esm/sdkClient/sdkClient.js +3 -1
  54. package/esm/sdkFactory/index.js +28 -8
  55. package/esm/sdkManager/index.js +3 -11
  56. package/esm/services/splitApi.js +20 -1
  57. package/esm/storages/AbstractSplitsCacheAsync.js +7 -9
  58. package/esm/storages/AbstractSplitsCacheSync.js +7 -9
  59. package/esm/storages/KeyBuilderSS.js +6 -0
  60. package/esm/storages/dataLoader.js +1 -1
  61. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +5 -6
  62. package/esm/storages/inLocalStorage/index.js +5 -1
  63. package/esm/storages/inMemory/AttributesCacheInMemory.js +1 -1
  64. package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +12 -1
  65. package/esm/storages/inMemory/InMemoryStorage.js +6 -2
  66. package/esm/storages/inMemory/InMemoryStorageCS.js +6 -2
  67. package/esm/storages/inMemory/SplitsCacheInMemory.js +7 -10
  68. package/esm/storages/inMemory/uniqueKeysCacheInMemory.js +70 -0
  69. package/esm/storages/inMemory/uniqueKeysCacheInMemoryCS.js +75 -0
  70. package/esm/storages/inRedis/ImpressionCountsCacheInRedis.js +46 -0
  71. package/esm/storages/inRedis/SplitsCacheInRedis.js +15 -9
  72. package/esm/storages/inRedis/constants.js +3 -0
  73. package/esm/storages/inRedis/index.js +16 -2
  74. package/esm/storages/inRedis/uniqueKeysCacheInRedis.js +53 -0
  75. package/esm/storages/pluggable/SplitsCachePluggable.js +14 -9
  76. package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +2 -3
  77. package/esm/sync/polling/updaters/splitChangesUpdater.js +1 -1
  78. package/esm/sync/submitters/submitterManager.js +3 -0
  79. package/esm/sync/submitters/telemetrySubmitter.js +2 -1
  80. package/esm/sync/submitters/uniqueKeysSubmitter.js +22 -0
  81. package/esm/trackers/impressionsTracker.js +22 -41
  82. package/esm/trackers/strategy/strategyDebug.js +21 -0
  83. package/esm/trackers/strategy/strategyNone.js +25 -0
  84. package/esm/trackers/strategy/strategyOptimized.js +31 -0
  85. package/esm/trackers/telemetryTracker.js +6 -0
  86. package/esm/trackers/uniqueKeysTracker.js +34 -0
  87. package/esm/types.js +1 -0
  88. package/esm/utils/constants/index.js +2 -0
  89. package/esm/utils/key/index.js +1 -1
  90. package/esm/utils/settingsValidation/impressionsMode.js +3 -3
  91. package/esm/utils/settingsValidation/index.js +4 -1
  92. package/package.json +5 -4
  93. package/src/consent/sdkUserConsent.ts +5 -6
  94. package/src/dtos/types.ts +8 -0
  95. package/src/evaluator/Engine.ts +3 -3
  96. package/src/evaluator/combiners/and.ts +1 -1
  97. package/src/evaluator/combiners/ifelseif.ts +3 -3
  98. package/src/evaluator/condition/engineUtils.ts +1 -1
  99. package/src/evaluator/condition/index.ts +6 -6
  100. package/src/evaluator/index.ts +18 -19
  101. package/src/evaluator/matchers/all.ts +1 -1
  102. package/src/evaluator/matchers/between.ts +1 -1
  103. package/src/evaluator/matchers/boolean.ts +1 -1
  104. package/src/evaluator/matchers/cont_all.ts +1 -1
  105. package/src/evaluator/matchers/cont_any.ts +1 -1
  106. package/src/evaluator/matchers/cont_str.ts +1 -1
  107. package/src/evaluator/matchers/dependency.ts +1 -1
  108. package/src/evaluator/matchers/eq.ts +1 -1
  109. package/src/evaluator/matchers/eq_set.ts +1 -1
  110. package/src/evaluator/matchers/ew.ts +1 -1
  111. package/src/evaluator/matchers/gte.ts +1 -1
  112. package/src/evaluator/matchers/index.ts +1 -1
  113. package/src/evaluator/matchers/lte.ts +1 -1
  114. package/src/evaluator/matchers/part_of.ts +1 -1
  115. package/src/evaluator/matchers/segment.ts +1 -1
  116. package/src/evaluator/matchers/string.ts +1 -1
  117. package/src/evaluator/matchers/sw.ts +1 -1
  118. package/src/evaluator/matchers/whitelist.ts +1 -1
  119. package/src/evaluator/parser/index.ts +3 -3
  120. package/src/evaluator/types.ts +6 -6
  121. package/src/evaluator/value/index.ts +4 -4
  122. package/src/evaluator/value/sanitize.ts +4 -4
  123. package/src/integrations/ga/GaToSplit.ts +15 -11
  124. package/src/integrations/ga/SplitToGa.ts +10 -10
  125. package/src/integrations/ga/types.ts +4 -4
  126. package/src/integrations/pluggable.ts +3 -3
  127. package/src/integrations/types.ts +4 -3
  128. package/src/listeners/browser.ts +3 -2
  129. package/src/logger/constants.ts +1 -0
  130. package/src/logger/index.ts +3 -3
  131. package/src/logger/sdkLogger.ts +2 -1
  132. package/src/logger/types.ts +16 -0
  133. package/src/readiness/sdkReadinessManager.ts +1 -1
  134. package/src/readiness/types.ts +9 -2
  135. package/src/sdkClient/client.ts +13 -13
  136. package/src/sdkClient/clientAttributesDecoration.ts +13 -13
  137. package/src/sdkClient/clientCS.ts +4 -3
  138. package/src/sdkClient/clientInputValidation.ts +15 -15
  139. package/src/sdkClient/sdkClient.ts +5 -3
  140. package/src/sdkClient/sdkClientMethod.ts +2 -2
  141. package/src/sdkClient/sdkClientMethodCS.ts +9 -9
  142. package/src/sdkClient/sdkClientMethodCSWithTT.ts +9 -9
  143. package/src/sdkFactory/index.ts +34 -11
  144. package/src/sdkFactory/types.ts +11 -8
  145. package/src/sdkManager/index.ts +7 -16
  146. package/src/services/splitApi.ts +22 -1
  147. package/src/services/types.ts +6 -0
  148. package/src/storages/AbstractSplitsCacheAsync.ts +12 -14
  149. package/src/storages/AbstractSplitsCacheSync.ts +14 -16
  150. package/src/storages/KeyBuilderSS.ts +8 -0
  151. package/src/storages/dataLoader.ts +3 -3
  152. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
  153. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +10 -12
  154. package/src/storages/inLocalStorage/index.ts +6 -4
  155. package/src/storages/inMemory/AttributesCacheInMemory.ts +12 -13
  156. package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
  157. package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +16 -1
  158. package/src/storages/inMemory/InMemoryStorage.ts +5 -2
  159. package/src/storages/inMemory/InMemoryStorageCS.ts +6 -2
  160. package/src/storages/inMemory/SplitsCacheInMemory.ts +10 -14
  161. package/src/storages/inMemory/uniqueKeysCacheInMemory.ts +82 -0
  162. package/src/storages/inMemory/uniqueKeysCacheInMemoryCS.ts +88 -0
  163. package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
  164. package/src/storages/inRedis/ImpressionCountsCacheInRedis.ts +51 -0
  165. package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
  166. package/src/storages/inRedis/RedisAdapter.ts +1 -1
  167. package/src/storages/inRedis/SegmentsCacheInRedis.ts +1 -1
  168. package/src/storages/inRedis/SplitsCacheInRedis.ts +22 -18
  169. package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
  170. package/src/storages/inRedis/constants.ts +3 -0
  171. package/src/storages/inRedis/index.ts +14 -6
  172. package/src/storages/inRedis/uniqueKeysCacheInRedis.ts +63 -0
  173. package/src/storages/pluggable/EventsCachePluggable.ts +4 -4
  174. package/src/storages/pluggable/ImpressionsCachePluggable.ts +1 -1
  175. package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
  176. package/src/storages/pluggable/SplitsCachePluggable.ts +21 -18
  177. package/src/storages/pluggable/TelemetryCachePluggable.ts +1 -1
  178. package/src/storages/pluggable/index.ts +3 -3
  179. package/src/storages/pluggable/wrapperAdapter.ts +1 -1
  180. package/src/storages/types.ts +60 -62
  181. package/src/sync/offline/LocalhostFromObject.ts +4 -4
  182. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
  183. package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +5 -6
  184. package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
  185. package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
  186. package/src/sync/polling/updaters/splitChangesUpdater.ts +3 -3
  187. package/src/sync/streaming/SSEHandler/index.ts +1 -1
  188. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  189. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
  190. package/src/sync/submitters/submitter.ts +1 -1
  191. package/src/sync/submitters/submitterManager.ts +2 -0
  192. package/src/sync/submitters/telemetrySubmitter.ts +4 -3
  193. package/src/sync/submitters/types.ts +22 -3
  194. package/src/sync/submitters/uniqueKeysSubmitter.ts +35 -0
  195. package/src/sync/syncTask.ts +1 -1
  196. package/src/trackers/eventTracker.ts +3 -3
  197. package/src/trackers/impressionsTracker.ts +30 -51
  198. package/src/trackers/strategy/strategyDebug.ts +28 -0
  199. package/src/trackers/strategy/strategyNone.ts +34 -0
  200. package/src/trackers/strategy/strategyOptimized.ts +42 -0
  201. package/src/trackers/telemetryTracker.ts +7 -2
  202. package/src/trackers/types.ts +36 -4
  203. package/src/trackers/uniqueKeysTracker.ts +48 -0
  204. package/src/types.ts +1267 -0
  205. package/src/utils/constants/index.ts +3 -1
  206. package/src/utils/inputValidation/apiKey.ts +1 -1
  207. package/src/utils/inputValidation/attribute.ts +1 -1
  208. package/src/utils/inputValidation/attributes.ts +3 -3
  209. package/src/utils/inputValidation/event.ts +1 -1
  210. package/src/utils/inputValidation/eventProperties.ts +3 -3
  211. package/src/utils/inputValidation/eventValue.ts +1 -1
  212. package/src/utils/inputValidation/isOperational.ts +1 -1
  213. package/src/utils/inputValidation/key.ts +3 -3
  214. package/src/utils/inputValidation/preloadedData.ts +3 -3
  215. package/src/utils/inputValidation/split.ts +1 -1
  216. package/src/utils/inputValidation/splitExistance.ts +1 -1
  217. package/src/utils/inputValidation/splits.ts +1 -1
  218. package/src/utils/inputValidation/trafficType.ts +1 -1
  219. package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
  220. package/src/utils/key/index.ts +9 -9
  221. package/src/utils/settingsValidation/consent.ts +2 -1
  222. package/src/utils/settingsValidation/impressionsMode.ts +6 -6
  223. package/src/utils/settingsValidation/index.ts +5 -1
  224. package/src/utils/settingsValidation/integrations/common.ts +1 -1
  225. package/src/utils/settingsValidation/integrations/configurable.ts +1 -1
  226. package/src/utils/settingsValidation/integrations/pluggable.ts +2 -1
  227. package/src/utils/settingsValidation/localhost/builtin.ts +2 -1
  228. package/src/utils/settingsValidation/localhost/pluggable.ts +2 -1
  229. package/src/utils/settingsValidation/logger/builtinLogger.ts +2 -1
  230. package/src/utils/settingsValidation/logger/pluggableLogger.ts +2 -1
  231. package/src/utils/settingsValidation/splitFilters.ts +9 -7
  232. package/src/utils/settingsValidation/storage/storageCS.ts +2 -1
  233. package/types/consent/index.d.ts +2 -0
  234. package/types/consent/sdkUserConsent.d.ts +13 -0
  235. package/types/dtos/types.d.ts +172 -0
  236. package/types/evaluator/Engine.d.ts +15 -0
  237. package/types/evaluator/combiners/and.d.ts +4 -0
  238. package/types/evaluator/combiners/ifelseif.d.ts +3 -0
  239. package/types/evaluator/condition/engineUtils.d.ts +11 -0
  240. package/types/evaluator/condition/index.d.ts +6 -0
  241. package/types/evaluator/convertions/index.d.ts +2 -0
  242. package/types/evaluator/index.d.ts +7 -0
  243. package/types/evaluator/matchers/all.d.ts +2 -0
  244. package/types/evaluator/matchers/between.d.ts +3 -0
  245. package/types/evaluator/matchers/boolean.d.ts +2 -0
  246. package/types/evaluator/matchers/cont_all.d.ts +2 -0
  247. package/types/evaluator/matchers/cont_any.d.ts +2 -0
  248. package/types/evaluator/matchers/cont_str.d.ts +2 -0
  249. package/types/evaluator/matchers/dependency.d.ts +5 -0
  250. package/types/evaluator/matchers/eq.d.ts +2 -0
  251. package/types/evaluator/matchers/eq_set.d.ts +2 -0
  252. package/types/evaluator/matchers/ew.d.ts +2 -0
  253. package/types/evaluator/matchers/gte.d.ts +2 -0
  254. package/types/evaluator/matchers/index.d.ts +7 -0
  255. package/types/evaluator/matchers/lte.d.ts +2 -0
  256. package/types/evaluator/matchers/matcherTypes.d.ts +10 -0
  257. package/types/evaluator/matchers/part_of.d.ts +2 -0
  258. package/types/evaluator/matchers/segment.d.ts +6 -0
  259. package/types/evaluator/matchers/string.d.ts +2 -0
  260. package/types/evaluator/matchers/sw.d.ts +2 -0
  261. package/types/evaluator/matchers/whitelist.d.ts +3 -0
  262. package/types/evaluator/matchersTransform/index.d.ts +6 -0
  263. package/types/evaluator/matchersTransform/segment.d.ts +5 -0
  264. package/types/evaluator/matchersTransform/set.d.ts +5 -0
  265. package/types/evaluator/matchersTransform/unaryNumeric.d.ts +5 -0
  266. package/types/evaluator/matchersTransform/whitelist.d.ts +5 -0
  267. package/types/evaluator/parser/index.d.ts +5 -0
  268. package/types/evaluator/treatments/index.d.ts +8 -0
  269. package/types/evaluator/types.d.ts +28 -0
  270. package/types/evaluator/value/index.d.ts +7 -0
  271. package/types/evaluator/value/sanitize.d.ts +7 -0
  272. package/types/index.d.ts +5 -0
  273. package/types/integrations/browser.d.ts +12 -0
  274. package/types/integrations/ga/GaToSplit.d.ts +40 -0
  275. package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +3 -0
  276. package/types/integrations/ga/SplitToGa.d.ts +34 -0
  277. package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +3 -0
  278. package/types/integrations/ga/types.d.ts +148 -0
  279. package/types/integrations/pluggable.d.ts +11 -0
  280. package/types/integrations/types.d.ts +18 -0
  281. package/types/listeners/browser.d.ts +40 -0
  282. package/types/listeners/node.d.ts +22 -0
  283. package/types/listeners/types.d.ts +4 -0
  284. package/types/logger/browser/DebugLogger.d.ts +2 -0
  285. package/types/logger/browser/ErrorLogger.d.ts +2 -0
  286. package/types/logger/browser/InfoLogger.d.ts +2 -0
  287. package/types/logger/browser/WarnLogger.d.ts +2 -0
  288. package/types/logger/constants.d.ts +142 -0
  289. package/types/logger/index.d.ts +22 -0
  290. package/types/logger/messages/debug.d.ts +1 -0
  291. package/types/logger/messages/error.d.ts +1 -0
  292. package/types/logger/messages/info.d.ts +1 -0
  293. package/types/logger/messages/warn.d.ts +1 -0
  294. package/types/logger/sdkLogger.d.ts +8 -0
  295. package/types/logger/types.d.ts +17 -0
  296. package/types/readiness/constants.d.ts +7 -0
  297. package/types/readiness/readinessManager.d.ts +6 -0
  298. package/types/readiness/sdkReadinessManager.d.ts +11 -0
  299. package/types/readiness/types.d.ts +60 -0
  300. package/types/sdkClient/client.d.ts +6 -0
  301. package/types/sdkClient/clientAttributesDecoration.d.ts +51 -0
  302. package/types/sdkClient/clientCS.d.ts +10 -0
  303. package/types/sdkClient/clientInputValidation.d.ts +7 -0
  304. package/types/sdkClient/sdkClient.d.ts +6 -0
  305. package/types/sdkClient/sdkClientMethod.d.ts +6 -0
  306. package/types/sdkClient/sdkClientMethodCS.d.ts +7 -0
  307. package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +8 -0
  308. package/types/sdkClient/types.d.ts +18 -0
  309. package/types/sdkFactory/index.d.ts +6 -0
  310. package/types/sdkFactory/types.d.ts +82 -0
  311. package/types/sdkManager/index.d.ts +5 -0
  312. package/types/services/splitApi.d.ts +11 -0
  313. package/types/services/splitHttpClient.d.ts +10 -0
  314. package/types/services/types.d.ts +54 -0
  315. package/types/storages/AbstractSegmentsCacheSync.d.ts +55 -0
  316. package/types/storages/AbstractSplitsCacheAsync.d.ts +37 -0
  317. package/types/storages/AbstractSplitsCacheSync.d.ts +42 -0
  318. package/types/storages/KeyBuilder.d.ts +14 -0
  319. package/types/storages/KeyBuilderCS.d.ts +16 -0
  320. package/types/storages/KeyBuilderSS.d.ts +17 -0
  321. package/types/storages/dataLoader.d.ts +10 -0
  322. package/types/storages/findLatencyIndex.d.ts +7 -0
  323. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +25 -0
  324. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +51 -0
  325. package/types/storages/inLocalStorage/constants.d.ts +2 -0
  326. package/types/storages/inLocalStorage/index.d.ts +8 -0
  327. package/types/storages/inMemory/AttributesCacheInMemory.d.ts +43 -0
  328. package/types/storages/inMemory/CountsCacheInMemory.d.ts +20 -0
  329. package/types/storages/inMemory/EventsCacheInMemory.d.ts +35 -0
  330. package/types/storages/inMemory/ImpressionCountsCacheInMemory.d.ts +28 -0
  331. package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +30 -0
  332. package/types/storages/inMemory/InMemoryStorage.d.ts +10 -0
  333. package/types/storages/inMemory/InMemoryStorageCS.d.ts +10 -0
  334. package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +20 -0
  335. package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +22 -0
  336. package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +19 -0
  337. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +21 -0
  338. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +53 -0
  339. package/types/storages/inMemory/uniqueKeysCacheInMemory.d.ts +35 -0
  340. package/types/storages/inMemory/uniqueKeysCacheInMemoryCS.d.ts +37 -0
  341. package/types/storages/inRedis/CountsCacheInRedis.d.ts +9 -0
  342. package/types/storages/inRedis/EventsCacheInRedis.d.ts +32 -0
  343. package/types/storages/inRedis/ImpressionCountsCacheInRedis.d.ts +14 -0
  344. package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +18 -0
  345. package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +9 -0
  346. package/types/storages/inRedis/RedisAdapter.d.ts +24 -0
  347. package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +18 -0
  348. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +92 -0
  349. package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +20 -0
  350. package/types/storages/inRedis/constants.d.ts +4 -0
  351. package/types/storages/inRedis/index.d.ts +10 -0
  352. package/types/storages/inRedis/uniqueKeysCacheInRedis.d.ts +15 -0
  353. package/types/storages/metadataBuilder.d.ts +3 -0
  354. package/types/storages/pluggable/EventsCachePluggable.d.ts +38 -0
  355. package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +35 -0
  356. package/types/storages/pluggable/SegmentsCachePluggable.d.ts +54 -0
  357. package/types/storages/pluggable/SplitsCachePluggable.d.ts +90 -0
  358. package/types/storages/pluggable/TelemetryCachePluggable.d.ts +18 -0
  359. package/types/storages/pluggable/constants.d.ts +1 -0
  360. package/types/storages/pluggable/inMemoryWrapper.d.ts +13 -0
  361. package/types/storages/pluggable/index.d.ts +9 -0
  362. package/types/storages/pluggable/wrapperAdapter.d.ts +12 -0
  363. package/types/storages/types.d.ts +417 -0
  364. package/types/sync/offline/LocalhostFromFile.d.ts +2 -0
  365. package/types/sync/offline/LocalhostFromObject.d.ts +2 -0
  366. package/types/sync/offline/splitsParser/parseCondition.d.ts +7 -0
  367. package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +2 -0
  368. package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +3 -0
  369. package/types/sync/offline/splitsParser/types.d.ts +3 -0
  370. package/types/sync/offline/syncManagerOffline.d.ts +10 -0
  371. package/types/sync/offline/syncTasks/fromObjectSyncTask.d.ts +17 -0
  372. package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +7 -0
  373. package/types/sync/polling/fetchers/segmentChangesFetcher.d.ts +7 -0
  374. package/types/sync/polling/fetchers/splitChangesFetcher.d.ts +7 -0
  375. package/types/sync/polling/fetchers/types.d.ts +5 -0
  376. package/types/sync/polling/pollingManagerCS.d.ts +7 -0
  377. package/types/sync/polling/pollingManagerSS.d.ts +6 -0
  378. package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +9 -0
  379. package/types/sync/polling/syncTasks/segmentsSyncTask.d.ts +9 -0
  380. package/types/sync/polling/syncTasks/splitsSyncTask.d.ts +9 -0
  381. package/types/sync/polling/types.d.ts +26 -0
  382. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +13 -0
  383. package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +18 -0
  384. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +39 -0
  385. package/types/sync/streaming/AuthClient/index.d.ts +12 -0
  386. package/types/sync/streaming/AuthClient/types.d.ts +17 -0
  387. package/types/sync/streaming/SSEClient/index.d.ts +34 -0
  388. package/types/sync/streaming/SSEClient/types.d.ts +11 -0
  389. package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +14 -0
  390. package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +20 -0
  391. package/types/sync/streaming/SSEHandler/index.d.ts +11 -0
  392. package/types/sync/streaming/SSEHandler/types.d.ts +67 -0
  393. package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +6 -0
  394. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +8 -0
  395. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +12 -0
  396. package/types/sync/streaming/UpdateWorkers/constants.d.ts +3 -0
  397. package/types/sync/streaming/UpdateWorkers/types.d.ts +4 -0
  398. package/types/sync/streaming/constants.d.ts +34 -0
  399. package/types/sync/streaming/mySegmentsV2utils.d.ts +27 -0
  400. package/types/sync/streaming/pushManager.d.ts +9 -0
  401. package/types/sync/streaming/types.d.ts +35 -0
  402. package/types/sync/submitters/eventsSubmitter.d.ts +5 -0
  403. package/types/sync/submitters/eventsSyncTask.d.ts +8 -0
  404. package/types/sync/submitters/impressionCountsSubmitter.d.ts +10 -0
  405. package/types/sync/submitters/impressionCountsSubmitterInRedis.d.ts +5 -0
  406. package/types/sync/submitters/impressionCountsSyncTask.d.ts +13 -0
  407. package/types/sync/submitters/impressionsSubmitter.d.ts +11 -0
  408. package/types/sync/submitters/impressionsSyncTask.d.ts +14 -0
  409. package/types/sync/submitters/metricsSyncTask.d.ts +12 -0
  410. package/types/sync/submitters/submitter.d.ts +12 -0
  411. package/types/sync/submitters/submitterManager.d.ts +3 -0
  412. package/types/sync/submitters/submitterSyncTask.d.ts +10 -0
  413. package/types/sync/submitters/telemetrySubmitter.d.ts +25 -0
  414. package/types/sync/submitters/types.d.ts +194 -0
  415. package/types/sync/submitters/uniqueKeysSubmitter.d.ts +5 -0
  416. package/types/sync/submitters/uniqueKeysSubmitterInRedis.d.ts +5 -0
  417. package/types/sync/syncManagerOnline.d.ts +13 -0
  418. package/types/sync/syncTask.d.ts +13 -0
  419. package/types/sync/syncTaskComposite.d.ts +5 -0
  420. package/types/sync/types.d.ts +43 -0
  421. package/types/trackers/eventTracker.d.ts +10 -0
  422. package/types/trackers/filter/bloomFilter.d.ts +10 -0
  423. package/types/trackers/filter/dictionaryFilter.d.ts +8 -0
  424. package/types/trackers/filter/types.d.ts +5 -0
  425. package/types/trackers/impressionObserver/ImpressionObserver.d.ts +8 -0
  426. package/types/trackers/impressionObserver/buildKey.d.ts +2 -0
  427. package/types/trackers/impressionObserver/impressionObserverCS.d.ts +4 -0
  428. package/types/trackers/impressionObserver/impressionObserverSS.d.ts +4 -0
  429. package/types/trackers/impressionObserver/types.d.ts +4 -0
  430. package/types/trackers/impressionObserver/utils.d.ts +13 -0
  431. package/types/trackers/impressionsTracker.d.ts +13 -0
  432. package/types/trackers/strategy/strategyDebug.d.ts +9 -0
  433. package/types/trackers/strategy/strategyNone.d.ts +10 -0
  434. package/types/trackers/strategy/strategyOptimized.d.ts +11 -0
  435. package/types/trackers/telemetryTracker.d.ts +3 -0
  436. package/types/trackers/types.d.ts +63 -0
  437. package/types/trackers/uniqueKeysTracker.d.ts +13 -0
  438. package/types/types.d.ts +1265 -0
  439. package/types/utils/Backoff.d.ts +25 -0
  440. package/types/utils/LRUCache/LinkedList.d.ts +34 -0
  441. package/types/utils/LRUCache/index.d.ts +16 -0
  442. package/types/utils/MinEventEmitter.d.ts +12 -0
  443. package/types/utils/MinEvents.d.ts +4 -0
  444. package/types/utils/base64/index.d.ts +30 -0
  445. package/types/utils/constants/browser.d.ts +3 -0
  446. package/types/utils/constants/index.d.ts +64 -0
  447. package/types/utils/decompress/index.d.ts +16 -0
  448. package/types/utils/env/isLocalStorageAvailable.d.ts +1 -0
  449. package/types/utils/env/isNode.d.ts +5 -0
  450. package/types/utils/inputValidation/apiKey.d.ts +7 -0
  451. package/types/utils/inputValidation/attribute.d.ts +2 -0
  452. package/types/utils/inputValidation/attributes.d.ts +4 -0
  453. package/types/utils/inputValidation/event.d.ts +2 -0
  454. package/types/utils/inputValidation/eventProperties.d.ts +6 -0
  455. package/types/utils/inputValidation/eventValue.d.ts +2 -0
  456. package/types/utils/inputValidation/index.d.ts +13 -0
  457. package/types/utils/inputValidation/isOperational.d.ts +4 -0
  458. package/types/utils/inputValidation/key.d.ts +3 -0
  459. package/types/utils/inputValidation/preloadedData.d.ts +3 -0
  460. package/types/utils/inputValidation/split.d.ts +2 -0
  461. package/types/utils/inputValidation/splitExistance.d.ts +7 -0
  462. package/types/utils/inputValidation/splits.d.ts +2 -0
  463. package/types/utils/inputValidation/trafficType.d.ts +2 -0
  464. package/types/utils/inputValidation/trafficTypeExistance.d.ts +9 -0
  465. package/types/utils/jwt/index.d.ts +5 -0
  466. package/types/utils/jwt/types.d.ts +5 -0
  467. package/types/utils/key/index.d.ts +8 -0
  468. package/types/utils/labels/index.d.ts +7 -0
  469. package/types/utils/lang/binarySearch.d.ts +9 -0
  470. package/types/utils/lang/getFnName.d.ts +4 -0
  471. package/types/utils/lang/getGlobal.d.ts +4 -0
  472. package/types/utils/lang/index.d.ts +105 -0
  473. package/types/utils/lang/maps.d.ts +55 -0
  474. package/types/utils/lang/objectAssign.d.ts +3 -0
  475. package/types/utils/lang/sets.d.ts +60 -0
  476. package/types/utils/murmur3/common.d.ts +12 -0
  477. package/types/utils/murmur3/legacy.d.ts +2 -0
  478. package/types/utils/murmur3/murmur3.d.ts +2 -0
  479. package/types/utils/murmur3/murmur3_128.d.ts +6 -0
  480. package/types/utils/murmur3/murmur3_128_x86.d.ts +7 -0
  481. package/types/utils/murmur3/murmur3_64.d.ts +10 -0
  482. package/types/utils/murmur3/utfx.d.ts +27 -0
  483. package/types/utils/promise/thenable.d.ts +1 -0
  484. package/types/utils/promise/timeout.d.ts +1 -0
  485. package/types/utils/promise/wrapper.d.ts +21 -0
  486. package/types/utils/settingsValidation/consent.d.ts +6 -0
  487. package/types/utils/settingsValidation/impressionsMode.d.ts +3 -0
  488. package/types/utils/settingsValidation/index.d.ts +52 -0
  489. package/types/utils/settingsValidation/integrations/common.d.ts +14 -0
  490. package/types/utils/settingsValidation/integrations/configurable.d.ts +13 -0
  491. package/types/utils/settingsValidation/integrations/pluggable.d.ts +13 -0
  492. package/types/utils/settingsValidation/localhost/builtin.d.ts +16 -0
  493. package/types/utils/settingsValidation/localhost/pluggable.d.ts +16 -0
  494. package/types/utils/settingsValidation/logger/builtinLogger.d.ts +10 -0
  495. package/types/utils/settingsValidation/logger/commons.d.ts +9 -0
  496. package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +11 -0
  497. package/types/utils/settingsValidation/mode.d.ts +1 -0
  498. package/types/utils/settingsValidation/runtime.d.ts +2 -0
  499. package/types/utils/settingsValidation/splitFilters.d.ts +16 -0
  500. package/types/utils/settingsValidation/storage/storageCS.d.ts +21 -0
  501. package/types/utils/settingsValidation/types.d.ts +32 -0
  502. package/types/utils/settingsValidation/url.d.ts +10 -0
  503. package/types/utils/time/index.d.ts +4 -0
  504. package/types/utils/timeTracker/index.d.ts +70 -0
  505. package/types/utils/timeTracker/now/browser.d.ts +1 -0
  506. package/types/utils/timeTracker/now/node.d.ts +1 -0
  507. package/types/utils/timeTracker/timer.d.ts +1 -0
  508. package/src/logger/.DS_Store +0 -0
  509. package/src/types.d.ts +0 -1581
@@ -0,0 +1,37 @@
1
+ import { IUniqueKeysCacheBase } from '../types';
2
+ import { UniqueKeysPayloadCs } from '../../sync/submitters/types';
3
+ export declare class UniqueKeysCacheInMemoryCS implements IUniqueKeysCacheBase {
4
+ private onFullQueue?;
5
+ private readonly maxStorage;
6
+ private uniqueTrackerSize;
7
+ private uniqueKeysTracker;
8
+ /**
9
+ *
10
+ * @param impressionsQueueSize number of queued impressions to call onFullQueueCb.
11
+ * Default value is 0, that means no maximum value, in case we want to avoid this being triggered.
12
+ */
13
+ constructor(uniqueKeysQueueSize?: number);
14
+ setOnFullQueueCb(cb: () => void): void;
15
+ /**
16
+ * Store unique keys in sequential order
17
+ * key: string = key.
18
+ * value: HashSet<string> = set of split names.
19
+ */
20
+ track(key: string, featureName: string): void;
21
+ /**
22
+ * Clear the data stored on the cache.
23
+ */
24
+ clear(): void;
25
+ /**
26
+ * Pop the collected data, used as payload for posting.
27
+ */
28
+ pop(): UniqueKeysPayloadCs;
29
+ /**
30
+ * Check if the cache is empty.
31
+ */
32
+ isEmpty(): boolean;
33
+ /**
34
+ * Converts `uniqueKeys` data from cache into request payload.
35
+ */
36
+ private fromUniqueKeysCollector;
37
+ }
@@ -0,0 +1,9 @@
1
+ import { ICountsCacheAsync } from '../types';
2
+ import { KeyBuilderSS } from '../KeyBuilderSS';
3
+ import { Redis } from 'ioredis';
4
+ export declare class CountsCacheInRedis implements ICountsCacheAsync {
5
+ private readonly redis;
6
+ private readonly keys;
7
+ constructor(keys: KeyBuilderSS, redis: Redis);
8
+ track(metricName: string): Promise<boolean>;
9
+ }
@@ -0,0 +1,32 @@
1
+ import { IEventsCacheAsync } from '../types';
2
+ import { IMetadata } from '../../dtos/types';
3
+ import { Redis } from 'ioredis';
4
+ import { SplitIO } from '../../types';
5
+ import { ILogger } from '../../logger/types';
6
+ import { StoredEventWithMetadata } from '../../sync/submitters/types';
7
+ export declare class EventsCacheInRedis implements IEventsCacheAsync {
8
+ private readonly log;
9
+ private readonly key;
10
+ private readonly redis;
11
+ private readonly metadata;
12
+ constructor(log: ILogger, key: string, redis: Redis, metadata: IMetadata);
13
+ /**
14
+ * Add a new event object into the queue.
15
+ * Unlike `impressions::track`, result promise is never rejected.
16
+ */
17
+ track(eventData: SplitIO.EventData): Promise<boolean>;
18
+ /**
19
+ * Generates the JSON as we'll store it on Redis.
20
+ */
21
+ private _toJSON;
22
+ count(): Promise<number>;
23
+ drop(count?: number): Promise<any>;
24
+ /**
25
+ * Pop the given number of events from the storage.
26
+ * The returned promise rejects if the wrapper operation fails.
27
+ *
28
+ * NOTE: this method doesn't take into account MAX_EVENT_SIZE or MAX_QUEUE_BYTE_SIZE limits.
29
+ * It is the submitter responsability to handle that.
30
+ */
31
+ popNWithMetadata(count: number): Promise<StoredEventWithMetadata[]>;
32
+ }
@@ -0,0 +1,14 @@
1
+ import { Redis } from 'ioredis';
2
+ import { ILogger } from '../../logger/types';
3
+ import { ImpressionCountsCacheInMemory } from '../inMemory/ImpressionCountsCacheInMemory';
4
+ export declare class ImpressionCountsCacheInRedis extends ImpressionCountsCacheInMemory {
5
+ private readonly log;
6
+ private readonly key;
7
+ private readonly redis;
8
+ private readonly refreshRate;
9
+ private intervalId;
10
+ constructor(log: ILogger, key: string, redis: Redis, impressionCountsCacheSize?: number, refreshRate?: number);
11
+ postImpressionCountsInRedis(): false | Promise<boolean | import("ioredis").BooleanResponse | undefined>;
12
+ start(): void;
13
+ stop(): void;
14
+ }
@@ -0,0 +1,18 @@
1
+ import { IImpressionsCacheAsync } from '../types';
2
+ import { IMetadata } from '../../dtos/types';
3
+ import { ImpressionDTO } from '../../types';
4
+ import { Redis } from 'ioredis';
5
+ import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
6
+ import { ILogger } from '../../logger/types';
7
+ export declare class ImpressionsCacheInRedis implements IImpressionsCacheAsync {
8
+ private readonly log;
9
+ private readonly key;
10
+ private readonly redis;
11
+ private readonly metadata;
12
+ constructor(log: ILogger, key: string, redis: Redis, metadata: IMetadata);
13
+ track(impressions: ImpressionDTO[]): Promise<void>;
14
+ private _toJSON;
15
+ count(): Promise<number>;
16
+ drop(count?: number): Promise<any>;
17
+ popNWithMetadata(count: number): Promise<StoredImpressionWithMetadata[]>;
18
+ }
@@ -0,0 +1,9 @@
1
+ import { ILatenciesCacheAsync } from '../types';
2
+ import { KeyBuilderSS } from '../KeyBuilderSS';
3
+ import { Redis } from 'ioredis';
4
+ export declare class LatenciesCacheInRedis implements ILatenciesCacheAsync {
5
+ private readonly redis;
6
+ private readonly keys;
7
+ constructor(keys: KeyBuilderSS, redis: Redis);
8
+ track(metricName: string, latency: number): Promise<boolean>;
9
+ }
@@ -0,0 +1,24 @@
1
+ import ioredis from 'ioredis';
2
+ import { ILogger } from '../../logger/types';
3
+ /**
4
+ * Redis adapter on top of the library of choice (written with ioredis) for some extra control.
5
+ */
6
+ export declare class RedisAdapter extends ioredis {
7
+ private readonly log;
8
+ private _options;
9
+ private _notReadyCommandsQueue?;
10
+ private _runningCommands;
11
+ constructor(log: ILogger, storageSettings: Record<string, any>);
12
+ _listenToEvents(): void;
13
+ _setTimeoutWrappers(): void;
14
+ _setDisconnectWrapper(): void;
15
+ /**
16
+ * Receives the options and returns an array of parameters for the ioredis constructor.
17
+ * Keeping both redis setup options for backwards compatibility.
18
+ */
19
+ static _defineLibrarySettings(options: Record<string, any>): any[];
20
+ /**
21
+ * Parses the options into what we care about.
22
+ */
23
+ static _defineOptions({ connectionTimeout, operationTimeout, url, host, port, db, pass, tls }: Record<string, any>): object;
24
+ }
@@ -0,0 +1,18 @@
1
+ import { Redis } from 'ioredis';
2
+ import { ILogger } from '../../logger/types';
3
+ import { KeyBuilderSS } from '../KeyBuilderSS';
4
+ import { ISegmentsCacheAsync } from '../types';
5
+ export declare class SegmentsCacheInRedis implements ISegmentsCacheAsync {
6
+ private readonly log;
7
+ private readonly redis;
8
+ private readonly keys;
9
+ constructor(log: ILogger, keys: KeyBuilderSS, redis: Redis);
10
+ addToSegment(name: string, segmentKeys: string[]): Promise<boolean>;
11
+ removeFromSegment(name: string, segmentKeys: string[]): Promise<boolean>;
12
+ isInSegment(name: string, key: string): Promise<boolean>;
13
+ setChangeNumber(name: string, changeNumber: number): Promise<boolean>;
14
+ getChangeNumber(name: string): Promise<number>;
15
+ registerSegments(segments: string[]): Promise<boolean>;
16
+ getRegisteredSegments(): Promise<string[]>;
17
+ clear(): Promise<boolean>;
18
+ }
@@ -0,0 +1,92 @@
1
+ import { KeyBuilderSS } from '../KeyBuilderSS';
2
+ import { Redis } from 'ioredis';
3
+ import { ILogger } from '../../logger/types';
4
+ import { ISplit } from '../../dtos/types';
5
+ import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
6
+ /**
7
+ * ISplitsCacheAsync implementation that stores split definitions in Redis.
8
+ * Supported by Node.
9
+ */
10
+ export declare class SplitsCacheInRedis extends AbstractSplitsCacheAsync {
11
+ private readonly log;
12
+ private readonly redis;
13
+ private readonly keys;
14
+ private redisError?;
15
+ constructor(log: ILogger, keys: KeyBuilderSS, redis: Redis);
16
+ private _decrementCounts;
17
+ private _incrementCounts;
18
+ /**
19
+ * Add a given split.
20
+ * The returned promise is resolved when the operation success
21
+ * or rejected if it fails (e.g., redis operation fails)
22
+ */
23
+ addSplit(name: string, split: ISplit): Promise<boolean>;
24
+ /**
25
+ * Add a list of splits.
26
+ * The returned promise is resolved when the operation success
27
+ * or rejected if it fails (e.g., redis operation fails)
28
+ */
29
+ addSplits(entries: [string, ISplit][]): Promise<boolean[]>;
30
+ /**
31
+ * Remove a given split.
32
+ * The returned promise is resolved when the operation success, with 1 or 0 indicating if the split existed or not.
33
+ * or rejected if it fails (e.g., redis operation fails).
34
+ */
35
+ removeSplit(name: string): Promise<number>;
36
+ /**
37
+ * Remove a list of splits.
38
+ * The returned promise is resolved when the operation success,
39
+ * or rejected if it fails (e.g., redis operation fails).
40
+ */
41
+ removeSplits(names: string[]): Promise<any>;
42
+ /**
43
+ * Get split definition or null if it's not defined.
44
+ * Returned promise is rejected if redis operation fails.
45
+ */
46
+ getSplit(name: string): Promise<ISplit | null>;
47
+ /**
48
+ * Set till number.
49
+ * The returned promise is resolved when the operation success,
50
+ * or rejected if it fails.
51
+ */
52
+ setChangeNumber(changeNumber: number): Promise<boolean>;
53
+ /**
54
+ * Get till number or -1 if it's not defined.
55
+ * The returned promise is resolved with the changeNumber or -1 if it doesn't exist or a redis operation fails.
56
+ * The promise will never be rejected.
57
+ */
58
+ getChangeNumber(): Promise<number>;
59
+ /**
60
+ * Get list of all split definitions.
61
+ * The returned promise is resolved with the list of split definitions,
62
+ * or rejected if redis operation fails.
63
+ *
64
+ * @TODO we need to benchmark which is the maximun number of commands we could
65
+ * pipeline without kill redis performance.
66
+ */
67
+ getAll(): Promise<ISplit[]>;
68
+ /**
69
+ * Get list of split names.
70
+ * The returned promise is resolved with the list of split names,
71
+ * or rejected if redis operation fails.
72
+ */
73
+ getSplitNames(): Promise<string[]>;
74
+ /**
75
+ * Check traffic type existence.
76
+ * The returned promise is resolved with a boolean indicating whether the TT exist or not.
77
+ * In case of redis operation failure, the promise resolves with a true value, assuming that the TT might exist.
78
+ * It will never be rejected.
79
+ */
80
+ trafficTypeExists(trafficType: string): Promise<boolean>;
81
+ /**
82
+ * Delete everything in the current database.
83
+ *
84
+ * @NOTE documentation says it never fails.
85
+ */
86
+ clear(): Promise<boolean>;
87
+ /**
88
+ * Fetches multiple splits definitions.
89
+ * Returned promise is rejected if redis operation fails.
90
+ */
91
+ getSplits(names: string[]): Promise<Record<string, ISplit | null>>;
92
+ }
@@ -0,0 +1,20 @@
1
+ import { ILogger } from '../../logger/types';
2
+ import { Method } from '../../sync/submitters/types';
3
+ import { KeyBuilderSS } from '../KeyBuilderSS';
4
+ import { ITelemetryCacheAsync } from '../types';
5
+ import { Redis } from 'ioredis';
6
+ export declare class TelemetryCacheInRedis implements ITelemetryCacheAsync {
7
+ private readonly log;
8
+ private readonly keys;
9
+ private readonly redis;
10
+ /**
11
+ * Create a Telemetry cache that uses Redis as storage.
12
+ * @param log Logger instance.
13
+ * @param keys Key builder.
14
+ * @param redis Redis client.
15
+ */
16
+ constructor(log: ILogger, keys: KeyBuilderSS, redis: Redis);
17
+ recordLatency(method: Method, latencyMs: number): Promise<number | void>;
18
+ recordException(method: Method): Promise<number | void>;
19
+ recordConfig(): Promise<number | void>;
20
+ }
@@ -0,0 +1,4 @@
1
+ export declare const LOG_PREFIX = "storage:redis: ";
2
+ export declare const DEFAULT_CACHE_SIZE = 30000;
3
+ export declare const REFRESH_RATE = 300000;
4
+ export declare const TTL_REFRESH = 3600;
@@ -0,0 +1,10 @@
1
+ import { IStorageAsyncFactory } from '../types';
2
+ export interface InRedisStorageOptions {
3
+ prefix?: string;
4
+ options?: Record<string, any>;
5
+ }
6
+ /**
7
+ * InRedis storage factory for consumer server-side SplitFactory, that uses `Ioredis` Redis client for Node.
8
+ * @see {@link https://www.npmjs.com/package/ioredis}
9
+ */
10
+ export declare function InRedisStorage(options?: InRedisStorageOptions): IStorageAsyncFactory;
@@ -0,0 +1,15 @@
1
+ import { IUniqueKeysCacheBase } from '../types';
2
+ import { Redis } from 'ioredis';
3
+ import { UniqueKeysCacheInMemory } from '../inMemory/uniqueKeysCacheInMemory';
4
+ import { ILogger } from '../../logger/types';
5
+ export declare class UniqueKeysCacheInRedis extends UniqueKeysCacheInMemory implements IUniqueKeysCacheBase {
6
+ private readonly log;
7
+ private readonly key;
8
+ private readonly redis;
9
+ private readonly refreshRate;
10
+ private intervalId;
11
+ constructor(log: ILogger, key: string, redis: Redis, uniqueKeysQueueSize?: number, refreshRate?: number);
12
+ postUniqueKeysInRedis(): Promise<boolean | import("ioredis").BooleanResponse | undefined>;
13
+ start(): void;
14
+ stop(): void;
15
+ }
@@ -0,0 +1,3 @@
1
+ import { IMetadata } from '../dtos/types';
2
+ import { ISettings } from '../types';
3
+ export declare function metadataBuilder(settings: Pick<ISettings, 'version' | 'runtime'>): IMetadata;
@@ -0,0 +1,38 @@
1
+ import { IPluggableStorageWrapper, IEventsCacheAsync } from '../types';
2
+ import { IMetadata } from '../../dtos/types';
3
+ import { SplitIO } from '../../types';
4
+ import { ILogger } from '../../logger/types';
5
+ import { StoredEventWithMetadata } from '../../sync/submitters/types';
6
+ export declare class EventsCachePluggable implements IEventsCacheAsync {
7
+ private readonly log;
8
+ private readonly wrapper;
9
+ private readonly key;
10
+ private readonly metadata;
11
+ constructor(log: ILogger, key: string, wrapper: IPluggableStorageWrapper, metadata: IMetadata);
12
+ /**
13
+ * Push given event to the storage.
14
+ * @param eventData Event item to push.
15
+ * @returns A promise that is resolved with a boolean value indicating if the push operation succeeded or failed.
16
+ * Unlike `impressions::track`, The promise will never be rejected.
17
+ */
18
+ track(eventData: SplitIO.EventData): Promise<boolean>;
19
+ private _toJSON;
20
+ /**
21
+ * Returns a promise that resolves with the count of stored events, or 0 if there was some error.
22
+ * The promise will never be rejected.
23
+ */
24
+ count(): Promise<number>;
25
+ /**
26
+ * Removes the given number of events from the store. If a number is not provided, it deletes all items.
27
+ * The returned promise rejects if the wrapper operation fails.
28
+ */
29
+ drop(count?: number): Promise<any>;
30
+ /**
31
+ * Pop the given number of events from the storage.
32
+ * The returned promise rejects if the wrapper operation fails.
33
+ *
34
+ * NOTE: this method doesn't take into account MAX_EVENT_SIZE or MAX_QUEUE_BYTE_SIZE limits.
35
+ * It is the submitter responsability to handle that.
36
+ */
37
+ popNWithMetadata(count: number): Promise<StoredEventWithMetadata[]>;
38
+ }
@@ -0,0 +1,35 @@
1
+ import { IPluggableStorageWrapper, IImpressionsCacheAsync } from '../types';
2
+ import { IMetadata } from '../../dtos/types';
3
+ import { ImpressionDTO } from '../../types';
4
+ import { ILogger } from '../../logger/types';
5
+ import { StoredImpressionWithMetadata } from '../../sync/submitters/types';
6
+ export declare class ImpressionsCachePluggable implements IImpressionsCacheAsync {
7
+ private readonly log;
8
+ private readonly key;
9
+ private readonly wrapper;
10
+ private readonly metadata;
11
+ constructor(log: ILogger, key: string, wrapper: IPluggableStorageWrapper, metadata: IMetadata);
12
+ /**
13
+ * Push given impressions to the storage.
14
+ * @param impressions List of impresions to push.
15
+ * @returns A promise that is resolved if the push operation succeeded
16
+ * or rejected if the wrapper operation fails.
17
+ */
18
+ track(impressions: ImpressionDTO[]): Promise<void>;
19
+ private _toJSON;
20
+ /**
21
+ * Returns a promise that resolves with the count of stored impressions, or 0 if there was some error.
22
+ * The promise will never be rejected.
23
+ */
24
+ count(): Promise<number>;
25
+ /**
26
+ * Removes the given number of impressions from the store. If a number is not provided, it deletes all items.
27
+ * The returned promise rejects if the wrapper operation fails.
28
+ */
29
+ drop(count?: number): Promise<void>;
30
+ /**
31
+ * Pop the given number of impressions from the store.
32
+ * The returned promise rejects if the wrapper operation fails.
33
+ */
34
+ popNWithMetadata(count: number): Promise<StoredImpressionWithMetadata[]>;
35
+ }
@@ -0,0 +1,54 @@
1
+ import { KeyBuilderSS } from '../KeyBuilderSS';
2
+ import { IPluggableStorageWrapper, ISegmentsCacheAsync } from '../types';
3
+ import { ILogger } from '../../logger/types';
4
+ /**
5
+ * ISegmentsCacheAsync implementation for pluggable storages.
6
+ */
7
+ export declare class SegmentsCachePluggable implements ISegmentsCacheAsync {
8
+ private readonly log;
9
+ private readonly keys;
10
+ private readonly wrapper;
11
+ constructor(log: ILogger, keys: KeyBuilderSS, wrapper: IPluggableStorageWrapper);
12
+ /**
13
+ * Add a list of `segmentKeys` to the given segment `name`.
14
+ * The returned promise is resolved when the operation success
15
+ * or rejected if wrapper operation fails.
16
+ */
17
+ addToSegment(name: string, segmentKeys: string[]): Promise<boolean | void>;
18
+ /**
19
+ * Remove a list of `segmentKeys` from the given segment `name`.
20
+ * The returned promise is resolved when the operation success
21
+ * or rejected if wrapper operation fails.
22
+ */
23
+ removeFromSegment(name: string, segmentKeys: string[]): Promise<boolean | void>;
24
+ /**
25
+ * Returns a promise that resolves with a boolean value indicating if `key` is part of `name` segment.
26
+ * Promise can be rejected if wrapper operation fails.
27
+ */
28
+ isInSegment(name: string, key: string): Promise<boolean>;
29
+ /**
30
+ * Set till number for the given segment `name`.
31
+ * The returned promise is resolved when the operation success,
32
+ * or rejected if it fails (e.g., wrapper operation fails).
33
+ */
34
+ setChangeNumber(name: string, changeNumber: number): Promise<boolean | void>;
35
+ /**
36
+ * Get till number or -1 if it's not defined.
37
+ * The returned promise is resolved with the changeNumber or -1 if it doesn't exist or a wrapper operation fails.
38
+ * The promise will never be rejected.
39
+ */
40
+ getChangeNumber(name: string): Promise<number>;
41
+ /**
42
+ * Add the given segment names to the set of registered segments.
43
+ * The returned promise is resolved when the operation success,
44
+ * or rejected if it fails (e.g., wrapper operation fails).
45
+ */
46
+ registerSegments(segments: string[]): Promise<boolean | void>;
47
+ /**
48
+ * Returns a promise that resolves with the set of registered segments in a list,
49
+ * or rejected if it fails (e.g., wrapper operation fails).
50
+ */
51
+ getRegisteredSegments(): Promise<string[]>;
52
+ /** @TODO implement if required by DataLoader or Producer mode */
53
+ clear(): Promise<boolean>;
54
+ }
@@ -0,0 +1,90 @@
1
+ import { KeyBuilder } from '../KeyBuilder';
2
+ import { IPluggableStorageWrapper } from '../types';
3
+ import { ILogger } from '../../logger/types';
4
+ import { ISplit } from '../../dtos/types';
5
+ import { AbstractSplitsCacheAsync } from '../AbstractSplitsCacheAsync';
6
+ /**
7
+ * ISplitsCacheAsync implementation for pluggable storages.
8
+ */
9
+ export declare class SplitsCachePluggable extends AbstractSplitsCacheAsync {
10
+ private readonly log;
11
+ private readonly keys;
12
+ private readonly wrapper;
13
+ /**
14
+ * Create a SplitsCache that uses a storage wrapper.
15
+ * @param log Logger instance.
16
+ * @param keys Key builder.
17
+ * @param wrapper Adapted wrapper storage.
18
+ */
19
+ constructor(log: ILogger, keys: KeyBuilder, wrapper: IPluggableStorageWrapper);
20
+ private _decrementCounts;
21
+ private _incrementCounts;
22
+ /**
23
+ * Add a given split.
24
+ * The returned promise is resolved when the operation success
25
+ * or rejected if it fails (e.g., wrapper operation fails)
26
+ */
27
+ addSplit(name: string, split: ISplit): Promise<boolean>;
28
+ /**
29
+ * Add a list of splits.
30
+ * The returned promise is resolved when the operation success
31
+ * or rejected if it fails (e.g., wrapper operation fails)
32
+ */
33
+ addSplits(entries: [string, ISplit][]): Promise<boolean[]>;
34
+ /**
35
+ * Remove a given split.
36
+ * The returned promise is resolved when the operation success, with a boolean indicating if the split existed or not.
37
+ * or rejected if it fails (e.g., wrapper operation fails).
38
+ */
39
+ removeSplit(name: string): Promise<boolean | void>;
40
+ /**
41
+ * Remove a list of splits.
42
+ * The returned promise is resolved when the operation success, with a boolean array indicating if the splits existed or not.
43
+ * or rejected if it fails (e.g., wrapper operation fails).
44
+ */
45
+ removeSplits(names: string[]): Promise<void>;
46
+ /**
47
+ * Get split.
48
+ * The returned promise is resolved with the split definition or null if it's not defined,
49
+ * or rejected if wrapper operation fails.
50
+ */
51
+ getSplit(name: string): Promise<ISplit | null>;
52
+ /**
53
+ * Get list of splits.
54
+ * The returned promise is resolved with a map of split names to their split definition or null if it's not defined,
55
+ * or rejected if wrapper operation fails.
56
+ */
57
+ getSplits(names: string[]): Promise<Record<string, ISplit | null>>;
58
+ /**
59
+ * Get list of all split definitions.
60
+ * The returned promise is resolved with the list of split definitions,
61
+ * or rejected if wrapper operation fails.
62
+ */
63
+ getAll(): Promise<ISplit[]>;
64
+ /**
65
+ * Get list of split names.
66
+ * The returned promise is resolved with the list of split names,
67
+ * or rejected if wrapper operation fails.
68
+ */
69
+ getSplitNames(): Promise<string[]>;
70
+ /**
71
+ * Check traffic type existence.
72
+ * The returned promise is resolved with a boolean indicating whether the TT exist or not.
73
+ * In case of wrapper operation failures, the promise resolves with a true value, assuming that the TT might exist.
74
+ * It will never be rejected.
75
+ */
76
+ trafficTypeExists(trafficType: string): Promise<boolean>;
77
+ /**
78
+ * Set till number.
79
+ * The returned promise is resolved when the operation success,
80
+ * or rejected if it fails (e.g., wrapper operation fails).
81
+ */
82
+ setChangeNumber(changeNumber: number): Promise<boolean | void>;
83
+ /**
84
+ * Get till number or -1 if it's not defined.
85
+ * The returned promise is resolved with the changeNumber or -1 if it doesn't exist or a wrapper operation fails.
86
+ * The promise will never be rejected.
87
+ */
88
+ getChangeNumber(): Promise<number>;
89
+ clear(): Promise<boolean>;
90
+ }
@@ -0,0 +1,18 @@
1
+ import { ILogger } from '../../logger/types';
2
+ import { Method } from '../../sync/submitters/types';
3
+ import { KeyBuilderSS } from '../KeyBuilderSS';
4
+ import { IPluggableStorageWrapper, ITelemetryCacheAsync } from '../types';
5
+ export declare class TelemetryCachePluggable implements ITelemetryCacheAsync {
6
+ private readonly log;
7
+ private readonly keys;
8
+ private readonly wrapper;
9
+ /**
10
+ * Create a Telemetry cache that uses a storage wrapper.
11
+ * @param log Logger instance.
12
+ * @param keys Key builder.
13
+ * @param wrapper Adapted wrapper storage.
14
+ */
15
+ constructor(log: ILogger, keys: KeyBuilderSS, wrapper: IPluggableStorageWrapper);
16
+ recordLatency(method: Method, latencyMs: number): Promise<number | void>;
17
+ recordException(method: Method): Promise<number | void>;
18
+ }
@@ -0,0 +1 @@
1
+ export declare const LOG_PREFIX = "storage:pluggable: ";
@@ -0,0 +1,13 @@
1
+ import { IPluggableStorageWrapper } from '../types';
2
+ import { ISet } from '../../utils/lang/sets';
3
+ /**
4
+ * Creates a IPluggableStorageWrapper implementation that stores items in memory.
5
+ * The `_cache` property is the object were items are stored.
6
+ * Intended for testing purposes.
7
+ *
8
+ * @param connDelay delay in millis for `connect` resolve. If not provided, `connect` resolves inmediatelly.
9
+ */
10
+ export declare function inMemoryWrapperFactory(connDelay?: number): IPluggableStorageWrapper & {
11
+ _cache: Record<string, string | string[] | ISet<string>>;
12
+ _setConnDelay(connDelay: number): void;
13
+ };
@@ -0,0 +1,9 @@
1
+ import { IPluggableStorageWrapper, IStorageAsyncFactory } from '../types';
2
+ export interface PluggableStorageOptions {
3
+ prefix?: string;
4
+ wrapper: IPluggableStorageWrapper;
5
+ }
6
+ /**
7
+ * Pluggable storage factory for consumer server-side & client-side SplitFactory.
8
+ */
9
+ export declare function PluggableStorage(options: PluggableStorageOptions): IStorageAsyncFactory;
@@ -0,0 +1,12 @@
1
+ import { ILogger } from '../../logger/types';
2
+ import { IPluggableStorageWrapper } from '../types';
3
+ export declare const METHODS_TO_PROMISE_WRAP: string[];
4
+ /**
5
+ * Adapter of the Pluggable Storage Wrapper.
6
+ * Used to handle exceptions as rejected promises, in order to simplify the error handling on storages.
7
+ *
8
+ * @param log logger instance
9
+ * @param wrapper storage wrapper to adapt
10
+ * @returns an adapted version of the given storage wrapper
11
+ */
12
+ export declare function wrapperAdapter(log: ILogger, wrapper: IPluggableStorageWrapper): IPluggableStorageWrapper;