@splitsoftware/splitio 10.17.2-rc.0 → 10.17.3-rc.2

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/CHANGES.txt +1 -1
  2. package/client/package.json +5 -0
  3. package/es/factory/browser.js +58 -0
  4. package/es/factory/node.js +59 -0
  5. package/es/{client → factory}/package.json +0 -0
  6. package/es/index.js +1 -132
  7. package/es/platform/EventEmitter.js +412 -0
  8. package/es/platform/browser.js +10 -0
  9. package/es/{services → platform}/getEventSource/browser.js +1 -1
  10. package/es/{services → platform}/getEventSource/node.js +1 -1
  11. package/es/{impressions/observer → platform/getEventSource}/package.json +0 -0
  12. package/es/{services → platform}/getFetch/browser.js +1 -1
  13. package/es/{services → platform}/getFetch/node.js +1 -1
  14. package/es/{integrations → platform/getFetch}/package.json +0 -0
  15. package/es/platform/node.js +12 -0
  16. package/es/{listeners → platform}/package.json +0 -0
  17. package/es/{services → platform}/request/options/node.js +2 -2
  18. package/es/settings/browser.js +18 -0
  19. package/{lib/utils → es}/settings/defaults/browser.js +6 -8
  20. package/{src/utils → es}/settings/defaults/node.js +6 -3
  21. package/es/settings/defaults/version.js +1 -0
  22. package/es/settings/integrations/browser.js +5 -0
  23. package/es/settings/integrations/node.js +5 -0
  24. package/es/settings/node.js +20 -0
  25. package/es/{producer/offline → settings}/package.json +0 -0
  26. package/es/{utils/settings → settings}/runtime/node.js +6 -4
  27. package/es/{utils/settings → settings}/storage/browser.js +16 -17
  28. package/es/{utils/settings → settings}/storage/node.js +25 -16
  29. package/es/umd.js +2 -1
  30. package/lib/factory/browser.js +79 -0
  31. package/lib/factory/node.js +78 -0
  32. package/{es/producer → lib/factory}/package.json +0 -0
  33. package/lib/index.js +3 -151
  34. package/lib/platform/EventEmitter.js +417 -0
  35. package/lib/platform/browser.js +21 -0
  36. package/lib/{services → platform}/getEventSource/browser.js +1 -1
  37. package/lib/{services → platform}/getEventSource/node.js +1 -1
  38. package/{es/services → lib/platform}/getEventSource/package.json +0 -0
  39. package/lib/{services → platform}/getFetch/browser.js +1 -1
  40. package/lib/{services → platform}/getFetch/node.js +1 -1
  41. package/{es/services → lib/platform}/getFetch/package.json +0 -0
  42. package/lib/platform/node.js +26 -0
  43. package/{es/services/request/options → lib/platform}/package.json +0 -0
  44. package/lib/{services → platform}/request/options/node.js +2 -2
  45. package/lib/settings/browser.js +30 -0
  46. package/{src/utils → lib}/settings/defaults/browser.js +13 -3
  47. package/{es/utils → lib}/settings/defaults/node.js +13 -3
  48. package/lib/settings/defaults/version.js +6 -0
  49. package/lib/settings/integrations/browser.js +14 -0
  50. package/lib/settings/integrations/node.js +12 -0
  51. package/lib/settings/node.js +33 -0
  52. package/{es/services/splitChanges/offline → lib/settings}/package.json +0 -0
  53. package/lib/{utils/settings → settings}/runtime/node.js +7 -5
  54. package/lib/{utils/settings → settings}/storage/browser.js +20 -24
  55. package/lib/{utils/settings → settings}/storage/node.js +26 -17
  56. package/lib/umd.js +1 -0
  57. package/package.json +20 -16
  58. package/server/package.json +5 -0
  59. package/src/.DS_Store +0 -0
  60. package/src/factory/browser.js +74 -0
  61. package/src/factory/node.js +71 -0
  62. package/{es/storage/SegmentCache/InMemory → src/factory}/package.json +0 -0
  63. package/src/index.js +1 -140
  64. package/src/{sync/SSEHandler → platform}/.DS_Store +0 -0
  65. package/src/platform/EventEmitter.js +443 -0
  66. package/src/platform/browser.js +12 -0
  67. package/src/{services → platform}/getEventSource/browser.js +2 -2
  68. package/src/{services → platform}/getEventSource/node.js +2 -2
  69. package/{es/storage → src/platform/getEventSource}/package.json +0 -0
  70. package/src/{services → platform}/getFetch/browser.js +2 -2
  71. package/src/{services → platform}/getFetch/node.js +1 -1
  72. package/{es/sync/PushManager/pushRequirements → src/platform/getFetch}/package.json +0 -0
  73. package/src/platform/node.js +14 -0
  74. package/{es/sync/SegmentUpdateWorker → src/platform}/package.json +0 -0
  75. package/src/{services → platform}/request/options/node.js +2 -2
  76. package/src/{listeners → settings}/.DS_Store +0 -0
  77. package/src/settings/browser.js +18 -0
  78. package/{es/utils → src}/settings/defaults/browser.js +8 -3
  79. package/{lib/utils → src}/settings/defaults/node.js +6 -6
  80. package/src/settings/defaults/version.js +1 -0
  81. package/src/settings/integrations/browser.js +6 -0
  82. package/src/{utils/settings → settings}/integrations/node.js +1 -3
  83. package/src/settings/node.js +20 -0
  84. package/{es/sync → src/settings}/package.json +0 -0
  85. package/src/{utils/settings → settings}/runtime/node.js +9 -6
  86. package/src/{utils/settings → settings}/storage/browser.js +13 -18
  87. package/src/{utils/settings → settings}/storage/node.js +19 -14
  88. package/src/umd.js +1 -0
  89. package/types/client/index.d.ts +14 -0
  90. package/types/server/index.d.ts +20 -0
  91. package/types/splitio.d.ts +22 -5
  92. package/es/client/attributesDecoration.js +0 -116
  93. package/es/client/browser.js +0 -39
  94. package/es/client/client.js +0 -155
  95. package/es/client/inputValidation.js +0 -117
  96. package/es/client/node.js +0 -6
  97. package/es/engine/combiners/and.js +0 -54
  98. package/es/engine/combiners/ifelseif.js +0 -73
  99. package/es/engine/condition/index.js +0 -62
  100. package/es/engine/convertions/index.js +0 -29
  101. package/es/engine/engine/index.js +0 -60
  102. package/es/engine/engine/legacy.js +0 -77
  103. package/es/engine/engine/murmur3/common.js +0 -40
  104. package/es/engine/engine/murmur3/murmur3.js +0 -83
  105. package/es/engine/engine/murmur3/murmur3_128.js +0 -250
  106. package/es/engine/engine/murmur3/murmur3_128_x86.js +0 -183
  107. package/es/engine/engine/murmur3/murmur3_64.js +0 -52
  108. package/es/engine/engine/murmur3/utfx.js +0 -112
  109. package/es/engine/evaluator/index.js +0 -111
  110. package/es/engine/index.js +0 -112
  111. package/es/engine/matchers/all.js +0 -32
  112. package/es/engine/matchers/between.js +0 -35
  113. package/es/engine/matchers/boolean.js +0 -35
  114. package/es/engine/matchers/cont_all.js +0 -51
  115. package/es/engine/matchers/cont_any.js +0 -47
  116. package/es/engine/matchers/cont_str.js +0 -38
  117. package/es/engine/matchers/dependency.js +0 -50
  118. package/es/engine/matchers/eq.js +0 -35
  119. package/es/engine/matchers/eq_set.js +0 -49
  120. package/es/engine/matchers/ew.js +0 -38
  121. package/es/engine/matchers/gte.js +0 -35
  122. package/es/engine/matchers/index.js +0 -65
  123. package/es/engine/matchers/lte.js +0 -35
  124. package/es/engine/matchers/part_of.js +0 -49
  125. package/es/engine/matchers/segment.js +0 -39
  126. package/es/engine/matchers/string.js +0 -44
  127. package/es/engine/matchers/sw.js +0 -38
  128. package/es/engine/matchers/types.js +0 -48
  129. package/es/engine/matchers/whitelist.js +0 -36
  130. package/es/engine/parser/index.js +0 -69
  131. package/es/engine/parser/segments.js +0 -22
  132. package/es/engine/transforms/matcherGroup.js +0 -43
  133. package/es/engine/transforms/matchers.js +0 -109
  134. package/es/engine/transforms/segment.js +0 -28
  135. package/es/engine/transforms/set.js +0 -20
  136. package/es/engine/transforms/unaryNumeric.js +0 -20
  137. package/es/engine/transforms/whitelist.js +0 -22
  138. package/es/engine/treatments/index.js +0 -67
  139. package/es/engine/value/index.js +0 -54
  140. package/es/engine/value/sanitize.js +0 -125
  141. package/es/events/index.js +0 -65
  142. package/es/factory/offline.js +0 -50
  143. package/es/factory/online.js +0 -113
  144. package/es/impressions/counter.js +0 -52
  145. package/es/impressions/hasher/buildKey.js +0 -3
  146. package/es/impressions/hasher/hashImpression128.js +0 -5
  147. package/es/impressions/hasher/hashImpression32.js +0 -5
  148. package/es/impressions/observer/browser.js +0 -9
  149. package/es/impressions/observer/node.js +0 -9
  150. package/es/impressions/observer/observer.js +0 -21
  151. package/es/integrations/browser.js +0 -62
  152. package/es/integrations/ga/GaToSplit.js +0 -246
  153. package/es/integrations/ga/SplitToGa.js +0 -127
  154. package/es/integrations/node.js +0 -3
  155. package/es/listeners/browser.js +0 -157
  156. package/es/listeners/node.js +0 -65
  157. package/es/manager/index.js +0 -104
  158. package/es/metrics/Collectors.js +0 -100
  159. package/es/metrics/index.js +0 -157
  160. package/es/producer/browser/Partial.js +0 -103
  161. package/es/producer/browser.js +0 -70
  162. package/es/producer/fetcher/MySegments.js +0 -47
  163. package/es/producer/fetcher/SegmentChanges.js +0 -52
  164. package/es/producer/fetcher/SplitChanges.js +0 -46
  165. package/es/producer/node.js +0 -130
  166. package/es/producer/offline/browser.js +0 -26
  167. package/es/producer/offline/node.js +0 -26
  168. package/es/producer/task.js +0 -50
  169. package/es/producer/updater/MySegments.js +0 -108
  170. package/es/producer/updater/SegmentChanges.js +0 -135
  171. package/es/producer/updater/SplitChanges.js +0 -131
  172. package/es/producer/updater/SplitChangesFromFeatures.js +0 -21
  173. package/es/producer/updater/SplitChangesFromFileSystem.js +0 -21
  174. package/es/producer/updater/SplitChangesFromObject.js +0 -73
  175. package/es/readiness/index.js +0 -123
  176. package/es/readiness/statusManager.js +0 -114
  177. package/es/services/auth/auth.js +0 -25
  178. package/es/services/auth/index.js +0 -2
  179. package/es/services/events/bulk.js +0 -22
  180. package/es/services/events/index.js +0 -17
  181. package/es/services/impressions/bulk.js +0 -26
  182. package/es/services/impressions/count.js +0 -7
  183. package/es/services/impressions/dto.js +0 -73
  184. package/es/services/impressions/index.js +0 -17
  185. package/es/services/impressions/post.js +0 -22
  186. package/es/services/metrics/counters.js +0 -24
  187. package/es/services/metrics/dto.js +0 -38
  188. package/es/services/metrics/index.js +0 -17
  189. package/es/services/metrics/times.js +0 -24
  190. package/es/services/mySegments/get.js +0 -26
  191. package/es/services/mySegments/index.js +0 -17
  192. package/es/services/request/index.js +0 -43
  193. package/es/services/request/options/browser.js +0 -18
  194. package/es/services/segmentChanges/get.js +0 -21
  195. package/es/services/segmentChanges/index.js +0 -17
  196. package/es/services/splitChanges/get.js +0 -19
  197. package/es/services/splitChanges/index.js +0 -17
  198. package/es/services/splitChanges/offline/browser.js +0 -63
  199. package/es/services/splitChanges/offline/node.js +0 -176
  200. package/es/services/splitChanges/offline/parseCondition.js +0 -43
  201. package/es/services/transport/index.js +0 -51
  202. package/es/storage/AttributesCache/InMemory.js +0 -85
  203. package/es/storage/BaseMetricsAsyncCache.js +0 -23
  204. package/es/storage/CountCache/InMemory.js +0 -48
  205. package/es/storage/CountCache/InRedis.js +0 -42
  206. package/es/storage/EventsCache/InMemory.js +0 -109
  207. package/es/storage/EventsCache/InRedis.js +0 -65
  208. package/es/storage/ImpressionsCache/InMemory.js +0 -71
  209. package/es/storage/ImpressionsCache/InRedis.js +0 -73
  210. package/es/storage/Keys.js +0 -125
  211. package/es/storage/KeysLocalStorage.js +0 -47
  212. package/es/storage/LatencyCache/InMemory.js +0 -56
  213. package/es/storage/LatencyCache/InRedis.js +0 -44
  214. package/es/storage/LatencyCache/findIndex.js +0 -2
  215. package/es/storage/Meta.js +0 -7
  216. package/es/storage/RedisAdapter.js +0 -198
  217. package/es/storage/SegmentCache/InLocalStorage/index.js +0 -138
  218. package/es/storage/SegmentCache/InMemory/browser.js +0 -107
  219. package/es/storage/SegmentCache/InMemory/node.js +0 -82
  220. package/es/storage/SegmentCache/InRedis/index.js +0 -81
  221. package/es/storage/SplitCache/InLocalStorage.js +0 -332
  222. package/es/storage/SplitCache/InMemory.js +0 -162
  223. package/es/storage/SplitCache/InRedis.js +0 -214
  224. package/es/storage/SplitCache/killLocally.js +0 -35
  225. package/es/storage/browser.js +0 -101
  226. package/es/storage/node.js +0 -81
  227. package/es/sync/AuthClient/index.js +0 -34
  228. package/es/sync/PushManager/index.js +0 -315
  229. package/es/sync/PushManager/mySegmentsV2utils.js +0 -76
  230. package/es/sync/PushManager/pushRequirements/browser.js +0 -23
  231. package/es/sync/PushManager/pushRequirements/node.js +0 -18
  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/SplitUpdateWorker/index.js +0 -86
  239. package/es/sync/browser.js +0 -125
  240. package/es/sync/constants.js +0 -42
  241. package/es/sync/node.js +0 -60
  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
package/CHANGES.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  10.17.2 (January 31, 2022)
2
2
  - Updated some dependencies for vulnerability fixes.
3
- - Bugfixing - Fixed internal handling of Fetch API call rejections, to avoid unhandled exceptions on some Web browsers (issue https://github.com/splitio/javascript-client/issues/621)
3
+ - Bugfixing - Fixed internal handling of Fetch API promise rejection, to avoid unhandled exceptions on some Web browsers (issue https://github.com/splitio/javascript-client/issues/621)
4
4
 
5
5
  10.17.1 (January 13, 2022)
6
6
  - Updated some transitive dependencies for vulnerability fixes.
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../lib/factory/browser.js",
3
+ "module": "../es/factory/browser.js",
4
+ "types": "../types/client/index.d.ts"
5
+ }
@@ -0,0 +1,58 @@
1
+ import { splitApiFactory } from '@splitsoftware/splitio-commons/esm/services/splitApi';
2
+ import { syncManagerOnlineFactory } from '@splitsoftware/splitio-commons/esm/sync/syncManagerOnline';
3
+ import { pushManagerFactory } from '@splitsoftware/splitio-commons/esm/sync/streaming/pushManager';
4
+ import { pollingManagerCSFactory } from '@splitsoftware/splitio-commons/esm/sync/polling/pollingManagerCS';
5
+ import { InLocalStorage } from '@splitsoftware/splitio-commons/esm/storages/inLocalStorage';
6
+ import { InMemoryStorageCSFactory } from '@splitsoftware/splitio-commons/esm/storages/inMemory/InMemoryStorageCS';
7
+ import { sdkManagerFactory } from '@splitsoftware/splitio-commons/esm/sdkManager';
8
+ import { sdkClientMethodCSFactory } from '@splitsoftware/splitio-commons/esm/sdkClient/sdkClientMethodCSWithTT';
9
+ import { impressionObserverCSFactory } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/impressionObserverCS';
10
+ import { integrationsManagerFactory } from '@splitsoftware/splitio-commons/esm/integrations/browser';
11
+ import { __InLocalStorageMockFactory } from '@splitsoftware/splitio-commons/esm/utils/settingsValidation/storage/storageCS';
12
+ import { sdkFactory } from '@splitsoftware/splitio-commons/esm/sdkFactory';
13
+ import { LOCALHOST_MODE, STORAGE_LOCALSTORAGE } from '@splitsoftware/splitio-commons/esm/utils/constants';
14
+ import { shouldAddPt } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/utils';
15
+ import { settingsFactory } from '../settings/browser';
16
+ import { platform, SignalListener } from '../platform';
17
+ var syncManagerOnlineCSFactory = syncManagerOnlineFactory(pollingManagerCSFactory, pushManagerFactory);
18
+
19
+ function getStorage(settings) {
20
+ return settings.storage.type === STORAGE_LOCALSTORAGE ? InLocalStorage(settings.storage) : settings.storage.__originalType === STORAGE_LOCALSTORAGE ? __InLocalStorageMockFactory : InMemoryStorageCSFactory;
21
+ }
22
+ /**
23
+ *
24
+ * @param {import("@splitsoftware/splitio-commons/types/types").ISettings} settings
25
+ */
26
+
27
+
28
+ function getModules(settings) {
29
+ var modules = {
30
+ settings: settings,
31
+ platform: platform,
32
+ storageFactory: getStorage(settings),
33
+ splitApiFactory: splitApiFactory,
34
+ syncManagerFactory: syncManagerOnlineCSFactory,
35
+ sdkManagerFactory: sdkManagerFactory,
36
+ sdkClientMethodFactory: sdkClientMethodCSFactory,
37
+ SignalListener: SignalListener,
38
+ impressionListener: settings.impressionListener,
39
+ integrationsManagerFactory: settings.integrations && settings.integrations.length > 0 ? integrationsManagerFactory.bind(null, settings.integrations) : undefined,
40
+ impressionsObserverFactory: shouldAddPt(settings) ? impressionObserverCSFactory : undefined
41
+ };
42
+
43
+ switch (settings.mode) {
44
+ case LOCALHOST_MODE:
45
+ modules.splitApiFactory = undefined;
46
+ modules.syncManagerFactory = settings.sync.localhostMode;
47
+ modules.SignalListener = undefined;
48
+ break;
49
+ }
50
+
51
+ return modules;
52
+ }
53
+
54
+ export function SplitFactory(config) {
55
+ var settings = settingsFactory(config);
56
+ var modules = getModules(settings);
57
+ return sdkFactory(modules);
58
+ }
@@ -0,0 +1,59 @@
1
+ import { splitApiFactory } from '@splitsoftware/splitio-commons/esm/services/splitApi';
2
+ import { syncManagerOnlineFactory } from '@splitsoftware/splitio-commons/esm/sync/syncManagerOnline';
3
+ import { pushManagerFactory } from '@splitsoftware/splitio-commons/esm/sync/streaming/pushManager';
4
+ import { pollingManagerSSFactory } from '@splitsoftware/splitio-commons/esm/sync/polling/pollingManagerSS';
5
+ import { InRedisStorage } from '@splitsoftware/splitio-commons/esm/storages/inRedis';
6
+ import { InMemoryStorageFactory } from '@splitsoftware/splitio-commons/esm/storages/inMemory/InMemoryStorage';
7
+ import { sdkManagerFactory } from '@splitsoftware/splitio-commons/esm/sdkManager';
8
+ import { sdkClientMethodFactory } from '@splitsoftware/splitio-commons/esm/sdkClient/sdkClientMethod';
9
+ import { impressionObserverSSFactory } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/impressionObserverSS';
10
+ import { sdkFactory } from '@splitsoftware/splitio-commons/esm/sdkFactory';
11
+ import { CONSUMER_MODE, LOCALHOST_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
12
+ import { shouldAddPt } from '@splitsoftware/splitio-commons/esm/trackers/impressionObserver/utils';
13
+ import { settingsFactory } from '../settings/node';
14
+ import { platform, SignalListener } from '../platform';
15
+ var syncManagerOnlineSSFactory = syncManagerOnlineFactory(pollingManagerSSFactory, pushManagerFactory);
16
+
17
+ function getStorage(settings) {
18
+ return settings.storage.type === 'REDIS' ? InRedisStorage(settings.storage) : InMemoryStorageFactory;
19
+ }
20
+ /**
21
+ *
22
+ * @param {import("@splitsoftware/splitio-commons/types/types").ISettings} settings
23
+ */
24
+
25
+
26
+ function getModules(settings) {
27
+ var modules = {
28
+ settings: settings,
29
+ platform: platform,
30
+ storageFactory: getStorage(settings),
31
+ splitApiFactory: splitApiFactory,
32
+ syncManagerFactory: syncManagerOnlineSSFactory,
33
+ sdkManagerFactory: sdkManagerFactory,
34
+ sdkClientMethodFactory: sdkClientMethodFactory,
35
+ SignalListener: SignalListener,
36
+ impressionListener: settings.impressionListener,
37
+ impressionsObserverFactory: shouldAddPt(settings) ? impressionObserverSSFactory : undefined
38
+ };
39
+
40
+ switch (settings.mode) {
41
+ case LOCALHOST_MODE:
42
+ modules.splitApiFactory = undefined;
43
+ modules.syncManagerFactory = settings.sync.localhostMode;
44
+ modules.SignalListener = undefined;
45
+ break;
46
+
47
+ case CONSUMER_MODE:
48
+ modules.syncManagerFactory = undefined;
49
+ break;
50
+ }
51
+
52
+ return modules;
53
+ }
54
+
55
+ export function SplitFactory(config) {
56
+ var settings = settingsFactory(config);
57
+ var modules = getModules(settings);
58
+ return sdkFactory(modules);
59
+ }
File without changes
package/es/index.js CHANGED
@@ -1,132 +1 @@
1
- import ManagerFactory from './manager';
2
- import StorageFactory from './storage';
3
- import ReadinessGateFacade from './readiness';
4
- import SettingsFactory from './utils/settings';
5
- import Context from './utils/context';
6
- import keyParser from './utils/key/parser';
7
- import logFactory, { API } from './utils/logger';
8
- var log = logFactory('splitio');
9
- import tracker from './utils/timeTracker';
10
- import SplitFactoryOnline from './factory/online';
11
- import SplitFactoryOffline from './factory/offline';
12
- import sdkStatusManager from './readiness/statusManager';
13
- import { LOCALHOST_MODE } from './utils/constants';
14
- import { validateApiKey, validateKey, validateTrafficType } from './utils/inputValidation';
15
- import IntegrationsManagerFactory from './integrations';
16
- import ImpressionCounter from './impressions/counter';
17
-
18
- var buildInstanceId = function buildInstanceId(key, trafficType) {
19
- return (key.matchingKey ? key.matchingKey : key) + "-" + (key.bucketingKey ? key.bucketingKey : key) + "-" + (trafficType !== undefined ? trafficType : '');
20
- };
21
-
22
- export function SplitFactory(config) {
23
- // Cache instances created per factory.
24
- var clientInstances = {}; // Tracking times. We need to do it here because we need the storage created.
25
-
26
- var readyLatencyTrackers = {
27
- splitsReadyTracker: tracker.start(tracker.TaskNames.SPLITS_READY),
28
- segmentsReadyTracker: tracker.start(tracker.TaskNames.SEGMENTS_READY),
29
- sdkReadyTracker: tracker.start(tracker.TaskNames.SDK_READY)
30
- };
31
- var context = new Context(); // Put settings config within context
32
-
33
- var settings = SettingsFactory(config);
34
- context.put(context.constants.SETTINGS, settings); // We will just log and allow for the SDK to end up throwing an SDK_TIMEOUT event for devs to handle.
35
-
36
- validateApiKey(settings.core.authorizationKey); // Put readiness and statusManager within context
37
- // Done before adding storage, to let it access readiness gate synchronously
38
-
39
- var gateFactory = ReadinessGateFacade();
40
- var readiness = gateFactory(settings.startup.readyTimeout);
41
- context.put(context.constants.READINESS, readiness);
42
- var statusManager = sdkStatusManager(context);
43
- context.put(context.constants.STATUS_MANAGER, statusManager); // Put storage config within context
44
-
45
- var storage = StorageFactory(context);
46
- context.put(context.constants.STORAGE, storage); // Put counter
47
-
48
- var impressionsCounter = new ImpressionCounter(); // Instantiates new counter for Impressions
49
-
50
- context.put(context.constants.IMPRESSIONS_COUNTER, impressionsCounter); // Put integrationsManager within context.
51
- // It needs to access the storage, settings and potentially other pieces, so it's registered after them.
52
-
53
- var integrationsManager = IntegrationsManagerFactory(context);
54
- context.put(context.constants.INTEGRATIONS_MANAGER, integrationsManager); // Define which type of factory to use
55
-
56
- var splitFactory = settings.mode === LOCALHOST_MODE ? SplitFactoryOffline : SplitFactoryOnline;
57
-
58
- var _splitFactory = splitFactory(context, readyLatencyTrackers),
59
- mainClientInstance = _splitFactory.api,
60
- mainClientMetricCollectors = _splitFactory.metricCollectors; // It makes no sense to have multiple instances of the manager.
61
-
62
-
63
- var managerInstance = ManagerFactory(storage.splits, context);
64
- var parsedDefaultKey = keyParser(settings.core.key);
65
- var defaultInstanceId = buildInstanceId(parsedDefaultKey, settings.core.trafficType);
66
- clientInstances[defaultInstanceId] = mainClientInstance;
67
- log.info('New Split SDK instance created.');
68
- return {
69
- // Split evaluation and event tracking engine
70
- client: function client(key, trafficType) {
71
- if (key === undefined) {
72
- log.debug('Retrieving default SDK client.');
73
- return mainClientInstance;
74
- }
75
-
76
- if (typeof storage.shared != 'function') {
77
- throw new Error('Shared Client not supported by the storage mechanism. Create isolated instances instead.');
78
- } // Validate the key value
79
-
80
-
81
- var validKey = validateKey(key, 'Shared Client instantiation');
82
-
83
- if (validKey === false) {
84
- throw new Error('Shared Client needs a valid key.');
85
- }
86
-
87
- var validTrafficType;
88
-
89
- if (trafficType !== undefined) {
90
- validTrafficType = validateTrafficType(trafficType, 'Shared Client instantiation');
91
-
92
- if (validTrafficType === false) {
93
- throw new Error('Shared Client needs a valid traffic type or no traffic type at all.');
94
- }
95
- }
96
-
97
- var instanceId = buildInstanceId(validKey, validTrafficType);
98
-
99
- if (!clientInstances[instanceId]) {
100
- var sharedSettings = settings.overrideKeyAndTT(validKey, validTrafficType);
101
- var sharedContext = new Context();
102
-
103
- var _readiness = gateFactory(sharedSettings.startup.readyTimeout);
104
-
105
- sharedContext.put(context.constants.READY_FROM_CACHE, context.get(context.constants.READY_FROM_CACHE, true));
106
- sharedContext.put(context.constants.READINESS, _readiness); // for shared clients, the internal offset of added/removed SDK_READY callbacks is -1
107
-
108
- sharedContext.put(context.constants.STATUS_MANAGER, sdkStatusManager(sharedContext, -1));
109
- sharedContext.put(context.constants.SETTINGS, sharedSettings);
110
- sharedContext.put(context.constants.STORAGE, storage.shared(sharedSettings));
111
- sharedContext.put(context.constants.IMPRESSIONS_COUNTER, impressionsCounter); // As shared clients reuse all the storage information, we don't need to check here if we
112
- // will use offline or online mode. We should stick with the original decision.
113
-
114
- clientInstances[instanceId] = splitFactory(sharedContext, false, mainClientMetricCollectors).api;
115
- log.info('New shared client instance created.');
116
- } else {
117
- log.debug('Retrieving existing SDK client.');
118
- }
119
-
120
- return clientInstances[instanceId];
121
- },
122
- // Manager API to explore available information
123
- manager: function manager() {
124
- log.info('Manager instance retrieved.');
125
- return managerInstance;
126
- },
127
- // Logger wrapper API
128
- Logger: API,
129
- // Expose SDK settings
130
- settings: settings
131
- };
132
- }
1
+ export { SplitFactory } from './factory';
@@ -0,0 +1,412 @@
1
+ // Copyright Joyent, Inc. and other Node contributors.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a
4
+ // copy of this software and associated documentation files (the
5
+ // "Software"), to deal in the Software without restriction, including
6
+ // without limitation the rights to use, copy, modify, merge, publish,
7
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
8
+ // persons to whom the Software is furnished to do so, subject to the
9
+ // following conditions:
10
+ //
11
+ // The above copyright notice and this permission notice shall be included
12
+ // in all copies or substantial portions of the Software.
13
+ //
14
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ // Adaptation of "events" library (https://www.npmjs.com/package/events)
22
+ // exported as an ES module instead of CommonJS, to avoid extra configuration steps when using
23
+ // the ESM build of the SDK with tools that doesn't support CommonJS by default (e.g. Rollup).
24
+ var R = typeof Reflect === 'object' ? Reflect : null;
25
+ var ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {
26
+ return Function.prototype.apply.call(target, receiver, args);
27
+ };
28
+ var ReflectOwnKeys;
29
+
30
+ if (R && typeof R.ownKeys === 'function') {
31
+ ReflectOwnKeys = R.ownKeys;
32
+ } else if (Object.getOwnPropertySymbols) {
33
+ ReflectOwnKeys = function ReflectOwnKeys(target) {
34
+ return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
35
+ };
36
+ } else {
37
+ ReflectOwnKeys = function ReflectOwnKeys(target) {
38
+ return Object.getOwnPropertyNames(target);
39
+ };
40
+ }
41
+
42
+ function ProcessEmitWarning(warning) {
43
+ if (console && console.warn) console.warn(warning);
44
+ }
45
+
46
+ var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
47
+ return value !== value;
48
+ };
49
+
50
+ export function EventEmitter() {
51
+ EventEmitter.init.call(this);
52
+ }
53
+ EventEmitter.prototype._events = undefined;
54
+ EventEmitter.prototype._eventsCount = 0;
55
+ EventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are
56
+ // added to it. This is a useful default which helps finding memory leaks.
57
+
58
+ var defaultMaxListeners = 10;
59
+
60
+ function checkListener(listener) {
61
+ if (typeof listener !== 'function') {
62
+ throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
63
+ }
64
+ }
65
+
66
+ Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return defaultMaxListeners;
70
+ },
71
+ set: function set(arg) {
72
+ if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
73
+ throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
74
+ }
75
+
76
+ defaultMaxListeners = arg;
77
+ }
78
+ });
79
+
80
+ EventEmitter.init = function () {
81
+ if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {
82
+ this._events = Object.create(null);
83
+ this._eventsCount = 0;
84
+ }
85
+
86
+ this._maxListeners = this._maxListeners || undefined;
87
+ }; // Obviously not all Emitters should be limited to 10. This function allows
88
+ // that to be increased. Set to zero for unlimited.
89
+
90
+
91
+ EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
92
+ if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
93
+ throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
94
+ }
95
+
96
+ this._maxListeners = n;
97
+ return this;
98
+ };
99
+
100
+ function _getMaxListeners(that) {
101
+ if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;
102
+ return that._maxListeners;
103
+ }
104
+
105
+ EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
106
+ return _getMaxListeners(this);
107
+ };
108
+
109
+ EventEmitter.prototype.emit = function emit(type) {
110
+ var args = [];
111
+
112
+ for (var i = 1; i < arguments.length; i++) {
113
+ args.push(arguments[i]);
114
+ }
115
+
116
+ var doError = type === 'error';
117
+ var events = this._events;
118
+ if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw.
119
+
120
+ if (doError) {
121
+ var er;
122
+ if (args.length > 0) er = args[0];
123
+
124
+ if (er instanceof Error) {
125
+ // Note: The comments on the `throw` lines are intentional, they show
126
+ // up in Node's output if this results in an unhandled exception.
127
+ throw er; // Unhandled 'error' event
128
+ } // At least give some kind of context to the user
129
+
130
+
131
+ var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
132
+ err.context = er;
133
+ throw err; // Unhandled 'error' event
134
+ }
135
+
136
+ var handler = events[type];
137
+ if (handler === undefined) return false;
138
+
139
+ if (typeof handler === 'function') {
140
+ ReflectApply(handler, this, args);
141
+ } else {
142
+ var len = handler.length;
143
+ var listeners = arrayClone(handler, len); // eslint-disable-next-line no-redeclare
144
+
145
+ for (var i = 0; i < len; ++i) {
146
+ ReflectApply(listeners[i], this, args);
147
+ }
148
+ }
149
+
150
+ return true;
151
+ };
152
+
153
+ function _addListener(target, type, listener, prepend) {
154
+ var m;
155
+ var events;
156
+ var existing;
157
+ checkListener(listener);
158
+ events = target._events;
159
+
160
+ if (events === undefined) {
161
+ events = target._events = Object.create(null);
162
+ target._eventsCount = 0;
163
+ } else {
164
+ // To avoid recursion in the case that type === "newListener"! Before
165
+ // adding it to the listeners, first emit "newListener".
166
+ if (events.newListener !== undefined) {
167
+ target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the
168
+ // this._events to be assigned to a new object
169
+
170
+ events = target._events;
171
+ }
172
+
173
+ existing = events[type];
174
+ }
175
+
176
+ if (existing === undefined) {
177
+ // Optimize the case of one listener. Don't need the extra array object.
178
+ existing = events[type] = listener;
179
+ ++target._eventsCount;
180
+ } else {
181
+ if (typeof existing === 'function') {
182
+ // Adding the second element, need to change to array.
183
+ existing = events[type] = prepend ? [listener, existing] : [existing, listener]; // If we've already got an array, just append.
184
+ } else if (prepend) {
185
+ existing.unshift(listener);
186
+ } else {
187
+ existing.push(listener);
188
+ } // Check for listener leak
189
+
190
+
191
+ m = _getMaxListeners(target);
192
+
193
+ if (m > 0 && existing.length > m && !existing.warned) {
194
+ existing.warned = true; // No error code for this since it is a Warning
195
+ // eslint-disable-next-line no-restricted-syntax
196
+
197
+ var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');
198
+ w.name = 'MaxListenersExceededWarning';
199
+ w.emitter = target;
200
+ w.type = type;
201
+ w.count = existing.length;
202
+ ProcessEmitWarning(w);
203
+ }
204
+ }
205
+
206
+ return target;
207
+ }
208
+
209
+ EventEmitter.prototype.addListener = function addListener(type, listener) {
210
+ return _addListener(this, type, listener, false);
211
+ };
212
+
213
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
214
+
215
+ EventEmitter.prototype.prependListener = function prependListener(type, listener) {
216
+ return _addListener(this, type, listener, true);
217
+ };
218
+
219
+ function onceWrapper() {
220
+ if (!this.fired) {
221
+ this.target.removeListener(this.type, this.wrapFn);
222
+ this.fired = true;
223
+ if (arguments.length === 0) return this.listener.call(this.target);
224
+ return this.listener.apply(this.target, arguments);
225
+ }
226
+ }
227
+
228
+ function _onceWrap(target, type, listener) {
229
+ var state = {
230
+ fired: false,
231
+ wrapFn: undefined,
232
+ target: target,
233
+ type: type,
234
+ listener: listener
235
+ };
236
+ var wrapped = onceWrapper.bind(state);
237
+ wrapped.listener = listener;
238
+ state.wrapFn = wrapped;
239
+ return wrapped;
240
+ }
241
+
242
+ EventEmitter.prototype.once = function once(type, listener) {
243
+ checkListener(listener);
244
+ this.on(type, _onceWrap(this, type, listener));
245
+ return this;
246
+ };
247
+
248
+ EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {
249
+ checkListener(listener);
250
+ this.prependListener(type, _onceWrap(this, type, listener));
251
+ return this;
252
+ }; // Emits a 'removeListener' event if and only if the listener was removed.
253
+
254
+
255
+ EventEmitter.prototype.removeListener = function removeListener(type, listener) {
256
+ var list, events, position, i, originalListener;
257
+ checkListener(listener);
258
+ events = this._events;
259
+ if (events === undefined) return this;
260
+ list = events[type];
261
+ if (list === undefined) return this;
262
+
263
+ if (list === listener || list.listener === listener) {
264
+ if (--this._eventsCount === 0) this._events = Object.create(null);else {
265
+ delete events[type];
266
+ if (events.removeListener) this.emit('removeListener', type, list.listener || listener);
267
+ }
268
+ } else if (typeof list !== 'function') {
269
+ position = -1;
270
+
271
+ for (i = list.length - 1; i >= 0; i--) {
272
+ if (list[i] === listener || list[i].listener === listener) {
273
+ originalListener = list[i].listener;
274
+ position = i;
275
+ break;
276
+ }
277
+ }
278
+
279
+ if (position < 0) return this;
280
+ if (position === 0) list.shift();else {
281
+ spliceOne(list, position);
282
+ }
283
+ if (list.length === 1) events[type] = list[0];
284
+ if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);
285
+ }
286
+
287
+ return this;
288
+ };
289
+
290
+ EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
291
+
292
+ EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {
293
+ var listeners, events, i;
294
+ events = this._events;
295
+ if (events === undefined) return this; // not listening for removeListener, no need to emit
296
+
297
+ if (events.removeListener === undefined) {
298
+ if (arguments.length === 0) {
299
+ this._events = Object.create(null);
300
+ this._eventsCount = 0;
301
+ } else if (events[type] !== undefined) {
302
+ if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];
303
+ }
304
+
305
+ return this;
306
+ } // emit removeListener for all listeners on all events
307
+
308
+
309
+ if (arguments.length === 0) {
310
+ var keys = Object.keys(events);
311
+ var key;
312
+
313
+ for (i = 0; i < keys.length; ++i) {
314
+ key = keys[i];
315
+ if (key === 'removeListener') continue;
316
+ this.removeAllListeners(key);
317
+ }
318
+
319
+ this.removeAllListeners('removeListener');
320
+ this._events = Object.create(null);
321
+ this._eventsCount = 0;
322
+ return this;
323
+ }
324
+
325
+ listeners = events[type];
326
+
327
+ if (typeof listeners === 'function') {
328
+ this.removeListener(type, listeners);
329
+ } else if (listeners !== undefined) {
330
+ // LIFO order
331
+ for (i = listeners.length - 1; i >= 0; i--) {
332
+ this.removeListener(type, listeners[i]);
333
+ }
334
+ }
335
+
336
+ return this;
337
+ };
338
+
339
+ function _listeners(target, type, unwrap) {
340
+ var events = target._events;
341
+ if (events === undefined) return [];
342
+ var evlistener = events[type];
343
+ if (evlistener === undefined) return [];
344
+ if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];
345
+ return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
346
+ }
347
+
348
+ EventEmitter.prototype.listeners = function listeners(type) {
349
+ return _listeners(this, type, true);
350
+ };
351
+
352
+ EventEmitter.prototype.rawListeners = function rawListeners(type) {
353
+ return _listeners(this, type, false);
354
+ };
355
+
356
+ EventEmitter.listenerCount = function (emitter, type) {
357
+ if (typeof emitter.listenerCount === 'function') {
358
+ return emitter.listenerCount(type);
359
+ } else {
360
+ return listenerCount.call(emitter, type);
361
+ }
362
+ };
363
+
364
+ EventEmitter.prototype.listenerCount = listenerCount;
365
+
366
+ function listenerCount(type) {
367
+ var events = this._events;
368
+
369
+ if (events !== undefined) {
370
+ var evlistener = events[type];
371
+
372
+ if (typeof evlistener === 'function') {
373
+ return 1;
374
+ } else if (evlistener !== undefined) {
375
+ return evlistener.length;
376
+ }
377
+ }
378
+
379
+ return 0;
380
+ }
381
+
382
+ EventEmitter.prototype.eventNames = function eventNames() {
383
+ return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
384
+ };
385
+
386
+ function arrayClone(arr, n) {
387
+ var copy = new Array(n);
388
+
389
+ for (var i = 0; i < n; ++i) {
390
+ copy[i] = arr[i];
391
+ }
392
+
393
+ return copy;
394
+ }
395
+
396
+ function spliceOne(list, index) {
397
+ for (; index + 1 < list.length; index++) {
398
+ list[index] = list[index + 1];
399
+ }
400
+
401
+ list.pop();
402
+ }
403
+
404
+ function unwrapListeners(arr) {
405
+ var ret = new Array(arr.length);
406
+
407
+ for (var i = 0; i < ret.length; ++i) {
408
+ ret[i] = arr[i].listener || arr[i];
409
+ }
410
+
411
+ return ret;
412
+ }
@@ -0,0 +1,10 @@
1
+ import { EventEmitter } from './EventEmitter';
2
+ import { getFetch } from '../platform/getFetch/browser';
3
+ import { getEventSource } from '../platform/getEventSource/browser';
4
+ import { BrowserSignalListener } from '@splitsoftware/splitio-commons/esm/listeners/browser';
5
+ export var platform = {
6
+ getFetch: getFetch,
7
+ getEventSource: getEventSource,
8
+ EventEmitter: EventEmitter
9
+ };
10
+ export var SignalListener = BrowserSignalListener;