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

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 (272) hide show
  1. package/cjs/evaluator/index.js +10 -11
  2. package/cjs/integrations/ga/GaToSplit.js +8 -5
  3. package/cjs/sdkFactory/index.js +2 -3
  4. package/cjs/sdkManager/index.js +3 -11
  5. package/cjs/services/splitApi.js +0 -1
  6. package/cjs/storages/AbstractSplitsCacheAsync.js +7 -9
  7. package/cjs/storages/AbstractSplitsCacheSync.js +7 -9
  8. package/cjs/storages/dataLoader.js +1 -1
  9. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +5 -6
  10. package/cjs/storages/inMemory/SplitsCacheInMemory.js +7 -10
  11. package/cjs/storages/inRedis/SplitsCacheInRedis.js +15 -9
  12. package/cjs/storages/pluggable/SplitsCachePluggable.js +14 -9
  13. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +2 -3
  14. package/cjs/sync/polling/updaters/splitChangesUpdater.js +1 -1
  15. package/cjs/trackers/telemetryTracker.js +6 -0
  16. package/cjs/types.js +2 -0
  17. package/cjs/utils/key/index.js +1 -1
  18. package/cjs/utils/settingsValidation/index.js +0 -1
  19. package/esm/evaluator/index.js +10 -11
  20. package/esm/integrations/ga/GaToSplit.js +8 -5
  21. package/esm/sdkFactory/index.js +2 -3
  22. package/esm/sdkManager/index.js +3 -11
  23. package/esm/services/splitApi.js +0 -1
  24. package/esm/storages/AbstractSplitsCacheAsync.js +7 -9
  25. package/esm/storages/AbstractSplitsCacheSync.js +7 -9
  26. package/esm/storages/dataLoader.js +1 -1
  27. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +5 -6
  28. package/esm/storages/inMemory/SplitsCacheInMemory.js +7 -10
  29. package/esm/storages/inRedis/SplitsCacheInRedis.js +15 -9
  30. package/esm/storages/pluggable/SplitsCachePluggable.js +14 -9
  31. package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +2 -3
  32. package/esm/sync/polling/updaters/splitChangesUpdater.js +1 -1
  33. package/esm/trackers/telemetryTracker.js +6 -0
  34. package/esm/types.js +1 -0
  35. package/esm/utils/key/index.js +1 -1
  36. package/esm/utils/settingsValidation/index.js +0 -1
  37. package/package.json +2 -2
  38. package/src/consent/sdkUserConsent.ts +3 -4
  39. package/src/dtos/types.ts +8 -0
  40. package/src/evaluator/Engine.ts +3 -3
  41. package/src/evaluator/combiners/and.ts +1 -1
  42. package/src/evaluator/combiners/ifelseif.ts +3 -3
  43. package/src/evaluator/condition/engineUtils.ts +1 -1
  44. package/src/evaluator/condition/index.ts +6 -6
  45. package/src/evaluator/index.ts +18 -19
  46. package/src/evaluator/matchers/all.ts +1 -1
  47. package/src/evaluator/matchers/between.ts +1 -1
  48. package/src/evaluator/matchers/boolean.ts +1 -1
  49. package/src/evaluator/matchers/cont_all.ts +1 -1
  50. package/src/evaluator/matchers/cont_any.ts +1 -1
  51. package/src/evaluator/matchers/cont_str.ts +1 -1
  52. package/src/evaluator/matchers/dependency.ts +1 -1
  53. package/src/evaluator/matchers/eq.ts +1 -1
  54. package/src/evaluator/matchers/eq_set.ts +1 -1
  55. package/src/evaluator/matchers/ew.ts +1 -1
  56. package/src/evaluator/matchers/gte.ts +1 -1
  57. package/src/evaluator/matchers/index.ts +1 -1
  58. package/src/evaluator/matchers/lte.ts +1 -1
  59. package/src/evaluator/matchers/part_of.ts +1 -1
  60. package/src/evaluator/matchers/segment.ts +1 -1
  61. package/src/evaluator/matchers/string.ts +1 -1
  62. package/src/evaluator/matchers/sw.ts +1 -1
  63. package/src/evaluator/matchers/whitelist.ts +1 -1
  64. package/src/evaluator/parser/index.ts +3 -3
  65. package/src/evaluator/types.ts +6 -6
  66. package/src/evaluator/value/index.ts +4 -4
  67. package/src/evaluator/value/sanitize.ts +4 -4
  68. package/src/integrations/ga/GaToSplit.ts +15 -11
  69. package/src/integrations/ga/SplitToGa.ts +10 -10
  70. package/src/integrations/ga/types.ts +4 -4
  71. package/src/integrations/pluggable.ts +3 -3
  72. package/src/integrations/types.ts +4 -3
  73. package/src/logger/index.ts +3 -3
  74. package/src/logger/sdkLogger.ts +2 -1
  75. package/src/logger/types.ts +16 -0
  76. package/src/readiness/sdkReadinessManager.ts +1 -1
  77. package/src/readiness/types.ts +9 -2
  78. package/src/sdkClient/client.ts +13 -13
  79. package/src/sdkClient/clientAttributesDecoration.ts +9 -9
  80. package/src/sdkClient/clientCS.ts +4 -3
  81. package/src/sdkClient/clientInputValidation.ts +15 -15
  82. package/src/sdkClient/sdkClient.ts +2 -2
  83. package/src/sdkClient/sdkClientMethod.ts +2 -2
  84. package/src/sdkClient/sdkClientMethodCS.ts +9 -9
  85. package/src/sdkClient/sdkClientMethodCSWithTT.ts +9 -9
  86. package/src/sdkFactory/index.ts +4 -5
  87. package/src/sdkFactory/types.ts +4 -4
  88. package/src/sdkManager/index.ts +7 -16
  89. package/src/services/splitApi.ts +0 -1
  90. package/src/storages/AbstractSplitsCacheAsync.ts +13 -14
  91. package/src/storages/AbstractSplitsCacheSync.ts +14 -16
  92. package/src/storages/dataLoader.ts +3 -3
  93. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +1 -1
  94. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +10 -12
  95. package/src/storages/inLocalStorage/index.ts +2 -3
  96. package/src/storages/inMemory/EventsCacheInMemory.ts +4 -4
  97. package/src/storages/inMemory/SplitsCacheInMemory.ts +10 -14
  98. package/src/storages/inRedis/EventsCacheInRedis.ts +4 -4
  99. package/src/storages/inRedis/ImpressionsCacheInRedis.ts +1 -1
  100. package/src/storages/inRedis/RedisAdapter.ts +1 -1
  101. package/src/storages/inRedis/SegmentsCacheInRedis.ts +1 -1
  102. package/src/storages/inRedis/SplitsCacheInRedis.ts +22 -18
  103. package/src/storages/inRedis/TelemetryCacheInRedis.ts +1 -1
  104. package/src/storages/inRedis/index.ts +2 -3
  105. package/src/storages/pluggable/EventsCachePluggable.ts +4 -4
  106. package/src/storages/pluggable/ImpressionsCachePluggable.ts +1 -1
  107. package/src/storages/pluggable/SegmentsCachePluggable.ts +1 -1
  108. package/src/storages/pluggable/SplitsCachePluggable.ts +21 -18
  109. package/src/storages/pluggable/TelemetryCachePluggable.ts +1 -1
  110. package/src/storages/pluggable/index.ts +3 -3
  111. package/src/storages/pluggable/wrapperAdapter.ts +1 -1
  112. package/src/storages/types.ts +30 -54
  113. package/src/sync/offline/LocalhostFromObject.ts +4 -4
  114. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +8 -8
  115. package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +5 -6
  116. package/src/sync/polling/updaters/mySegmentsUpdater.ts +1 -1
  117. package/src/sync/polling/updaters/segmentChangesUpdater.ts +1 -1
  118. package/src/sync/polling/updaters/splitChangesUpdater.ts +3 -3
  119. package/src/sync/streaming/SSEHandler/index.ts +1 -1
  120. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  121. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +1 -1
  122. package/src/sync/submitters/submitter.ts +1 -1
  123. package/src/sync/submitters/types.ts +2 -2
  124. package/src/sync/syncTask.ts +1 -1
  125. package/src/trackers/eventTracker.ts +3 -3
  126. package/src/trackers/impressionsTracker.ts +3 -3
  127. package/src/trackers/telemetryTracker.ts +7 -2
  128. package/src/trackers/types.ts +8 -4
  129. package/src/types.ts +1263 -0
  130. package/src/utils/constants/index.ts +1 -1
  131. package/src/utils/inputValidation/apiKey.ts +1 -1
  132. package/src/utils/inputValidation/attribute.ts +1 -1
  133. package/src/utils/inputValidation/attributes.ts +3 -3
  134. package/src/utils/inputValidation/event.ts +1 -1
  135. package/src/utils/inputValidation/eventProperties.ts +3 -3
  136. package/src/utils/inputValidation/eventValue.ts +1 -1
  137. package/src/utils/inputValidation/isOperational.ts +1 -1
  138. package/src/utils/inputValidation/key.ts +3 -3
  139. package/src/utils/inputValidation/preloadedData.ts +3 -3
  140. package/src/utils/inputValidation/split.ts +1 -1
  141. package/src/utils/inputValidation/splitExistance.ts +1 -1
  142. package/src/utils/inputValidation/splits.ts +1 -1
  143. package/src/utils/inputValidation/trafficType.ts +1 -1
  144. package/src/utils/inputValidation/trafficTypeExistance.ts +1 -1
  145. package/src/utils/key/index.ts +9 -9
  146. package/src/utils/settingsValidation/consent.ts +2 -1
  147. package/src/utils/settingsValidation/impressionsMode.ts +3 -3
  148. package/src/utils/settingsValidation/index.ts +0 -1
  149. package/src/utils/settingsValidation/integrations/common.ts +1 -1
  150. package/src/utils/settingsValidation/integrations/configurable.ts +1 -1
  151. package/src/utils/settingsValidation/integrations/pluggable.ts +2 -1
  152. package/src/utils/settingsValidation/localhost/builtin.ts +2 -1
  153. package/src/utils/settingsValidation/localhost/pluggable.ts +2 -1
  154. package/src/utils/settingsValidation/logger/builtinLogger.ts +2 -1
  155. package/src/utils/settingsValidation/logger/pluggableLogger.ts +2 -1
  156. package/src/utils/settingsValidation/splitFilters.ts +9 -7
  157. package/src/utils/settingsValidation/storage/storageCS.ts +2 -1
  158. package/types/consent/sdkUserConsent.d.ts +9 -2
  159. package/types/dtos/types.d.ts +6 -0
  160. package/types/evaluator/Engine.d.ts +3 -3
  161. package/types/evaluator/combiners/and.d.ts +1 -1
  162. package/types/evaluator/combiners/ifelseif.d.ts +1 -1
  163. package/types/evaluator/condition/engineUtils.d.ts +1 -1
  164. package/types/evaluator/condition/index.d.ts +1 -1
  165. package/types/evaluator/index.d.ts +4 -4
  166. package/types/evaluator/matchers/all.d.ts +1 -1
  167. package/types/evaluator/matchers/between.d.ts +1 -1
  168. package/types/evaluator/matchers/boolean.d.ts +1 -1
  169. package/types/evaluator/matchers/cont_all.d.ts +1 -1
  170. package/types/evaluator/matchers/cont_any.d.ts +1 -1
  171. package/types/evaluator/matchers/cont_str.d.ts +1 -1
  172. package/types/evaluator/matchers/dependency.d.ts +1 -1
  173. package/types/evaluator/matchers/eq.d.ts +1 -1
  174. package/types/evaluator/matchers/eq_set.d.ts +1 -1
  175. package/types/evaluator/matchers/ew.d.ts +1 -1
  176. package/types/evaluator/matchers/gte.d.ts +1 -1
  177. package/types/evaluator/matchers/index.d.ts +1 -1
  178. package/types/evaluator/matchers/lte.d.ts +1 -1
  179. package/types/evaluator/matchers/part_of.d.ts +1 -1
  180. package/types/evaluator/matchers/segment.d.ts +1 -1
  181. package/types/evaluator/matchers/string.d.ts +1 -1
  182. package/types/evaluator/matchers/sw.d.ts +1 -1
  183. package/types/evaluator/matchers/whitelist.d.ts +1 -1
  184. package/types/evaluator/parser/index.d.ts +1 -1
  185. package/types/evaluator/types.d.ts +6 -6
  186. package/types/evaluator/value/index.d.ts +3 -3
  187. package/types/evaluator/value/sanitize.d.ts +3 -3
  188. package/types/integrations/ga/GaToSplit.d.ts +4 -4
  189. package/types/integrations/ga/SplitToGa.d.ts +4 -4
  190. package/types/integrations/ga/types.d.ts +4 -4
  191. package/types/integrations/types.d.ts +4 -3
  192. package/types/logger/index.d.ts +5 -3
  193. package/types/logger/sdkLogger.d.ts +2 -1
  194. package/types/logger/types.d.ts +11 -0
  195. package/types/readiness/sdkReadinessManager.d.ts +1 -1
  196. package/types/readiness/types.d.ts +8 -2
  197. package/types/sdkClient/client.d.ts +2 -2
  198. package/types/sdkClient/clientAttributesDecoration.d.ts +8 -8
  199. package/types/sdkClient/clientCS.d.ts +3 -2
  200. package/types/sdkClient/clientInputValidation.d.ts +2 -2
  201. package/types/sdkClient/sdkClient.d.ts +2 -2
  202. package/types/sdkClient/sdkClientMethod.d.ts +2 -2
  203. package/types/sdkClient/sdkClientMethodCS.d.ts +2 -2
  204. package/types/sdkClient/sdkClientMethodCSWithTT.d.ts +2 -2
  205. package/types/sdkFactory/index.d.ts +2 -2
  206. package/types/sdkFactory/types.d.ts +6 -6
  207. package/types/sdkManager/index.d.ts +3 -3
  208. package/types/storages/AbstractSplitsCacheAsync.d.ts +6 -5
  209. package/types/storages/AbstractSplitsCacheSync.d.ts +5 -5
  210. package/types/storages/dataLoader.d.ts +2 -2
  211. package/types/storages/inLocalStorage/MySegmentsCacheInLocal.d.ts +1 -1
  212. package/types/storages/inLocalStorage/SplitsCacheInLocal.d.ts +4 -3
  213. package/types/storages/inLocalStorage/index.d.ts +2 -2
  214. package/types/storages/inMemory/EventsCacheInMemory.d.ts +3 -3
  215. package/types/storages/inMemory/InMemoryStorage.d.ts +1 -1
  216. package/types/storages/inMemory/InMemoryStorageCS.d.ts +1 -1
  217. package/types/storages/inMemory/SplitsCacheInMemory.d.ts +3 -2
  218. package/types/storages/inRedis/EventsCacheInRedis.d.ts +3 -3
  219. package/types/storages/inRedis/ImpressionsCacheInRedis.d.ts +1 -1
  220. package/types/storages/inRedis/RedisAdapter.d.ts +1 -1
  221. package/types/storages/inRedis/SegmentsCacheInRedis.d.ts +1 -1
  222. package/types/storages/inRedis/SplitsCacheInRedis.d.ts +7 -6
  223. package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +1 -1
  224. package/types/storages/inRedis/index.d.ts +2 -2
  225. package/types/storages/pluggable/EventsCachePluggable.d.ts +3 -3
  226. package/types/storages/pluggable/ImpressionsCachePluggable.d.ts +1 -1
  227. package/types/storages/pluggable/SegmentsCachePluggable.d.ts +1 -1
  228. package/types/storages/pluggable/SplitsCachePluggable.d.ts +7 -6
  229. package/types/storages/pluggable/TelemetryCachePluggable.d.ts +1 -1
  230. package/types/storages/pluggable/index.d.ts +2 -3
  231. package/types/storages/pluggable/wrapperAdapter.d.ts +1 -1
  232. package/types/storages/types.d.ts +28 -54
  233. package/types/sync/offline/LocalhostFromObject.d.ts +2 -2
  234. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +1 -1
  235. package/types/sync/polling/updaters/segmentChangesUpdater.d.ts +1 -1
  236. package/types/sync/polling/updaters/splitChangesUpdater.d.ts +2 -2
  237. package/types/sync/streaming/SSEHandler/index.d.ts +1 -1
  238. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -1
  239. package/types/sync/streaming/UpdateWorkers/SplitsUpdateWorker.d.ts +1 -1
  240. package/types/sync/submitters/submitter.d.ts +1 -1
  241. package/types/sync/submitters/types.d.ts +2 -2
  242. package/types/sync/syncTask.d.ts +1 -1
  243. package/types/trackers/types.d.ts +8 -4
  244. package/types/types.d.ts +1261 -0
  245. package/types/utils/constants/index.d.ts +1 -1
  246. package/types/utils/inputValidation/apiKey.d.ts +1 -1
  247. package/types/utils/inputValidation/attribute.d.ts +1 -1
  248. package/types/utils/inputValidation/attributes.d.ts +3 -3
  249. package/types/utils/inputValidation/event.d.ts +1 -1
  250. package/types/utils/inputValidation/eventProperties.d.ts +3 -3
  251. package/types/utils/inputValidation/eventValue.d.ts +1 -1
  252. package/types/utils/inputValidation/isOperational.d.ts +1 -1
  253. package/types/utils/inputValidation/key.d.ts +3 -3
  254. package/types/utils/inputValidation/preloadedData.d.ts +3 -3
  255. package/types/utils/inputValidation/split.d.ts +1 -1
  256. package/types/utils/inputValidation/splitExistance.d.ts +1 -1
  257. package/types/utils/inputValidation/splits.d.ts +1 -1
  258. package/types/utils/inputValidation/trafficType.d.ts +1 -1
  259. package/types/utils/inputValidation/trafficTypeExistance.d.ts +1 -1
  260. package/types/utils/key/index.d.ts +4 -4
  261. package/types/utils/settingsValidation/consent.d.ts +2 -1
  262. package/types/utils/settingsValidation/impressionsMode.d.ts +3 -3
  263. package/types/utils/settingsValidation/integrations/common.d.ts +1 -1
  264. package/types/utils/settingsValidation/integrations/configurable.d.ts +1 -1
  265. package/types/utils/settingsValidation/integrations/pluggable.d.ts +2 -1
  266. package/types/utils/settingsValidation/localhost/builtin.d.ts +2 -1
  267. package/types/utils/settingsValidation/localhost/pluggable.d.ts +2 -1
  268. package/types/utils/settingsValidation/logger/builtinLogger.d.ts +1 -1
  269. package/types/utils/settingsValidation/logger/pluggableLogger.d.ts +1 -1
  270. package/types/utils/settingsValidation/splitFilters.d.ts +2 -1
  271. package/types/utils/settingsValidation/storage/storageCS.d.ts +3 -2
  272. package/src/types.d.ts +0 -1646
@@ -5,8 +5,8 @@ import { CONTROL } from '../utils/constants';
5
5
  import { ISplit, MaybeThenable } from '../dtos/types';
6
6
  import { IStorageAsync, IStorageSync } from '../storages/types';
7
7
  import { IEvaluationResult } from './types';
8
- import { SplitKey, Attributes } from '../types';
9
- import { ILogger } from '../types';
8
+ import { SplitIO } from '../types';
9
+ import { ILogger } from '../logger/types';
10
10
 
11
11
  const treatmentException = {
12
12
  treatment: CONTROL,
@@ -24,9 +24,9 @@ function treatmentsException(splitNames: string[]) {
24
24
 
25
25
  export function evaluateFeature(
26
26
  log: ILogger,
27
- key: SplitKey,
27
+ key: SplitIO.SplitKey,
28
28
  splitName: string,
29
- attributes: Attributes | undefined,
29
+ attributes: SplitIO.Attributes | undefined,
30
30
  storage: IStorageSync | IStorageAsync,
31
31
  ): MaybeThenable<IEvaluationResult> {
32
32
  let stringifiedSplit;
@@ -63,35 +63,35 @@ export function evaluateFeature(
63
63
 
64
64
  export function evaluateFeatures(
65
65
  log: ILogger,
66
- key: SplitKey,
66
+ key: SplitIO.SplitKey,
67
67
  splitNames: string[],
68
- attributes: Attributes | undefined,
68
+ attributes: SplitIO.Attributes | undefined,
69
69
  storage: IStorageSync | IStorageAsync,
70
70
  ): MaybeThenable<Record<string, IEvaluationResult>> {
71
- let stringifiedSplits;
71
+ let parsedSplits;
72
72
 
73
73
  try {
74
- stringifiedSplits = storage.splits.getSplits(splitNames);
74
+ parsedSplits = storage.splits.getSplits(splitNames);
75
75
  } catch (e) {
76
76
  // Exception on sync `getSplits` storage. Not possible ATM with InMemory and InLocal storages.
77
77
  return treatmentsException(splitNames);
78
78
  }
79
79
 
80
- return (thenable(stringifiedSplits)) ?
81
- stringifiedSplits.then(splits => getEvaluations(log, splitNames, splits, key, attributes, storage))
80
+ return thenable(parsedSplits) ?
81
+ parsedSplits.then(splits => getEvaluations(log, splitNames, splits, key, attributes, storage))
82
82
  .catch(() => {
83
83
  // Exception on async `getSplits` storage. For example, when the storage is redis or
84
84
  // pluggable and there is a connection issue and we can't retrieve the split to be evaluated
85
85
  return treatmentsException(splitNames);
86
86
  }) :
87
- getEvaluations(log, splitNames, stringifiedSplits, key, attributes, storage);
87
+ getEvaluations(log, splitNames, parsedSplits, key, attributes, storage);
88
88
  }
89
89
 
90
90
  function getEvaluation(
91
91
  log: ILogger,
92
- stringifiedSplit: string | null,
93
- key: SplitKey,
94
- attributes: Attributes | undefined,
92
+ splitJSON: ISplit | null,
93
+ key: SplitIO.SplitKey,
94
+ attributes: SplitIO.Attributes | undefined,
95
95
  storage: IStorageSync | IStorageAsync,
96
96
  ): MaybeThenable<IEvaluationResult> {
97
97
  let evaluation: MaybeThenable<IEvaluationResult> = {
@@ -100,8 +100,7 @@ function getEvaluation(
100
100
  config: null
101
101
  };
102
102
 
103
- if (stringifiedSplit) {
104
- const splitJSON: ISplit = JSON.parse(stringifiedSplit);
103
+ if (splitJSON) {
105
104
  const split = Engine.parse(log, splitJSON, storage);
106
105
  evaluation = split.getTreatment(key, attributes, evaluateFeature);
107
106
 
@@ -125,9 +124,9 @@ function getEvaluation(
125
124
  function getEvaluations(
126
125
  log: ILogger,
127
126
  splitNames: string[],
128
- splits: Record<string, string | null>,
129
- key: SplitKey,
130
- attributes: Attributes | undefined,
127
+ splits: Record<string, ISplit | null>,
128
+ key: SplitIO.SplitKey,
129
+ attributes: SplitIO.Attributes | undefined,
131
130
  storage: IStorageSync | IStorageAsync,
132
131
  ): MaybeThenable<Record<string, IEvaluationResult>> {
133
132
  const result: Record<string, IEvaluationResult> = {};
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_ALL } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
 
4
4
  export function allMatcherContext(log: ILogger) {
5
5
  return function allMatcher(runtimeAttr: string): boolean {
@@ -1,6 +1,6 @@
1
1
  import { IBetweenMatcherData } from '../../dtos/types';
2
2
  import { ENGINE_MATCHER_BETWEEN } from '../../logger/constants';
3
- import { ILogger } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
 
5
5
  export function betweenMatcherContext(log: ILogger, ruleVO: IBetweenMatcherData) /*: Function */ {
6
6
  return function betweenMatcher(runtimeAttr: number): boolean {
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_BOOLEAN } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
 
4
4
  export function booleanMatcherContext(log: ILogger, ruleAttr: boolean) /*: Function */ {
5
5
  return function booleanMatcher(runtimeAttr: boolean): boolean {
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_CONTAINS_ALL } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { findIndex } from '../../utils/lang';
4
4
 
5
5
  export function containsAllSetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_CONTAINS_ANY } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { findIndex } from '../../utils/lang';
4
4
 
5
5
  export function containsAnySetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
@@ -1,5 +1,5 @@
1
1
  import { isString } from '../../utils/lang';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { ENGINE_MATCHER_CONTAINS_STRING } from '../../logger/constants';
4
4
 
5
5
  export function containsStringMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
@@ -1,6 +1,6 @@
1
1
  import { IDependencyMatcherData, MaybeThenable } from '../../dtos/types';
2
2
  import { IStorageAsync, IStorageSync } from '../../storages/types';
3
- import { ILogger } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
  import { thenable } from '../../utils/promise/thenable';
5
5
  import { IDependencyMatcherValue, IEvaluation, ISplitEvaluator } from '../types';
6
6
  import { ENGINE_MATCHER_DEPENDENCY, ENGINE_MATCHER_DEPENDENCY_PRE } from '../../logger/constants';
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_EQUAL } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
 
4
4
  export function equalToMatcherContext(log: ILogger, ruleAttr: number) /*: Function */ {
5
5
  return function equalToMatcher(runtimeAttr: number): boolean {
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_EQUAL_TO_SET } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { findIndex } from '../../utils/lang';
4
4
 
5
5
  export function equalToSetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_ENDS_WITH } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { endsWith } from '../../utils/lang';
4
4
 
5
5
  export function endsWithMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_GREATER } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
 
4
4
  export function greaterThanEqualMatcherContext(log: ILogger, ruleAttr: number) /*: Function */ {
5
5
  return function greaterThanEqualMatcher(runtimeAttr: number): boolean {
@@ -17,7 +17,7 @@ import { booleanMatcherContext } from './boolean';
17
17
  import { stringMatcherContext } from './string';
18
18
  import { IStorageAsync, IStorageSync } from '../../storages/types';
19
19
  import { IMatcher, IMatcherDto } from '../types';
20
- import { ILogger } from '../../types';
20
+ import { ILogger } from '../../logger/types';
21
21
 
22
22
  const matchers = [
23
23
  undefined, // UNDEFINED: 0,
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_LESS } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
 
4
4
  export function lessThanEqualMatcherContext(log: ILogger, ruleAttr: number) /*: function */ {
5
5
  return function lessThanEqualMatcher(runtimeAttr: number): boolean {
@@ -1,5 +1,5 @@
1
1
  import { findIndex } from '../../utils/lang';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { ENGINE_MATCHER_PART_OF } from '../../logger/constants';
4
4
 
5
5
  export function partOfSetMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
@@ -1,6 +1,6 @@
1
1
  import { MaybeThenable } from '../../dtos/types';
2
2
  import { ISegmentsCacheBase } from '../../storages/types';
3
- import { ILogger } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
  import { thenable } from '../../utils/promise/thenable';
5
5
  import { ENGINE_MATCHER_SEGMENT } from '../../logger/constants';
6
6
 
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_STRING_INVALID, ENGINE_MATCHER_STRING } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
 
4
4
  export function stringMatcherContext(log: ILogger, ruleAttr: string) /*: Function */ {
5
5
  return function stringMatcher(runtimeAttr: string): boolean {
@@ -1,5 +1,5 @@
1
1
  import { ENGINE_MATCHER_STARTS_WITH } from '../../logger/constants';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { startsWith } from '../../utils/lang';
4
4
 
5
5
  export function startsWithMatcherContext(log: ILogger, ruleAttr: string[]) /*: Function */ {
@@ -1,5 +1,5 @@
1
1
  import { setToArray, ISet } from '../../utils/lang/sets';
2
- import { ILogger } from '../../types';
2
+ import { ILogger } from '../../logger/types';
3
3
  import { ENGINE_MATCHER_WHITELIST } from '../../logger/constants';
4
4
 
5
5
  export function whitelistMatcherContext(log: ILogger, ruleAttr: ISet<string>) /*: Function */ {
@@ -9,8 +9,8 @@ import { thenable } from '../../utils/promise/thenable';
9
9
  import { IEvaluator, IMatcherDto, ISplitEvaluator } from '../types';
10
10
  import { ISplitCondition } from '../../dtos/types';
11
11
  import { IStorageAsync, IStorageSync } from '../../storages/types';
12
- import { Attributes } from '../../types';
13
- import { ILogger } from '../../types';
12
+ import { SplitIO } from '../../types';
13
+ import { ILogger } from '../../logger/types';
14
14
 
15
15
  export function parser(log: ILogger, conditions: ISplitCondition[], storage: IStorageSync | IStorageAsync): IEvaluator {
16
16
  let predicates = [];
@@ -31,7 +31,7 @@ export function parser(log: ILogger, conditions: ISplitCondition[], storage: ISt
31
31
  const matcher = matcherFactory(log, matcherDto, storage);
32
32
 
33
33
  // Evaluator function.
34
- return (key: string, attributes: Attributes | undefined, splitEvaluator: ISplitEvaluator) => {
34
+ return (key: string, attributes: SplitIO.Attributes | undefined, splitEvaluator: ISplitEvaluator) => {
35
35
  const value = sanitizeValue(log, key, matcherDto, attributes);
36
36
  const result = value !== undefined && matcher ? matcher(value, splitEvaluator) : false;
37
37
 
@@ -1,12 +1,12 @@
1
1
  import { IBetweenMatcherData, IDependencyMatcherData, MaybeThenable } from '../dtos/types';
2
2
  import { IStorageAsync, IStorageSync } from '../storages/types';
3
3
  import { ISet } from '../utils/lang/sets';
4
- import { SplitKey, Attributes } from '../types';
5
- import { ILogger } from '../types';
4
+ import { SplitIO } from '../types';
5
+ import { ILogger } from '../logger/types';
6
6
 
7
7
  export interface IDependencyMatcherValue {
8
- key: SplitKey,
9
- attributes?: Attributes
8
+ key: SplitIO.SplitKey,
9
+ attributes?: SplitIO.Attributes
10
10
  }
11
11
 
12
12
  export interface IMatcherDto {
@@ -27,8 +27,8 @@ export interface IEvaluation {
27
27
 
28
28
  export type IEvaluationResult = IEvaluation & { treatment: string }
29
29
 
30
- export type ISplitEvaluator = (log: ILogger, key: SplitKey, splitName: string, attributes: Attributes | undefined, storage: IStorageSync | IStorageAsync) => MaybeThenable<IEvaluation>
30
+ export type ISplitEvaluator = (log: ILogger, key: SplitIO.SplitKey, splitName: string, attributes: SplitIO.Attributes | undefined, storage: IStorageSync | IStorageAsync) => MaybeThenable<IEvaluation>
31
31
 
32
- export type IEvaluator = (key: SplitKey, seed: number, trafficAllocation?: number, trafficAllocationSeed?: number, attributes?: Attributes, splitEvaluator?: ISplitEvaluator) => MaybeThenable<IEvaluation | undefined>
32
+ export type IEvaluator = (key: SplitIO.SplitKey, seed: number, trafficAllocation?: number, trafficAllocationSeed?: number, attributes?: SplitIO.Attributes, splitEvaluator?: ISplitEvaluator) => MaybeThenable<IEvaluation | undefined>
33
33
 
34
34
  export type IMatcher = (...args: any) => MaybeThenable<boolean>
@@ -1,10 +1,10 @@
1
- import { Attributes } from '../../types';
1
+ import { SplitIO } from '../../types';
2
2
  import { IMatcherDto } from '../types';
3
- import { ILogger } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
  import { sanitize } from './sanitize';
5
5
  import { ENGINE_VALUE, ENGINE_VALUE_NO_ATTRIBUTES, ENGINE_VALUE_INVALID } from '../../logger/constants';
6
6
 
7
- function parseValue(log: ILogger, key: string, attributeName: string | null, attributes?: Attributes) {
7
+ function parseValue(log: ILogger, key: string, attributeName: string | null, attributes?: SplitIO.Attributes) {
8
8
  let value = undefined;
9
9
  if (attributeName) {
10
10
  if (attributes) {
@@ -23,7 +23,7 @@ function parseValue(log: ILogger, key: string, attributeName: string | null, att
23
23
  /**
24
24
  * Defines value to be matched (key / attribute).
25
25
  */
26
- export function sanitizeValue(log: ILogger, key: string, matcherDto: IMatcherDto, attributes?: Attributes) {
26
+ export function sanitizeValue(log: ILogger, key: string, matcherDto: IMatcherDto, attributes?: SplitIO.Attributes) {
27
27
  const attributeName = matcherDto.attribute;
28
28
  const valueToMatch = parseValue(log, key, attributeName, attributes);
29
29
  const sanitizedValue = sanitize(log, matcherDto.type, valueToMatch, matcherDto.dataType, attributes);
@@ -1,6 +1,6 @@
1
- import { Attributes } from '../../types';
1
+ import { SplitIO } from '../../types';
2
2
  import { IDependencyMatcherValue } from '../types';
3
- import { ILogger } from '../../types';
3
+ import { ILogger } from '../../logger/types';
4
4
  import { isObject, uniq, toString, toNumber } from '../../utils/lang';
5
5
  import { zeroSinceHH, zeroSinceSS } from '../convertions';
6
6
  import { matcherTypes, matcherDataTypes } from '../matchers/matcherTypes';
@@ -41,7 +41,7 @@ function sanitizeBoolean(val: any): boolean | undefined {
41
41
  return undefined;
42
42
  }
43
43
 
44
- function dependencyProcessor(sanitizedValue: string, attributes?: Attributes): IDependencyMatcherValue {
44
+ function dependencyProcessor(sanitizedValue: string, attributes?: SplitIO.Attributes): IDependencyMatcherValue {
45
45
  return {
46
46
  key: sanitizedValue,
47
47
  attributes
@@ -69,7 +69,7 @@ function getProcessingFunction(matcherTypeID: number, dataType: string) {
69
69
  /**
70
70
  * Sanitize matcher value
71
71
  */
72
- export function sanitize(log: ILogger, matcherTypeID: number, value: string | number | boolean | Array<string | number> | undefined, dataType: string, attributes?: Attributes) {
72
+ export function sanitize(log: ILogger, matcherTypeID: number, value: string | number | boolean | Array<string | number> | undefined, dataType: string, attributes?: SplitIO.Attributes) {
73
73
  const processor = getProcessingFunction(matcherTypeID, dataType);
74
74
  let sanitizedValue: string | number | boolean | Array<string | number> | IDependencyMatcherValue | undefined;
75
75
 
@@ -8,10 +8,11 @@ import {
8
8
  validateKey,
9
9
  validateTrafficType,
10
10
  } from '../../utils/inputValidation';
11
- import { EventData } from '../../types';
11
+ import { SplitIO } from '../../types';
12
12
  import { Identity, GoogleAnalyticsToSplitOptions } from './types';
13
- import { ILogger } from '../../types';
13
+ import { ILogger } from '../../logger/types';
14
14
  import { IIntegrationFactoryParams } from '../types';
15
+ import { ITelemetryTracker } from '../../trackers/types';
15
16
 
16
17
  const logPrefix = 'ga-to-split: ';
17
18
  const logNameMapper = 'ga-to-split:mapper';
@@ -25,7 +26,7 @@ const logNameMapper = 'ga-to-split:mapper';
25
26
  * @param log Logger instance.
26
27
  * @param autoRequire If true, log error when auto-require script is not detected
27
28
  */
28
- function providePlugin(window: any, pluginName: string, pluginConstructor: Function, log: ILogger, autoRequire?: boolean) {
29
+ function providePlugin(window: any, pluginName: string, pluginConstructor: Function, log: ILogger, autoRequire: boolean, telemetryTracker?: ITelemetryTracker) {
29
30
  // get reference to global command queue. Init it if not defined yet.
30
31
  const gaAlias = window.GoogleAnalyticsObject || 'ga';
31
32
  window[gaAlias] = window[gaAlias] || function () {
@@ -35,10 +36,13 @@ function providePlugin(window: any, pluginName: string, pluginConstructor: Funct
35
36
  // provides the plugin for use with analytics.js.
36
37
  window[gaAlias]('provide', pluginName, pluginConstructor);
37
38
 
38
- if (autoRequire && (!window[gaAlias].q || window[gaAlias].q.push === [].push)) {
39
- // Expecting spy on ga.q push method but not found
39
+ const hasAutoRequire = window[gaAlias].q && window[gaAlias].q.push !== [].push;
40
+ if (autoRequire && !hasAutoRequire) { // Expecting spy on ga.q push method but not found
40
41
  log.error(logPrefix + 'integration is configured to autorequire the splitTracker plugin, but the necessary script does not seem to have run. Please check the docs.');
41
42
  }
43
+ if (telemetryTracker && hasAutoRequire) {
44
+ telemetryTracker.addTag('integration:ga-autorequire');
45
+ }
42
46
  }
43
47
 
44
48
  // Default mapping: object used for building the default mapper from hits to Split events
@@ -67,7 +71,7 @@ const defaultMapping = {
67
71
  * @param {object} mapping
68
72
  */
69
73
  function mapperBuilder(mapping: typeof defaultMapping) {
70
- return function (model: UniversalAnalytics.Model): EventData {
74
+ return function (model: UniversalAnalytics.Model): SplitIO.EventData {
71
75
  const hitType: string = model.get('hitType');
72
76
  // @ts-expect-error
73
77
  const eventTypeId = model.get(mapping.eventTypeId[hitType] || 'hitType');
@@ -133,7 +137,7 @@ export function validateIdentities(identities?: Identity[]) {
133
137
  * @param {EventData} data event data instance to validate. Precondition: data != undefined
134
138
  * @returns {boolean} Whether the data instance is a valid EventData or not.
135
139
  */
136
- export function validateEventData(log: ILogger, eventData: any): eventData is EventData {
140
+ export function validateEventData(log: ILogger, eventData: any): eventData is SplitIO.EventData {
137
141
  if (!validateEvent(log, eventData.eventTypeId, logNameMapper))
138
142
  return false;
139
143
 
@@ -191,7 +195,7 @@ export function fixEventTypeId(log: ILogger, eventTypeId: any) {
191
195
  */
192
196
  export function GaToSplit(sdkOptions: GoogleAnalyticsToSplitOptions, params: IIntegrationFactoryParams) {
193
197
 
194
- const { storage, settings: { core: coreSettings, log } } = params;
198
+ const { storage, settings: { core: coreSettings, log }, telemetryTracker } = params;
195
199
 
196
200
  const defaultOptions = {
197
201
  prefix: defaultPrefix,
@@ -251,10 +255,10 @@ export function GaToSplit(sdkOptions: GoogleAnalyticsToSplitOptions, params: IIn
251
255
  }
252
256
 
253
257
  // map hit into an EventData instance
254
- let eventData: EventData = defaultMapper(model);
258
+ let eventData: SplitIO.EventData = defaultMapper(model);
255
259
  if (opts.mapper) {
256
260
  try {
257
- eventData = opts.mapper(model, eventData as EventData);
261
+ eventData = opts.mapper(model, eventData as SplitIO.EventData);
258
262
  } catch (err) {
259
263
  log.warn(logPrefix + `custom mapper threw: ${err}`);
260
264
  return;
@@ -291,5 +295,5 @@ export function GaToSplit(sdkOptions: GoogleAnalyticsToSplitOptions, params: IIn
291
295
  }
292
296
 
293
297
  // Register the plugin, even if config is invalid, since, if not provided, it will block `ga` command queue.
294
- providePlugin(window, 'splitTracker', SplitTracker, log, sdkOptions.autoRequire === true);
298
+ providePlugin(window, 'splitTracker', SplitTracker, log, sdkOptions.autoRequire === true, telemetryTracker);
295
299
  }
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable no-undef */
2
2
  import { uniq } from '../../utils/lang';
3
3
  import { SPLIT_IMPRESSION, SPLIT_EVENT } from '../../utils/constants';
4
- import { IntegrationData, ImpressionData, EventData } from '../../types';
4
+ import { SplitIO } from '../../types';
5
5
  import { IIntegration } from '../types';
6
6
  import { SplitToGoogleAnalyticsOptions } from './types';
7
- import { ILogger } from '../../types';
7
+ import { ILogger } from '../../logger/types';
8
8
 
9
9
  const logPrefix = 'split-to-ga: ';
10
10
  const noGaWarning = '`ga` command queue not found.';
@@ -16,29 +16,29 @@ export class SplitToGa implements IIntegration {
16
16
  static defaultTrackerNames = [''];
17
17
 
18
18
  private trackerNames: string[];
19
- private filter?: (data: IntegrationData) => boolean;
20
- private mapper?: (data: IntegrationData, defaultMapping: UniversalAnalytics.FieldsObject) => UniversalAnalytics.FieldsObject;
19
+ private filter?: (data: SplitIO.IntegrationData) => boolean;
20
+ private mapper?: (data: SplitIO.IntegrationData, defaultMapping: UniversalAnalytics.FieldsObject) => UniversalAnalytics.FieldsObject;
21
21
  private impressions: boolean | undefined;
22
22
  private events: boolean | undefined;
23
23
  private log: ILogger;
24
24
 
25
25
  // Default mapper function.
26
- static defaultMapper({ type, payload }: IntegrationData): UniversalAnalytics.FieldsObject {
26
+ static defaultMapper({ type, payload }: SplitIO.IntegrationData): UniversalAnalytics.FieldsObject {
27
27
  switch (type) {
28
28
  case SPLIT_IMPRESSION:
29
29
  return {
30
30
  hitType: 'event',
31
31
  eventCategory: 'split-impression',
32
- eventAction: 'Evaluate ' + (payload as ImpressionData).impression.feature,
33
- eventLabel: 'Treatment: ' + (payload as ImpressionData).impression.treatment + '. Targeting rule: ' + (payload as ImpressionData).impression.label + '.',
32
+ eventAction: 'Evaluate ' + (payload as SplitIO.ImpressionData).impression.feature,
33
+ eventLabel: 'Treatment: ' + (payload as SplitIO.ImpressionData).impression.treatment + '. Targeting rule: ' + (payload as SplitIO.ImpressionData).impression.label + '.',
34
34
  nonInteraction: true,
35
35
  };
36
36
  case SPLIT_EVENT:
37
37
  return {
38
38
  hitType: 'event',
39
39
  eventCategory: 'split-event',
40
- eventAction: (payload as EventData).eventTypeId,
41
- eventValue: (payload as EventData).value,
40
+ eventAction: (payload as SplitIO.EventData).eventTypeId,
41
+ eventValue: (payload as SplitIO.EventData).value,
42
42
  nonInteraction: true,
43
43
  };
44
44
  }
@@ -93,7 +93,7 @@ export class SplitToGa implements IIntegration {
93
93
  if (typeof SplitToGa.getGa() !== 'function') log.warn(logPrefix + `${noGaWarning} No hits will be sent until it is available.`);
94
94
  }
95
95
 
96
- queue(data: IntegrationData) {
96
+ queue(data: SplitIO.IntegrationData) {
97
97
  // access ga command queue via `getGa` method, accounting for the possibility that
98
98
  // the global `ga` reference was not yet mutated by analytics.js.
99
99
  const ga = SplitToGa.getGa();
@@ -1,4 +1,4 @@
1
- import { IntegrationData, EventData } from '../../types';
1
+ import { SplitIO } from '../../types';
2
2
 
3
3
  /**
4
4
  * A pair of user key and it's trafficType, required for tracking valid Split events.
@@ -41,7 +41,7 @@ export interface GoogleAnalyticsToSplitOptions {
41
41
  * return defaultMapping;
42
42
  * }`
43
43
  */
44
- mapper?: (model: UniversalAnalytics.Model, defaultMapping: EventData) => EventData,
44
+ mapper?: (model: UniversalAnalytics.Model, defaultMapping: SplitIO.EventData) => SplitIO.EventData,
45
45
  /**
46
46
  * Optional prefix for EventTypeId, to prevent any kind of data collision between events.
47
47
  * @property {string} prefix
@@ -97,7 +97,7 @@ export interface SplitToGoogleAnalyticsOptions {
97
97
  * For example, the following filter allows to track only impressions, equivalent to setting events to false:
98
98
  * `(data) => data.type === 'IMPRESSION'`
99
99
  */
100
- filter?: (data: IntegrationData) => boolean,
100
+ filter?: (data: SplitIO.IntegrationData) => boolean,
101
101
  /**
102
102
  * Optional function useful when you need to modify the GA hit before sending it.
103
103
  * This function is invoked with two arguments:
@@ -128,7 +128,7 @@ export interface SplitToGoogleAnalyticsOptions {
128
128
  * nonInteraction: true,
129
129
  * }`
130
130
  */
131
- mapper?: (data: IntegrationData, defaultMapping: UniversalAnalytics.FieldsObject) => UniversalAnalytics.FieldsObject,
131
+ mapper?: (data: SplitIO.IntegrationData, defaultMapping: UniversalAnalytics.FieldsObject) => UniversalAnalytics.FieldsObject,
132
132
  /**
133
133
  * List of tracker names to send the hit. An empty string represents the default tracker.
134
134
  * If not provided, hits are only sent to default tracker.
@@ -1,5 +1,5 @@
1
1
  import { SPLIT_IMPRESSION, SPLIT_EVENT } from '../utils/constants';
2
- import { ImpressionData, EventData } from '../types';
2
+ import { SplitIO } from '../types';
3
3
  import { IIntegration, IIntegrationManager, IIntegrationFactoryParams } from './types';
4
4
 
5
5
  /**
@@ -29,10 +29,10 @@ export function pluggableIntegrationsManagerFactory(
29
29
 
30
30
  // Exception safe methods: each integration module is responsable for handling errors
31
31
  return {
32
- handleImpression(impressionData: ImpressionData) {
32
+ handleImpression(impressionData: SplitIO.ImpressionData) {
33
33
  listeners.forEach(listener => listener.queue({ type: SPLIT_IMPRESSION, payload: impressionData }));
34
34
  },
35
- handleEvent(eventData: EventData) {
35
+ handleEvent(eventData: SplitIO.EventData) {
36
36
  listeners.forEach(listener => listener.queue({ type: SPLIT_EVENT, payload: eventData }));
37
37
  }
38
38
  };
@@ -1,9 +1,9 @@
1
1
  import { IEventsCacheBase } from '../storages/types';
2
- import { IEventsHandler, IImpressionsHandler } from '../trackers/types';
3
- import { ISettings, IntegrationData } from '../types';
2
+ import { IEventsHandler, IImpressionsHandler, ITelemetryTracker } from '../trackers/types';
3
+ import { ISettings, SplitIO } from '../types';
4
4
 
5
5
  export interface IIntegration {
6
- queue(data: IntegrationData): void
6
+ queue(data: SplitIO.IntegrationData): void
7
7
  }
8
8
 
9
9
  export type IIntegrationManager = IEventsHandler & IImpressionsHandler;
@@ -11,6 +11,7 @@ export type IIntegrationManager = IEventsHandler & IImpressionsHandler;
11
11
  export interface IIntegrationFactoryParams {
12
12
  storage: { events: IEventsCacheBase }
13
13
  settings: ISettings
14
+ telemetryTracker: ITelemetryTracker
14
15
  }
15
16
 
16
17
  export type IntegrationFactory = {
@@ -1,10 +1,10 @@
1
1
  import { objectAssign } from '../utils/lang/objectAssign';
2
- import { ILoggerOptions } from './types';
2
+ import { ILoggerOptions, ILogger } from './types';
3
3
  import { find } from '../utils/lang';
4
- import { LogLevel, ILogger, ILoggerAPI } from '../types';
4
+ import { LogLevel } from '../types';
5
5
  import { IMap, _Map } from '../utils/lang/maps';
6
6
 
7
- export const LogLevels: ILoggerAPI['LogLevel'] = {
7
+ export const LogLevels: { [level: string]: LogLevel } = {
8
8
  DEBUG: 'DEBUG',
9
9
  INFO: 'INFO',
10
10
  WARN: 'WARN',
@@ -1,5 +1,6 @@
1
1
  import { LogLevels, isLogLevelString } from './index';
2
- import { ILoggerAPI, ILogger } from '../types';
2
+ import { ILoggerAPI } from '../types';
3
+ import { ILogger } from './types';
3
4
  import { ERROR_LOGLEVEL_INVALID } from './constants';
4
5
 
5
6
  /**
@@ -5,3 +5,19 @@ export interface ILoggerOptions {
5
5
  logLevel?: LogLevel,
6
6
  showLevel?: boolean, // @TODO remove this param eventually since it is not being set `false` anymore
7
7
  }
8
+
9
+ export interface ILogger {
10
+ setLogLevel(logLevel: LogLevel): void
11
+
12
+ debug(msg: any): void
13
+ debug(msg: string | number, args?: any[]): void
14
+
15
+ info(msg: any): void
16
+ info(msg: string | number, args?: any[]): void
17
+
18
+ warn(msg: any): void
19
+ warn(msg: string | number, args?: any[]): void
20
+
21
+ error(msg: any): void
22
+ error(msg: string | number, args?: any[]): void
23
+ }
@@ -4,7 +4,7 @@ import { readinessManagerFactory } from './readinessManager';
4
4
  import { ISdkReadinessManager } from './types';
5
5
  import { IEventEmitter } from '../types';
6
6
  import { SDK_READY, SDK_READY_TIMED_OUT, SDK_READY_FROM_CACHE, SDK_UPDATE } from './constants';
7
- import { ILogger } from '../types';
7
+ import { ILogger } from '../logger/types';
8
8
  import { ERROR_CLIENT_LISTENER, CLIENT_READY_FROM_CACHE, CLIENT_READY, CLIENT_NO_LISTENER } from '../logger/constants';
9
9
 
10
10
  const NEW_LISTENER_EVENT = 'newListener';