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

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 (475) hide show
  1. package/cjs/consent/sdkUserConsent.js +2 -2
  2. package/cjs/listeners/browser.js +2 -1
  3. package/cjs/logger/constants.js +2 -1
  4. package/cjs/sdkClient/clientAttributesDecoration.js +1 -1
  5. package/cjs/sdkFactory/index.js +23 -6
  6. package/cjs/services/splitApi.js +20 -1
  7. package/cjs/storages/KeyBuilderSS.js +6 -0
  8. package/cjs/storages/inLocalStorage/index.js +4 -0
  9. package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
  10. package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +12 -1
  11. package/cjs/storages/inMemory/InMemoryStorage.js +5 -1
  12. package/cjs/storages/inMemory/InMemoryStorageCS.js +5 -1
  13. package/cjs/storages/inMemory/uniqueKeysCacheInMemory.js +73 -0
  14. package/cjs/storages/inMemory/uniqueKeysCacheInMemoryCS.js +78 -0
  15. package/cjs/storages/inRedis/ImpressionCountsCacheInRedis.js +46 -0
  16. package/cjs/storages/inRedis/constants.js +4 -1
  17. package/cjs/storages/inRedis/index.js +15 -1
  18. package/cjs/storages/inRedis/uniqueKeysCacheInRedis.js +55 -0
  19. package/cjs/sync/submitters/submitterManager.js +3 -0
  20. package/cjs/sync/submitters/telemetrySubmitter.js +1 -0
  21. package/cjs/sync/submitters/uniqueKeysSubmitter.js +26 -0
  22. package/cjs/trackers/impressionsTracker.js +22 -41
  23. package/cjs/trackers/strategy/strategyDebug.js +25 -0
  24. package/cjs/trackers/strategy/strategyNone.js +29 -0
  25. package/cjs/trackers/strategy/strategyOptimized.js +34 -0
  26. package/cjs/trackers/uniqueKeysTracker.js +31 -0
  27. package/cjs/types.js +2 -0
  28. package/cjs/utils/constants/index.js +4 -2
  29. package/cjs/utils/key/index.js +1 -1
  30. package/cjs/utils/settingsValidation/impressionsMode.js +2 -2
  31. package/cjs/utils/settingsValidation/index.js +3 -1
  32. package/esm/consent/sdkUserConsent.js +2 -2
  33. package/esm/listeners/browser.js +3 -2
  34. package/esm/logger/constants.js +1 -0
  35. package/esm/sdkClient/clientAttributesDecoration.js +1 -1
  36. package/esm/sdkFactory/index.js +23 -6
  37. package/esm/services/splitApi.js +20 -1
  38. package/esm/storages/KeyBuilderSS.js +6 -0
  39. package/esm/storages/inLocalStorage/index.js +5 -1
  40. package/esm/storages/inMemory/AttributesCacheInMemory.js +1 -1
  41. package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +12 -1
  42. package/esm/storages/inMemory/InMemoryStorage.js +6 -2
  43. package/esm/storages/inMemory/InMemoryStorageCS.js +6 -2
  44. package/esm/storages/inMemory/uniqueKeysCacheInMemory.js +70 -0
  45. package/esm/storages/inMemory/uniqueKeysCacheInMemoryCS.js +75 -0
  46. package/esm/storages/inRedis/ImpressionCountsCacheInRedis.js +43 -0
  47. package/esm/storages/inRedis/constants.js +3 -0
  48. package/esm/storages/inRedis/index.js +16 -2
  49. package/esm/storages/inRedis/uniqueKeysCacheInRedis.js +52 -0
  50. package/esm/sync/submitters/submitterManager.js +3 -0
  51. package/esm/sync/submitters/telemetrySubmitter.js +2 -1
  52. package/esm/sync/submitters/uniqueKeysSubmitter.js +22 -0
  53. package/esm/trackers/impressionsTracker.js +22 -41
  54. package/esm/trackers/strategy/strategyDebug.js +21 -0
  55. package/esm/trackers/strategy/strategyNone.js +25 -0
  56. package/esm/trackers/strategy/strategyOptimized.js +30 -0
  57. package/esm/trackers/uniqueKeysTracker.js +27 -0
  58. package/esm/types.js +1 -0
  59. package/esm/utils/constants/index.js +2 -0
  60. package/esm/utils/key/index.js +1 -1
  61. package/esm/utils/settingsValidation/impressionsMode.js +3 -3
  62. package/esm/utils/settingsValidation/index.js +3 -1
  63. package/package.json +5 -4
  64. package/src/consent/sdkUserConsent.ts +5 -6
  65. package/src/dtos/types.ts +8 -0
  66. package/src/evaluator/Engine.ts +3 -3
  67. package/src/evaluator/combiners/and.ts +1 -1
  68. package/src/evaluator/combiners/ifelseif.ts +3 -3
  69. package/src/evaluator/condition/engineUtils.ts +1 -1
  70. package/src/evaluator/condition/index.ts +6 -6
  71. package/src/evaluator/index.ts +10 -10
  72. package/src/evaluator/matchers/all.ts +1 -1
  73. package/src/evaluator/matchers/between.ts +1 -1
  74. package/src/evaluator/matchers/boolean.ts +1 -1
  75. package/src/evaluator/matchers/cont_all.ts +1 -1
  76. package/src/evaluator/matchers/cont_any.ts +1 -1
  77. package/src/evaluator/matchers/cont_str.ts +1 -1
  78. package/src/evaluator/matchers/dependency.ts +1 -1
  79. package/src/evaluator/matchers/eq.ts +1 -1
  80. package/src/evaluator/matchers/eq_set.ts +1 -1
  81. package/src/evaluator/matchers/ew.ts +1 -1
  82. package/src/evaluator/matchers/gte.ts +1 -1
  83. package/src/evaluator/matchers/index.ts +1 -1
  84. package/src/evaluator/matchers/lte.ts +1 -1
  85. package/src/evaluator/matchers/part_of.ts +1 -1
  86. package/src/evaluator/matchers/segment.ts +1 -1
  87. package/src/evaluator/matchers/string.ts +1 -1
  88. package/src/evaluator/matchers/sw.ts +1 -1
  89. package/src/evaluator/matchers/whitelist.ts +1 -1
  90. package/src/evaluator/parser/index.ts +3 -3
  91. package/src/evaluator/types.ts +6 -6
  92. package/src/evaluator/value/index.ts +4 -4
  93. package/src/evaluator/value/sanitize.ts +4 -4
  94. package/src/integrations/ga/GaToSplit.ts +6 -6
  95. package/src/integrations/ga/SplitToGa.ts +10 -10
  96. package/src/integrations/ga/types.ts +4 -4
  97. package/src/integrations/pluggable.ts +3 -3
  98. package/src/integrations/types.ts +2 -2
  99. package/src/listeners/browser.ts +3 -2
  100. package/src/logger/constants.ts +1 -0
  101. package/src/logger/index.ts +3 -3
  102. package/src/logger/sdkLogger.ts +2 -1
  103. package/src/logger/types.ts +16 -0
  104. package/src/readiness/sdkReadinessManager.ts +1 -1
  105. package/src/readiness/types.ts +9 -2
  106. package/src/sdkClient/client.ts +13 -13
  107. package/src/sdkClient/clientAttributesDecoration.ts +13 -13
  108. package/src/sdkClient/clientCS.ts +4 -3
  109. package/src/sdkClient/clientInputValidation.ts +15 -15
  110. package/src/sdkClient/sdkClient.ts +2 -2
  111. package/src/sdkClient/sdkClientMethod.ts +2 -2
  112. package/src/sdkClient/sdkClientMethodCS.ts +9 -9
  113. package/src/sdkClient/sdkClientMethodCSWithTT.ts +9 -9
  114. package/src/sdkFactory/index.ts +28 -8
  115. package/src/sdkFactory/types.ts +11 -8
  116. package/src/sdkManager/index.ts +5 -5
  117. package/src/services/splitApi.ts +22 -1
  118. package/src/services/types.ts +6 -0
  119. package/src/storages/KeyBuilderSS.ts +8 -0
  120. package/src/storages/dataLoader.ts +2 -2
  121. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
  122. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +2 -2
  123. package/src/storages/inLocalStorage/index.ts +6 -4
  124. package/src/storages/inMemory/AttributesCacheInMemory.ts +12 -13
  125. package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
  126. package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +16 -1
  127. package/src/storages/inMemory/InMemoryStorage.ts +5 -2
  128. package/src/storages/inMemory/InMemoryStorageCS.ts +6 -2
  129. package/src/storages/inMemory/uniqueKeysCacheInMemory.ts +82 -0
  130. package/src/storages/inMemory/uniqueKeysCacheInMemoryCS.ts +88 -0
  131. package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
  132. package/src/storages/inRedis/ImpressionCountsCacheInRedis.ts +48 -0
  133. package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
  134. package/src/storages/inRedis/RedisAdapter.ts +1 -1
  135. package/src/storages/inRedis/SegmentsCacheInRedis.ts +1 -1
  136. package/src/storages/inRedis/SplitsCacheInRedis.ts +1 -1
  137. package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
  138. package/src/storages/inRedis/constants.ts +3 -0
  139. package/src/storages/inRedis/index.ts +14 -6
  140. package/src/storages/inRedis/uniqueKeysCacheInRedis.ts +61 -0
  141. package/src/storages/pluggable/EventsCachePluggable.ts +4 -4
  142. package/src/storages/pluggable/ImpressionsCachePluggable.ts +1 -1
  143. package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
  144. package/src/storages/pluggable/SplitsCachePluggable.ts +1 -1
  145. package/src/storages/pluggable/TelemetryCachePluggable.ts +1 -1
  146. package/src/storages/pluggable/index.ts +3 -3
  147. package/src/storages/pluggable/wrapperAdapter.ts +1 -1
  148. package/src/storages/types.ts +45 -50
  149. package/src/sync/offline/LocalhostFromObject.ts +4 -4
  150. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
  151. package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
  152. package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
  153. package/src/sync/polling/updaters/splitChangesUpdater.ts +1 -1
  154. package/src/sync/streaming/SSEHandler/index.ts +1 -1
  155. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  156. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
  157. package/src/sync/submitters/submitter.ts +1 -1
  158. package/src/sync/submitters/submitterManager.ts +2 -0
  159. package/src/sync/submitters/telemetrySubmitter.ts +4 -3
  160. package/src/sync/submitters/types.ts +22 -3
  161. package/src/sync/submitters/uniqueKeysSubmitter.ts +35 -0
  162. package/src/sync/syncTask.ts +1 -1
  163. package/src/trackers/eventTracker.ts +3 -3
  164. package/src/trackers/impressionsTracker.ts +30 -51
  165. package/src/trackers/strategy/strategyDebug.ts +28 -0
  166. package/src/trackers/strategy/strategyNone.ts +34 -0
  167. package/src/trackers/strategy/strategyOptimized.ts +42 -0
  168. package/src/trackers/types.ts +30 -4
  169. package/src/trackers/uniqueKeysTracker.ts +37 -0
  170. package/src/types.ts +1265 -0
  171. package/src/utils/constants/index.ts +3 -1
  172. package/src/utils/inputValidation/apiKey.ts +1 -1
  173. package/src/utils/inputValidation/attribute.ts +1 -1
  174. package/src/utils/inputValidation/attributes.ts +3 -3
  175. package/src/utils/inputValidation/event.ts +1 -1
  176. package/src/utils/inputValidation/eventProperties.ts +3 -3
  177. package/src/utils/inputValidation/eventValue.ts +1 -1
  178. package/src/utils/inputValidation/isOperational.ts +1 -1
  179. package/src/utils/inputValidation/key.ts +3 -3
  180. package/src/utils/inputValidation/preloadedData.ts +3 -3
  181. package/src/utils/inputValidation/split.ts +1 -1
  182. package/src/utils/inputValidation/splitExistance.ts +1 -1
  183. package/src/utils/inputValidation/splits.ts +1 -1
  184. package/src/utils/inputValidation/trafficType.ts +1 -1
  185. package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
  186. package/src/utils/key/index.ts +9 -9
  187. package/src/utils/settingsValidation/consent.ts +2 -1
  188. package/src/utils/settingsValidation/impressionsMode.ts +6 -6
  189. package/src/utils/settingsValidation/index.ts +4 -1
  190. package/src/utils/settingsValidation/integrations/common.ts +1 -1
  191. package/src/utils/settingsValidation/integrations/configurable.ts +1 -1
  192. package/src/utils/settingsValidation/integrations/pluggable.ts +2 -1
  193. package/src/utils/settingsValidation/localhost/builtin.ts +2 -1
  194. package/src/utils/settingsValidation/localhost/pluggable.ts +2 -1
  195. package/src/utils/settingsValidation/logger/builtinLogger.ts +2 -1
  196. package/src/utils/settingsValidation/logger/pluggableLogger.ts +2 -1
  197. package/src/utils/settingsValidation/splitFilters.ts +9 -7
  198. package/src/utils/settingsValidation/storage/storageCS.ts +2 -1
  199. package/types/consent/index.d.ts +2 -0
  200. package/types/consent/sdkUserConsent.d.ts +13 -0
  201. package/types/dtos/types.d.ts +172 -0
  202. package/types/evaluator/Engine.d.ts +15 -0
  203. package/types/evaluator/combiners/and.d.ts +4 -0
  204. package/types/evaluator/combiners/ifelseif.d.ts +3 -0
  205. package/types/evaluator/condition/engineUtils.d.ts +11 -0
  206. package/types/evaluator/condition/index.d.ts +6 -0
  207. package/types/evaluator/convertions/index.d.ts +2 -0
  208. package/types/evaluator/index.d.ts +7 -0
  209. package/types/evaluator/matchers/all.d.ts +2 -0
  210. package/types/evaluator/matchers/between.d.ts +3 -0
  211. package/types/evaluator/matchers/boolean.d.ts +2 -0
  212. package/types/evaluator/matchers/cont_all.d.ts +2 -0
  213. package/types/evaluator/matchers/cont_any.d.ts +2 -0
  214. package/types/evaluator/matchers/cont_str.d.ts +2 -0
  215. package/types/evaluator/matchers/dependency.d.ts +5 -0
  216. package/types/evaluator/matchers/eq.d.ts +2 -0
  217. package/types/evaluator/matchers/eq_set.d.ts +2 -0
  218. package/types/evaluator/matchers/ew.d.ts +2 -0
  219. package/types/evaluator/matchers/gte.d.ts +2 -0
  220. package/types/evaluator/matchers/index.d.ts +7 -0
  221. package/types/evaluator/matchers/lte.d.ts +2 -0
  222. package/types/evaluator/matchers/matcherTypes.d.ts +10 -0
  223. package/types/evaluator/matchers/part_of.d.ts +2 -0
  224. package/types/evaluator/matchers/segment.d.ts +6 -0
  225. package/types/evaluator/matchers/string.d.ts +2 -0
  226. package/types/evaluator/matchers/sw.d.ts +2 -0
  227. package/types/evaluator/matchers/whitelist.d.ts +3 -0
  228. package/types/evaluator/matchersTransform/index.d.ts +6 -0
  229. package/types/evaluator/matchersTransform/segment.d.ts +5 -0
  230. package/types/evaluator/matchersTransform/set.d.ts +5 -0
  231. package/types/evaluator/matchersTransform/unaryNumeric.d.ts +5 -0
  232. package/types/evaluator/matchersTransform/whitelist.d.ts +5 -0
  233. package/types/evaluator/parser/index.d.ts +5 -0
  234. package/types/evaluator/treatments/index.d.ts +8 -0
  235. package/types/evaluator/types.d.ts +28 -0
  236. package/types/evaluator/value/index.d.ts +7 -0
  237. package/types/evaluator/value/sanitize.d.ts +7 -0
  238. package/types/index.d.ts +5 -0
  239. package/types/integrations/browser.d.ts +12 -0
  240. package/types/integrations/ga/GaToSplit.d.ts +40 -0
  241. package/types/integrations/ga/GoogleAnalyticsToSplit.d.ts +3 -0
  242. package/types/integrations/ga/SplitToGa.d.ts +34 -0
  243. package/types/integrations/ga/SplitToGoogleAnalytics.d.ts +3 -0
  244. package/types/integrations/ga/types.d.ts +148 -0
  245. package/types/integrations/pluggable.d.ts +11 -0
  246. package/types/integrations/types.d.ts +17 -0
  247. package/types/listeners/browser.d.ts +40 -0
  248. package/types/listeners/node.d.ts +22 -0
  249. package/types/listeners/types.d.ts +4 -0
  250. package/types/logger/browser/DebugLogger.d.ts +2 -0
  251. package/types/logger/browser/ErrorLogger.d.ts +2 -0
  252. package/types/logger/browser/InfoLogger.d.ts +2 -0
  253. package/types/logger/browser/WarnLogger.d.ts +2 -0
  254. package/types/logger/constants.d.ts +142 -0
  255. package/types/logger/index.d.ts +22 -0
  256. package/types/logger/messages/debug.d.ts +1 -0
  257. package/types/logger/messages/error.d.ts +1 -0
  258. package/types/logger/messages/info.d.ts +1 -0
  259. package/types/logger/messages/warn.d.ts +1 -0
  260. package/types/logger/sdkLogger.d.ts +8 -0
  261. package/types/logger/types.d.ts +17 -0
  262. package/types/readiness/constants.d.ts +7 -0
  263. package/types/readiness/readinessManager.d.ts +6 -0
  264. package/types/readiness/sdkReadinessManager.d.ts +11 -0
  265. package/types/readiness/types.d.ts +60 -0
  266. package/types/sdkClient/client.d.ts +6 -0
  267. package/types/sdkClient/clientAttributesDecoration.d.ts +51 -0
  268. package/types/sdkClient/clientCS.d.ts +10 -0
  269. package/types/sdkClient/clientInputValidation.d.ts +7 -0
  270. package/types/sdkClient/sdkClient.d.ts +6 -0
  271. package/types/sdkClient/sdkClientMethod.d.ts +6 -0
  272. package/types/sdkClient/sdkClientMethodCS.d.ts +7 -0
  273. package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +8 -0
  274. package/types/sdkClient/types.d.ts +18 -0
  275. package/types/sdkFactory/index.d.ts +6 -0
  276. package/types/sdkFactory/types.d.ts +82 -0
  277. package/types/sdkManager/index.d.ts +5 -0
  278. package/types/services/splitApi.d.ts +11 -0
  279. package/types/services/splitHttpClient.d.ts +10 -0
  280. package/types/services/types.d.ts +54 -0
  281. package/types/storages/AbstractSegmentsCacheSync.d.ts +55 -0
  282. package/types/storages/AbstractSplitsCacheAsync.d.ts +36 -0
  283. package/types/storages/AbstractSplitsCacheSync.d.ts +42 -0
  284. package/types/storages/KeyBuilder.d.ts +14 -0
  285. package/types/storages/KeyBuilderCS.d.ts +16 -0
  286. package/types/storages/KeyBuilderSS.d.ts +17 -0
  287. package/types/storages/dataLoader.d.ts +10 -0
  288. package/types/storages/findLatencyIndex.d.ts +7 -0
  289. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +25 -0
  290. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +51 -0
  291. package/types/storages/inLocalStorage/constants.d.ts +2 -0
  292. package/types/storages/inLocalStorage/index.d.ts +8 -0
  293. package/types/storages/inMemory/AttributesCacheInMemory.d.ts +43 -0
  294. package/types/storages/inMemory/CountsCacheInMemory.d.ts +20 -0
  295. package/types/storages/inMemory/EventsCacheInMemory.d.ts +35 -0
  296. package/types/storages/inMemory/ImpressionCountsCacheInMemory.d.ts +28 -0
  297. package/types/storages/inMemory/ImpressionsCacheInMemory.d.ts +30 -0
  298. package/types/storages/inMemory/InMemoryStorage.d.ts +10 -0
  299. package/types/storages/inMemory/InMemoryStorageCS.d.ts +10 -0
  300. package/types/storages/inMemory/LatenciesCacheInMemory.d.ts +20 -0
  301. package/types/storages/inMemory/MySegmentsCacheInMemory.d.ts +22 -0
  302. package/types/storages/inMemory/SegmentsCacheInMemory.d.ts +19 -0
  303. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +20 -0
  304. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +53 -0
  305. package/types/storages/inMemory/uniqueKeysCacheInMemory.d.ts +35 -0
  306. package/types/storages/inMemory/uniqueKeysCacheInMemoryCS.d.ts +37 -0
  307. package/types/storages/inRedis/CountsCacheInRedis.d.ts +9 -0
  308. package/types/storages/inRedis/EventsCacheInRedis.d.ts +32 -0
  309. package/types/storages/inRedis/ImpressionCountsCacheInRedis.d.ts +13 -0
  310. package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +18 -0
  311. package/types/storages/inRedis/LatenciesCacheInRedis.d.ts +9 -0
  312. package/types/storages/inRedis/RedisAdapter.d.ts +24 -0
  313. package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +18 -0
  314. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +91 -0
  315. package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +20 -0
  316. package/types/storages/inRedis/constants.d.ts +4 -0
  317. package/types/storages/inRedis/index.d.ts +10 -0
  318. package/types/storages/inRedis/uniqueKeysCacheInRedis.d.ts +14 -0
  319. package/types/storages/metadataBuilder.d.ts +3 -0
  320. package/types/storages/pluggable/EventsCachePluggable.d.ts +38 -0
  321. package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +35 -0
  322. package/types/storages/pluggable/SegmentsCachePluggable.d.ts +54 -0
  323. package/types/storages/pluggable/SplitsCachePluggable.d.ts +89 -0
  324. package/types/storages/pluggable/TelemetryCachePluggable.d.ts +18 -0
  325. package/types/storages/pluggable/constants.d.ts +1 -0
  326. package/types/storages/pluggable/inMemoryWrapper.d.ts +13 -0
  327. package/types/storages/pluggable/index.d.ts +9 -0
  328. package/types/storages/pluggable/wrapperAdapter.d.ts +12 -0
  329. package/types/storages/types.d.ts +414 -0
  330. package/types/sync/offline/LocalhostFromFile.d.ts +2 -0
  331. package/types/sync/offline/LocalhostFromObject.d.ts +2 -0
  332. package/types/sync/offline/splitsParser/parseCondition.d.ts +7 -0
  333. package/types/sync/offline/splitsParser/splitsParserFromFile.d.ts +2 -0
  334. package/types/sync/offline/splitsParser/splitsParserFromSettings.d.ts +3 -0
  335. package/types/sync/offline/splitsParser/types.d.ts +3 -0
  336. package/types/sync/offline/syncManagerOffline.d.ts +10 -0
  337. package/types/sync/offline/syncTasks/fromObjectSyncTask.d.ts +17 -0
  338. package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +7 -0
  339. package/types/sync/polling/fetchers/segmentChangesFetcher.d.ts +7 -0
  340. package/types/sync/polling/fetchers/splitChangesFetcher.d.ts +7 -0
  341. package/types/sync/polling/fetchers/types.d.ts +5 -0
  342. package/types/sync/polling/pollingManagerCS.d.ts +7 -0
  343. package/types/sync/polling/pollingManagerSS.d.ts +6 -0
  344. package/types/sync/polling/syncTasks/mySegmentsSyncTask.d.ts +9 -0
  345. package/types/sync/polling/syncTasks/segmentsSyncTask.d.ts +9 -0
  346. package/types/sync/polling/syncTasks/splitsSyncTask.d.ts +9 -0
  347. package/types/sync/polling/types.d.ts +26 -0
  348. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +13 -0
  349. package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +18 -0
  350. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +39 -0
  351. package/types/sync/streaming/AuthClient/index.d.ts +12 -0
  352. package/types/sync/streaming/AuthClient/types.d.ts +17 -0
  353. package/types/sync/streaming/SSEClient/index.d.ts +34 -0
  354. package/types/sync/streaming/SSEClient/types.d.ts +11 -0
  355. package/types/sync/streaming/SSEHandler/NotificationKeeper.d.ts +14 -0
  356. package/types/sync/streaming/SSEHandler/NotificationParser.d.ts +20 -0
  357. package/types/sync/streaming/SSEHandler/index.d.ts +11 -0
  358. package/types/sync/streaming/SSEHandler/types.d.ts +67 -0
  359. package/types/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.d.ts +6 -0
  360. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +8 -0
  361. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +12 -0
  362. package/types/sync/streaming/UpdateWorkers/constants.d.ts +3 -0
  363. package/types/sync/streaming/UpdateWorkers/types.d.ts +4 -0
  364. package/types/sync/streaming/constants.d.ts +34 -0
  365. package/types/sync/streaming/mySegmentsV2utils.d.ts +27 -0
  366. package/types/sync/streaming/pushManager.d.ts +9 -0
  367. package/types/sync/streaming/types.d.ts +35 -0
  368. package/types/sync/submitters/eventsSubmitter.d.ts +5 -0
  369. package/types/sync/submitters/eventsSyncTask.d.ts +8 -0
  370. package/types/sync/submitters/impressionCountsSubmitter.d.ts +10 -0
  371. package/types/sync/submitters/impressionCountsSubmitterInRedis.d.ts +5 -0
  372. package/types/sync/submitters/impressionCountsSyncTask.d.ts +13 -0
  373. package/types/sync/submitters/impressionsSubmitter.d.ts +11 -0
  374. package/types/sync/submitters/impressionsSyncTask.d.ts +14 -0
  375. package/types/sync/submitters/metricsSyncTask.d.ts +12 -0
  376. package/types/sync/submitters/submitter.d.ts +12 -0
  377. package/types/sync/submitters/submitterManager.d.ts +3 -0
  378. package/types/sync/submitters/submitterSyncTask.d.ts +10 -0
  379. package/types/sync/submitters/telemetrySubmitter.d.ts +25 -0
  380. package/types/sync/submitters/types.d.ts +194 -0
  381. package/types/sync/submitters/uniqueKeysSubmitter.d.ts +5 -0
  382. package/types/sync/submitters/uniqueKeysSubmitterInRedis.d.ts +5 -0
  383. package/types/sync/syncManagerOnline.d.ts +13 -0
  384. package/types/sync/syncTask.d.ts +13 -0
  385. package/types/sync/syncTaskComposite.d.ts +5 -0
  386. package/types/sync/types.d.ts +43 -0
  387. package/types/trackers/eventTracker.d.ts +10 -0
  388. package/types/trackers/filter/bloomFilter.d.ts +10 -0
  389. package/types/trackers/filter/dictionaryFilter.d.ts +8 -0
  390. package/types/trackers/filter/types.d.ts +5 -0
  391. package/types/trackers/impressionObserver/ImpressionObserver.d.ts +8 -0
  392. package/types/trackers/impressionObserver/buildKey.d.ts +2 -0
  393. package/types/trackers/impressionObserver/impressionObserverCS.d.ts +4 -0
  394. package/types/trackers/impressionObserver/impressionObserverSS.d.ts +4 -0
  395. package/types/trackers/impressionObserver/types.d.ts +4 -0
  396. package/types/trackers/impressionObserver/utils.d.ts +13 -0
  397. package/types/trackers/impressionsTracker.d.ts +13 -0
  398. package/types/trackers/strategy/strategyDebug.d.ts +9 -0
  399. package/types/trackers/strategy/strategyNone.d.ts +10 -0
  400. package/types/trackers/strategy/strategyOptimized.d.ts +11 -0
  401. package/types/trackers/telemetryTracker.d.ts +3 -0
  402. package/types/trackers/types.d.ts +57 -0
  403. package/types/trackers/uniqueKeysTracker.d.ts +13 -0
  404. package/types/types.d.ts +1263 -0
  405. package/types/utils/Backoff.d.ts +25 -0
  406. package/types/utils/LRUCache/LinkedList.d.ts +34 -0
  407. package/types/utils/LRUCache/index.d.ts +16 -0
  408. package/types/utils/MinEventEmitter.d.ts +12 -0
  409. package/types/utils/MinEvents.d.ts +4 -0
  410. package/types/utils/base64/index.d.ts +30 -0
  411. package/types/utils/constants/browser.d.ts +3 -0
  412. package/types/utils/constants/index.d.ts +64 -0
  413. package/types/utils/decompress/index.d.ts +16 -0
  414. package/types/utils/env/isLocalStorageAvailable.d.ts +1 -0
  415. package/types/utils/env/isNode.d.ts +5 -0
  416. package/types/utils/inputValidation/apiKey.d.ts +7 -0
  417. package/types/utils/inputValidation/attribute.d.ts +2 -0
  418. package/types/utils/inputValidation/attributes.d.ts +4 -0
  419. package/types/utils/inputValidation/event.d.ts +2 -0
  420. package/types/utils/inputValidation/eventProperties.d.ts +6 -0
  421. package/types/utils/inputValidation/eventValue.d.ts +2 -0
  422. package/types/utils/inputValidation/index.d.ts +13 -0
  423. package/types/utils/inputValidation/isOperational.d.ts +4 -0
  424. package/types/utils/inputValidation/key.d.ts +3 -0
  425. package/types/utils/inputValidation/preloadedData.d.ts +3 -0
  426. package/types/utils/inputValidation/split.d.ts +2 -0
  427. package/types/utils/inputValidation/splitExistance.d.ts +7 -0
  428. package/types/utils/inputValidation/splits.d.ts +2 -0
  429. package/types/utils/inputValidation/trafficType.d.ts +2 -0
  430. package/types/utils/inputValidation/trafficTypeExistance.d.ts +9 -0
  431. package/types/utils/jwt/index.d.ts +5 -0
  432. package/types/utils/jwt/types.d.ts +5 -0
  433. package/types/utils/key/index.d.ts +8 -0
  434. package/types/utils/labels/index.d.ts +7 -0
  435. package/types/utils/lang/binarySearch.d.ts +9 -0
  436. package/types/utils/lang/getFnName.d.ts +4 -0
  437. package/types/utils/lang/getGlobal.d.ts +4 -0
  438. package/types/utils/lang/index.d.ts +105 -0
  439. package/types/utils/lang/maps.d.ts +55 -0
  440. package/types/utils/lang/objectAssign.d.ts +3 -0
  441. package/types/utils/lang/sets.d.ts +60 -0
  442. package/types/utils/murmur3/common.d.ts +12 -0
  443. package/types/utils/murmur3/legacy.d.ts +2 -0
  444. package/types/utils/murmur3/murmur3.d.ts +2 -0
  445. package/types/utils/murmur3/murmur3_128.d.ts +6 -0
  446. package/types/utils/murmur3/murmur3_128_x86.d.ts +7 -0
  447. package/types/utils/murmur3/murmur3_64.d.ts +10 -0
  448. package/types/utils/murmur3/utfx.d.ts +27 -0
  449. package/types/utils/promise/thenable.d.ts +1 -0
  450. package/types/utils/promise/timeout.d.ts +1 -0
  451. package/types/utils/promise/wrapper.d.ts +21 -0
  452. package/types/utils/settingsValidation/consent.d.ts +6 -0
  453. package/types/utils/settingsValidation/impressionsMode.d.ts +3 -0
  454. package/types/utils/settingsValidation/index.d.ts +52 -0
  455. package/types/utils/settingsValidation/integrations/common.d.ts +14 -0
  456. package/types/utils/settingsValidation/integrations/configurable.d.ts +13 -0
  457. package/types/utils/settingsValidation/integrations/pluggable.d.ts +13 -0
  458. package/types/utils/settingsValidation/localhost/builtin.d.ts +16 -0
  459. package/types/utils/settingsValidation/localhost/pluggable.d.ts +16 -0
  460. package/types/utils/settingsValidation/logger/builtinLogger.d.ts +10 -0
  461. package/types/utils/settingsValidation/logger/commons.d.ts +9 -0
  462. package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +11 -0
  463. package/types/utils/settingsValidation/mode.d.ts +1 -0
  464. package/types/utils/settingsValidation/runtime.d.ts +2 -0
  465. package/types/utils/settingsValidation/splitFilters.d.ts +16 -0
  466. package/types/utils/settingsValidation/storage/storageCS.d.ts +21 -0
  467. package/types/utils/settingsValidation/types.d.ts +32 -0
  468. package/types/utils/settingsValidation/url.d.ts +10 -0
  469. package/types/utils/time/index.d.ts +4 -0
  470. package/types/utils/timeTracker/index.d.ts +70 -0
  471. package/types/utils/timeTracker/now/browser.d.ts +1 -0
  472. package/types/utils/timeTracker/now/node.d.ts +1 -0
  473. package/types/utils/timeTracker/timer.d.ts +1 -0
  474. package/src/logger/.DS_Store +0 -0
  475. package/src/types.d.ts +0 -1581
@@ -1,4 +1,4 @@
1
- import { StorageType } from '../../types';
1
+ import { StorageType } from '../../storages/types';
2
2
  import { SDKMode } from '../../types';
3
3
 
4
4
  // Special treatments
@@ -19,6 +19,7 @@ export const SPLIT_EVENT = 'EVENT';
19
19
  // Impression collection modes
20
20
  export const DEBUG = 'DEBUG';
21
21
  export const OPTIMIZED = 'OPTIMIZED';
22
+ export const NONE = 'NONE';
22
23
 
23
24
  // SDK Modes
24
25
  export const LOCALHOST_MODE: SDKMode = 'localhost';
@@ -49,6 +50,7 @@ export const CONSUMER_PARTIAL_ENUM = 2;
49
50
 
50
51
  export const OPTIMIZED_ENUM = 0;
51
52
  export const DEBUG_ENUM = 1;
53
+ export const NONE_ENUM = 2;
52
54
 
53
55
  export const SPLITS = 'sp';
54
56
  export const IMPRESSIONS = 'im';
@@ -1,5 +1,5 @@
1
1
  import { ERROR_NULL, ERROR_EMPTY, ERROR_INVALID, WARN_API_KEY, LOG_PREFIX_INSTANTIATION } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { isString } from '../lang';
4
4
 
5
5
  const item = 'api_key';
@@ -1,5 +1,5 @@
1
1
  import { isString, isFiniteNumber, isBoolean } from '../../utils/lang';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
 
4
4
  export function validateAttribute(log: ILogger, attributeKey: string, attributeValue: Object, method: string): boolean {
5
5
  if (!isString(attributeKey) || attributeKey.length === 0) {
@@ -1,10 +1,10 @@
1
1
  import { isObject } from '../lang';
2
- import { Attributes } from '../../types';
3
- import { ILogger } from '../../types';
2
+ import { SplitIO } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
  import { validateAttribute } from './attribute';
5
5
  import { ERROR_NOT_PLAIN_OBJECT } from '../../logger/constants';
6
6
 
7
- export function validateAttributes(log: ILogger, maybeAttrs: any, method: string): Attributes | undefined | false {
7
+ export function validateAttributes(log: ILogger, maybeAttrs: any, method: string): SplitIO.Attributes | undefined | false {
8
8
  // Attributes are optional
9
9
  if (maybeAttrs == undefined || isObject(maybeAttrs)) // eslint-disable-line eqeqeq
10
10
  return maybeAttrs;
@@ -1,5 +1,5 @@
1
1
  import { ERROR_EVENT_TYPE_FORMAT, ERROR_NULL, ERROR_INVALID, ERROR_EMPTY } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { isString } from '../lang';
4
4
 
5
5
  const EVENT_TYPE_REGEX = /^[a-zA-Z0-9][-_.:a-zA-Z0-9]{0,79}$/;
@@ -1,7 +1,7 @@
1
1
  import { isObject, isString, isFiniteNumber, isBoolean } from '../lang';
2
2
  import { objectAssign } from '../lang/objectAssign';
3
- import { Properties } from '../../types';
4
- import { ILogger } from '../../types';
3
+ import { SplitIO } from '../../types';
4
+ import { ILogger } from '../../logger/types';
5
5
  import { ERROR_NOT_PLAIN_OBJECT, ERROR_SIZE_EXCEEDED, WARN_SETTING_NULL, WARN_TRIMMING_PROPERTIES } from '../../logger/constants';
6
6
 
7
7
  const ECMA_SIZES = {
@@ -14,7 +14,7 @@ const MAX_PROPERTIES_AMOUNT = 300;
14
14
  const MAX_EVENT_SIZE = 1024 * 32;
15
15
  const BASE_EVENT_SIZE = 1024; // We assume 1kb events without properties (avg measured)
16
16
 
17
- export function validateEventProperties(log: ILogger, maybeProperties: any, method: string): { properties: Properties | null | false, size: number } {
17
+ export function validateEventProperties(log: ILogger, maybeProperties: any, method: string): { properties: SplitIO.Properties | null | false, size: number } {
18
18
  if (maybeProperties == undefined) return { properties: null, size: BASE_EVENT_SIZE }; // eslint-disable-line eqeqeq
19
19
 
20
20
  if (!isObject(maybeProperties)) {
@@ -1,5 +1,5 @@
1
1
  import { ERROR_NOT_FINITE } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { isFiniteNumber } from '../lang';
4
4
 
5
5
  export function validateEventValue(log: ILogger, maybeValue: any, method: string): number | false {
@@ -1,5 +1,5 @@
1
1
  import { ERROR_CLIENT_DESTROYED, CLIENT_NOT_READY } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { IReadinessManager } from '../../readiness/types';
4
4
 
5
5
  export function validateIfNotDestroyed(log: ILogger, readinessManager: IReadinessManager, method: string): boolean {
@@ -1,6 +1,6 @@
1
1
  import { isObject, isString, isFiniteNumber, toString } from '../lang';
2
- import { SplitKey } from '../../types';
3
- import { ILogger } from '../../types';
2
+ import { SplitIO } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
  import { ERROR_NULL, WARN_CONVERTING, ERROR_EMPTY, ERROR_TOO_LONG, ERROR_INVALID, ERROR_INVALID_KEY_OBJECT } from '../../logger/constants';
5
5
 
6
6
  const KEY_MAX_LENGTH = 250;
@@ -33,7 +33,7 @@ function validateKeyValue(log: ILogger, maybeKey: any, method: string, type: str
33
33
  return false;
34
34
  }
35
35
 
36
- export function validateKey(log: ILogger, maybeKey: any, method: string): SplitKey | false {
36
+ export function validateKey(log: ILogger, maybeKey: any, method: string): SplitIO.SplitKey | false {
37
37
  if (isObject(maybeKey)) {
38
38
  // Validate key object
39
39
  const matchingKey = validateKeyValue(log, maybeKey.matchingKey, method, 'matchingKey');
@@ -1,7 +1,7 @@
1
1
  import { isObject, isString, isFiniteNumber } from '../lang';
2
2
  import { validateSplit } from './split';
3
- import { ILogger } from '../../types';
4
- import { PreloadedData } from '../../storages/types';
3
+ import { SplitIO } from '../../types';
4
+ import { ILogger } from '../../logger/types';
5
5
 
6
6
  function validateTimestampData(log: ILogger, maybeTimestamp: any, method: string, item: string) {
7
7
  if (isFiniteNumber(maybeTimestamp) && maybeTimestamp > -1) return true;
@@ -42,7 +42,7 @@ function validateSegmentsData(log: ILogger, maybeSegmentsData: any, method: stri
42
42
  return false;
43
43
  }
44
44
 
45
- export function validatePreloadedData(log: ILogger, maybePreloadedData: any, method: string): maybePreloadedData is PreloadedData {
45
+ export function validatePreloadedData(log: ILogger, maybePreloadedData: any, method: string): maybePreloadedData is SplitIO.PreloadedData {
46
46
  if (!isObject(maybePreloadedData)) {
47
47
  log.error(`${method}: preloadedData must be an object.`);
48
48
  } else if (
@@ -1,5 +1,5 @@
1
1
  import { ERROR_NULL, ERROR_INVALID, WARN_TRIMMING, ERROR_EMPTY } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { isString } from '../lang';
4
4
 
5
5
  // include BOM and nbsp
@@ -1,6 +1,6 @@
1
1
  import { SPLIT_NOT_FOUND } from '../labels';
2
2
  import { IReadinessManager } from '../../readiness/types';
3
- import { ILogger } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
  import { WARN_NOT_EXISTENT_SPLIT } from '../../logger/constants';
5
5
 
6
6
  /**
@@ -1,5 +1,5 @@
1
1
  import { ERROR_EMPTY_ARRAY } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { uniq } from '../lang';
4
4
  import { validateSplit } from './split';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { ERROR_NULL, ERROR_INVALID, ERROR_EMPTY, WARN_LOWERCASE_TRAFFIC_TYPE } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { isString } from '../lang';
4
4
 
5
5
  const CAPITAL_LETTERS_REGEX = /[A-Z]/;
@@ -4,7 +4,7 @@ import { ISplitsCacheBase } from '../../storages/types';
4
4
  import { IReadinessManager } from '../../readiness/types';
5
5
  import { SDKMode } from '../../types';
6
6
  import { MaybeThenable } from '../../dtos/types';
7
- import { ILogger } from '../../types';
7
+ import { ILogger } from '../../logger/types';
8
8
  import { WARN_NOT_EXISTENT_TT } from '../../logger/constants';
9
9
 
10
10
  function logTTExistanceWarning(log: ILogger, maybeTT: string, method: string) {
@@ -1,29 +1,29 @@
1
- import { SplitKey, SplitKeyObject } from '../../types';
1
+ import { SplitIO } from '../../types';
2
2
  import { isObject } from '../lang';
3
3
 
4
- // function isSplitKeyObject(key: any): key is SplitKeyObject {
4
+ // function isSplitKeyObject(key: any): key is SplitIO.SplitKeyObject {
5
5
  // return key !== undefined && key !== null && typeof key.matchingKey === 'string';
6
6
  // }
7
7
 
8
8
  // returns the matchingKey if the Key is defined as an object or the key itself if it is a string
9
- export function getMatching(key?: SplitKey): string {
10
- return isObject(key) ? (key as SplitKeyObject).matchingKey : key as string;
9
+ export function getMatching(key: SplitIO.SplitKey): string {
10
+ return isObject(key) ? (key as SplitIO.SplitKeyObject).matchingKey : key as string;
11
11
  }
12
12
 
13
13
  // if the key is a string, there's no bucketingKey (undefined)
14
- export function getBucketing(key: SplitKey): string | undefined {
15
- return isObject(key) ? (key as SplitKeyObject).bucketingKey : undefined;
14
+ export function getBucketing(key: SplitIO.SplitKey): string | undefined {
15
+ return isObject(key) ? (key as SplitIO.SplitKeyObject).bucketingKey : undefined;
16
16
  }
17
17
 
18
18
  /**
19
19
  * Verify type of key and return a valid object key used for get treatment for a
20
20
  * specific split.
21
21
  */
22
- export function keyParser(key: SplitKey): SplitKeyObject {
22
+ export function keyParser(key: SplitIO.SplitKey): SplitIO.SplitKeyObject {
23
23
  if (isObject(key)) {
24
24
  return {
25
- matchingKey: (key as SplitKeyObject).matchingKey,
26
- bucketingKey: (key as SplitKeyObject).bucketingKey
25
+ matchingKey: (key as SplitIO.SplitKeyObject).matchingKey,
26
+ bucketingKey: (key as SplitIO.SplitKeyObject).bucketingKey
27
27
  };
28
28
  } else {
29
29
  return {
@@ -1,5 +1,6 @@
1
1
  import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
2
- import { ConsentStatus, ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
+ import { ConsentStatus } from '../../types';
3
4
  import { CONSENT_DECLINED, CONSENT_GRANTED, CONSENT_UNKNOWN } from '../constants';
4
5
  import { stringToUpperCase } from '../lang';
5
6
 
@@ -1,14 +1,14 @@
1
1
  import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
2
- import { ILogger } from '../../types';
3
- import { ImpressionsMode } from '../../types';
4
- import { DEBUG, OPTIMIZED } from '../constants';
2
+ import { ILogger } from '../../logger/types';
3
+ import { SplitIO } from '../../types';
4
+ import { DEBUG, OPTIMIZED, NONE } from '../constants';
5
5
  import { stringToUpperCase } from '../lang';
6
6
 
7
- export function validImpressionsMode(log: ILogger, impressionsMode: any): ImpressionsMode {
7
+ export function validImpressionsMode(log: ILogger, impressionsMode: any): SplitIO.ImpressionsMode {
8
8
  impressionsMode = stringToUpperCase(impressionsMode);
9
9
 
10
- if ([DEBUG, OPTIMIZED].indexOf(impressionsMode) > -1) return impressionsMode;
10
+ if ([DEBUG, OPTIMIZED, NONE].indexOf(impressionsMode) > -1) return impressionsMode;
11
11
 
12
- log.error(ERROR_INVALID_CONFIG_PARAM, ['impressionsMode', [DEBUG, OPTIMIZED], OPTIMIZED]);
12
+ log.error(ERROR_INVALID_CONFIG_PARAM, ['impressionsMode', [DEBUG, OPTIMIZED, NONE], OPTIMIZED]);
13
13
  return OPTIMIZED;
14
14
  }
@@ -36,6 +36,8 @@ export const base = {
36
36
  telemetryRefreshRate: 3600,
37
37
  // publish evaluations each 300 sec (default value for OPTIMIZED impressions mode)
38
38
  impressionsRefreshRate: 300,
39
+ // publish unique Keys each 900 sec (15 min)
40
+ uniqueKeysRefreshRate: 900,
39
41
  // fetch offline changes each 15 sec
40
42
  offlineRefreshRate: 15,
41
43
  // publish events every 60 seconds after the first flush
@@ -130,11 +132,13 @@ export function settingsValidation(config: unknown, validationParams: ISettingsV
130
132
  scheduler.segmentsRefreshRate = fromSecondsToMillis(scheduler.segmentsRefreshRate);
131
133
  scheduler.offlineRefreshRate = fromSecondsToMillis(scheduler.offlineRefreshRate);
132
134
  scheduler.eventsPushRate = fromSecondsToMillis(scheduler.eventsPushRate);
135
+ scheduler.uniqueKeysRefreshRate = fromSecondsToMillis(scheduler.uniqueKeysRefreshRate);
133
136
  scheduler.telemetryRefreshRate = fromSecondsToMillis(validateMinValue('telemetryRefreshRate', scheduler.telemetryRefreshRate, 60));
134
137
 
135
138
  // Default impressionsRefreshRate for DEBUG mode is 60 secs
136
139
  if (get(config, 'scheduler.impressionsRefreshRate') === undefined && withDefaults.sync.impressionsMode === DEBUG) scheduler.impressionsRefreshRate = 60;
137
140
  scheduler.impressionsRefreshRate = fromSecondsToMillis(scheduler.impressionsRefreshRate);
141
+
138
142
 
139
143
  // Log deprecation for old telemetry param
140
144
  if (scheduler.metricsRefreshRate) log.warn('`metricsRefreshRate` will be deprecated soon. For configuring telemetry rates, update `telemetryRefreshRate` value in configs');
@@ -200,7 +204,6 @@ export function settingsValidation(config: unknown, validationParams: ISettingsV
200
204
  // validate the `splitFilters` settings and parse splits query
201
205
  const splitFiltersValidation = validateSplitFilters(log, withDefaults.sync.splitFilters, withDefaults.mode);
202
206
  withDefaults.sync.splitFilters = splitFiltersValidation.validFilters;
203
- // @ts-ignore
204
207
  withDefaults.sync.__splitFiltersValidation = splitFiltersValidation;
205
208
 
206
209
  // ensure a valid user consent value
@@ -1,5 +1,5 @@
1
1
  import { WARN_INTEGRATION_INVALID } from '../../../logger/constants';
2
- import { ILogger } from '../../../types';
2
+ import { ILogger } from '../../../logger/types';
3
3
 
4
4
  /**
5
5
  * This function validates `settings.integrations` object
@@ -1,6 +1,6 @@
1
1
  import { validateIntegrations } from './common';
2
2
  import { isString } from '../../lang';
3
- import { ILogger } from '../../../types';
3
+ import { ILogger } from '../../../logger/types';
4
4
 
5
5
  /**
6
6
  * This function validates `settings.integrations` object that consists of a list of configuration items, used by the isomorphic JS SDK.
@@ -1,5 +1,6 @@
1
- import { ISettings, ILogger } from '../../../types';
1
+ import { ISettings } from '../../../types';
2
2
  import { validateIntegrations } from './common';
3
+ import { ILogger } from '../../../logger/types';
3
4
 
4
5
  /**
5
6
  * This function validates `settings.integrations` object that consists of a list of pluggable integration factories.
@@ -1,4 +1,5 @@
1
- import { SDKMode, ILogger } from '../../../types';
1
+ import { ILogger } from '../../../logger/types';
2
+ import { SDKMode, } from '../../../types';
2
3
  import { LocalhostFromObject } from '../../../sync/offline/LocalhostFromObject';
3
4
  import { validateLocalhost } from './pluggable';
4
5
 
@@ -1,5 +1,6 @@
1
1
  import { ERROR_LOCALHOST_MODULE_REQUIRED } from '../../../logger/constants';
2
- import { SDKMode, ILogger } from '../../../types';
2
+ import { ILogger } from '../../../logger/types';
3
+ import { SDKMode, } from '../../../types';
3
4
  import { LOCALHOST_MODE } from '../../constants';
4
5
 
5
6
  /**
@@ -1,10 +1,11 @@
1
1
  import { isLogLevelString, Logger, LogLevels } from '../../../logger';
2
+ import { ILogger } from '../../../logger/types';
2
3
  import { isLocalStorageAvailable } from '../../env/isLocalStorageAvailable';
3
4
  import { isNode } from '../../env/isNode';
4
5
  import { codesDebug } from '../../../logger/messages/debug';
5
6
  import { _Map } from '../../lang/maps';
6
7
  import { getLogLevel } from './commons';
7
- import { LogLevel, ILogger } from '../../../types';
8
+ import { LogLevel } from '../../../types';
8
9
 
9
10
  const allCodes = new _Map(codesDebug);
10
11
 
@@ -1,5 +1,6 @@
1
1
  import { Logger, LogLevels } from '../../../logger';
2
- import { LogLevel, ILogger } from '../../../types';
2
+ import { ILogger } from '../../../logger/types';
3
+ import { LogLevel } from '../../../types';
3
4
  import { getLogLevel } from './commons';
4
5
 
5
6
  function isLogger(log: any): log is ILogger {
@@ -1,18 +1,20 @@
1
1
  import { STANDALONE_MODE } from '../constants';
2
2
  import { validateSplits } from '../inputValidation/splits';
3
- import { ISplitFiltersValidation, SplitFilterType, ILogger } from '../../types';
3
+ import { ISplitFiltersValidation } from '../../dtos/types';
4
+ import { SplitIO } from '../../types';
5
+ import { ILogger } from '../../logger/types';
4
6
  import { WARN_SPLITS_FILTER_IGNORED, WARN_SPLITS_FILTER_EMPTY, WARN_SPLITS_FILTER_INVALID, SETTINGS_SPLITS_FILTER, LOG_PREFIX_SETTINGS } from '../../logger/constants';
5
7
 
6
8
  // Split filters metadata.
7
9
  // Ordered according to their precedency when forming the filter query string: `&names=<values>&prefixes=<values>`
8
10
  const FILTERS_METADATA = [
9
11
  {
10
- type: 'byName' as SplitFilterType,
12
+ type: 'byName' as SplitIO.SplitFilterType,
11
13
  maxLength: 400,
12
14
  queryParam: 'names='
13
15
  },
14
16
  {
15
- type: 'byPrefix' as SplitFilterType,
17
+ type: 'byPrefix' as SplitIO.SplitFilterType,
16
18
  maxLength: 50,
17
19
  queryParam: 'prefixes='
18
20
  }
@@ -21,7 +23,7 @@ const FILTERS_METADATA = [
21
23
  /**
22
24
  * Validates that the given value is a valid filter type
23
25
  */
24
- function validateFilterType(maybeFilterType: any): maybeFilterType is SplitFilterType {
26
+ function validateFilterType(maybeFilterType: any): maybeFilterType is SplitIO.SplitFilterType {
25
27
  return FILTERS_METADATA.some(filterMetadata => filterMetadata.type === maybeFilterType);
26
28
  }
27
29
 
@@ -35,7 +37,7 @@ function validateFilterType(maybeFilterType: any): maybeFilterType is SplitFilte
35
37
  *
36
38
  * @throws Error if the sanitized list exceeds the length indicated by `maxLength`
37
39
  */
38
- function validateSplitFilter(log: ILogger, type: SplitFilterType, values: string[], maxLength: number) {
40
+ function validateSplitFilter(log: ILogger, type: SplitIO.SplitFilterType, values: string[], maxLength: number) {
39
41
  // validate and remove invalid and duplicated values
40
42
  let result = validateSplits(log, values, LOG_PREFIX_SETTINGS, `${type} filter`, `${type} filter value`);
41
43
 
@@ -61,7 +63,7 @@ function validateSplitFilter(log: ILogger, type: SplitFilterType, values: string
61
63
  * @param {Object} groupedFilters object of filters. Each filter must be a list of valid, unique and ordered string values.
62
64
  * @returns null or string with the `split filter query` component of the URL.
63
65
  */
64
- function queryStringBuilder(groupedFilters: Record<SplitFilterType, string[]>) {
66
+ function queryStringBuilder(groupedFilters: Record<SplitIO.SplitFilterType, string[]>) {
65
67
  const queryParams: string[] = [];
66
68
  FILTERS_METADATA.forEach(({ type, queryParam }) => {
67
69
  const filter = groupedFilters[type];
@@ -107,7 +109,7 @@ export function validateSplitFilters(log: ILogger, maybeSplitFilters: any, mode:
107
109
  // Validate filters and group their values by filter type inside `groupedFilters` object
108
110
  res.validFilters = maybeSplitFilters.filter((filter, index) => {
109
111
  if (filter && validateFilterType(filter.type) && Array.isArray(filter.values)) {
110
- res.groupedFilters[filter.type as SplitFilterType] = res.groupedFilters[filter.type as SplitFilterType].concat(filter.values);
112
+ res.groupedFilters[filter.type as SplitIO.SplitFilterType] = res.groupedFilters[filter.type as SplitIO.SplitFilterType].concat(filter.values);
111
113
  return true;
112
114
  } else {
113
115
  log.warn(WARN_SPLITS_FILTER_INVALID, [index]);
@@ -1,5 +1,6 @@
1
1
  import { InMemoryStorageCSFactory } from '../../../storages/inMemory/InMemoryStorageCS';
2
- import { ISettings, SDKMode, ILogger } from '../../../types';
2
+ import { ISettings, SDKMode } from '../../../types';
3
+ import { ILogger } from '../../../logger/types';
3
4
  import { ERROR_STORAGE_INVALID } from '../../../logger/constants';
4
5
  import { LOCALHOST_MODE, STANDALONE_MODE, STORAGE_PLUGGABLE, STORAGE_LOCALSTORAGE, STORAGE_MEMORY } from '../../../utils/constants';
5
6
  import { IStorageFactoryParams, IStorageSync } from '../../../storages/types';
@@ -0,0 +1,2 @@
1
+ import { ISettings } from '../types';
2
+ export declare function isConsentGranted(settings: ISettings): boolean;
@@ -0,0 +1,13 @@
1
+ import { ISdkFactoryContext } from '../sdkFactory/types';
2
+ /**
3
+ * The public user consent API exposed via SplitFactory, used to control if the SDK tracks and sends impressions and events or not.
4
+ */
5
+ export declare function createUserConsentAPI(params: ISdkFactoryContext): {
6
+ setStatus(consent: unknown): boolean;
7
+ getStatus(): import("../types").ConsentStatus | undefined;
8
+ Status: {
9
+ GRANTED: string;
10
+ DECLINED: string;
11
+ UNKNOWN: string;
12
+ };
13
+ };
@@ -0,0 +1,172 @@
1
+ import { SplitIO } from '../types';
2
+ export declare type MaybeThenable<T> = T | Promise<T>;
3
+ /** Split Matchers */
4
+ export declare type IMatcherDataType = null | 'DATETIME' | 'NUMBER';
5
+ export interface IUnaryNumericMatcherData {
6
+ dataType: IMatcherDataType;
7
+ value: number;
8
+ }
9
+ export interface IBetweenMatcherData {
10
+ dataType: IMatcherDataType;
11
+ start: number;
12
+ end: number;
13
+ }
14
+ export interface IWhitelistMatcherData {
15
+ whitelist: string[];
16
+ }
17
+ export interface IInSegmentMatcherData {
18
+ segmentName: string;
19
+ }
20
+ export interface IDependencyMatcherData {
21
+ split: string;
22
+ treatments: string[];
23
+ }
24
+ interface ISplitMatcherBase {
25
+ matcherType: string;
26
+ negate: boolean;
27
+ keySelector: null | {
28
+ trafficType: string;
29
+ attribute: string | null;
30
+ };
31
+ userDefinedSegmentMatcherData?: null | IInSegmentMatcherData;
32
+ whitelistMatcherData?: null | IWhitelistMatcherData;
33
+ unaryNumericMatcherData?: null | IUnaryNumericMatcherData;
34
+ betweenMatcherData?: null | IBetweenMatcherData;
35
+ dependencyMatcherData?: null | IDependencyMatcherData;
36
+ booleanMatcherData?: null | boolean;
37
+ stringMatcherData?: null | string;
38
+ }
39
+ interface IAllKeysMatcher extends ISplitMatcherBase {
40
+ matcherType: 'ALL_KEYS';
41
+ }
42
+ interface IInSegmentMatcher extends ISplitMatcherBase {
43
+ matcherType: 'IN_SEGMENT';
44
+ userDefinedSegmentMatcherData: IInSegmentMatcherData;
45
+ }
46
+ interface IWhitelistMatcher extends ISplitMatcherBase {
47
+ matcherType: 'WHITELIST';
48
+ whitelistMatcherData: IWhitelistMatcherData;
49
+ }
50
+ interface IEqualToMatcher extends ISplitMatcherBase {
51
+ matcherType: 'EQUAL_TO';
52
+ unaryNumericMatcherData: IUnaryNumericMatcherData;
53
+ }
54
+ interface IGreaterThanOrEqualToMatcher extends ISplitMatcherBase {
55
+ matcherType: 'GREATER_THAN_OR_EQUAL_TO';
56
+ unaryNumericMatcherData: IUnaryNumericMatcherData;
57
+ }
58
+ interface ILessThanOrEqualToMatcher extends ISplitMatcherBase {
59
+ matcherType: 'LESS_THAN_OR_EQUAL_TO';
60
+ unaryNumericMatcherData: IUnaryNumericMatcherData;
61
+ }
62
+ interface IBetweenMatcher extends ISplitMatcherBase {
63
+ matcherType: 'BETWEEN';
64
+ betweenMatcherData: IBetweenMatcherData;
65
+ }
66
+ interface IEqualToSetMatcher extends ISplitMatcherBase {
67
+ matcherType: 'EQUAL_TO_SET';
68
+ whitelistMatcherData: IWhitelistMatcherData;
69
+ }
70
+ interface IContainsAnyOfSetMatcher extends ISplitMatcherBase {
71
+ matcherType: 'CONTAINS_ANY_OF_SET';
72
+ whitelistMatcherData: IWhitelistMatcherData;
73
+ }
74
+ interface IContainsAllOfSetMatcher extends ISplitMatcherBase {
75
+ matcherType: 'CONTAINS_ALL_OF_SET';
76
+ whitelistMatcherData: IWhitelistMatcherData;
77
+ }
78
+ interface IPartOfSetMatcher extends ISplitMatcherBase {
79
+ matcherType: 'PART_OF_SET';
80
+ whitelistMatcherData: IWhitelistMatcherData;
81
+ }
82
+ interface IStartsWithMatcher extends ISplitMatcherBase {
83
+ matcherType: 'STARTS_WITH';
84
+ whitelistMatcherData: IWhitelistMatcherData;
85
+ }
86
+ interface IEndsWithMatcher extends ISplitMatcherBase {
87
+ matcherType: 'ENDS_WITH';
88
+ whitelistMatcherData: IWhitelistMatcherData;
89
+ }
90
+ interface IContainsStringMatcher extends ISplitMatcherBase {
91
+ matcherType: 'CONTAINS_STRING';
92
+ whitelistMatcherData: IWhitelistMatcherData;
93
+ }
94
+ interface IInSplitTreatmentMatcher extends ISplitMatcherBase {
95
+ matcherType: 'IN_SPLIT_TREATMENT';
96
+ dependencyMatcherData: IDependencyMatcherData;
97
+ }
98
+ interface IEqualToBooleanMatcher extends ISplitMatcherBase {
99
+ matcherType: 'EQUAL_TO_BOOLEAN';
100
+ booleanMatcherData: boolean;
101
+ }
102
+ interface IMatchesStringMatcher extends ISplitMatcherBase {
103
+ matcherType: 'MATCHES_STRING';
104
+ stringMatcherData: string;
105
+ }
106
+ export declare type ISplitMatcher = IAllKeysMatcher | IInSegmentMatcher | IWhitelistMatcher | IEqualToMatcher | IGreaterThanOrEqualToMatcher | ILessThanOrEqualToMatcher | IBetweenMatcher | IEqualToSetMatcher | IContainsAnyOfSetMatcher | IContainsAllOfSetMatcher | IPartOfSetMatcher | IStartsWithMatcher | IEndsWithMatcher | IContainsStringMatcher | IInSplitTreatmentMatcher | IEqualToBooleanMatcher | IMatchesStringMatcher;
107
+ /** Split object */
108
+ export interface ISplitPartition {
109
+ treatment: string;
110
+ size: number;
111
+ }
112
+ export interface ISplitCondition {
113
+ matcherGroup: {
114
+ combiner: 'AND';
115
+ matchers: ISplitMatcher[];
116
+ };
117
+ partitions: ISplitPartition[];
118
+ label: string;
119
+ conditionType: 'ROLLOUT' | 'WHITELIST';
120
+ }
121
+ export interface ISplit {
122
+ name: string;
123
+ changeNumber: number;
124
+ killed: boolean;
125
+ defaultTreatment: string;
126
+ trafficTypeName: string;
127
+ conditions: ISplitCondition[];
128
+ status: 'ACTIVE' | 'ARCHIVED';
129
+ seed: number;
130
+ trafficAllocation?: number;
131
+ trafficAllocationSeed?: number;
132
+ configurations?: {
133
+ [treatmentName: string]: string;
134
+ };
135
+ }
136
+ export declare type ISplitPartial = Pick<ISplit, 'conditions' | 'configurations' | 'trafficTypeName'>;
137
+ /** Interface of the parsed JSON response of `/splitChanges` */
138
+ export interface ISplitChangesResponse {
139
+ till: number;
140
+ splits: ISplit[];
141
+ }
142
+ /** Interface of the parsed JSON response of `/segmentChanges/{segmentName}` */
143
+ export interface ISegmentChangesResponse {
144
+ name: string;
145
+ added: string[];
146
+ removed: string[];
147
+ since: number;
148
+ till: number;
149
+ }
150
+ export interface IMySegmentsResponseItem {
151
+ id: string;
152
+ name: string;
153
+ }
154
+ /** Interface of the parsed JSON response of `/mySegments/{userKey}` */
155
+ export interface IMySegmentsResponse {
156
+ mySegments: IMySegmentsResponseItem[];
157
+ }
158
+ /** Metadata internal type for storages */
159
+ export interface IMetadata {
160
+ /** SDK version */
161
+ s: string;
162
+ /** host IP */
163
+ i: string;
164
+ /** host name */
165
+ n: string;
166
+ }
167
+ export declare type ISplitFiltersValidation = {
168
+ queryString: string | null;
169
+ groupedFilters: Record<SplitIO.SplitFilterType, string[]>;
170
+ validFilters: SplitIO.SplitFilter[];
171
+ };
172
+ export {};
@@ -0,0 +1,15 @@
1
+ import { ISplit, MaybeThenable } from '../dtos/types';
2
+ import { SplitIO } from '../types';
3
+ import { IStorageAsync, IStorageSync } from '../storages/types';
4
+ import { IEvaluationResult, IEvaluator, ISplitEvaluator } from './types';
5
+ import { ILogger } from '../logger/types';
6
+ export declare class Engine {
7
+ private baseInfo;
8
+ private evaluator;
9
+ constructor(baseInfo: ISplit, evaluator: IEvaluator);
10
+ static parse(log: ILogger, splitFlatStructure: ISplit, storage: IStorageSync | IStorageAsync): Engine;
11
+ getKey(): string;
12
+ getTreatment(key: SplitIO.SplitKey, attributes: SplitIO.Attributes | undefined, splitEvaluator: ISplitEvaluator): MaybeThenable<IEvaluationResult>;
13
+ isGarbage(): boolean;
14
+ getChangeNumber(): number;
15
+ }
@@ -0,0 +1,4 @@
1
+ import { ILogger } from '../../logger/types';
2
+ import { MaybeThenable } from '../../dtos/types';
3
+ import { IMatcher } from '../types';
4
+ export declare function andCombinerContext(log: ILogger, matchers: IMatcher[]): (...params: any) => MaybeThenable<boolean>;
@@ -0,0 +1,3 @@
1
+ import { ILogger } from '../../logger/types';
2
+ import { IEvaluator } from '../types';
3
+ export declare function ifElseIfCombinerContext(log: ILogger, predicates: IEvaluator[]): IEvaluator;