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