@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
@@ -0,0 +1,11 @@
1
+ import { ILogger } from '../../logger/types';
2
+ /**
3
+ * Get the treatment name given a key, a seed, and the percentage of each treatment.
4
+ */
5
+ export declare function getTreatment(log: ILogger, key: string, seed: number, treatments: {
6
+ getTreatmentFor: (x: number) => string;
7
+ }): string;
8
+ /**
9
+ * Evaluates the traffic allocation to see if we should apply rollout conditions or not.
10
+ */
11
+ export declare function shouldApplyRollout(trafficAllocation: number, key: string, trafficAllocationSeed: number): boolean;
@@ -0,0 +1,6 @@
1
+ import { MaybeThenable } from '../../dtos/types';
2
+ import { IEvaluator } from '../types';
3
+ import { ILogger } from '../../logger/types';
4
+ export declare function conditionContext(log: ILogger, matcherEvaluator: (...args: any) => MaybeThenable<boolean>, treatments: {
5
+ getTreatmentFor: (x: number) => string;
6
+ }, label: string, conditionType: 'ROLLOUT' | 'WHITELIST'): IEvaluator;
@@ -0,0 +1,2 @@
1
+ export declare function zeroSinceHH(millisSinceEpoch: number): number;
2
+ export declare function zeroSinceSS(millisSinceEpoch: number): number;
@@ -0,0 +1,7 @@
1
+ import { MaybeThenable } from '../dtos/types';
2
+ import { IStorageAsync, IStorageSync } from '../storages/types';
3
+ import { IEvaluationResult } from './types';
4
+ import { SplitIO } from '../types';
5
+ import { ILogger } from '../logger/types';
6
+ export declare function evaluateFeature(log: ILogger, key: SplitIO.SplitKey, splitName: string, attributes: SplitIO.Attributes | undefined, storage: IStorageSync | IStorageAsync): MaybeThenable<IEvaluationResult>;
7
+ export declare function evaluateFeatures(log: ILogger, key: SplitIO.SplitKey, splitNames: string[], attributes: SplitIO.Attributes | undefined, storage: IStorageSync | IStorageAsync): MaybeThenable<Record<string, IEvaluationResult>>;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function allMatcherContext(log: ILogger): (runtimeAttr: string) => boolean;
@@ -0,0 +1,3 @@
1
+ import { IBetweenMatcherData } from '../../dtos/types';
2
+ import { ILogger } from '../../logger/types';
3
+ export declare function betweenMatcherContext(log: ILogger, ruleVO: IBetweenMatcherData): (runtimeAttr: number) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function booleanMatcherContext(log: ILogger, ruleAttr: boolean): (runtimeAttr: boolean) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function containsAllSetMatcherContext(log: ILogger, ruleAttr: string[]): (runtimeAttr: string[]) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function containsAnySetMatcherContext(log: ILogger, ruleAttr: string[]): (runtimeAttr: string[]) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function containsStringMatcherContext(log: ILogger, ruleAttr: string[]): (runtimeAttr: string) => boolean;
@@ -0,0 +1,5 @@
1
+ import { IDependencyMatcherData, MaybeThenable } from '../../dtos/types';
2
+ import { IStorageAsync, IStorageSync } from '../../storages/types';
3
+ import { ILogger } from '../../logger/types';
4
+ import { IDependencyMatcherValue, ISplitEvaluator } from '../types';
5
+ export declare function dependencyMatcherContext(log: ILogger, { split, treatments }: IDependencyMatcherData, storage: IStorageSync | IStorageAsync): ({ key, attributes }: IDependencyMatcherValue, splitEvaluator: ISplitEvaluator) => MaybeThenable<boolean>;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function equalToMatcherContext(log: ILogger, ruleAttr: number): (runtimeAttr: number) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function equalToSetMatcherContext(log: ILogger, ruleAttr: string[]): (runtimeAttr: string[]) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function endsWithMatcherContext(log: ILogger, ruleAttr: string[]): (runtimeAttr: string) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function greaterThanEqualMatcherContext(log: ILogger, ruleAttr: number): (runtimeAttr: number) => boolean;
@@ -0,0 +1,7 @@
1
+ import { IStorageAsync, IStorageSync } from '../../storages/types';
2
+ import { IMatcher, IMatcherDto } from '../types';
3
+ import { ILogger } from '../../logger/types';
4
+ /**
5
+ * Matcher factory.
6
+ */
7
+ export declare function matcherFactory(log: ILogger, matcherDto: IMatcherDto, storage?: IStorageSync | IStorageAsync): IMatcher | undefined;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function lessThanEqualMatcherContext(log: ILogger, ruleAttr: number): (runtimeAttr: number) => boolean;
@@ -0,0 +1,10 @@
1
+ export declare const matcherTypes: Record<string, number>;
2
+ export declare const matcherDataTypes: {
3
+ BOOLEAN: string;
4
+ STRING: string;
5
+ NUMBER: string;
6
+ SET: string;
7
+ DATETIME: string;
8
+ NOT_SPECIFIED: string;
9
+ };
10
+ export declare function matcherTypesMapper(matcherType: string): number;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function partOfSetMatcherContext(log: ILogger, ruleAttr: string[]): (runtimeAttr: string[]) => boolean;
@@ -0,0 +1,6 @@
1
+ import { MaybeThenable } from '../../dtos/types';
2
+ import { ISegmentsCacheBase } from '../../storages/types';
3
+ import { ILogger } from '../../logger/types';
4
+ export declare function segmentMatcherContext(log: ILogger, segmentName: string, storage: {
5
+ segments: ISegmentsCacheBase;
6
+ }): (key: string) => MaybeThenable<boolean>;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function stringMatcherContext(log: ILogger, ruleAttr: string): (runtimeAttr: string) => boolean;
@@ -0,0 +1,2 @@
1
+ import { ILogger } from '../../logger/types';
2
+ export declare function startsWithMatcherContext(log: ILogger, ruleAttr: string[]): (runtimeAttr: string) => boolean;
@@ -0,0 +1,3 @@
1
+ import { ISet } from '../../utils/lang/sets';
2
+ import { ILogger } from '../../logger/types';
3
+ export declare function whitelistMatcherContext(log: ILogger, ruleAttr: ISet<string>): (runtimeAttr: string) => boolean;
@@ -0,0 +1,6 @@
1
+ import { ISplitMatcher } from '../../dtos/types';
2
+ import { IMatcherDto } from '../types';
3
+ /**
4
+ * Flat the complex matcherGroup structure into something handy.
5
+ */
6
+ export declare function matchersTransform(matchers: ISplitMatcher[]): IMatcherDto[];
@@ -0,0 +1,5 @@
1
+ import { IInSegmentMatcherData } from '../../dtos/types';
2
+ /**
3
+ * Extract segment name as a plain string.
4
+ */
5
+ export declare function segmentTransform(segment?: IInSegmentMatcherData): string | undefined;
@@ -0,0 +1,5 @@
1
+ import { IWhitelistMatcherData } from '../../dtos/types';
2
+ /**
3
+ * Extract whitelist array. Used by set and string matchers
4
+ */
5
+ export declare function setTransform(whitelistObject: IWhitelistMatcherData): string[];
@@ -0,0 +1,5 @@
1
+ import { IUnaryNumericMatcherData } from '../../dtos/types';
2
+ /**
3
+ * Extract value from unary matcher data.
4
+ */
5
+ export declare function numericTransform(unaryNumericObject: IUnaryNumericMatcherData): number;
@@ -0,0 +1,5 @@
1
+ import { IWhitelistMatcherData } from '../../dtos/types';
2
+ /**
3
+ * Extract whitelist as a set. Used by 'WHITELIST' matcher.
4
+ */
5
+ export declare function whitelistTransform(whitelistObject: IWhitelistMatcherData): import("../../utils/lang/sets").ISet<string>;
@@ -0,0 +1,5 @@
1
+ import { IEvaluator } from '../types';
2
+ import { ISplitCondition } from '../../dtos/types';
3
+ import { IStorageAsync, IStorageSync } from '../../storages/types';
4
+ import { ILogger } from '../../logger/types';
5
+ export declare function parser(log: ILogger, conditions: ISplitCondition[], storage: IStorageSync | IStorageAsync): IEvaluator;
@@ -0,0 +1,8 @@
1
+ import { ISplitPartition } from '../../dtos/types';
2
+ export declare class Treatments {
3
+ private _ranges;
4
+ private _treatments;
5
+ constructor(ranges: number[], treatments: string[]);
6
+ static parse(data: ISplitPartition[]): Treatments;
7
+ getTreatmentFor(x: number): string;
8
+ }
@@ -0,0 +1,28 @@
1
+ import { IBetweenMatcherData, IDependencyMatcherData, MaybeThenable } from '../dtos/types';
2
+ import { IStorageAsync, IStorageSync } from '../storages/types';
3
+ import { ISet } from '../utils/lang/sets';
4
+ import { SplitIO } from '../types';
5
+ import { ILogger } from '../logger/types';
6
+ export interface IDependencyMatcherValue {
7
+ key: SplitIO.SplitKey;
8
+ attributes?: SplitIO.Attributes;
9
+ }
10
+ export interface IMatcherDto {
11
+ type: number;
12
+ value?: string | number | boolean | string[] | IDependencyMatcherData | ISet<string> | IBetweenMatcherData | null;
13
+ attribute: string | null;
14
+ negate: boolean;
15
+ dataType: string;
16
+ }
17
+ export interface IEvaluation {
18
+ treatment?: string;
19
+ label: string;
20
+ changeNumber?: number;
21
+ config?: string | null;
22
+ }
23
+ export declare type IEvaluationResult = IEvaluation & {
24
+ treatment: string;
25
+ };
26
+ export declare type ISplitEvaluator = (log: ILogger, key: SplitIO.SplitKey, splitName: string, attributes: SplitIO.Attributes | undefined, storage: IStorageSync | IStorageAsync) => MaybeThenable<IEvaluation>;
27
+ export declare type IEvaluator = (key: SplitIO.SplitKey, seed: number, trafficAllocation?: number, trafficAllocationSeed?: number, attributes?: SplitIO.Attributes, splitEvaluator?: ISplitEvaluator) => MaybeThenable<IEvaluation | undefined>;
28
+ export declare type IMatcher = (...args: any) => MaybeThenable<boolean>;
@@ -0,0 +1,7 @@
1
+ import { SplitIO } from '../../types';
2
+ import { IMatcherDto } from '../types';
3
+ import { ILogger } from '../../logger/types';
4
+ /**
5
+ * Defines value to be matched (key / attribute).
6
+ */
7
+ export declare function sanitizeValue(log: ILogger, key: string, matcherDto: IMatcherDto, attributes?: SplitIO.Attributes): string | number | boolean | (string | number)[] | import("../types").IDependencyMatcherValue | undefined;
@@ -0,0 +1,7 @@
1
+ import { SplitIO } from '../../types';
2
+ import { IDependencyMatcherValue } from '../types';
3
+ import { ILogger } from '../../logger/types';
4
+ /**
5
+ * Sanitize matcher value
6
+ */
7
+ export declare function sanitize(log: ILogger, matcherTypeID: number, value: string | number | boolean | Array<string | number> | undefined, dataType: string, attributes?: SplitIO.Attributes): string | number | boolean | (string | number)[] | IDependencyMatcherValue | undefined;
@@ -0,0 +1,5 @@
1
+ export { InMemoryStorageFactory } from './storages/inMemory/InMemoryStorage';
2
+ export { InMemoryStorageCSFactory } from './storages/inMemory/InMemoryStorageCS';
3
+ export { InLocalStorage } from './storages/inLocalStorage';
4
+ export { PluggableStorage } from './storages/pluggable';
5
+ export { InRedisStorage } from './storages/inRedis';
@@ -0,0 +1,12 @@
1
+ import { IIntegrationManager, IIntegrationFactoryParams } from './types';
2
+ import { BrowserIntegration } from './ga/types';
3
+ /**
4
+ * IntegrationsManager factory for the browser variant of the isomorphic JS SDK.
5
+ * The integrations manager instantiates integration modules, and bypass tracked events and impressions to them.
6
+ *
7
+ * @param integrations valid integration settings object for browser sdk
8
+ * @param params information of the Sdk factory instance that integrations can access to
9
+ *
10
+ * @returns integration manager or undefined if `integrations` are not present in settings.
11
+ */
12
+ export declare function integrationsManagerFactory(integrations: BrowserIntegration[], params: IIntegrationFactoryParams): IIntegrationManager | undefined;
@@ -0,0 +1,40 @@
1
+ /// <reference types="google.analytics" />
2
+ import { SplitIO } from '../../types';
3
+ import { Identity, GoogleAnalyticsToSplitOptions } from './types';
4
+ import { ILogger } from '../../logger/types';
5
+ import { IIntegrationFactoryParams } from '../types';
6
+ export declare const defaultMapper: (model: UniversalAnalytics.Model) => SplitIO.EventData;
7
+ export declare const defaultPrefix = "ga";
8
+ /**
9
+ * Return a new list of identities removing invalid and duplicated ones.
10
+ *
11
+ * @param {Array} identities list of identities
12
+ * @returns list of valid and unique identities. The list might be empty if `identities` is not an array or all its elements are invalid.
13
+ */
14
+ export declare function validateIdentities(identities?: Identity[]): Identity[];
15
+ /**
16
+ * Checks if EventData fields (except EventTypeId) are valid, and logs corresponding warnings.
17
+ * EventTypeId is validated separately.
18
+ *
19
+ * @param {EventData} data event data instance to validate. Precondition: data != undefined
20
+ * @returns {boolean} Whether the data instance is a valid EventData or not.
21
+ */
22
+ export declare function validateEventData(log: ILogger, eventData: any): eventData is SplitIO.EventData;
23
+ /**
24
+ * Fixes the passed string value to comply with EventTypeId format, by removing invalid characters and truncating if necessary.
25
+ *
26
+ * @param {object} log factory logger
27
+ * @param {string} eventTypeId string value to fix.
28
+ * @returns {string} Fixed version of `eventTypeId`.
29
+ */
30
+ export declare function fixEventTypeId(log: ILogger, eventTypeId: any): any;
31
+ /**
32
+ * GaToSplit integration.
33
+ * This function provides the SplitTracker plugin to ga command queue.
34
+ *
35
+ * @param {object} sdkOptions options passed at the SDK integrations settings (isomorphic SDK) or the GoogleAnalyticsToSplit plugin (pluggable browser SDK)
36
+ * @param {object} storage SDK storage passed to track events
37
+ * @param {object} coreSettings core settings used to define an identity if no one provided as SDK or plugin options
38
+ * @param {object} log factory logger
39
+ */
40
+ export declare function GaToSplit(sdkOptions: GoogleAnalyticsToSplitOptions, params: IIntegrationFactoryParams): void;
@@ -0,0 +1,3 @@
1
+ import { IntegrationFactory } from '../types';
2
+ import { GoogleAnalyticsToSplitOptions } from './types';
3
+ export declare function GoogleAnalyticsToSplit(options?: GoogleAnalyticsToSplitOptions): IntegrationFactory;
@@ -0,0 +1,34 @@
1
+ /// <reference types="google.analytics" />
2
+ import { SplitIO } from '../../types';
3
+ import { IIntegration } from '../types';
4
+ import { SplitToGoogleAnalyticsOptions } from './types';
5
+ import { ILogger } from '../../logger/types';
6
+ export declare class SplitToGa implements IIntegration {
7
+ static defaultTrackerNames: string[];
8
+ private trackerNames;
9
+ private filter?;
10
+ private mapper?;
11
+ private impressions;
12
+ private events;
13
+ private log;
14
+ static defaultMapper({ type, payload }: SplitIO.IntegrationData): UniversalAnalytics.FieldsObject;
15
+ static getGa(): UniversalAnalytics.ga | undefined;
16
+ /**
17
+ * Validates if a given object is a UniversalAnalytics.FieldsObject instance, and logs a warning if not.
18
+ * It checks that the object contains a `hitType`, since it is the minimal field required to send the hit
19
+ * and avoid the GA error `No hit type specified. Aborting hit.`.
20
+ * Other validations (e.g., an `event` hitType must have a `eventCategory` and `eventAction`) are handled
21
+ * and logged (as warnings or errors depending the case) by GA debugger, but the hit is sent anyway.
22
+ *
23
+ * @param {object} log factory logger
24
+ * @param {UniversalAnalytics.FieldsObject} fieldsObject object to validate.
25
+ * @returns {boolean} Whether the data instance is a valid FieldsObject or not.
26
+ */
27
+ static validateFieldsObject(log: ILogger, fieldsObject: any): fieldsObject is UniversalAnalytics.FieldsObject;
28
+ /**
29
+ * constructor description
30
+ * @param {object} options options passed at the SDK integrations settings (isomorphic SDK) or the SplitToGoogleAnalytics plugin (pluggable browser SDK)
31
+ */
32
+ constructor(log: ILogger, options: SplitToGoogleAnalyticsOptions);
33
+ queue(data: SplitIO.IntegrationData): void;
34
+ }
@@ -0,0 +1,3 @@
1
+ import { IntegrationFactory } from '../types';
2
+ import { SplitToGoogleAnalyticsOptions } from './types';
3
+ export declare function SplitToGoogleAnalytics(options?: SplitToGoogleAnalyticsOptions): IntegrationFactory;
@@ -0,0 +1,148 @@
1
+ /// <reference types="google.analytics" />
2
+ import { SplitIO } from '../../types';
3
+ /**
4
+ * A pair of user key and it's trafficType, required for tracking valid Split events.
5
+ * @typedef {Object} Identity
6
+ * @property {string} key The user key.
7
+ * @property {string} trafficType The key traffic type.
8
+ */
9
+ export declare type Identity = {
10
+ key: string;
11
+ trafficType: string;
12
+ };
13
+ /**
14
+ * Options for GoogleAnalyticsToSplit integration plugin
15
+ */
16
+ export interface GoogleAnalyticsToSplitOptions {
17
+ /**
18
+ * Optional flag to filter GA hits from being tracked as Split events.
19
+ * @property {boolean} hits
20
+ * @default true
21
+ */
22
+ hits?: boolean;
23
+ /**
24
+ * Optional predicate used to define a custom filter for tracking GA hits as Split events.
25
+ * For example, the following filter allows to track only 'event' hits:
26
+ * `(model) => model.get('hitType') === 'event'`
27
+ * By default, all hits are tracked as Split events.
28
+ */
29
+ filter?: (model: UniversalAnalytics.Model) => boolean;
30
+ /**
31
+ * Optional function useful when you need to modify the Split event before tracking it.
32
+ * This function is invoked with two arguments:
33
+ * 1. the GA model object representing the hit.
34
+ * 2. the default format of the mapped Split event instance.
35
+ * The return value must be a Split event, that can be the second argument or a new object.
36
+ *
37
+ * For example, the following mapper adds a custom property to events:
38
+ * `(model, defaultMapping) => {
39
+ * defaultMapping.properties.someProperty = SOME_VALUE;
40
+ * return defaultMapping;
41
+ * }`
42
+ */
43
+ mapper?: (model: UniversalAnalytics.Model, defaultMapping: SplitIO.EventData) => SplitIO.EventData;
44
+ /**
45
+ * Optional prefix for EventTypeId, to prevent any kind of data collision between events.
46
+ * @property {string} prefix
47
+ * @default 'ga'
48
+ */
49
+ prefix?: string;
50
+ /**
51
+ * List of Split identities (key & traffic type pairs) used to track events.
52
+ * If not provided, events are sent using the key and traffic type provided at SDK config
53
+ */
54
+ identities?: Identity[];
55
+ /**
56
+ * Optional flag to log an error if the `auto-require` script is not detected.
57
+ * The auto-require script automatically requires the `splitTracker` plugin for created trackers,
58
+ * and should be placed right after your Google Analytics, Google Tag Manager or gtag.js script tag.
59
+ *
60
+ * @see {@link https://help.split.io/hc/en-us/articles/360040838752#set-up-with-gtm-and-gtag.js}
61
+ *
62
+ * @property {boolean} autoRequire
63
+ * @default false
64
+ */
65
+ autoRequire?: boolean;
66
+ }
67
+ /**
68
+ * Enable 'Google Analytics to Split' integration, to track Google Analytics hits as Split events.
69
+ * Used by the browser variant of the isomorphic JS SDK.
70
+ *
71
+ * @see {@link https://help.split.io/hc/en-us/articles/360040838752#google-analytics-to-split}
72
+ */
73
+ export interface IGoogleAnalyticsToSplitConfig extends GoogleAnalyticsToSplitOptions {
74
+ type: 'GOOGLE_ANALYTICS_TO_SPLIT';
75
+ }
76
+ /**
77
+ * Options for SplitToGoogleAnalytics integration plugin
78
+ */
79
+ export interface SplitToGoogleAnalyticsOptions {
80
+ /**
81
+ * Optional flag to filter Split impressions from being tracked as GA hits.
82
+ * @property {boolean} impressions
83
+ * @default true
84
+ */
85
+ impressions?: boolean;
86
+ /**
87
+ * Optional flag to filter Split events from being tracked as GA hits.
88
+ * @property {boolean} events
89
+ * @default true
90
+ */
91
+ events?: boolean;
92
+ /**
93
+ * Optional predicate used to define a custom filter for tracking Split data (events and impressions) as GA hits.
94
+ * For example, the following filter allows to track only impressions, equivalent to setting events to false:
95
+ * `(data) => data.type === 'IMPRESSION'`
96
+ */
97
+ filter?: (data: SplitIO.IntegrationData) => boolean;
98
+ /**
99
+ * Optional function useful when you need to modify the GA hit before sending it.
100
+ * This function is invoked with two arguments:
101
+ * 1. the input data (Split event or impression).
102
+ * 2. the default format of the mapped FieldsObject instance (GA hit).
103
+ * The return value must be a FieldsObject, that can be the second argument or a new object.
104
+ *
105
+ * For example, the following mapper adds a custom dimension to hits:
106
+ * `(data, defaultMapping) => {
107
+ * defaultMapping.dimension1 = SOME_VALUE;
108
+ * return defaultMapping;
109
+ * }`
110
+ *
111
+ * Default FieldsObject instance for data.type === 'IMPRESSION':
112
+ * `{
113
+ * hitType: 'event',
114
+ * eventCategory: 'split-impression',
115
+ * eventAction: 'Evaluate ' + data.payload.impression.feature,
116
+ * eventLabel: 'Treatment: ' + data.payload.impression.treatment + '. Targeting rule: ' + data.payload.impression.label + '.',
117
+ * nonInteraction: true,
118
+ * }`
119
+ * Default FieldsObject instance for data.type === 'EVENT':
120
+ * `{
121
+ * hitType: 'event',
122
+ * eventCategory: 'split-event',
123
+ * eventAction: data.payload.eventTypeId,
124
+ * eventValue: data.payload.value,
125
+ * nonInteraction: true,
126
+ * }`
127
+ */
128
+ mapper?: (data: SplitIO.IntegrationData, defaultMapping: UniversalAnalytics.FieldsObject) => UniversalAnalytics.FieldsObject;
129
+ /**
130
+ * List of tracker names to send the hit. An empty string represents the default tracker.
131
+ * If not provided, hits are only sent to default tracker.
132
+ */
133
+ trackerNames?: string[];
134
+ }
135
+ /**
136
+ * Enable 'Split to Google Analytics' integration, to track Split impressions and events as Google Analytics hits.
137
+ * Used by the browser variant of the isomorphic JS SDK.
138
+ *
139
+ * @see {@link https://help.split.io/hc/en-us/articles/360040838752#split-to-google-analytics}
140
+ */
141
+ export interface ISplitToGoogleAnalyticsConfig extends SplitToGoogleAnalyticsOptions {
142
+ type: 'SPLIT_TO_GOOGLE_ANALYTICS';
143
+ }
144
+ /**
145
+ * Available integration options for the browser
146
+ * Used by the browser variant of the isomorphic JS SDK.
147
+ */
148
+ export declare type BrowserIntegration = ISplitToGoogleAnalyticsConfig | IGoogleAnalyticsToSplitConfig;
@@ -0,0 +1,11 @@
1
+ import { IIntegration, IIntegrationManager, IIntegrationFactoryParams } from './types';
2
+ /**
3
+ * Factory function for IntegrationsManager with pluggable integrations.
4
+ * The integrations manager instantiates integration, and bypass tracked events and impressions to them.
5
+ *
6
+ * @param integrations validated list of integration factories
7
+ * @param params information of the Sdk factory instance that integrations can access to
8
+ *
9
+ * @returns integration manager or undefined if `integrations` are not present in settings.
10
+ */
11
+ export declare function pluggableIntegrationsManagerFactory(integrations: Array<(params: IIntegrationFactoryParams) => IIntegration | void>, params: IIntegrationFactoryParams): IIntegrationManager | undefined;
@@ -0,0 +1,17 @@
1
+ import { IEventsCacheBase } from '../storages/types';
2
+ import { IEventsHandler, IImpressionsHandler } from '../trackers/types';
3
+ import { ISettings, SplitIO } from '../types';
4
+ export interface IIntegration {
5
+ queue(data: SplitIO.IntegrationData): void;
6
+ }
7
+ export declare type IIntegrationManager = IEventsHandler & IImpressionsHandler;
8
+ export interface IIntegrationFactoryParams {
9
+ storage: {
10
+ events: IEventsCacheBase;
11
+ };
12
+ settings: ISettings;
13
+ }
14
+ export declare type IntegrationFactory = {
15
+ readonly type: string;
16
+ (params: IIntegrationFactoryParams): IIntegration | void;
17
+ };
@@ -0,0 +1,40 @@
1
+ import { ISignalListener } from './types';
2
+ import { IStorageSync } from '../storages/types';
3
+ import { ISplitApi } from '../services/types';
4
+ import { ISettings } from '../types';
5
+ import { ISyncManager } from '../sync/types';
6
+ /**
7
+ * We'll listen for events over the window object.
8
+ */
9
+ export declare class BrowserSignalListener implements ISignalListener {
10
+ private syncManager;
11
+ private settings;
12
+ private storage;
13
+ private serviceApi;
14
+ private fromImpressionsCollector;
15
+ constructor(syncManager: ISyncManager | undefined, settings: ISettings, storage: IStorageSync, serviceApi: ISplitApi);
16
+ /**
17
+ * start method.
18
+ * Called when SplitFactory is initialized, it adds event listeners to close streaming and flush impressions and events.
19
+ */
20
+ start(): void;
21
+ /**
22
+ * stop method.
23
+ * Called when client is destroyed, it removes event listeners.
24
+ */
25
+ stop(): void;
26
+ stopSync(): void;
27
+ /**
28
+ * flushData method.
29
+ * Called when pagehide event is triggered. It flushed remaining impressions and events to the backend,
30
+ * using beacon API if possible, or falling back to regular post transport.
31
+ */
32
+ flushData(): void;
33
+ flushDataIfHidden(): void;
34
+ private _flushData;
35
+ /**
36
+ * _sendBeacon method.
37
+ * Util method that check if beacon API is available, build the payload and send it.
38
+ */
39
+ private _sendBeacon;
40
+ }
@@ -0,0 +1,22 @@
1
+ import { ISignalListener } from './types';
2
+ import { ISettings } from '../types';
3
+ import { ISyncManager } from '../sync/types';
4
+ /**
5
+ * We'll listen for SIGTERM since it's the standard signal for server shutdown.
6
+ *
7
+ * If you're stopping the execution yourself via the keyboard, or by calling process.exit,
8
+ * you should call the cleanup logic yourself, since we cannot ensure the data is sent after
9
+ * the process is already exiting.
10
+ */
11
+ export declare class NodeSignalListener implements ISignalListener {
12
+ private handler;
13
+ private settings;
14
+ constructor(syncManager: ISyncManager | undefined, // private handler: () => MaybeThenable<void>,
15
+ settings: ISettings);
16
+ start(): void;
17
+ stop(): void;
18
+ /**
19
+ * Call the handler, clean up listeners and emit the signal again.
20
+ */
21
+ private _sigtermHandler;
22
+ }
@@ -0,0 +1,4 @@
1
+ export interface ISignalListener {
2
+ start(): any;
3
+ stop(): any;
4
+ }
@@ -0,0 +1,2 @@
1
+ import { Logger } from '../index';
2
+ export declare function DebugLogger(): Logger;
@@ -0,0 +1,2 @@
1
+ import { Logger } from '../index';
2
+ export declare function ErrorLogger(): Logger;
@@ -0,0 +1,2 @@
1
+ import { Logger } from '../index';
2
+ export declare function InfoLogger(): Logger;
@@ -0,0 +1,2 @@
1
+ import { Logger } from '../index';
2
+ export declare function WarnLogger(): Logger;