@splitsoftware/splitio 10.17.2 → 10.17.3-rc.0

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 (761) hide show
  1. package/es/factory/clientSide.js +45 -0
  2. package/es/factory/commons.js +16 -0
  3. package/es/factory/package.json +4 -0
  4. package/es/factory/serverSide.js +42 -0
  5. package/es/index.js +1 -132
  6. package/es/platform/browser.js +11 -0
  7. package/es/{services → platform}/getEventSource/browser.js +1 -1
  8. package/es/{services → platform}/getEventSource/node.js +1 -1
  9. package/es/{client → platform/getEventSource}/package.json +0 -0
  10. package/es/{services → platform}/getFetch/browser.js +1 -1
  11. package/es/{services → platform}/getFetch/node.js +1 -1
  12. package/es/{impressions/observer → platform/getFetch}/package.json +0 -0
  13. package/es/platform/node.js +13 -0
  14. package/es/{integrations → platform}/package.json +0 -0
  15. package/es/{services → platform}/request/options/node.js +2 -2
  16. package/es/settings/clientSide.js +18 -0
  17. package/{lib/utils → es}/settings/defaults/browser.js +6 -8
  18. package/{src/utils → es}/settings/defaults/node.js +6 -3
  19. package/es/settings/defaults/version.js +1 -0
  20. package/es/settings/integrations/browser.js +5 -0
  21. package/es/settings/integrations/node.js +5 -0
  22. package/es/settings/package.json +4 -0
  23. package/es/{utils/settings → settings}/runtime/node.js +6 -4
  24. package/es/settings/serverSide.js +20 -0
  25. package/es/{utils/settings → settings}/storage/browser.js +12 -14
  26. package/es/{utils/settings → settings}/storage/node.js +10 -9
  27. package/es/umd.js +2 -1
  28. package/lib/factory/clientSide.js +65 -0
  29. package/lib/factory/commons.js +23 -0
  30. package/lib/factory/package.json +4 -0
  31. package/lib/factory/serverSide.js +60 -0
  32. package/lib/index.js +3 -151
  33. package/lib/platform/browser.js +24 -0
  34. package/lib/{services → platform}/getEventSource/browser.js +1 -1
  35. package/lib/{services → platform}/getEventSource/node.js +1 -1
  36. package/{es/listeners → lib/platform/getEventSource}/package.json +0 -0
  37. package/lib/{services → platform}/getFetch/browser.js +1 -1
  38. package/lib/{services → platform}/getFetch/node.js +1 -1
  39. package/{es/producer/offline → lib/platform/getFetch}/package.json +0 -0
  40. package/lib/platform/node.js +27 -0
  41. package/{es/producer → lib/platform}/package.json +0 -0
  42. package/lib/{services → platform}/request/options/node.js +2 -2
  43. package/lib/settings/clientSide.js +30 -0
  44. package/{src/utils → lib}/settings/defaults/browser.js +13 -3
  45. package/{es/utils → lib}/settings/defaults/node.js +13 -3
  46. package/lib/settings/defaults/version.js +6 -0
  47. package/lib/settings/integrations/browser.js +14 -0
  48. package/lib/settings/integrations/node.js +12 -0
  49. package/lib/settings/package.json +4 -0
  50. package/lib/{utils/settings → settings}/runtime/node.js +7 -5
  51. package/lib/settings/serverSide.js +33 -0
  52. package/lib/{utils/settings → settings}/storage/browser.js +15 -20
  53. package/lib/{utils/settings → settings}/storage/node.js +13 -11
  54. package/lib/umd.js +1 -0
  55. package/package.json +15 -12
  56. package/src/.DS_Store +0 -0
  57. package/src/factory/clientSide.js +58 -0
  58. package/src/factory/commons.js +16 -0
  59. package/src/factory/package.json +4 -0
  60. package/src/factory/serverSide.js +51 -0
  61. package/src/index.js +1 -140
  62. package/src/{sync/SSEHandler → platform}/.DS_Store +0 -0
  63. package/src/platform/browser.js +13 -0
  64. package/src/{services → platform}/getEventSource/browser.js +2 -2
  65. package/src/{services → platform}/getEventSource/node.js +2 -2
  66. package/{es/services → src/platform}/getEventSource/package.json +0 -0
  67. package/src/{services → platform}/getFetch/browser.js +2 -2
  68. package/src/{services → platform}/getFetch/node.js +1 -1
  69. package/{es/services → src/platform}/getFetch/package.json +0 -0
  70. package/src/platform/node.js +15 -0
  71. package/{es/services/request/options → src/platform}/package.json +0 -0
  72. package/src/{services → platform}/request/options/node.js +2 -2
  73. package/src/{listeners → settings}/.DS_Store +0 -0
  74. package/src/settings/clientSide.js +18 -0
  75. package/{es/utils → src}/settings/defaults/browser.js +8 -3
  76. package/{lib/utils → src}/settings/defaults/node.js +6 -6
  77. package/src/settings/defaults/version.js +1 -0
  78. package/src/settings/integrations/browser.js +6 -0
  79. package/src/{utils/settings → settings}/integrations/node.js +1 -3
  80. package/src/settings/package.json +4 -0
  81. package/src/{utils/settings → settings}/runtime/node.js +9 -6
  82. package/src/settings/serverSide.js +20 -0
  83. package/src/{utils/settings → settings}/storage/browser.js +10 -16
  84. package/src/{utils/settings → settings}/storage/node.js +7 -7
  85. package/src/umd.js +1 -0
  86. package/es/client/attributesDecoration.js +0 -116
  87. package/es/client/browser.js +0 -39
  88. package/es/client/client.js +0 -155
  89. package/es/client/inputValidation.js +0 -117
  90. package/es/client/node.js +0 -6
  91. package/es/engine/combiners/and.js +0 -54
  92. package/es/engine/combiners/ifelseif.js +0 -73
  93. package/es/engine/condition/index.js +0 -62
  94. package/es/engine/convertions/index.js +0 -29
  95. package/es/engine/engine/index.js +0 -60
  96. package/es/engine/engine/legacy.js +0 -77
  97. package/es/engine/engine/murmur3/common.js +0 -40
  98. package/es/engine/engine/murmur3/murmur3.js +0 -83
  99. package/es/engine/engine/murmur3/murmur3_128.js +0 -250
  100. package/es/engine/engine/murmur3/murmur3_128_x86.js +0 -183
  101. package/es/engine/engine/murmur3/murmur3_64.js +0 -52
  102. package/es/engine/engine/murmur3/utfx.js +0 -112
  103. package/es/engine/evaluator/index.js +0 -111
  104. package/es/engine/index.js +0 -112
  105. package/es/engine/matchers/all.js +0 -32
  106. package/es/engine/matchers/between.js +0 -35
  107. package/es/engine/matchers/boolean.js +0 -35
  108. package/es/engine/matchers/cont_all.js +0 -51
  109. package/es/engine/matchers/cont_any.js +0 -47
  110. package/es/engine/matchers/cont_str.js +0 -38
  111. package/es/engine/matchers/dependency.js +0 -50
  112. package/es/engine/matchers/eq.js +0 -35
  113. package/es/engine/matchers/eq_set.js +0 -49
  114. package/es/engine/matchers/ew.js +0 -38
  115. package/es/engine/matchers/gte.js +0 -35
  116. package/es/engine/matchers/index.js +0 -65
  117. package/es/engine/matchers/lte.js +0 -35
  118. package/es/engine/matchers/part_of.js +0 -49
  119. package/es/engine/matchers/segment.js +0 -39
  120. package/es/engine/matchers/string.js +0 -44
  121. package/es/engine/matchers/sw.js +0 -38
  122. package/es/engine/matchers/types.js +0 -48
  123. package/es/engine/matchers/whitelist.js +0 -36
  124. package/es/engine/parser/index.js +0 -69
  125. package/es/engine/parser/segments.js +0 -22
  126. package/es/engine/transforms/matcherGroup.js +0 -43
  127. package/es/engine/transforms/matchers.js +0 -109
  128. package/es/engine/transforms/segment.js +0 -28
  129. package/es/engine/transforms/set.js +0 -20
  130. package/es/engine/transforms/unaryNumeric.js +0 -20
  131. package/es/engine/transforms/whitelist.js +0 -22
  132. package/es/engine/treatments/index.js +0 -67
  133. package/es/engine/value/index.js +0 -54
  134. package/es/engine/value/sanitize.js +0 -125
  135. package/es/events/index.js +0 -65
  136. package/es/factory/offline.js +0 -50
  137. package/es/factory/online.js +0 -113
  138. package/es/impressions/counter.js +0 -52
  139. package/es/impressions/hasher/buildKey.js +0 -3
  140. package/es/impressions/hasher/hashImpression128.js +0 -5
  141. package/es/impressions/hasher/hashImpression32.js +0 -5
  142. package/es/impressions/observer/browser.js +0 -9
  143. package/es/impressions/observer/node.js +0 -9
  144. package/es/impressions/observer/observer.js +0 -21
  145. package/es/integrations/browser.js +0 -62
  146. package/es/integrations/ga/GaToSplit.js +0 -246
  147. package/es/integrations/ga/SplitToGa.js +0 -127
  148. package/es/integrations/node.js +0 -3
  149. package/es/listeners/browser.js +0 -157
  150. package/es/listeners/node.js +0 -65
  151. package/es/manager/index.js +0 -104
  152. package/es/metrics/Collectors.js +0 -100
  153. package/es/metrics/index.js +0 -157
  154. package/es/producer/browser/Partial.js +0 -103
  155. package/es/producer/browser.js +0 -70
  156. package/es/producer/fetcher/MySegments.js +0 -47
  157. package/es/producer/fetcher/SegmentChanges.js +0 -52
  158. package/es/producer/fetcher/SplitChanges.js +0 -46
  159. package/es/producer/node.js +0 -130
  160. package/es/producer/offline/browser.js +0 -26
  161. package/es/producer/offline/node.js +0 -26
  162. package/es/producer/task.js +0 -50
  163. package/es/producer/updater/MySegments.js +0 -108
  164. package/es/producer/updater/SegmentChanges.js +0 -135
  165. package/es/producer/updater/SplitChanges.js +0 -131
  166. package/es/producer/updater/SplitChangesFromFeatures.js +0 -21
  167. package/es/producer/updater/SplitChangesFromFileSystem.js +0 -21
  168. package/es/producer/updater/SplitChangesFromObject.js +0 -73
  169. package/es/readiness/index.js +0 -123
  170. package/es/readiness/statusManager.js +0 -114
  171. package/es/services/auth/auth.js +0 -25
  172. package/es/services/auth/index.js +0 -2
  173. package/es/services/events/bulk.js +0 -22
  174. package/es/services/events/index.js +0 -17
  175. package/es/services/impressions/bulk.js +0 -26
  176. package/es/services/impressions/count.js +0 -7
  177. package/es/services/impressions/dto.js +0 -73
  178. package/es/services/impressions/index.js +0 -17
  179. package/es/services/impressions/post.js +0 -22
  180. package/es/services/metrics/counters.js +0 -24
  181. package/es/services/metrics/dto.js +0 -38
  182. package/es/services/metrics/index.js +0 -17
  183. package/es/services/metrics/times.js +0 -24
  184. package/es/services/mySegments/get.js +0 -26
  185. package/es/services/mySegments/index.js +0 -17
  186. package/es/services/request/index.js +0 -43
  187. package/es/services/request/options/browser.js +0 -18
  188. package/es/services/segmentChanges/get.js +0 -21
  189. package/es/services/segmentChanges/index.js +0 -17
  190. package/es/services/splitChanges/get.js +0 -19
  191. package/es/services/splitChanges/index.js +0 -17
  192. package/es/services/splitChanges/offline/browser.js +0 -63
  193. package/es/services/splitChanges/offline/node.js +0 -176
  194. package/es/services/splitChanges/offline/package.json +0 -4
  195. package/es/services/splitChanges/offline/parseCondition.js +0 -43
  196. package/es/services/transport/index.js +0 -51
  197. package/es/storage/AttributesCache/InMemory.js +0 -85
  198. package/es/storage/BaseMetricsAsyncCache.js +0 -23
  199. package/es/storage/CountCache/InMemory.js +0 -48
  200. package/es/storage/CountCache/InRedis.js +0 -42
  201. package/es/storage/EventsCache/InMemory.js +0 -109
  202. package/es/storage/EventsCache/InRedis.js +0 -65
  203. package/es/storage/ImpressionsCache/InMemory.js +0 -71
  204. package/es/storage/ImpressionsCache/InRedis.js +0 -73
  205. package/es/storage/Keys.js +0 -125
  206. package/es/storage/KeysLocalStorage.js +0 -47
  207. package/es/storage/LatencyCache/InMemory.js +0 -56
  208. package/es/storage/LatencyCache/InRedis.js +0 -44
  209. package/es/storage/LatencyCache/findIndex.js +0 -2
  210. package/es/storage/Meta.js +0 -7
  211. package/es/storage/RedisAdapter.js +0 -198
  212. package/es/storage/SegmentCache/InLocalStorage/index.js +0 -138
  213. package/es/storage/SegmentCache/InMemory/browser.js +0 -107
  214. package/es/storage/SegmentCache/InMemory/node.js +0 -82
  215. package/es/storage/SegmentCache/InMemory/package.json +0 -4
  216. package/es/storage/SegmentCache/InRedis/index.js +0 -81
  217. package/es/storage/SplitCache/InLocalStorage.js +0 -332
  218. package/es/storage/SplitCache/InMemory.js +0 -162
  219. package/es/storage/SplitCache/InRedis.js +0 -214
  220. package/es/storage/SplitCache/killLocally.js +0 -35
  221. package/es/storage/browser.js +0 -101
  222. package/es/storage/node.js +0 -81
  223. package/es/storage/package.json +0 -4
  224. package/es/sync/AuthClient/index.js +0 -34
  225. package/es/sync/PushManager/index.js +0 -315
  226. package/es/sync/PushManager/mySegmentsV2utils.js +0 -76
  227. package/es/sync/PushManager/pushRequirements/browser.js +0 -23
  228. package/es/sync/PushManager/pushRequirements/node.js +0 -18
  229. package/es/sync/PushManager/pushRequirements/package.json +0 -4
  230. package/es/sync/SSEClient/index.js +0 -93
  231. package/es/sync/SSEHandler/NotificationKeeper.js +0 -97
  232. package/es/sync/SSEHandler/NotificationParser.js +0 -31
  233. package/es/sync/SSEHandler/index.js +0 -110
  234. package/es/sync/SegmentUpdateWorker/browser.js +0 -74
  235. package/es/sync/SegmentUpdateWorker/node.js +0 -79
  236. package/es/sync/SegmentUpdateWorker/package.json +0 -4
  237. package/es/sync/SplitUpdateWorker/index.js +0 -86
  238. package/es/sync/browser.js +0 -125
  239. package/es/sync/constants.js +0 -42
  240. package/es/sync/node.js +0 -60
  241. package/es/sync/package.json +0 -4
  242. package/es/trackers/event.js +0 -53
  243. package/es/trackers/impressions.js +0 -132
  244. package/es/utils/backoff/index.js +0 -51
  245. package/es/utils/base64/browser.js +0 -19
  246. package/es/utils/base64/node.js +0 -19
  247. package/es/utils/base64/package.json +0 -4
  248. package/es/utils/binarySearch/index.js +0 -50
  249. package/es/utils/constants/index.js +0 -38
  250. package/es/utils/context/constants.js +0 -30
  251. package/es/utils/context/index.js +0 -101
  252. package/es/utils/decompress/index.js +0 -476
  253. package/es/utils/fn/repeat.js +0 -58
  254. package/es/utils/inputValidation/apiKey.js +0 -39
  255. package/es/utils/inputValidation/attribute.js +0 -22
  256. package/es/utils/inputValidation/attributes.js +0 -19
  257. package/es/utils/inputValidation/event.js +0 -23
  258. package/es/utils/inputValidation/eventProperties.js +0 -69
  259. package/es/utils/inputValidation/eventValue.js +0 -9
  260. package/es/utils/inputValidation/index.js +0 -11
  261. package/es/utils/inputValidation/isOperational.js +0 -14
  262. package/es/utils/inputValidation/key.js +0 -50
  263. package/es/utils/inputValidation/split.js +0 -47
  264. package/es/utils/inputValidation/splitFilters.js +0 -121
  265. package/es/utils/inputValidation/splits.js +0 -27
  266. package/es/utils/inputValidation/trafficType.js +0 -55
  267. package/es/utils/jwt/hashUserKey.js +0 -11
  268. package/es/utils/jwt/index.js +0 -14
  269. package/es/utils/key/factory.js +0 -38
  270. package/es/utils/key/parser.js +0 -34
  271. package/es/utils/labels/index.js +0 -7
  272. package/es/utils/lang/Errors.js +0 -41
  273. package/es/utils/lang/Sets.js +0 -114
  274. package/es/utils/lang/index.js +0 -305
  275. package/es/utils/localstorage/isAvailable.js +0 -26
  276. package/es/utils/logger/LoggerFactory.js +0 -86
  277. package/es/utils/logger/index.js +0 -97
  278. package/es/utils/lrucache/linkedlist.js +0 -122
  279. package/es/utils/lrucache/lru.spec.js +0 -24
  280. package/es/utils/lrucache/lrucache.js +0 -80
  281. package/es/utils/now/browser.js +0 -27
  282. package/es/utils/now/node.js +0 -19
  283. package/es/utils/now/package.json +0 -4
  284. package/es/utils/promise/thenable.js +0 -3
  285. package/es/utils/promise/timeout.js +0 -34
  286. package/es/utils/promise/wrapper.js +0 -58
  287. package/es/utils/settings/defaults/package.json +0 -4
  288. package/es/utils/settings/impressionsMode.js +0 -16
  289. package/es/utils/settings/index.js +0 -194
  290. package/es/utils/settings/integrations/browser.js +0 -8
  291. package/es/utils/settings/integrations/common.js +0 -30
  292. package/es/utils/settings/integrations/node.js +0 -7
  293. package/es/utils/settings/integrations/package.json +0 -4
  294. package/es/utils/settings/language/browser.js +0 -16
  295. package/es/utils/settings/language/node.js +0 -16
  296. package/es/utils/settings/language/package.json +0 -4
  297. package/es/utils/settings/mode.js +0 -10
  298. package/es/utils/settings/runtime/browser.js +0 -21
  299. package/es/utils/settings/runtime/package.json +0 -4
  300. package/es/utils/settings/storage/package.json +0 -4
  301. package/es/utils/splits/usesSegments.js +0 -21
  302. package/es/utils/time/index.js +0 -8
  303. package/es/utils/timeTracker/index.js +0 -216
  304. package/es/utils/timeTracker/timer.js +0 -25
  305. package/lib/client/attributesDecoration.js +0 -128
  306. package/lib/client/browser.js +0 -50
  307. package/lib/client/client.js +0 -174
  308. package/lib/client/inputValidation.js +0 -129
  309. package/lib/client/node.js +0 -14
  310. package/lib/client/package.json +0 -4
  311. package/lib/engine/combiners/and.js +0 -65
  312. package/lib/engine/combiners/ifelseif.js +0 -88
  313. package/lib/engine/condition/index.js +0 -76
  314. package/lib/engine/convertions/index.js +0 -36
  315. package/lib/engine/engine/index.js +0 -71
  316. package/lib/engine/engine/legacy.js +0 -83
  317. package/lib/engine/engine/murmur3/common.js +0 -52
  318. package/lib/engine/engine/murmur3/murmur3.js +0 -90
  319. package/lib/engine/engine/murmur3/murmur3_128.js +0 -256
  320. package/lib/engine/engine/murmur3/murmur3_128_x86.js +0 -189
  321. package/lib/engine/engine/murmur3/murmur3_64.js +0 -57
  322. package/lib/engine/engine/murmur3/utfx.js +0 -121
  323. package/lib/engine/evaluator/index.js +0 -129
  324. package/lib/engine/index.js +0 -128
  325. package/lib/engine/matchers/all.js +0 -41
  326. package/lib/engine/matchers/between.js +0 -44
  327. package/lib/engine/matchers/boolean.js +0 -44
  328. package/lib/engine/matchers/cont_all.js +0 -61
  329. package/lib/engine/matchers/cont_any.js +0 -57
  330. package/lib/engine/matchers/cont_str.js +0 -48
  331. package/lib/engine/matchers/dependency.js +0 -60
  332. package/lib/engine/matchers/eq.js +0 -44
  333. package/lib/engine/matchers/eq_set.js +0 -59
  334. package/lib/engine/matchers/ew.js +0 -48
  335. package/lib/engine/matchers/gte.js +0 -44
  336. package/lib/engine/matchers/index.js +0 -90
  337. package/lib/engine/matchers/lte.js +0 -44
  338. package/lib/engine/matchers/part_of.js +0 -59
  339. package/lib/engine/matchers/segment.js +0 -49
  340. package/lib/engine/matchers/string.js +0 -53
  341. package/lib/engine/matchers/sw.js +0 -48
  342. package/lib/engine/matchers/types.js +0 -57
  343. package/lib/engine/matchers/whitelist.js +0 -46
  344. package/lib/engine/parser/index.js +0 -84
  345. package/lib/engine/parser/segments.js +0 -28
  346. package/lib/engine/transforms/matcherGroup.js +0 -54
  347. package/lib/engine/transforms/matchers.js +0 -124
  348. package/lib/engine/transforms/segment.js +0 -34
  349. package/lib/engine/transforms/set.js +0 -26
  350. package/lib/engine/transforms/unaryNumeric.js +0 -26
  351. package/lib/engine/transforms/whitelist.js +0 -28
  352. package/lib/engine/treatments/index.js +0 -73
  353. package/lib/engine/value/index.js +0 -64
  354. package/lib/engine/value/sanitize.js +0 -137
  355. package/lib/events/index.js +0 -80
  356. package/lib/factory/offline.js +0 -62
  357. package/lib/factory/online.js +0 -129
  358. package/lib/impressions/counter.js +0 -61
  359. package/lib/impressions/hasher/buildKey.js +0 -8
  360. package/lib/impressions/hasher/hashImpression128.js +0 -12
  361. package/lib/impressions/hasher/hashImpression32.js +0 -14
  362. package/lib/impressions/observer/browser.js +0 -19
  363. package/lib/impressions/observer/node.js +0 -19
  364. package/lib/impressions/observer/observer.js +0 -29
  365. package/lib/impressions/observer/package.json +0 -4
  366. package/lib/integrations/browser.js +0 -72
  367. package/lib/integrations/ga/GaToSplit.js +0 -267
  368. package/lib/integrations/ga/SplitToGa.js +0 -138
  369. package/lib/integrations/node.js +0 -9
  370. package/lib/integrations/package.json +0 -4
  371. package/lib/listeners/browser.js +0 -173
  372. package/lib/listeners/node.js +0 -74
  373. package/lib/listeners/package.json +0 -4
  374. package/lib/manager/index.js +0 -115
  375. package/lib/metrics/Collectors.js +0 -118
  376. package/lib/metrics/index.js +0 -182
  377. package/lib/producer/browser/Partial.js +0 -114
  378. package/lib/producer/browser.js +0 -82
  379. package/lib/producer/fetcher/MySegments.js +0 -59
  380. package/lib/producer/fetcher/SegmentChanges.js +0 -62
  381. package/lib/producer/fetcher/SplitChanges.js +0 -58
  382. package/lib/producer/node.js +0 -142
  383. package/lib/producer/offline/browser.js +0 -35
  384. package/lib/producer/offline/node.js +0 -35
  385. package/lib/producer/offline/package.json +0 -4
  386. package/lib/producer/package.json +0 -4
  387. package/lib/producer/task.js +0 -61
  388. package/lib/producer/updater/MySegments.js +0 -119
  389. package/lib/producer/updater/SegmentChanges.js +0 -148
  390. package/lib/producer/updater/SplitChanges.js +0 -145
  391. package/lib/producer/updater/SplitChangesFromFeatures.js +0 -30
  392. package/lib/producer/updater/SplitChangesFromFileSystem.js +0 -30
  393. package/lib/producer/updater/SplitChangesFromObject.js +0 -84
  394. package/lib/readiness/index.js +0 -132
  395. package/lib/readiness/statusManager.js +0 -124
  396. package/lib/services/auth/auth.js +0 -32
  397. package/lib/services/auth/index.js +0 -11
  398. package/lib/services/events/bulk.js +0 -31
  399. package/lib/services/events/index.js +0 -26
  400. package/lib/services/getEventSource/package.json +0 -4
  401. package/lib/services/getFetch/package.json +0 -4
  402. package/lib/services/impressions/bulk.js +0 -36
  403. package/lib/services/impressions/count.js +0 -16
  404. package/lib/services/impressions/dto.js +0 -81
  405. package/lib/services/impressions/index.js +0 -26
  406. package/lib/services/impressions/post.js +0 -31
  407. package/lib/services/metrics/counters.js +0 -33
  408. package/lib/services/metrics/dto.js +0 -46
  409. package/lib/services/metrics/index.js +0 -26
  410. package/lib/services/metrics/times.js +0 -33
  411. package/lib/services/mySegments/get.js +0 -35
  412. package/lib/services/mySegments/index.js +0 -26
  413. package/lib/services/request/index.js +0 -53
  414. package/lib/services/request/options/browser.js +0 -23
  415. package/lib/services/request/options/package.json +0 -4
  416. package/lib/services/segmentChanges/get.js +0 -29
  417. package/lib/services/segmentChanges/index.js +0 -26
  418. package/lib/services/splitChanges/get.js +0 -27
  419. package/lib/services/splitChanges/index.js +0 -26
  420. package/lib/services/splitChanges/offline/browser.js +0 -71
  421. package/lib/services/splitChanges/offline/node.js +0 -189
  422. package/lib/services/splitChanges/offline/package.json +0 -4
  423. package/lib/services/splitChanges/offline/parseCondition.js +0 -49
  424. package/lib/services/transport/index.js +0 -62
  425. package/lib/storage/AttributesCache/InMemory.js +0 -93
  426. package/lib/storage/BaseMetricsAsyncCache.js +0 -28
  427. package/lib/storage/CountCache/InMemory.js +0 -54
  428. package/lib/storage/CountCache/InRedis.js +0 -50
  429. package/lib/storage/EventsCache/InMemory.js +0 -118
  430. package/lib/storage/EventsCache/InRedis.js +0 -74
  431. package/lib/storage/ImpressionsCache/InMemory.js +0 -77
  432. package/lib/storage/ImpressionsCache/InRedis.js +0 -79
  433. package/lib/storage/Keys.js +0 -132
  434. package/lib/storage/KeysLocalStorage.js +0 -58
  435. package/lib/storage/LatencyCache/InMemory.js +0 -64
  436. package/lib/storage/LatencyCache/InRedis.js +0 -53
  437. package/lib/storage/LatencyCache/findIndex.js +0 -12
  438. package/lib/storage/Meta.js +0 -12
  439. package/lib/storage/RedisAdapter.js +0 -212
  440. package/lib/storage/SegmentCache/InLocalStorage/index.js +0 -147
  441. package/lib/storage/SegmentCache/InMemory/browser.js +0 -113
  442. package/lib/storage/SegmentCache/InMemory/node.js +0 -89
  443. package/lib/storage/SegmentCache/InMemory/package.json +0 -4
  444. package/lib/storage/SegmentCache/InRedis/index.js +0 -87
  445. package/lib/storage/SplitCache/InLocalStorage.js +0 -344
  446. package/lib/storage/SplitCache/InMemory.js +0 -172
  447. package/lib/storage/SplitCache/InRedis.js +0 -224
  448. package/lib/storage/SplitCache/killLocally.js +0 -42
  449. package/lib/storage/browser.js +0 -122
  450. package/lib/storage/node.js +0 -104
  451. package/lib/storage/package.json +0 -4
  452. package/lib/sync/AuthClient/index.js +0 -44
  453. package/lib/sync/PushManager/index.js +0 -340
  454. package/lib/sync/PushManager/mySegmentsV2utils.js +0 -87
  455. package/lib/sync/PushManager/pushRequirements/browser.js +0 -30
  456. package/lib/sync/PushManager/pushRequirements/node.js +0 -25
  457. package/lib/sync/PushManager/pushRequirements/package.json +0 -4
  458. package/lib/sync/SSEClient/index.js +0 -101
  459. package/lib/sync/SSEHandler/NotificationKeeper.js +0 -104
  460. package/lib/sync/SSEHandler/NotificationParser.js +0 -39
  461. package/lib/sync/SSEHandler/index.js +0 -121
  462. package/lib/sync/SegmentUpdateWorker/browser.js +0 -81
  463. package/lib/sync/SegmentUpdateWorker/node.js +0 -86
  464. package/lib/sync/SegmentUpdateWorker/package.json +0 -4
  465. package/lib/sync/SplitUpdateWorker/index.js +0 -93
  466. package/lib/sync/browser.js +0 -139
  467. package/lib/sync/constants.js +0 -59
  468. package/lib/sync/node.js +0 -71
  469. package/lib/sync/package.json +0 -4
  470. package/lib/trackers/event.js +0 -64
  471. package/lib/trackers/impressions.js +0 -146
  472. package/lib/utils/backoff/index.js +0 -57
  473. package/lib/utils/base64/browser.js +0 -26
  474. package/lib/utils/base64/node.js +0 -26
  475. package/lib/utils/base64/package.json +0 -4
  476. package/lib/utils/binarySearch/index.js +0 -56
  477. package/lib/utils/constants/index.js +0 -60
  478. package/lib/utils/context/constants.js +0 -49
  479. package/lib/utils/context/index.js +0 -111
  480. package/lib/utils/decompress/index.js +0 -483
  481. package/lib/utils/fn/repeat.js +0 -64
  482. package/lib/utils/inputValidation/apiKey.js +0 -51
  483. package/lib/utils/inputValidation/attribute.js +0 -32
  484. package/lib/utils/inputValidation/attributes.js +0 -32
  485. package/lib/utils/inputValidation/event.js +0 -33
  486. package/lib/utils/inputValidation/eventProperties.js +0 -78
  487. package/lib/utils/inputValidation/eventValue.js +0 -19
  488. package/lib/utils/inputValidation/index.js +0 -48
  489. package/lib/utils/inputValidation/isOperational.js +0 -25
  490. package/lib/utils/inputValidation/key.js +0 -59
  491. package/lib/utils/inputValidation/split.js +0 -60
  492. package/lib/utils/inputValidation/splitFilters.js +0 -134
  493. package/lib/utils/inputValidation/splits.js +0 -38
  494. package/lib/utils/inputValidation/trafficType.js +0 -68
  495. package/lib/utils/jwt/hashUserKey.js +0 -19
  496. package/lib/utils/jwt/index.js +0 -19
  497. package/lib/utils/key/factory.js +0 -46
  498. package/lib/utils/key/parser.js +0 -42
  499. package/lib/utils/labels/index.js +0 -18
  500. package/lib/utils/lang/Errors.js +0 -58
  501. package/lib/utils/lang/Sets.js +0 -127
  502. package/lib/utils/lang/index.js +0 -350
  503. package/lib/utils/localstorage/isAvailable.js +0 -31
  504. package/lib/utils/logger/LoggerFactory.js +0 -98
  505. package/lib/utils/logger/index.js +0 -109
  506. package/lib/utils/lrucache/linkedlist.js +0 -132
  507. package/lib/utils/lrucache/lru.spec.js +0 -30
  508. package/lib/utils/lrucache/lrucache.js +0 -88
  509. package/lib/utils/now/browser.js +0 -33
  510. package/lib/utils/now/node.js +0 -24
  511. package/lib/utils/now/package.json +0 -4
  512. package/lib/utils/promise/thenable.js +0 -10
  513. package/lib/utils/promise/timeout.js +0 -40
  514. package/lib/utils/promise/wrapper.js +0 -63
  515. package/lib/utils/settings/defaults/package.json +0 -4
  516. package/lib/utils/settings/impressionsMode.js +0 -26
  517. package/lib/utils/settings/index.js +0 -214
  518. package/lib/utils/settings/integrations/browser.js +0 -17
  519. package/lib/utils/settings/integrations/common.js +0 -40
  520. package/lib/utils/settings/integrations/node.js +0 -13
  521. package/lib/utils/settings/integrations/package.json +0 -4
  522. package/lib/utils/settings/language/browser.js +0 -22
  523. package/lib/utils/settings/language/node.js +0 -22
  524. package/lib/utils/settings/language/package.json +0 -4
  525. package/lib/utils/settings/mode.js +0 -16
  526. package/lib/utils/settings/runtime/browser.js +0 -26
  527. package/lib/utils/settings/runtime/package.json +0 -4
  528. package/lib/utils/settings/storage/package.json +0 -4
  529. package/lib/utils/splits/usesSegments.js +0 -27
  530. package/lib/utils/time/index.js +0 -12
  531. package/lib/utils/timeTracker/index.js +0 -213
  532. package/lib/utils/timeTracker/timer.js +0 -33
  533. package/src/client/attributesDecoration.js +0 -112
  534. package/src/client/browser.js +0 -41
  535. package/src/client/client.js +0 -131
  536. package/src/client/inputValidation.js +0 -130
  537. package/src/client/node.js +0 -8
  538. package/src/client/package.json +0 -4
  539. package/src/engine/combiners/and.js +0 -55
  540. package/src/engine/combiners/ifelseif.js +0 -74
  541. package/src/engine/condition/index.js +0 -65
  542. package/src/engine/convertions/index.js +0 -22
  543. package/src/engine/engine/index.js +0 -63
  544. package/src/engine/engine/legacy.js +0 -66
  545. package/src/engine/engine/murmur3/common.js +0 -54
  546. package/src/engine/engine/murmur3/murmur3.js +0 -79
  547. package/src/engine/engine/murmur3/murmur3_128.js +0 -273
  548. package/src/engine/engine/murmur3/murmur3_128_x86.js +0 -188
  549. package/src/engine/engine/murmur3/murmur3_64.js +0 -34
  550. package/src/engine/engine/murmur3/utfx.js +0 -111
  551. package/src/engine/evaluator/index.js +0 -148
  552. package/src/engine/index.js +0 -123
  553. package/src/engine/matchers/all.js +0 -29
  554. package/src/engine/matchers/between.js +0 -30
  555. package/src/engine/matchers/boolean.js +0 -29
  556. package/src/engine/matchers/cont_all.js +0 -40
  557. package/src/engine/matchers/cont_any.js +0 -35
  558. package/src/engine/matchers/cont_str.js +0 -31
  559. package/src/engine/matchers/dependency.js +0 -52
  560. package/src/engine/matchers/eq.js +0 -30
  561. package/src/engine/matchers/eq_set.js +0 -37
  562. package/src/engine/matchers/ew.js +0 -31
  563. package/src/engine/matchers/gte.js +0 -30
  564. package/src/engine/matchers/index.js +0 -71
  565. package/src/engine/matchers/lte.js +0 -30
  566. package/src/engine/matchers/part_of.js +0 -37
  567. package/src/engine/matchers/segment.js +0 -41
  568. package/src/engine/matchers/string.js +0 -39
  569. package/src/engine/matchers/sw.js +0 -31
  570. package/src/engine/matchers/types.js +0 -52
  571. package/src/engine/matchers/whitelist.js +0 -30
  572. package/src/engine/parser/index.js +0 -79
  573. package/src/engine/parser/segments.js +0 -31
  574. package/src/engine/transforms/matcherGroup.js +0 -45
  575. package/src/engine/transforms/matchers.js +0 -118
  576. package/src/engine/transforms/segment.js +0 -23
  577. package/src/engine/transforms/set.js +0 -20
  578. package/src/engine/transforms/unaryNumeric.js +0 -20
  579. package/src/engine/transforms/whitelist.js +0 -22
  580. package/src/engine/treatments/index.js +0 -67
  581. package/src/engine/value/index.js +0 -53
  582. package/src/engine/value/sanitize.js +0 -117
  583. package/src/events/index.js +0 -62
  584. package/src/factory/offline.js +0 -60
  585. package/src/factory/online.js +0 -127
  586. package/src/impressions/counter.js +0 -43
  587. package/src/impressions/hasher/buildKey.js +0 -3
  588. package/src/impressions/hasher/hashImpression128.js +0 -6
  589. package/src/impressions/hasher/hashImpression32.js +0 -6
  590. package/src/impressions/observer/browser.js +0 -8
  591. package/src/impressions/observer/node.js +0 -8
  592. package/src/impressions/observer/observer.js +0 -17
  593. package/src/impressions/observer/package.json +0 -4
  594. package/src/integrations/browser.js +0 -57
  595. package/src/integrations/ga/GaToSplit.js +0 -278
  596. package/src/integrations/ga/SplitToGa.js +0 -125
  597. package/src/integrations/node.js +0 -4
  598. package/src/integrations/package.json +0 -4
  599. package/src/listeners/browser.js +0 -137
  600. package/src/listeners/node.js +0 -59
  601. package/src/listeners/package.json +0 -4
  602. package/src/manager/index.js +0 -103
  603. package/src/metrics/Collectors.js +0 -77
  604. package/src/metrics/index.js +0 -174
  605. package/src/producer/browser/Partial.js +0 -104
  606. package/src/producer/browser.js +0 -82
  607. package/src/producer/fetcher/MySegments.js +0 -40
  608. package/src/producer/fetcher/SegmentChanges.js +0 -52
  609. package/src/producer/fetcher/SplitChanges.js +0 -39
  610. package/src/producer/node.js +0 -142
  611. package/src/producer/offline/browser.js +0 -28
  612. package/src/producer/offline/node.js +0 -28
  613. package/src/producer/offline/package.json +0 -4
  614. package/src/producer/package.json +0 -4
  615. package/src/producer/task.js +0 -57
  616. package/src/producer/updater/MySegments.js +0 -104
  617. package/src/producer/updater/SegmentChanges.js +0 -126
  618. package/src/producer/updater/SplitChanges.js +0 -138
  619. package/src/producer/updater/SplitChangesFromFeatures.js +0 -23
  620. package/src/producer/updater/SplitChangesFromFileSystem.js +0 -23
  621. package/src/producer/updater/SplitChangesFromObject.js +0 -81
  622. package/src/readiness/index.js +0 -125
  623. package/src/readiness/statusManager.js +0 -121
  624. package/src/services/.DS_Store +0 -0
  625. package/src/services/auth/auth.js +0 -21
  626. package/src/services/auth/index.js +0 -3
  627. package/src/services/events/bulk.js +0 -23
  628. package/src/services/events/index.js +0 -18
  629. package/src/services/getEventSource/package.json +0 -4
  630. package/src/services/getFetch/package.json +0 -4
  631. package/src/services/impressions/bulk.js +0 -26
  632. package/src/services/impressions/count.js +0 -8
  633. package/src/services/impressions/dto.js +0 -71
  634. package/src/services/impressions/index.js +0 -18
  635. package/src/services/impressions/post.js +0 -23
  636. package/src/services/metrics/counters.js +0 -25
  637. package/src/services/metrics/dto.js +0 -44
  638. package/src/services/metrics/index.js +0 -18
  639. package/src/services/metrics/times.js +0 -25
  640. package/src/services/mySegments/get.js +0 -27
  641. package/src/services/mySegments/index.js +0 -18
  642. package/src/services/request/index.js +0 -43
  643. package/src/services/request/options/browser.js +0 -18
  644. package/src/services/request/options/package.json +0 -4
  645. package/src/services/segmentChanges/get.js +0 -20
  646. package/src/services/segmentChanges/index.js +0 -18
  647. package/src/services/splitChanges/get.js +0 -20
  648. package/src/services/splitChanges/index.js +0 -18
  649. package/src/services/splitChanges/offline/browser.js +0 -66
  650. package/src/services/splitChanges/offline/node.js +0 -190
  651. package/src/services/splitChanges/offline/package.json +0 -4
  652. package/src/services/splitChanges/offline/parseCondition.js +0 -52
  653. package/src/services/transport/index.js +0 -44
  654. package/src/storage/AttributesCache/InMemory.js +0 -76
  655. package/src/storage/BaseMetricsAsyncCache.js +0 -14
  656. package/src/storage/CountCache/InMemory.js +0 -48
  657. package/src/storage/CountCache/InRedis.js +0 -32
  658. package/src/storage/EventsCache/InMemory.js +0 -99
  659. package/src/storage/EventsCache/InRedis.js +0 -62
  660. package/src/storage/ImpressionsCache/InMemory.js +0 -62
  661. package/src/storage/ImpressionsCache/InRedis.js +0 -65
  662. package/src/storage/Keys.js +0 -122
  663. package/src/storage/KeysLocalStorage.js +0 -40
  664. package/src/storage/LatencyCache/InMemory.js +0 -56
  665. package/src/storage/LatencyCache/InRedis.js +0 -35
  666. package/src/storage/LatencyCache/findIndex.js +0 -7
  667. package/src/storage/Meta.js +0 -7
  668. package/src/storage/RedisAdapter.js +0 -170
  669. package/src/storage/SegmentCache/InLocalStorage/index.js +0 -120
  670. package/src/storage/SegmentCache/InMemory/browser.js +0 -99
  671. package/src/storage/SegmentCache/InMemory/node.js +0 -84
  672. package/src/storage/SegmentCache/InMemory/package.json +0 -4
  673. package/src/storage/SegmentCache/InRedis/index.js +0 -71
  674. package/src/storage/SplitCache/InLocalStorage.js +0 -324
  675. package/src/storage/SplitCache/InMemory.js +0 -145
  676. package/src/storage/SplitCache/InRedis.js +0 -187
  677. package/src/storage/SplitCache/killLocally.js +0 -33
  678. package/src/storage/browser.js +0 -110
  679. package/src/storage/node.js +0 -83
  680. package/src/storage/package.json +0 -4
  681. package/src/sync/.DS_Store +0 -0
  682. package/src/sync/AuthClient/index.js +0 -31
  683. package/src/sync/PushManager/index.js +0 -328
  684. package/src/sync/PushManager/mySegmentsV2utils.js +0 -76
  685. package/src/sync/PushManager/pushRequirements/browser.js +0 -20
  686. package/src/sync/PushManager/pushRequirements/node.js +0 -16
  687. package/src/sync/PushManager/pushRequirements/package.json +0 -4
  688. package/src/sync/SSEClient/index.js +0 -92
  689. package/src/sync/SSEHandler/NotificationKeeper.js +0 -90
  690. package/src/sync/SSEHandler/NotificationParser.js +0 -35
  691. package/src/sync/SSEHandler/index.js +0 -110
  692. package/src/sync/SegmentUpdateWorker/browser.js +0 -67
  693. package/src/sync/SegmentUpdateWorker/node.js +0 -73
  694. package/src/sync/SegmentUpdateWorker/package.json +0 -4
  695. package/src/sync/SplitUpdateWorker/index.js +0 -79
  696. package/src/sync/browser.js +0 -130
  697. package/src/sync/constants.js +0 -43
  698. package/src/sync/node.js +0 -66
  699. package/src/sync/package.json +0 -4
  700. package/src/trackers/event.js +0 -47
  701. package/src/trackers/impressions.js +0 -123
  702. package/src/utils/backoff/index.js +0 -46
  703. package/src/utils/base64/browser.js +0 -19
  704. package/src/utils/base64/node.js +0 -19
  705. package/src/utils/base64/package.json +0 -4
  706. package/src/utils/binarySearch/index.js +0 -50
  707. package/src/utils/constants/index.js +0 -41
  708. package/src/utils/context/constants.js +0 -18
  709. package/src/utils/context/index.js +0 -84
  710. package/src/utils/decompress/index.js +0 -428
  711. package/src/utils/fn/repeat.js +0 -48
  712. package/src/utils/inputValidation/apiKey.js +0 -42
  713. package/src/utils/inputValidation/attribute.js +0 -22
  714. package/src/utils/inputValidation/attributes.js +0 -26
  715. package/src/utils/inputValidation/event.js +0 -23
  716. package/src/utils/inputValidation/eventProperties.js +0 -65
  717. package/src/utils/inputValidation/eventValue.js +0 -11
  718. package/src/utils/inputValidation/index.js +0 -11
  719. package/src/utils/inputValidation/isOperational.js +0 -16
  720. package/src/utils/inputValidation/key.js +0 -53
  721. package/src/utils/inputValidation/split.js +0 -42
  722. package/src/utils/inputValidation/splitFilters.js +0 -108
  723. package/src/utils/inputValidation/splits.js +0 -21
  724. package/src/utils/inputValidation/trafficType.js +0 -58
  725. package/src/utils/jwt/hashUserKey.js +0 -11
  726. package/src/utils/jwt/index.js +0 -15
  727. package/src/utils/key/factory.js +0 -34
  728. package/src/utils/key/parser.js +0 -34
  729. package/src/utils/labels/index.js +0 -7
  730. package/src/utils/lang/Errors.js +0 -19
  731. package/src/utils/lang/Sets.js +0 -94
  732. package/src/utils/lang/index.js +0 -291
  733. package/src/utils/localstorage/isAvailable.js +0 -26
  734. package/src/utils/logger/LoggerFactory.js +0 -90
  735. package/src/utils/logger/index.js +0 -93
  736. package/src/utils/lrucache/linkedlist.js +0 -116
  737. package/src/utils/lrucache/lru.spec.js +0 -26
  738. package/src/utils/lrucache/lrucache.js +0 -49
  739. package/src/utils/now/browser.js +0 -29
  740. package/src/utils/now/node.js +0 -21
  741. package/src/utils/now/package.json +0 -4
  742. package/src/utils/promise/thenable.js +0 -1
  743. package/src/utils/promise/timeout.js +0 -38
  744. package/src/utils/promise/wrapper.js +0 -60
  745. package/src/utils/settings/defaults/package.json +0 -4
  746. package/src/utils/settings/impressionsMode.js +0 -15
  747. package/src/utils/settings/index.js +0 -217
  748. package/src/utils/settings/integrations/browser.js +0 -8
  749. package/src/utils/settings/integrations/common.js +0 -32
  750. package/src/utils/settings/integrations/package.json +0 -4
  751. package/src/utils/settings/language/browser.js +0 -17
  752. package/src/utils/settings/language/node.js +0 -17
  753. package/src/utils/settings/language/package.json +0 -4
  754. package/src/utils/settings/mode.js +0 -12
  755. package/src/utils/settings/runtime/browser.js +0 -22
  756. package/src/utils/settings/runtime/package.json +0 -4
  757. package/src/utils/settings/storage/package.json +0 -4
  758. package/src/utils/splits/usesSegments.js +0 -17
  759. package/src/utils/time/index.js +0 -8
  760. package/src/utils/timeTracker/index.js +0 -223
  761. package/src/utils/timeTracker/timer.js +0 -27
@@ -1,50 +0,0 @@
1
- import objectAssign from 'object-assign';
2
- import ClientFactory from '../client';
3
- import OfflineProducerFactory from '../producer/offline';
4
- import { releaseApiKey } from '../utils/inputValidation'; //
5
- // Create SDK instance for offline mode.
6
- //
7
-
8
- function SplitFactoryOffline(context, sharedTrackers) {
9
- var sharedInstance = !sharedTrackers;
10
- var readiness = context.get(context.constants.READINESS);
11
- var storage = context.get(context.constants.STORAGE);
12
- var statusManager = context.get(context.constants.STATUS_MANAGER); // In LOCALHOST mode, shared clients are ready in the next event-loop cycle than created
13
- // and then updated on each SDK_SPLITS_ARRIVED event
14
-
15
- if (sharedInstance) setTimeout(function () {
16
- readiness.splits.on(readiness.splits.SDK_SPLITS_ARRIVED, function () {
17
- readiness.gate.emit(readiness.gate.SDK_UPDATE);
18
- });
19
- readiness.gate.emit(readiness.gate.SDK_READY);
20
- }, 0); // Producer
21
-
22
- var producer = sharedInstance ? undefined : OfflineProducerFactory(context); // Start background task for flag updates
23
-
24
- producer && producer.start();
25
- var api = objectAssign( // Proto linkage of the EventEmitter to prevent any change
26
- Object.create(statusManager), // GetTreatment/s
27
- ClientFactory(context), // Utilities
28
- {
29
- // Destroy instance. Async so we respect the online api.
30
- destroy: function destroy() {
31
- // Stop background jobs
32
- producer && producer.stop(); // Cleanup event listeners
33
-
34
- readiness.destroy(); // Cleanup storage
35
-
36
- storage.destroy && storage.destroy(); // Mark the factory as destroyed.
37
-
38
- context.put(context.constants.DESTROYED, true);
39
- !sharedInstance && releaseApiKey();
40
- return Promise.resolve();
41
- }
42
- });
43
- return {
44
- api: api,
45
- metricCollectors: false // We won't collect any metrics on localhost mode.
46
-
47
- };
48
- }
49
-
50
- export default SplitFactoryOffline;
@@ -1,113 +0,0 @@
1
- import objectAssign from 'object-assign';
2
- import ClientFactory from '../client';
3
- import MetricsFactory from '../metrics';
4
- import EventsFactory from '../events';
5
- import SyncManagerFactory from '../sync';
6
- import SignalsListener from '../listeners';
7
- import { releaseApiKey } from '../utils/inputValidation';
8
- import { STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE } from '../utils/constants'; // map of authorizationKeys to syncManagers, to keep a single instance per factory and needed to create shared clients
9
-
10
- var syncManagers = {}; //
11
- // Create SDK instance based on the provided configurations
12
- //
13
-
14
- function SplitFactoryOnline(context, readyTrackers, mainClientMetricCollectors) {
15
- var sharedInstance = !!mainClientMetricCollectors;
16
- var settings = context.get(context.constants.SETTINGS);
17
- var readiness = context.get(context.constants.READINESS);
18
- var storage = context.get(context.constants.STORAGE);
19
- var statusManager = context.get(context.constants.STATUS_MANAGER); // We are only interested in exposable EventEmitter
20
-
21
- var gate = readiness.gate,
22
- splits = readiness.splits,
23
- segments = readiness.segments; // Events name
24
-
25
- var SDK_READY = gate.SDK_READY; // Shared instances use parent metrics collectors
26
-
27
- var metrics = sharedInstance ? undefined : MetricsFactory(context); // Shared instances use parent events queue
28
-
29
- var events = sharedInstance ? undefined : EventsFactory(context);
30
- var syncManager;
31
-
32
- switch (settings.mode) {
33
- case PRODUCER_MODE:
34
- case STANDALONE_MODE:
35
- {
36
- context.put(context.constants.COLLECTORS, metrics && metrics.collectors); // We don't fully instantiate syncManager if we are creating a shared instance.
37
-
38
- if (sharedInstance) {
39
- syncManager = syncManagers[settings.core.authorizationKey].shared(context);
40
- } else {
41
- syncManager = SyncManagerFactory(context);
42
- syncManagers[settings.core.authorizationKey] = syncManager;
43
- }
44
-
45
- break;
46
- }
47
-
48
- case CONSUMER_MODE:
49
- {
50
- context.put(context.constants.READY_FROM_CACHE, true); // For SDK inner workings it's supposed to be ready from cache.
51
-
52
- break;
53
- }
54
- } // Signal listener only needed for main instances
55
-
56
-
57
- var signalsListener = sharedInstance ? undefined : new SignalsListener(context, syncManager);
58
-
59
- if (readyTrackers && syncManager && !sharedInstance) {
60
- // Only track ready events for non-shared and non-consumer clients
61
- var sdkReadyTracker = readyTrackers.sdkReadyTracker,
62
- splitsReadyTracker = readyTrackers.splitsReadyTracker,
63
- segmentsReadyTracker = readyTrackers.segmentsReadyTracker; // Defered setup of collectors for this task, as it is the only ready latency we store on BE.
64
-
65
- sdkReadyTracker.setCollectorForTask(metrics.collectors);
66
- gate.once(SDK_READY, sdkReadyTracker);
67
- splits.once(splits.SDK_SPLITS_ARRIVED, splitsReadyTracker);
68
- segments.once(segments.SDK_SEGMENTS_ARRIVED, segmentsReadyTracker);
69
- } // Start background jobs tasks
70
-
71
-
72
- syncManager && syncManager.start();
73
- metrics && metrics.start();
74
- events && context.put(context.constants.EVENTS, events) && events.start(); // If no collectors are stored we are on a shared instance, save main one.
75
-
76
- context.put(context.constants.COLLECTORS, mainClientMetricCollectors);
77
- var api = objectAssign( // Proto linkage of the EventEmitter to prevent any change
78
- Object.create(statusManager), // getTreatment/s & track
79
- ClientFactory(context), // Utilities
80
- {
81
- // Destroy instance
82
- destroy: function destroy() {
83
- // Stop background jobs
84
- syncManager && syncManager.stop();
85
- metrics && metrics.stop();
86
- events && events.stop(); // Send impressions and events in parallel.
87
-
88
- return Promise.all([metrics && metrics.flush(), events && events.flush()]).then(function () {
89
- // Cleanup event listeners
90
- readiness.destroy();
91
- signalsListener && signalsListener.stop(); // Cleanup storage
92
-
93
- storage.destroy && storage.destroy(); // Mark the factory as destroyed.
94
-
95
- context.put(context.constants.DESTROYED, true); // And release the API Key and SyncManager
96
-
97
- if (!sharedInstance) {
98
- releaseApiKey(settings.core.authorizationKey);
99
- delete syncManagers[settings.core.authorizationKey];
100
- }
101
- });
102
- }
103
- }); // We'll start the signals listener if the client is not a shared instance.
104
- // For now, we will only call destroy.
105
-
106
- !sharedInstance && signalsListener.start(api.destroy);
107
- return {
108
- api: api,
109
- metricCollectors: metrics && metrics.collectors
110
- };
111
- }
112
-
113
- export default SplitFactoryOnline;
@@ -1,52 +0,0 @@
1
- import { truncateTimeFrame } from '../utils/time';
2
- import objectAssign from 'object-assign';
3
-
4
- var ImpressionCounter = /*#__PURE__*/function () {
5
- function ImpressionCounter() {
6
- this.cache = {};
7
- }
8
- /**
9
- * Builds key to be stored in the cache with the featureName and the timeFrame truncated.
10
- */
11
-
12
-
13
- var _proto = ImpressionCounter.prototype;
14
-
15
- _proto._makeKey = function _makeKey(featureName, timeFrame) {
16
- return featureName + "::" + truncateTimeFrame(timeFrame);
17
- }
18
- /**
19
- * Increments the quantity of impressions with the passed featureName and timeFrame.
20
- */
21
- ;
22
-
23
- _proto.inc = function inc(featureName, timeFrame, amount) {
24
- var key = this._makeKey(featureName, timeFrame);
25
-
26
- var currentAmount = this.cache[key];
27
- this.cache[key] = currentAmount ? currentAmount + amount : amount;
28
- }
29
- /**
30
- * Returns all the elements stored in the cache and resets the cache.
31
- */
32
- ;
33
-
34
- _proto.popAll = function popAll() {
35
- var res = {};
36
- objectAssign(res, this.cache);
37
- this.cache = {};
38
- return res;
39
- }
40
- /**
41
- * Returns how many keys are stored in cache.
42
- */
43
- ;
44
-
45
- _proto.size = function size() {
46
- return Object.keys(this.cache).length;
47
- };
48
-
49
- return ImpressionCounter;
50
- }();
51
-
52
- export default ImpressionCounter;
@@ -1,3 +0,0 @@
1
- export function buildKey(impression) {
2
- return impression.keyName + ":" + impression.feature + ":" + impression.treatment + ":" + impression.label + ":" + impression.changeNumber;
3
- }
@@ -1,5 +0,0 @@
1
- import { hash128 } from '../../engine/engine/murmur3/murmur3_128_x86';
2
- import { buildKey } from './buildKey';
3
- export function hashImpression128(impression) {
4
- return hash128(buildKey(impression));
5
- }
@@ -1,5 +0,0 @@
1
- import murmur from '../../engine/engine/murmur3/murmur3';
2
- import { buildKey } from './buildKey';
3
- export function hashImpression32(impression) {
4
- return murmur.hash(buildKey(impression));
5
- }
@@ -1,9 +0,0 @@
1
- import ImpressionObserver from './observer';
2
- import { hashImpression32 } from '../hasher/hashImpression32';
3
- var LAST_SEEN_CACHE_SIZE = 500; // cache up to 500 impression hashes
4
-
5
- var BrowserImpressionObserverFactory = function BrowserImpressionObserverFactory() {
6
- return new ImpressionObserver(LAST_SEEN_CACHE_SIZE, hashImpression32);
7
- };
8
-
9
- export default BrowserImpressionObserverFactory;
@@ -1,9 +0,0 @@
1
- import ImpressionObserver from './observer';
2
- import { hashImpression128 } from '../hasher/hashImpression128';
3
- var LAST_SEEN_CACHE_SIZE = 500000; // cache up to 500k impression hashes
4
-
5
- var NodeImpressionObserverFactory = function NodeImpressionObserverFactory() {
6
- return new ImpressionObserver(LAST_SEEN_CACHE_SIZE, hashImpression128);
7
- };
8
-
9
- export default NodeImpressionObserverFactory;
@@ -1,21 +0,0 @@
1
- import LRU from '../../utils/lrucache/lrucache';
2
-
3
- var ImpressionObserver = /*#__PURE__*/function () {
4
- function ImpressionObserver(size, hasher) {
5
- this.cache = new LRU(size);
6
- this.hasher = hasher;
7
- }
8
-
9
- var _proto = ImpressionObserver.prototype;
10
-
11
- _proto.testAndSet = function testAndSet(impression) {
12
- var hash = this.hasher(impression);
13
- var previous = this.cache.get(hash);
14
- this.cache.set(hash, impression.time);
15
- return previous;
16
- };
17
-
18
- return ImpressionObserver;
19
- }();
20
-
21
- export default ImpressionObserver;
@@ -1,62 +0,0 @@
1
- import GaToSplit from './ga/GaToSplit';
2
- import SplitToGa from './ga/SplitToGa';
3
- import { GOOGLE_ANALYTICS_TO_SPLIT, SPLIT_TO_GOOGLE_ANALYTICS, SPLIT_IMPRESSION, SPLIT_EVENT } from '../utils/constants';
4
- /**
5
- * Factory function for browser IntegrationsManager.
6
- * The integrations manager instantiates integration modules, and bypass tracked events and impressions to them.
7
- *
8
- * @param {Context} context SplitFactory context
9
- *
10
- * @returns integration manager or null if `integrations` are not present in settings.
11
- */
12
-
13
- var integrationsManagerFactory = function integrationsManagerFactory(context) {
14
- var settings = context.get(context.constants.SETTINGS);
15
- var listeners = []; // No need to check if `settings.integrations` is an array. It was already validated in settings validation
16
-
17
- settings.integrations.forEach(function (integrationOptions) {
18
- var type = integrationOptions.type;
19
- var integration;
20
-
21
- switch (type) {
22
- case GOOGLE_ANALYTICS_TO_SPLIT:
23
- {
24
- var storage = context.get(context.constants.STORAGE);
25
- var coreSettings = settings.core;
26
- integration = GaToSplit(integrationOptions, storage, coreSettings);
27
- break;
28
- }
29
-
30
- case SPLIT_TO_GOOGLE_ANALYTICS:
31
- {
32
- integration = new SplitToGa(integrationOptions);
33
- break;
34
- }
35
- }
36
-
37
- if (integration && integration.queue) listeners.push(integration);
38
- }); // If `listeners` is empty, not return a integration manager
39
-
40
- if (listeners.length === 0) return; // Exception safe methods: each integration module is responsable for handling errors
41
-
42
- return {
43
- handleImpression: function handleImpression(impressionData) {
44
- listeners.forEach(function (listener) {
45
- return listener.queue({
46
- type: SPLIT_IMPRESSION,
47
- payload: impressionData
48
- });
49
- });
50
- },
51
- handleEvent: function handleEvent(eventData) {
52
- listeners.forEach(function (listener) {
53
- return listener.queue({
54
- type: SPLIT_EVENT,
55
- payload: eventData
56
- });
57
- });
58
- }
59
- };
60
- };
61
-
62
- export default integrationsManagerFactory;
@@ -1,246 +0,0 @@
1
- import objectAssign from 'object-assign';
2
- import { isString, numberIsFinite, unicAsStrings } from '../../utils/lang';
3
- import logFactory from '../../utils/logger';
4
- import { validateEvent, validateEventValue, validateEventProperties, validateKey, validateTrafficType } from '../../utils/inputValidation';
5
- var logName = 'splitio-ga-to-split',
6
- logNameMapper = logName + ':mapper';
7
- var log = logFactory(logName);
8
- /**
9
- * Provides a plugin to use with analytics.js, accounting for the possibility
10
- * that the global command queue has been renamed or not yet defined.
11
- * @param {string} pluginName The plugin name identifier.
12
- * @param {Function} pluginConstructor The plugin constructor function.
13
- */
14
-
15
- function providePlugin(pluginName, pluginConstructor) {
16
- // get reference to global command queue. Init it if not defined yet.
17
- var gaAlias = window.GoogleAnalyticsObject || 'ga';
18
-
19
- window[gaAlias] = window[gaAlias] || function () {
20
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
21
- args[_key] = arguments[_key];
22
- }
23
-
24
- (window[gaAlias].q = window[gaAlias].q || []).push(args);
25
- }; // provides the plugin for use with analytics.js.
26
-
27
-
28
- window[gaAlias]('provide', pluginName, pluginConstructor);
29
- } // Default mapping: object used for building the default mapper from hits to Split events
30
-
31
-
32
- var defaultMapping = {
33
- eventTypeId: {
34
- event: 'eventAction',
35
- social: 'socialAction'
36
- },
37
- eventValue: {
38
- event: 'eventValue',
39
- timing: 'timingValue'
40
- },
41
- eventProperties: {
42
- pageview: ['page'],
43
- screenview: ['screenName'],
44
- event: ['eventCategory', 'eventLabel'],
45
- social: ['socialNetwork', 'socialTarget'],
46
- timing: ['timingCategory', 'timingVar', 'timingLabel'],
47
- exception: ['exDescription', 'exFatal']
48
- }
49
- };
50
- /**
51
- * Build a mapper function based on a mapping object
52
- *
53
- * @param {object} mapping
54
- */
55
-
56
- function mapperBuilder(mapping) {
57
- return function (model) {
58
- var hitType = model.get('hitType');
59
- var eventTypeId = model.get(mapping.eventTypeId[hitType] || 'hitType');
60
- var value = model.get(mapping.eventValue[hitType]);
61
- var properties = {};
62
- var fields = mapping.eventProperties[hitType];
63
-
64
- if (fields) {
65
- for (var i = 0; i < fields.length; i++) {
66
- properties[fields[i]] = model.get(fields[i]);
67
- }
68
- }
69
-
70
- return {
71
- eventTypeId: eventTypeId,
72
- value: value,
73
- properties: properties,
74
- timestamp: Date.now()
75
- };
76
- };
77
- } // exposed for unit testing purposses.
78
-
79
-
80
- export var defaultMapper = mapperBuilder(defaultMapping);
81
- export var defaultPrefix = 'ga';
82
- /**
83
- * Return a new list of identities removing invalid and duplicated ones.
84
- *
85
- * @param {Array} identities list of identities
86
- * @returns list of valid and unique identities. The list might be empty if `identities` is not an array or all its elements are invalid.
87
- */
88
-
89
- export function validateIdentities(identities) {
90
- if (!Array.isArray(identities)) return []; // Remove duplicated identities
91
-
92
- var uniqueIdentities = unicAsStrings(identities); // Filter based on rum-agent identities validator
93
-
94
- return uniqueIdentities.filter(function (identity) {
95
- if (!identity) return false;
96
- var maybeKey = identity.key;
97
- var maybeTT = identity.trafficType;
98
- if (!isString(maybeKey) && !numberIsFinite(maybeKey)) return false;
99
- if (!isString(maybeTT)) return false;
100
- return true;
101
- });
102
- }
103
- /**
104
- * Checks if EventData fields (except EventTypeId) are valid, and logs corresponding warnings.
105
- * EventTypeId is validated separately.
106
- *
107
- * @param {EventData} data event data instance to validate. Precondition: data != undefined
108
- * @returns {boolean} Whether the data instance is a valid EventData or not.
109
- */
110
-
111
- export function validateEventData(eventData) {
112
- if (!validateEvent(eventData.eventTypeId, logNameMapper)) return false;
113
- if (validateEventValue(eventData.value, logNameMapper) === false) return false;
114
-
115
- var _validateEventPropert = validateEventProperties(eventData.properties, logNameMapper),
116
- properties = _validateEventPropert.properties;
117
-
118
- if (properties === false) return false;
119
- if (eventData.timestamp && !numberIsFinite(eventData.timestamp)) return false;
120
- if (eventData.key && validateKey(eventData.key, logNameMapper) === false) return false;
121
- if (eventData.trafficTypeName && validateTrafficType(eventData.trafficTypeName, logNameMapper) === false) return false;
122
- return true;
123
- }
124
- var INVALID_PREFIX_REGEX = /^[^a-zA-Z0-9]+/;
125
- var INVALID_SUBSTRING_REGEX = /[^-_.:a-zA-Z0-9]+/g;
126
- /**
127
- * Fixes the passed string value to comply with EventTypeId format, by removing invalid characters and truncating if necessary.
128
- *
129
- * @param {string} eventTypeId string value to fix.
130
- * @returns {string} Fixed version of `eventTypeId`.
131
- */
132
-
133
- export function fixEventTypeId(eventTypeId) {
134
- // return the input eventTypeId if it cannot be fixed
135
- if (!isString(eventTypeId) || eventTypeId.length === 0) {
136
- return eventTypeId;
137
- } // replace invalid substrings and truncate
138
-
139
-
140
- var fixed = eventTypeId.replace(INVALID_PREFIX_REGEX, '').replace(INVALID_SUBSTRING_REGEX, '_');
141
- var truncated = fixed.slice(0, 80);
142
- if (truncated.length < fixed.length) log.warn('EventTypeId was truncated because it cannot be more than 80 characters long.');
143
- return truncated;
144
- }
145
- /**
146
- * GaToSplit integration.
147
- * This function provides the SplitTracker plugin to ga command queue.
148
- *
149
- * @param {object} sdkOptions options passed at the SDK integrations settings
150
- * @param {object} storage SDK storage passed to track events
151
- * @param {object} coreSettings core settings used to define an identity if no one provided as SDK or plugin options
152
- */
153
-
154
- function GaToSplit(sdkOptions, storage, coreSettings) {
155
- var defaultOptions = {
156
- prefix: defaultPrefix,
157
- // We set default identities if key and TT are present in settings.core
158
- identities: coreSettings.key && coreSettings.trafficType ? [{
159
- key: coreSettings.key,
160
- trafficType: coreSettings.trafficType
161
- }] : undefined
162
- };
163
-
164
- var SplitTracker = // Constructor for the SplitTracker plugin.
165
- function SplitTracker(tracker, pluginOptions) {
166
- // precedence of options: SDK options (config.integrations) overwrite pluginOptions (`ga('require', 'splitTracker', pluginOptions)`)
167
- var opts = objectAssign({}, defaultOptions, sdkOptions, pluginOptions);
168
- this.tracker = tracker; // Validate identities
169
-
170
- var validIdentities = validateIdentities(opts.identities);
171
-
172
- if (validIdentities.length === 0) {
173
- log.warn('No valid identities were provided. Please check that you are passing a valid list of identities or providing a traffic type at the SDK configuration.');
174
- return;
175
- }
176
-
177
- var invalids = validIdentities.length - opts.identities.length;
178
-
179
- if (invalids) {
180
- log.warn(invalids + " identities were discarded because they are invalid or duplicated. Identities must be an array of objects with key and trafficType.");
181
- }
182
-
183
- opts.identities = validIdentities; // Validate prefix
184
-
185
- if (!isString(opts.prefix)) {
186
- log.warn('The provided `prefix` was ignored since it is invalid. Please check that you are passing a string object as `prefix`.');
187
- opts.prefix = undefined;
188
- } // Overwrite sendHitTask to perform plugin tasks:
189
- // 1) filter hits
190
- // 2) map hits to Split events
191
- // 3) handle events, i.e., validate and send them to Split BE
192
-
193
-
194
- var originalSendHitTask = tracker.get('sendHitTask');
195
- tracker.set('sendHitTask', function (model) {
196
- originalSendHitTask(model); // filter hit if `hits` flag is false or if it comes from Split-to-GA integration
197
-
198
- if (opts.hits === false || model.get('splitHit')) return;
199
-
200
- try {
201
- if (opts.filter && !opts.filter(model)) return;
202
- } catch (err) {
203
- log.warn("GaToSplit custom filter threw: " + err);
204
- return;
205
- } // map hit into an EventData instance
206
-
207
-
208
- var eventData = defaultMapper(model);
209
-
210
- if (opts.mapper) {
211
- try {
212
- eventData = opts.mapper(model, eventData);
213
- } catch (err) {
214
- log.warn("GaToSplit custom mapper threw: " + err);
215
- return;
216
- }
217
-
218
- if (!eventData) return;
219
- } // Add prefix. Nothing is appended if the prefix is falsy, e.g. undefined or ''.
220
-
221
-
222
- if (opts.prefix) eventData.eventTypeId = opts.prefix + "." + eventData.eventTypeId;
223
- eventData.eventTypeId = fixEventTypeId(eventData.eventTypeId);
224
- if (!validateEventData(eventData)) return; // Store the event
225
-
226
- if (eventData.key && eventData.trafficTypeName) {
227
- storage.events.track(eventData);
228
- } else {
229
- // Store the event for each Key-TT pair (identities), if key and TT is not present in eventData
230
- opts.identities.forEach(function (identity) {
231
- var event = objectAssign({
232
- key: identity.key,
233
- trafficTypeName: identity.trafficType
234
- }, eventData);
235
- storage.events.track(event);
236
- });
237
- }
238
- });
239
- log.info('Started GA-to-Split integration');
240
- }; // Register the plugin, even if config is invalid, since, if not provided, it will block `ga` command queue.
241
-
242
-
243
- providePlugin('splitTracker', SplitTracker);
244
- }
245
-
246
- export default GaToSplit;