@splitsoftware/splitio-commons 2.5.0-rc.0 → 11.5.0-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 (881) hide show
  1. package/CHANGES.txt +893 -142
  2. package/CONTRIBUTORS-GUIDE.md +26 -16
  3. package/README.md +43 -5
  4. package/cjs/factory/browser.js +73 -0
  5. package/cjs/factory/node.js +79 -0
  6. package/cjs/factory/package.json +4 -0
  7. package/cjs/index.js +3 -16
  8. package/cjs/{utils/MinEvents.js → platform/EventEmitter.js} +153 -27
  9. package/cjs/platform/browser.js +15 -0
  10. package/cjs/platform/filter/bloomFilter.js +32 -0
  11. package/cjs/platform/getEventSource/browser.js +7 -0
  12. package/cjs/platform/getEventSource/eventsource.js +480 -0
  13. package/cjs/platform/getEventSource/node.js +25 -0
  14. package/cjs/platform/getEventSource/package.json +4 -0
  15. package/cjs/platform/getFetch/browser.js +9 -0
  16. package/cjs/platform/getFetch/node.js +26 -0
  17. package/cjs/platform/getFetch/package.json +4 -0
  18. package/cjs/platform/getOptions/node.js +25 -0
  19. package/cjs/platform/node.js +18 -0
  20. package/cjs/platform/package.json +4 -0
  21. package/cjs/settings/browser.js +21 -0
  22. package/cjs/settings/defaults/browser.js +21 -0
  23. package/cjs/settings/defaults/node.js +23 -0
  24. package/cjs/{listeners/types.js → settings/defaults/version.js} +2 -0
  25. package/cjs/settings/integrations/browser.js +9 -0
  26. package/cjs/settings/node.js +22 -0
  27. package/cjs/settings/package.json +4 -0
  28. package/cjs/settings/runtime/node.js +22 -0
  29. package/cjs/settings/storage/browser.js +35 -0
  30. package/cjs/settings/storage/node.js +67 -0
  31. package/cjs/sync/offline/LocalhostFromFile.js +8 -0
  32. package/cjs/sync/offline/splitsParserFromFile.js +148 -0
  33. package/cjs/umd.js +5 -0
  34. package/cjs/utils/ip.js +114 -0
  35. package/client/package.json +5 -0
  36. package/esm/factory/browser.js +69 -0
  37. package/esm/factory/node.js +75 -0
  38. package/esm/factory/package.json +4 -0
  39. package/esm/index.js +1 -10
  40. package/esm/{utils/MinEvents.js → platform/EventEmitter.js} +143 -17
  41. package/esm/platform/browser.js +12 -0
  42. package/esm/platform/filter/bloomFilter.js +28 -0
  43. package/esm/platform/getEventSource/browser.js +3 -0
  44. package/esm/platform/getEventSource/eventsource.js +480 -0
  45. package/esm/platform/getEventSource/node.js +19 -0
  46. package/esm/platform/getEventSource/package.json +4 -0
  47. package/esm/platform/getFetch/browser.js +4 -0
  48. package/esm/platform/getFetch/node.js +21 -0
  49. package/esm/platform/getFetch/package.json +4 -0
  50. package/esm/platform/getOptions/node.js +20 -0
  51. package/esm/platform/node.js +14 -0
  52. package/esm/platform/package.json +4 -0
  53. package/esm/settings/browser.js +17 -0
  54. package/esm/settings/defaults/browser.js +18 -0
  55. package/esm/settings/defaults/node.js +20 -0
  56. package/esm/settings/defaults/version.js +1 -0
  57. package/esm/settings/integrations/browser.js +5 -0
  58. package/esm/settings/node.js +18 -0
  59. package/esm/settings/package.json +4 -0
  60. package/esm/settings/runtime/node.js +17 -0
  61. package/esm/settings/storage/browser.js +31 -0
  62. package/esm/settings/storage/node.js +63 -0
  63. package/esm/sync/offline/LocalhostFromFile.js +5 -0
  64. package/esm/sync/offline/splitsParserFromFile.js +143 -0
  65. package/esm/umd.js +3 -0
  66. package/esm/utils/ip.js +109 -0
  67. package/package.json +99 -58
  68. package/server/package.json +5 -0
  69. package/src/factory/browser.js +85 -0
  70. package/src/factory/node.js +92 -0
  71. package/src/factory/package.json +4 -0
  72. package/src/index.js +1 -0
  73. package/src/{utils/MinEvents.ts → platform/EventEmitter.js} +164 -19
  74. package/src/platform/browser.js +14 -0
  75. package/src/platform/filter/bloomFilter.js +33 -0
  76. package/src/platform/getEventSource/browser.js +3 -0
  77. package/src/platform/getEventSource/eventsource.js +519 -0
  78. package/src/platform/getEventSource/node.js +20 -0
  79. package/src/platform/getEventSource/package.json +4 -0
  80. package/src/platform/getFetch/browser.js +5 -0
  81. package/src/platform/getFetch/node.js +24 -0
  82. package/src/platform/getFetch/package.json +4 -0
  83. package/src/platform/getOptions/node.js +23 -0
  84. package/src/platform/node.js +16 -0
  85. package/src/platform/package.json +4 -0
  86. package/src/settings/browser.js +20 -0
  87. package/src/settings/defaults/browser.js +21 -0
  88. package/src/settings/defaults/node.js +23 -0
  89. package/src/settings/defaults/version.js +1 -0
  90. package/src/settings/integrations/browser.js +6 -0
  91. package/src/settings/node.js +21 -0
  92. package/src/settings/package.json +4 -0
  93. package/src/settings/runtime/node.js +21 -0
  94. package/src/settings/storage/browser.js +47 -0
  95. package/src/settings/storage/node.js +84 -0
  96. package/src/sync/offline/LocalhostFromFile.js +6 -0
  97. package/src/sync/offline/splitsParserFromFile.js +173 -0
  98. package/src/umd.js +4 -0
  99. package/src/utils/ip.js +123 -0
  100. package/types/client/index.d.ts +15 -0
  101. package/types/index.d.ts +24 -1
  102. package/types/server/index.d.ts +21 -0
  103. package/types/splitio.d.ts +2 -2087
  104. package/cjs/consent/index.js +0 -10
  105. package/cjs/consent/sdkUserConsent.js +0 -60
  106. package/cjs/dtos/types.js +0 -2
  107. package/cjs/evaluator/Engine.js +0 -58
  108. package/cjs/evaluator/combiners/and.js +0 -25
  109. package/cjs/evaluator/combiners/ifelseif.js +0 -48
  110. package/cjs/evaluator/condition/engineUtils.js +0 -29
  111. package/cjs/evaluator/condition/index.js +0 -41
  112. package/cjs/evaluator/convertions/index.js +0 -11
  113. package/cjs/evaluator/index.js +0 -134
  114. package/cjs/evaluator/matchers/all.js +0 -9
  115. package/cjs/evaluator/matchers/between.js +0 -10
  116. package/cjs/evaluator/matchers/boolean.js +0 -10
  117. package/cjs/evaluator/matchers/cont_all.js +0 -23
  118. package/cjs/evaluator/matchers/cont_any.js +0 -18
  119. package/cjs/evaluator/matchers/cont_str.js +0 -11
  120. package/cjs/evaluator/matchers/dependency.js +0 -28
  121. package/cjs/evaluator/matchers/eq.js +0 -10
  122. package/cjs/evaluator/matchers/eq_set.js +0 -20
  123. package/cjs/evaluator/matchers/ew.js +0 -11
  124. package/cjs/evaluator/matchers/gte.js +0 -10
  125. package/cjs/evaluator/matchers/index.js +0 -66
  126. package/cjs/evaluator/matchers/large_segment.js +0 -10
  127. package/cjs/evaluator/matchers/lte.js +0 -10
  128. package/cjs/evaluator/matchers/matcherTypes.js +0 -46
  129. package/cjs/evaluator/matchers/part_of.js +0 -20
  130. package/cjs/evaluator/matchers/prerequisites.js +0 -22
  131. package/cjs/evaluator/matchers/rbsegment.js +0 -56
  132. package/cjs/evaluator/matchers/segment.js +0 -10
  133. package/cjs/evaluator/matchers/semver_between.js +0 -14
  134. package/cjs/evaluator/matchers/semver_eq.js +0 -13
  135. package/cjs/evaluator/matchers/semver_gte.js +0 -13
  136. package/cjs/evaluator/matchers/semver_inlist.js +0 -16
  137. package/cjs/evaluator/matchers/semver_lte.js +0 -13
  138. package/cjs/evaluator/matchers/string.js +0 -11
  139. package/cjs/evaluator/matchers/sw.js +0 -11
  140. package/cjs/evaluator/matchers/whitelist.js +0 -11
  141. package/cjs/evaluator/matchersTransform/index.js +0 -104
  142. package/cjs/evaluator/matchersTransform/segment.js +0 -12
  143. package/cjs/evaluator/matchersTransform/unaryNumeric.js +0 -10
  144. package/cjs/evaluator/matchersTransform/whitelist.js +0 -10
  145. package/cjs/evaluator/parser/index.js +0 -61
  146. package/cjs/evaluator/treatments/index.js +0 -42
  147. package/cjs/evaluator/types.js +0 -2
  148. package/cjs/evaluator/value/index.js +0 -37
  149. package/cjs/evaluator/value/sanitize.js +0 -94
  150. package/cjs/integrations/pluggable.js +0 -35
  151. package/cjs/integrations/types.js +0 -2
  152. package/cjs/listeners/browser.js +0 -121
  153. package/cjs/listeners/node.js +0 -68
  154. package/cjs/logger/browser/DebugLogger.js +0 -9
  155. package/cjs/logger/browser/ErrorLogger.js +0 -9
  156. package/cjs/logger/browser/InfoLogger.js +0 -9
  157. package/cjs/logger/browser/WarnLogger.js +0 -9
  158. package/cjs/logger/constants.js +0 -140
  159. package/cjs/logger/index.js +0 -100
  160. package/cjs/logger/messages/debug.js +0 -36
  161. package/cjs/logger/messages/error.js +0 -42
  162. package/cjs/logger/messages/info.js +0 -37
  163. package/cjs/logger/messages/warn.js +0 -42
  164. package/cjs/logger/sdkLogger.js +0 -45
  165. package/cjs/logger/types.js +0 -2
  166. package/cjs/readiness/constants.js +0 -13
  167. package/cjs/readiness/readinessManager.js +0 -154
  168. package/cjs/readiness/sdkReadinessManager.js +0 -104
  169. package/cjs/readiness/types.js +0 -2
  170. package/cjs/sdkClient/client.js +0 -183
  171. package/cjs/sdkClient/clientAttributesDecoration.js +0 -122
  172. package/cjs/sdkClient/clientCS.js +0 -30
  173. package/cjs/sdkClient/clientInputValidation.js +0 -147
  174. package/cjs/sdkClient/identity.js +0 -7
  175. package/cjs/sdkClient/sdkClient.js +0 -64
  176. package/cjs/sdkClient/sdkClientMethod.js +0 -22
  177. package/cjs/sdkClient/sdkClientMethodCS.js +0 -66
  178. package/cjs/sdkFactory/index.js +0 -108
  179. package/cjs/sdkFactory/types.js +0 -2
  180. package/cjs/sdkManager/index.js +0 -96
  181. package/cjs/services/decorateHeaders.js +0 -40
  182. package/cjs/services/splitApi.js +0 -131
  183. package/cjs/services/splitHttpClient.js +0 -82
  184. package/cjs/services/types.js +0 -2
  185. package/cjs/storages/AbstractMySegmentsCacheSync.js +0 -60
  186. package/cjs/storages/AbstractSplitsCacheAsync.js +0 -51
  187. package/cjs/storages/AbstractSplitsCacheSync.js +0 -75
  188. package/cjs/storages/KeyBuilder.js +0 -68
  189. package/cjs/storages/KeyBuilderCS.js +0 -65
  190. package/cjs/storages/KeyBuilderSS.js +0 -60
  191. package/cjs/storages/dataLoader.js +0 -109
  192. package/cjs/storages/findLatencyIndex.js +0 -18
  193. package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -81
  194. package/cjs/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -121
  195. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +0 -208
  196. package/cjs/storages/inLocalStorage/constants.js +0 -5
  197. package/cjs/storages/inLocalStorage/index.js +0 -73
  198. package/cjs/storages/inLocalStorage/validateCache.js +0 -80
  199. package/cjs/storages/inMemory/AttributesCacheInMemory.js +0 -70
  200. package/cjs/storages/inMemory/EventsCacheInMemory.js +0 -63
  201. package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -65
  202. package/cjs/storages/inMemory/ImpressionsCacheInMemory.js +0 -51
  203. package/cjs/storages/inMemory/InMemoryStorage.js +0 -46
  204. package/cjs/storages/inMemory/InMemoryStorageCS.js +0 -81
  205. package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +0 -46
  206. package/cjs/storages/inMemory/RBSegmentsCacheInMemory.js +0 -65
  207. package/cjs/storages/inMemory/SegmentsCacheInMemory.js +0 -61
  208. package/cjs/storages/inMemory/SplitsCacheInMemory.js +0 -121
  209. package/cjs/storages/inMemory/TelemetryCacheInMemory.js +0 -207
  210. package/cjs/storages/inMemory/UniqueKeysCacheInMemory.js +0 -72
  211. package/cjs/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -71
  212. package/cjs/storages/inRedis/EventsCacheInRedis.js +0 -60
  213. package/cjs/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -85
  214. package/cjs/storages/inRedis/ImpressionsCacheInRedis.js +0 -45
  215. package/cjs/storages/inRedis/RBSegmentsCacheInRedis.js +0 -64
  216. package/cjs/storages/inRedis/RedisAdapter.js +0 -195
  217. package/cjs/storages/inRedis/SegmentsCacheInRedis.js +0 -57
  218. package/cjs/storages/inRedis/SplitsCacheInRedis.js +0 -243
  219. package/cjs/storages/inRedis/TelemetryCacheInRedis.js +0 -124
  220. package/cjs/storages/inRedis/UniqueKeysCacheInRedis.js +0 -69
  221. package/cjs/storages/inRedis/constants.js +0 -7
  222. package/cjs/storages/inRedis/index.js +0 -73
  223. package/cjs/storages/pluggable/EventsCachePluggable.js +0 -64
  224. package/cjs/storages/pluggable/ImpressionCountsCachePluggable.js +0 -81
  225. package/cjs/storages/pluggable/ImpressionsCachePluggable.js +0 -48
  226. package/cjs/storages/pluggable/RBSegmentsCachePluggable.js +0 -64
  227. package/cjs/storages/pluggable/SegmentsCachePluggable.js +0 -80
  228. package/cjs/storages/pluggable/SplitsCachePluggable.js +0 -212
  229. package/cjs/storages/pluggable/TelemetryCachePluggable.js +0 -141
  230. package/cjs/storages/pluggable/UniqueKeysCachePluggable.js +0 -62
  231. package/cjs/storages/pluggable/constants.js +0 -4
  232. package/cjs/storages/pluggable/inMemoryWrapper.js +0 -141
  233. package/cjs/storages/pluggable/index.js +0 -135
  234. package/cjs/storages/pluggable/wrapperAdapter.js +0 -53
  235. package/cjs/storages/types.js +0 -2
  236. package/cjs/storages/utils.js +0 -74
  237. package/cjs/sync/offline/LocalhostFromObject.js +0 -8
  238. package/cjs/sync/offline/splitsParser/parseCondition.js +0 -55
  239. package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +0 -62
  240. package/cjs/sync/offline/splitsParser/types.js +0 -2
  241. package/cjs/sync/offline/syncManagerOffline.js +0 -52
  242. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +0 -72
  243. package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +0 -18
  244. package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +0 -34
  245. package/cjs/sync/polling/fetchers/splitChangesFetcher.js +0 -68
  246. package/cjs/sync/polling/fetchers/types.js +0 -2
  247. package/cjs/sync/polling/pollingManagerCS.js +0 -100
  248. package/cjs/sync/polling/pollingManagerSS.js +0 -49
  249. package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -13
  250. package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +0 -13
  251. package/cjs/sync/polling/syncTasks/splitsSyncTask.js +0 -13
  252. package/cjs/sync/polling/types.js +0 -2
  253. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +0 -81
  254. package/cjs/sync/polling/updaters/segmentChangesUpdater.js +0 -80
  255. package/cjs/sync/polling/updaters/splitChangesUpdater.js +0 -188
  256. package/cjs/sync/streaming/AuthClient/index.js +0 -43
  257. package/cjs/sync/streaming/AuthClient/types.js +0 -2
  258. package/cjs/sync/streaming/SSEClient/index.js +0 -86
  259. package/cjs/sync/streaming/SSEClient/types.js +0 -2
  260. package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +0 -98
  261. package/cjs/sync/streaming/SSEHandler/NotificationParser.js +0 -41
  262. package/cjs/sync/streaming/SSEHandler/index.js +0 -97
  263. package/cjs/sync/streaming/SSEHandler/types.js +0 -16
  264. package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -124
  265. package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -92
  266. package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -136
  267. package/cjs/sync/streaming/UpdateWorkers/constants.js +0 -6
  268. package/cjs/sync/streaming/UpdateWorkers/types.js +0 -2
  269. package/cjs/sync/streaming/constants.js +0 -43
  270. package/cjs/sync/streaming/parseUtils.js +0 -98
  271. package/cjs/sync/streaming/pushManager.js +0 -317
  272. package/cjs/sync/streaming/types.js +0 -2
  273. package/cjs/sync/submitters/eventsSubmitter.js +0 -28
  274. package/cjs/sync/submitters/impressionCountsSubmitter.js +0 -36
  275. package/cjs/sync/submitters/impressionsSubmitter.js +0 -54
  276. package/cjs/sync/submitters/submitter.js +0 -66
  277. package/cjs/sync/submitters/submitterManager.js +0 -46
  278. package/cjs/sync/submitters/telemetrySubmitter.js +0 -125
  279. package/cjs/sync/submitters/types.js +0 -2
  280. package/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -27
  281. package/cjs/sync/syncManagerOnline.js +0 -172
  282. package/cjs/sync/syncTask.js +0 -84
  283. package/cjs/sync/types.js +0 -2
  284. package/cjs/trackers/eventTracker.js +0 -62
  285. package/cjs/trackers/impressionObserver/ImpressionObserver.js +0 -18
  286. package/cjs/trackers/impressionObserver/buildKey.js +0 -7
  287. package/cjs/trackers/impressionObserver/impressionObserverCS.js +0 -15
  288. package/cjs/trackers/impressionObserver/impressionObserverSS.js +0 -15
  289. package/cjs/trackers/impressionObserver/types.js +0 -2
  290. package/cjs/trackers/impressionsTracker.js +0 -78
  291. package/cjs/trackers/strategy/strategyDebug.js +0 -20
  292. package/cjs/trackers/strategy/strategyNone.js +0 -24
  293. package/cjs/trackers/strategy/strategyOptimized.js +0 -28
  294. package/cjs/trackers/telemetryTracker.js +0 -75
  295. package/cjs/trackers/types.js +0 -2
  296. package/cjs/trackers/uniqueKeysTracker.js +0 -40
  297. package/cjs/types.js +0 -2
  298. package/cjs/utils/Backoff.js +0 -41
  299. package/cjs/utils/LRUCache/LinkedList.js +0 -114
  300. package/cjs/utils/LRUCache/index.js +0 -42
  301. package/cjs/utils/MinEventEmitter.js +0 -100
  302. package/cjs/utils/Semver.js +0 -103
  303. package/cjs/utils/base64/index.js +0 -75
  304. package/cjs/utils/constants/index.js +0 -100
  305. package/cjs/utils/decompress/index.js +0 -427
  306. package/cjs/utils/env/isLocalStorageAvailable.js +0 -16
  307. package/cjs/utils/env/isNode.js +0 -9
  308. package/cjs/utils/inputValidation/apiKey.js +0 -54
  309. package/cjs/utils/inputValidation/attribute.js +0 -20
  310. package/cjs/utils/inputValidation/attributes.js +0 -25
  311. package/cjs/utils/inputValidation/event.js +0 -28
  312. package/cjs/utils/inputValidation/eventProperties.js +0 -74
  313. package/cjs/utils/inputValidation/eventValue.js +0 -12
  314. package/cjs/utils/inputValidation/index.js +0 -34
  315. package/cjs/utils/inputValidation/isOperational.js +0 -18
  316. package/cjs/utils/inputValidation/key.js +0 -51
  317. package/cjs/utils/inputValidation/preloadedData.js +0 -59
  318. package/cjs/utils/inputValidation/split.js +0 -30
  319. package/cjs/utils/inputValidation/splitExistence.js +0 -19
  320. package/cjs/utils/inputValidation/splits.js +0 -25
  321. package/cjs/utils/inputValidation/trafficType.js +0 -29
  322. package/cjs/utils/inputValidation/trafficTypeExistence.js +0 -31
  323. package/cjs/utils/jwt/index.js +0 -17
  324. package/cjs/utils/jwt/types.js +0 -2
  325. package/cjs/utils/key/index.js +0 -36
  326. package/cjs/utils/labels/index.js +0 -12
  327. package/cjs/utils/lang/binarySearch.js +0 -42
  328. package/cjs/utils/lang/getFnName.js +0 -12
  329. package/cjs/utils/lang/getGlobal.js +0 -18
  330. package/cjs/utils/lang/index.js +0 -281
  331. package/cjs/utils/lang/objectAssign.js +0 -20
  332. package/cjs/utils/lang/sets.js +0 -23
  333. package/cjs/utils/murmur3/common.js +0 -46
  334. package/cjs/utils/murmur3/legacy.js +0 -44
  335. package/cjs/utils/murmur3/murmur3.js +0 -62
  336. package/cjs/utils/murmur3/murmur3_128.js +0 -219
  337. package/cjs/utils/murmur3/murmur3_128_x86.js +0 -154
  338. package/cjs/utils/murmur3/murmur3_64.js +0 -36
  339. package/cjs/utils/murmur3/utfx.js +0 -108
  340. package/cjs/utils/promise/thenable.js +0 -8
  341. package/cjs/utils/promise/timeout.js +0 -20
  342. package/cjs/utils/promise/wrapper.js +0 -58
  343. package/cjs/utils/settingsValidation/consent.js +0 -16
  344. package/cjs/utils/settingsValidation/impressionsMode.js +0 -14
  345. package/cjs/utils/settingsValidation/index.js +0 -184
  346. package/cjs/utils/settingsValidation/integrations/common.js +0 -27
  347. package/cjs/utils/settingsValidation/integrations/configurable.js +0 -18
  348. package/cjs/utils/settingsValidation/integrations/pluggable.js +0 -15
  349. package/cjs/utils/settingsValidation/logger/builtinLogger.js +0 -46
  350. package/cjs/utils/settingsValidation/logger/commons.js +0 -28
  351. package/cjs/utils/settingsValidation/logger/pluggableLogger.js +0 -32
  352. package/cjs/utils/settingsValidation/mode.js +0 -20
  353. package/cjs/utils/settingsValidation/runtime.js +0 -11
  354. package/cjs/utils/settingsValidation/splitFilters.js +0 -188
  355. package/cjs/utils/settingsValidation/storage/storageCS.js +0 -49
  356. package/cjs/utils/settingsValidation/types.js +0 -2
  357. package/cjs/utils/settingsValidation/url.js +0 -31
  358. package/cjs/utils/time/index.js +0 -11
  359. package/cjs/utils/timeTracker/now/browser.js +0 -15
  360. package/cjs/utils/timeTracker/now/node.js +0 -9
  361. package/cjs/utils/timeTracker/timer.js +0 -10
  362. package/esm/consent/index.js +0 -6
  363. package/esm/consent/sdkUserConsent.js +0 -56
  364. package/esm/dtos/types.js +0 -1
  365. package/esm/evaluator/Engine.js +0 -54
  366. package/esm/evaluator/combiners/and.js +0 -21
  367. package/esm/evaluator/combiners/ifelseif.js +0 -44
  368. package/esm/evaluator/condition/engineUtils.js +0 -24
  369. package/esm/evaluator/condition/index.js +0 -37
  370. package/esm/evaluator/convertions/index.js +0 -6
  371. package/esm/evaluator/index.js +0 -128
  372. package/esm/evaluator/matchers/all.js +0 -5
  373. package/esm/evaluator/matchers/between.js +0 -6
  374. package/esm/evaluator/matchers/boolean.js +0 -6
  375. package/esm/evaluator/matchers/cont_all.js +0 -19
  376. package/esm/evaluator/matchers/cont_any.js +0 -14
  377. package/esm/evaluator/matchers/cont_str.js +0 -7
  378. package/esm/evaluator/matchers/dependency.js +0 -24
  379. package/esm/evaluator/matchers/eq.js +0 -6
  380. package/esm/evaluator/matchers/eq_set.js +0 -16
  381. package/esm/evaluator/matchers/ew.js +0 -7
  382. package/esm/evaluator/matchers/gte.js +0 -6
  383. package/esm/evaluator/matchers/index.js +0 -62
  384. package/esm/evaluator/matchers/large_segment.js +0 -6
  385. package/esm/evaluator/matchers/lte.js +0 -6
  386. package/esm/evaluator/matchers/matcherTypes.js +0 -42
  387. package/esm/evaluator/matchers/part_of.js +0 -16
  388. package/esm/evaluator/matchers/prerequisites.js +0 -18
  389. package/esm/evaluator/matchers/rbsegment.js +0 -52
  390. package/esm/evaluator/matchers/segment.js +0 -6
  391. package/esm/evaluator/matchers/semver_between.js +0 -10
  392. package/esm/evaluator/matchers/semver_eq.js +0 -9
  393. package/esm/evaluator/matchers/semver_gte.js +0 -9
  394. package/esm/evaluator/matchers/semver_inlist.js +0 -12
  395. package/esm/evaluator/matchers/semver_lte.js +0 -9
  396. package/esm/evaluator/matchers/string.js +0 -7
  397. package/esm/evaluator/matchers/sw.js +0 -7
  398. package/esm/evaluator/matchers/whitelist.js +0 -7
  399. package/esm/evaluator/matchersTransform/index.js +0 -100
  400. package/esm/evaluator/matchersTransform/segment.js +0 -8
  401. package/esm/evaluator/matchersTransform/unaryNumeric.js +0 -6
  402. package/esm/evaluator/matchersTransform/whitelist.js +0 -6
  403. package/esm/evaluator/parser/index.js +0 -57
  404. package/esm/evaluator/treatments/index.js +0 -39
  405. package/esm/evaluator/types.js +0 -1
  406. package/esm/evaluator/value/index.js +0 -33
  407. package/esm/evaluator/value/sanitize.js +0 -90
  408. package/esm/integrations/pluggable.js +0 -31
  409. package/esm/integrations/types.js +0 -1
  410. package/esm/listeners/browser.js +0 -118
  411. package/esm/listeners/node.js +0 -65
  412. package/esm/listeners/types.js +0 -1
  413. package/esm/logger/browser/DebugLogger.js +0 -5
  414. package/esm/logger/browser/ErrorLogger.js +0 -5
  415. package/esm/logger/browser/InfoLogger.js +0 -5
  416. package/esm/logger/browser/WarnLogger.js +0 -5
  417. package/esm/logger/constants.js +0 -135
  418. package/esm/logger/index.js +0 -95
  419. package/esm/logger/messages/debug.js +0 -32
  420. package/esm/logger/messages/error.js +0 -38
  421. package/esm/logger/messages/info.js +0 -33
  422. package/esm/logger/messages/warn.js +0 -38
  423. package/esm/logger/sdkLogger.js +0 -41
  424. package/esm/logger/types.js +0 -1
  425. package/esm/readiness/constants.js +0 -10
  426. package/esm/readiness/readinessManager.js +0 -150
  427. package/esm/readiness/sdkReadinessManager.js +0 -100
  428. package/esm/readiness/types.js +0 -1
  429. package/esm/sdkClient/client.js +0 -179
  430. package/esm/sdkClient/clientAttributesDecoration.js +0 -118
  431. package/esm/sdkClient/clientCS.js +0 -26
  432. package/esm/sdkClient/clientInputValidation.js +0 -143
  433. package/esm/sdkClient/identity.js +0 -3
  434. package/esm/sdkClient/sdkClient.js +0 -60
  435. package/esm/sdkClient/sdkClientMethod.js +0 -18
  436. package/esm/sdkClient/sdkClientMethodCS.js +0 -62
  437. package/esm/sdkFactory/index.js +0 -104
  438. package/esm/sdkFactory/types.js +0 -1
  439. package/esm/sdkManager/index.js +0 -92
  440. package/esm/services/decorateHeaders.js +0 -35
  441. package/esm/services/splitApi.js +0 -127
  442. package/esm/services/splitHttpClient.js +0 -78
  443. package/esm/services/types.js +0 -1
  444. package/esm/storages/AbstractMySegmentsCacheSync.js +0 -57
  445. package/esm/storages/AbstractSplitsCacheAsync.js +0 -48
  446. package/esm/storages/AbstractSplitsCacheSync.js +0 -70
  447. package/esm/storages/KeyBuilder.js +0 -63
  448. package/esm/storages/KeyBuilderCS.js +0 -61
  449. package/esm/storages/KeyBuilderSS.js +0 -57
  450. package/esm/storages/dataLoader.js +0 -104
  451. package/esm/storages/findLatencyIndex.js +0 -14
  452. package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -78
  453. package/esm/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -118
  454. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +0 -205
  455. package/esm/storages/inLocalStorage/constants.js +0 -2
  456. package/esm/storages/inLocalStorage/index.js +0 -69
  457. package/esm/storages/inLocalStorage/validateCache.js +0 -76
  458. package/esm/storages/inMemory/AttributesCacheInMemory.js +0 -67
  459. package/esm/storages/inMemory/EventsCacheInMemory.js +0 -60
  460. package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -62
  461. package/esm/storages/inMemory/ImpressionsCacheInMemory.js +0 -48
  462. package/esm/storages/inMemory/InMemoryStorage.js +0 -42
  463. package/esm/storages/inMemory/InMemoryStorageCS.js +0 -77
  464. package/esm/storages/inMemory/MySegmentsCacheInMemory.js +0 -43
  465. package/esm/storages/inMemory/RBSegmentsCacheInMemory.js +0 -62
  466. package/esm/storages/inMemory/SegmentsCacheInMemory.js +0 -58
  467. package/esm/storages/inMemory/SplitsCacheInMemory.js +0 -118
  468. package/esm/storages/inMemory/TelemetryCacheInMemory.js +0 -202
  469. package/esm/storages/inMemory/UniqueKeysCacheInMemory.js +0 -68
  470. package/esm/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -68
  471. package/esm/storages/inRedis/EventsCacheInRedis.js +0 -57
  472. package/esm/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -82
  473. package/esm/storages/inRedis/ImpressionsCacheInRedis.js +0 -42
  474. package/esm/storages/inRedis/RBSegmentsCacheInRedis.js +0 -61
  475. package/esm/storages/inRedis/RedisAdapter.js +0 -192
  476. package/esm/storages/inRedis/SegmentsCacheInRedis.js +0 -54
  477. package/esm/storages/inRedis/SplitsCacheInRedis.js +0 -240
  478. package/esm/storages/inRedis/TelemetryCacheInRedis.js +0 -121
  479. package/esm/storages/inRedis/UniqueKeysCacheInRedis.js +0 -66
  480. package/esm/storages/inRedis/constants.js +0 -4
  481. package/esm/storages/inRedis/index.js +0 -69
  482. package/esm/storages/pluggable/EventsCachePluggable.js +0 -61
  483. package/esm/storages/pluggable/ImpressionCountsCachePluggable.js +0 -78
  484. package/esm/storages/pluggable/ImpressionsCachePluggable.js +0 -45
  485. package/esm/storages/pluggable/RBSegmentsCachePluggable.js +0 -61
  486. package/esm/storages/pluggable/SegmentsCachePluggable.js +0 -77
  487. package/esm/storages/pluggable/SplitsCachePluggable.js +0 -209
  488. package/esm/storages/pluggable/TelemetryCachePluggable.js +0 -138
  489. package/esm/storages/pluggable/UniqueKeysCachePluggable.js +0 -59
  490. package/esm/storages/pluggable/constants.js +0 -1
  491. package/esm/storages/pluggable/inMemoryWrapper.js +0 -137
  492. package/esm/storages/pluggable/index.js +0 -131
  493. package/esm/storages/pluggable/wrapperAdapter.js +0 -49
  494. package/esm/storages/types.js +0 -1
  495. package/esm/storages/utils.js +0 -66
  496. package/esm/sync/offline/LocalhostFromObject.js +0 -5
  497. package/esm/sync/offline/splitsParser/parseCondition.js +0 -51
  498. package/esm/sync/offline/splitsParser/splitsParserFromSettings.js +0 -58
  499. package/esm/sync/offline/splitsParser/types.js +0 -1
  500. package/esm/sync/offline/syncManagerOffline.js +0 -48
  501. package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +0 -67
  502. package/esm/sync/polling/fetchers/mySegmentsFetcher.js +0 -14
  503. package/esm/sync/polling/fetchers/segmentChangesFetcher.js +0 -30
  504. package/esm/sync/polling/fetchers/splitChangesFetcher.js +0 -64
  505. package/esm/sync/polling/fetchers/types.js +0 -1
  506. package/esm/sync/polling/pollingManagerCS.js +0 -96
  507. package/esm/sync/polling/pollingManagerSS.js +0 -45
  508. package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -9
  509. package/esm/sync/polling/syncTasks/segmentsSyncTask.js +0 -9
  510. package/esm/sync/polling/syncTasks/splitsSyncTask.js +0 -9
  511. package/esm/sync/polling/types.js +0 -1
  512. package/esm/sync/polling/updaters/mySegmentsUpdater.js +0 -77
  513. package/esm/sync/polling/updaters/segmentChangesUpdater.js +0 -76
  514. package/esm/sync/polling/updaters/splitChangesUpdater.js +0 -182
  515. package/esm/sync/streaming/AuthClient/index.js +0 -38
  516. package/esm/sync/streaming/AuthClient/types.js +0 -1
  517. package/esm/sync/streaming/SSEClient/index.js +0 -83
  518. package/esm/sync/streaming/SSEClient/types.js +0 -1
  519. package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +0 -94
  520. package/esm/sync/streaming/SSEHandler/NotificationParser.js +0 -36
  521. package/esm/sync/streaming/SSEHandler/index.js +0 -93
  522. package/esm/sync/streaming/SSEHandler/types.js +0 -13
  523. package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -120
  524. package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -88
  525. package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -132
  526. package/esm/sync/streaming/UpdateWorkers/constants.js +0 -3
  527. package/esm/sync/streaming/UpdateWorkers/types.js +0 -1
  528. package/esm/sync/streaming/constants.js +0 -40
  529. package/esm/sync/streaming/parseUtils.js +0 -90
  530. package/esm/sync/streaming/pushManager.js +0 -313
  531. package/esm/sync/streaming/types.js +0 -1
  532. package/esm/sync/submitters/eventsSubmitter.js +0 -24
  533. package/esm/sync/submitters/impressionCountsSubmitter.js +0 -31
  534. package/esm/sync/submitters/impressionsSubmitter.js +0 -49
  535. package/esm/sync/submitters/submitter.js +0 -61
  536. package/esm/sync/submitters/submitterManager.js +0 -42
  537. package/esm/sync/submitters/telemetrySubmitter.js +0 -119
  538. package/esm/sync/submitters/types.js +0 -1
  539. package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -23
  540. package/esm/sync/syncManagerOnline.js +0 -168
  541. package/esm/sync/syncTask.js +0 -80
  542. package/esm/sync/types.js +0 -1
  543. package/esm/trackers/eventTracker.js +0 -58
  544. package/esm/trackers/impressionObserver/ImpressionObserver.js +0 -15
  545. package/esm/trackers/impressionObserver/buildKey.js +0 -3
  546. package/esm/trackers/impressionObserver/impressionObserverCS.js +0 -10
  547. package/esm/trackers/impressionObserver/impressionObserverSS.js +0 -10
  548. package/esm/trackers/impressionObserver/types.js +0 -1
  549. package/esm/trackers/impressionsTracker.js +0 -74
  550. package/esm/trackers/strategy/strategyDebug.js +0 -16
  551. package/esm/trackers/strategy/strategyNone.js +0 -20
  552. package/esm/trackers/strategy/strategyOptimized.js +0 -24
  553. package/esm/trackers/telemetryTracker.js +0 -71
  554. package/esm/trackers/types.js +0 -1
  555. package/esm/trackers/uniqueKeysTracker.js +0 -36
  556. package/esm/types.js +0 -1
  557. package/esm/utils/Backoff.js +0 -38
  558. package/esm/utils/LRUCache/LinkedList.js +0 -111
  559. package/esm/utils/LRUCache/index.js +0 -39
  560. package/esm/utils/MinEventEmitter.js +0 -97
  561. package/esm/utils/Semver.js +0 -100
  562. package/esm/utils/base64/index.js +0 -70
  563. package/esm/utils/constants/index.js +0 -96
  564. package/esm/utils/decompress/index.js +0 -424
  565. package/esm/utils/env/isLocalStorageAvailable.js +0 -12
  566. package/esm/utils/env/isNode.js +0 -6
  567. package/esm/utils/inputValidation/apiKey.js +0 -48
  568. package/esm/utils/inputValidation/attribute.js +0 -16
  569. package/esm/utils/inputValidation/attributes.js +0 -20
  570. package/esm/utils/inputValidation/event.js +0 -24
  571. package/esm/utils/inputValidation/eventProperties.js +0 -69
  572. package/esm/utils/inputValidation/eventValue.js +0 -8
  573. package/esm/utils/inputValidation/index.js +0 -14
  574. package/esm/utils/inputValidation/isOperational.js +0 -13
  575. package/esm/utils/inputValidation/key.js +0 -47
  576. package/esm/utils/inputValidation/preloadedData.js +0 -55
  577. package/esm/utils/inputValidation/split.js +0 -26
  578. package/esm/utils/inputValidation/splitExistence.js +0 -15
  579. package/esm/utils/inputValidation/splits.js +0 -21
  580. package/esm/utils/inputValidation/trafficType.js +0 -25
  581. package/esm/utils/inputValidation/trafficTypeExistence.js +0 -27
  582. package/esm/utils/jwt/index.js +0 -13
  583. package/esm/utils/jwt/types.js +0 -1
  584. package/esm/utils/key/index.js +0 -30
  585. package/esm/utils/labels/index.js +0 -9
  586. package/esm/utils/lang/binarySearch.js +0 -38
  587. package/esm/utils/lang/getFnName.js +0 -8
  588. package/esm/utils/lang/getGlobal.js +0 -14
  589. package/esm/utils/lang/index.js +0 -258
  590. package/esm/utils/lang/objectAssign.js +0 -17
  591. package/esm/utils/lang/sets.js +0 -17
  592. package/esm/utils/murmur3/common.js +0 -39
  593. package/esm/utils/murmur3/legacy.js +0 -39
  594. package/esm/utils/murmur3/murmur3.js +0 -57
  595. package/esm/utils/murmur3/murmur3_128.js +0 -215
  596. package/esm/utils/murmur3/murmur3_128_x86.js +0 -150
  597. package/esm/utils/murmur3/murmur3_64.js +0 -32
  598. package/esm/utils/murmur3/utfx.js +0 -102
  599. package/esm/utils/promise/thenable.js +0 -4
  600. package/esm/utils/promise/timeout.js +0 -16
  601. package/esm/utils/promise/wrapper.js +0 -54
  602. package/esm/utils/settingsValidation/consent.js +0 -12
  603. package/esm/utils/settingsValidation/impressionsMode.js +0 -10
  604. package/esm/utils/settingsValidation/index.js +0 -180
  605. package/esm/utils/settingsValidation/integrations/common.js +0 -23
  606. package/esm/utils/settingsValidation/integrations/configurable.js +0 -14
  607. package/esm/utils/settingsValidation/integrations/pluggable.js +0 -11
  608. package/esm/utils/settingsValidation/logger/builtinLogger.js +0 -42
  609. package/esm/utils/settingsValidation/logger/commons.js +0 -24
  610. package/esm/utils/settingsValidation/logger/pluggableLogger.js +0 -28
  611. package/esm/utils/settingsValidation/mode.js +0 -15
  612. package/esm/utils/settingsValidation/runtime.js +0 -7
  613. package/esm/utils/settingsValidation/splitFilters.js +0 -183
  614. package/esm/utils/settingsValidation/storage/storageCS.js +0 -44
  615. package/esm/utils/settingsValidation/types.js +0 -1
  616. package/esm/utils/settingsValidation/url.js +0 -27
  617. package/esm/utils/time/index.js +0 -7
  618. package/esm/utils/timeTracker/now/browser.js +0 -12
  619. package/esm/utils/timeTracker/now/node.js +0 -5
  620. package/esm/utils/timeTracker/timer.js +0 -6
  621. package/src/consent/index.ts +0 -8
  622. package/src/consent/sdkUserConsent.ts +0 -60
  623. package/src/dtos/types.ts +0 -294
  624. package/src/evaluator/Engine.ts +0 -73
  625. package/src/evaluator/combiners/and.ts +0 -29
  626. package/src/evaluator/combiners/ifelseif.ts +0 -56
  627. package/src/evaluator/condition/engineUtils.ts +0 -31
  628. package/src/evaluator/condition/index.ts +0 -50
  629. package/src/evaluator/convertions/index.ts +0 -7
  630. package/src/evaluator/index.ts +0 -199
  631. package/src/evaluator/matchers/all.ts +0 -6
  632. package/src/evaluator/matchers/between.ts +0 -10
  633. package/src/evaluator/matchers/boolean.ts +0 -8
  634. package/src/evaluator/matchers/cont_all.ts +0 -18
  635. package/src/evaluator/matchers/cont_any.ts +0 -13
  636. package/src/evaluator/matchers/cont_str.ts +0 -9
  637. package/src/evaluator/matchers/dependency.ts +0 -32
  638. package/src/evaluator/matchers/eq.ts +0 -8
  639. package/src/evaluator/matchers/eq_set.ts +0 -15
  640. package/src/evaluator/matchers/ew.ts +0 -9
  641. package/src/evaluator/matchers/gte.ts +0 -8
  642. package/src/evaluator/matchers/index.ts +0 -70
  643. package/src/evaluator/matchers/large_segment.ts +0 -11
  644. package/src/evaluator/matchers/lte.ts +0 -8
  645. package/src/evaluator/matchers/matcherTypes.ts +0 -42
  646. package/src/evaluator/matchers/part_of.ts +0 -15
  647. package/src/evaluator/matchers/prerequisites.ts +0 -24
  648. package/src/evaluator/matchers/rbsegment.ts +0 -74
  649. package/src/evaluator/matchers/segment.ts +0 -11
  650. package/src/evaluator/matchers/semver_between.ts +0 -15
  651. package/src/evaluator/matchers/semver_eq.ts +0 -13
  652. package/src/evaluator/matchers/semver_gte.ts +0 -13
  653. package/src/evaluator/matchers/semver_inlist.ts +0 -16
  654. package/src/evaluator/matchers/semver_lte.ts +0 -13
  655. package/src/evaluator/matchers/string.ts +0 -9
  656. package/src/evaluator/matchers/sw.ts +0 -9
  657. package/src/evaluator/matchers/whitelist.ts +0 -9
  658. package/src/evaluator/matchersTransform/index.ts +0 -118
  659. package/src/evaluator/matchersTransform/segment.ts +0 -10
  660. package/src/evaluator/matchersTransform/unaryNumeric.ts +0 -8
  661. package/src/evaluator/matchersTransform/whitelist.ts +0 -8
  662. package/src/evaluator/parser/index.ts +0 -82
  663. package/src/evaluator/treatments/index.ts +0 -53
  664. package/src/evaluator/types.ts +0 -34
  665. package/src/evaluator/value/index.ts +0 -37
  666. package/src/evaluator/value/sanitize.ts +0 -106
  667. package/src/index.ts +0 -14
  668. package/src/integrations/pluggable.ts +0 -39
  669. package/src/integrations/types.ts +0 -21
  670. package/src/listeners/browser.ts +0 -138
  671. package/src/listeners/node.ts +0 -81
  672. package/src/listeners/types.ts +0 -4
  673. package/src/logger/browser/DebugLogger.ts +0 -6
  674. package/src/logger/browser/ErrorLogger.ts +0 -6
  675. package/src/logger/browser/InfoLogger.ts +0 -6
  676. package/src/logger/browser/WarnLogger.ts +0 -6
  677. package/src/logger/constants.ts +0 -139
  678. package/src/logger/index.ts +0 -110
  679. package/src/logger/messages/debug.ts +0 -33
  680. package/src/logger/messages/error.ts +0 -39
  681. package/src/logger/messages/info.ts +0 -36
  682. package/src/logger/messages/warn.ts +0 -40
  683. package/src/logger/sdkLogger.ts +0 -46
  684. package/src/logger/types.ts +0 -21
  685. package/src/readiness/constants.ts +0 -12
  686. package/src/readiness/readinessManager.ts +0 -170
  687. package/src/readiness/sdkReadinessManager.ts +0 -121
  688. package/src/readiness/types.ts +0 -85
  689. package/src/sdkClient/client.ts +0 -217
  690. package/src/sdkClient/clientAttributesDecoration.ts +0 -139
  691. package/src/sdkClient/clientCS.ts +0 -34
  692. package/src/sdkClient/clientInputValidation.ts +0 -178
  693. package/src/sdkClient/identity.ts +0 -5
  694. package/src/sdkClient/sdkClient.ts +0 -77
  695. package/src/sdkClient/sdkClientMethod.ts +0 -24
  696. package/src/sdkClient/sdkClientMethodCS.ts +0 -85
  697. package/src/sdkFactory/index.ts +0 -132
  698. package/src/sdkFactory/types.ts +0 -119
  699. package/src/sdkManager/index.ts +0 -114
  700. package/src/services/decorateHeaders.ts +0 -37
  701. package/src/services/splitApi.ts +0 -148
  702. package/src/services/splitHttpClient.ts +0 -84
  703. package/src/services/types.ts +0 -86
  704. package/src/storages/AbstractMySegmentsCacheSync.ts +0 -94
  705. package/src/storages/AbstractSplitsCacheAsync.ts +0 -63
  706. package/src/storages/AbstractSplitsCacheSync.ts +0 -94
  707. package/src/storages/KeyBuilder.ts +0 -81
  708. package/src/storages/KeyBuilderCS.ts +0 -79
  709. package/src/storages/KeyBuilderSS.ts +0 -74
  710. package/src/storages/dataLoader.ts +0 -113
  711. package/src/storages/findLatencyIndex.ts +0 -16
  712. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +0 -86
  713. package/src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts +0 -140
  714. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +0 -244
  715. package/src/storages/inLocalStorage/constants.ts +0 -2
  716. package/src/storages/inLocalStorage/index.ts +0 -83
  717. package/src/storages/inLocalStorage/validateCache.ts +0 -93
  718. package/src/storages/inMemory/AttributesCacheInMemory.ts +0 -74
  719. package/src/storages/inMemory/EventsCacheInMemory.ts +0 -76
  720. package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +0 -69
  721. package/src/storages/inMemory/ImpressionsCacheInMemory.ts +0 -58
  722. package/src/storages/inMemory/InMemoryStorage.ts +0 -50
  723. package/src/storages/inMemory/InMemoryStorageCS.ts +0 -92
  724. package/src/storages/inMemory/MySegmentsCacheInMemory.ts +0 -49
  725. package/src/storages/inMemory/RBSegmentsCacheInMemory.ts +0 -72
  726. package/src/storages/inMemory/SegmentsCacheInMemory.ts +0 -74
  727. package/src/storages/inMemory/SplitsCacheInMemory.ts +0 -130
  728. package/src/storages/inMemory/TelemetryCacheInMemory.ts +0 -263
  729. package/src/storages/inMemory/UniqueKeysCacheInMemory.ts +0 -79
  730. package/src/storages/inMemory/UniqueKeysCacheInMemoryCS.ts +0 -80
  731. package/src/storages/inRedis/EventsCacheInRedis.ts +0 -75
  732. package/src/storages/inRedis/ImpressionCountsCacheInRedis.ts +0 -95
  733. package/src/storages/inRedis/ImpressionsCacheInRedis.ts +0 -61
  734. package/src/storages/inRedis/RBSegmentsCacheInRedis.ts +0 -79
  735. package/src/storages/inRedis/RedisAdapter.ts +0 -209
  736. package/src/storages/inRedis/SegmentsCacheInRedis.ts +0 -70
  737. package/src/storages/inRedis/SplitsCacheInRedis.ts +0 -268
  738. package/src/storages/inRedis/TelemetryCacheInRedis.ts +0 -144
  739. package/src/storages/inRedis/UniqueKeysCacheInRedis.ts +0 -75
  740. package/src/storages/inRedis/constants.ts +0 -4
  741. package/src/storages/inRedis/index.ts +0 -85
  742. package/src/storages/package.json +0 -3
  743. package/src/storages/pluggable/EventsCachePluggable.ts +0 -79
  744. package/src/storages/pluggable/ImpressionCountsCachePluggable.ts +0 -92
  745. package/src/storages/pluggable/ImpressionsCachePluggable.ts +0 -63
  746. package/src/storages/pluggable/RBSegmentsCachePluggable.ts +0 -76
  747. package/src/storages/pluggable/SegmentsCachePluggable.ts +0 -90
  748. package/src/storages/pluggable/SplitsCachePluggable.ts +0 -230
  749. package/src/storages/pluggable/TelemetryCachePluggable.ts +0 -159
  750. package/src/storages/pluggable/UniqueKeysCachePluggable.ts +0 -67
  751. package/src/storages/pluggable/constants.ts +0 -1
  752. package/src/storages/pluggable/inMemoryWrapper.ts +0 -130
  753. package/src/storages/pluggable/index.ts +0 -152
  754. package/src/storages/pluggable/wrapperAdapter.ts +0 -58
  755. package/src/storages/types.ts +0 -522
  756. package/src/storages/utils.ts +0 -80
  757. package/src/sync/offline/LocalhostFromObject.ts +0 -6
  758. package/src/sync/offline/splitsParser/parseCondition.ts +0 -59
  759. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +0 -72
  760. package/src/sync/offline/splitsParser/types.ts +0 -5
  761. package/src/sync/offline/syncManagerOffline.ts +0 -66
  762. package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +0 -98
  763. package/src/sync/polling/fetchers/mySegmentsFetcher.ts +0 -25
  764. package/src/sync/polling/fetchers/segmentChangesFetcher.ts +0 -41
  765. package/src/sync/polling/fetchers/splitChangesFetcher.ts +0 -85
  766. package/src/sync/polling/fetchers/types.ts +0 -25
  767. package/src/sync/polling/pollingManagerCS.ts +0 -116
  768. package/src/sync/polling/pollingManagerSS.ts +0 -56
  769. package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +0 -34
  770. package/src/sync/polling/syncTasks/segmentsSyncTask.ts +0 -30
  771. package/src/sync/polling/syncTasks/splitsSyncTask.ts +0 -35
  772. package/src/sync/polling/types.ts +0 -33
  773. package/src/sync/polling/updaters/mySegmentsUpdater.ts +0 -102
  774. package/src/sync/polling/updaters/segmentChangesUpdater.ts +0 -92
  775. package/src/sync/polling/updaters/splitChangesUpdater.ts +0 -218
  776. package/src/sync/streaming/AuthClient/index.ts +0 -42
  777. package/src/sync/streaming/AuthClient/types.ts +0 -20
  778. package/src/sync/streaming/SSEClient/index.ts +0 -103
  779. package/src/sync/streaming/SSEClient/types.ts +0 -13
  780. package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +0 -107
  781. package/src/sync/streaming/SSEHandler/NotificationParser.ts +0 -40
  782. package/src/sync/streaming/SSEHandler/index.ts +0 -105
  783. package/src/sync/streaming/SSEHandler/types.ts +0 -73
  784. package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +0 -134
  785. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +0 -99
  786. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +0 -145
  787. package/src/sync/streaming/UpdateWorkers/constants.ts +0 -3
  788. package/src/sync/streaming/UpdateWorkers/types.ts +0 -4
  789. package/src/sync/streaming/constants.ts +0 -44
  790. package/src/sync/streaming/parseUtils.ts +0 -100
  791. package/src/sync/streaming/pushManager.ts +0 -358
  792. package/src/sync/streaming/types.ts +0 -51
  793. package/src/sync/submitters/eventsSubmitter.ts +0 -35
  794. package/src/sync/submitters/impressionCountsSubmitter.ts +0 -44
  795. package/src/sync/submitters/impressionsSubmitter.ts +0 -66
  796. package/src/sync/submitters/submitter.ts +0 -76
  797. package/src/sync/submitters/submitterManager.ts +0 -48
  798. package/src/sync/submitters/telemetrySubmitter.ts +0 -148
  799. package/src/sync/submitters/types.ts +0 -241
  800. package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -35
  801. package/src/sync/syncManagerOnline.ts +0 -190
  802. package/src/sync/syncTask.ts +0 -83
  803. package/src/sync/types.ts +0 -48
  804. package/src/trackers/eventTracker.ts +0 -72
  805. package/src/trackers/impressionObserver/ImpressionObserver.ts +0 -20
  806. package/src/trackers/impressionObserver/buildKey.ts +0 -5
  807. package/src/trackers/impressionObserver/impressionObserverCS.ts +0 -14
  808. package/src/trackers/impressionObserver/impressionObserverSS.ts +0 -14
  809. package/src/trackers/impressionObserver/types.ts +0 -5
  810. package/src/trackers/impressionsTracker.ts +0 -87
  811. package/src/trackers/strategy/strategyDebug.ts +0 -23
  812. package/src/trackers/strategy/strategyNone.ts +0 -28
  813. package/src/trackers/strategy/strategyOptimized.ts +0 -35
  814. package/src/trackers/telemetryTracker.ts +0 -73
  815. package/src/trackers/types.ts +0 -86
  816. package/src/trackers/uniqueKeysTracker.ts +0 -50
  817. package/src/types.ts +0 -44
  818. package/src/utils/Backoff.ts +0 -51
  819. package/src/utils/LRUCache/LinkedList.ts +0 -130
  820. package/src/utils/LRUCache/index.ts +0 -43
  821. package/src/utils/MinEventEmitter.ts +0 -102
  822. package/src/utils/Semver.ts +0 -111
  823. package/src/utils/base64/index.ts +0 -74
  824. package/src/utils/constants/index.ts +0 -116
  825. package/src/utils/decompress/index.ts +0 -429
  826. package/src/utils/env/isLocalStorageAvailable.ts +0 -11
  827. package/src/utils/env/isNode.ts +0 -6
  828. package/src/utils/inputValidation/apiKey.ts +0 -52
  829. package/src/utils/inputValidation/attribute.ts +0 -21
  830. package/src/utils/inputValidation/attributes.ts +0 -26
  831. package/src/utils/inputValidation/event.ts +0 -24
  832. package/src/utils/inputValidation/eventProperties.ts +0 -78
  833. package/src/utils/inputValidation/eventValue.ts +0 -11
  834. package/src/utils/inputValidation/index.ts +0 -14
  835. package/src/utils/inputValidation/isOperational.ts +0 -17
  836. package/src/utils/inputValidation/key.ts +0 -51
  837. package/src/utils/inputValidation/preloadedData.ts +0 -57
  838. package/src/utils/inputValidation/split.ts +0 -27
  839. package/src/utils/inputValidation/splitExistence.ts +0 -19
  840. package/src/utils/inputValidation/splits.ts +0 -21
  841. package/src/utils/inputValidation/trafficType.ts +0 -27
  842. package/src/utils/inputValidation/trafficTypeExistence.ts +0 -33
  843. package/src/utils/jwt/index.ts +0 -16
  844. package/src/utils/jwt/types.ts +0 -10
  845. package/src/utils/key/index.ts +0 -34
  846. package/src/utils/labels/index.ts +0 -9
  847. package/src/utils/lang/binarySearch.ts +0 -41
  848. package/src/utils/lang/getFnName.ts +0 -8
  849. package/src/utils/lang/getGlobal.ts +0 -17
  850. package/src/utils/lang/index.ts +0 -279
  851. package/src/utils/lang/objectAssign.ts +0 -25
  852. package/src/utils/lang/sets.ts +0 -17
  853. package/src/utils/murmur3/common.ts +0 -54
  854. package/src/utils/murmur3/legacy.ts +0 -48
  855. package/src/utils/murmur3/murmur3.ts +0 -74
  856. package/src/utils/murmur3/murmur3_128.ts +0 -273
  857. package/src/utils/murmur3/murmur3_128_x86.ts +0 -188
  858. package/src/utils/murmur3/murmur3_64.ts +0 -36
  859. package/src/utils/murmur3/utfx.ts +0 -109
  860. package/src/utils/promise/thenable.ts +0 -4
  861. package/src/utils/promise/timeout.ts +0 -17
  862. package/src/utils/promise/wrapper.ts +0 -60
  863. package/src/utils/settingsValidation/consent.ts +0 -16
  864. package/src/utils/settingsValidation/impressionsMode.ts +0 -14
  865. package/src/utils/settingsValidation/index.ts +0 -207
  866. package/src/utils/settingsValidation/integrations/common.ts +0 -27
  867. package/src/utils/settingsValidation/integrations/configurable.ts +0 -20
  868. package/src/utils/settingsValidation/integrations/pluggable.ts +0 -19
  869. package/src/utils/settingsValidation/logger/builtinLogger.ts +0 -54
  870. package/src/utils/settingsValidation/logger/commons.ts +0 -24
  871. package/src/utils/settingsValidation/logger/pluggableLogger.ts +0 -35
  872. package/src/utils/settingsValidation/mode.ts +0 -17
  873. package/src/utils/settingsValidation/runtime.ts +0 -9
  874. package/src/utils/settingsValidation/splitFilters.ts +0 -197
  875. package/src/utils/settingsValidation/storage/storageCS.ts +0 -52
  876. package/src/utils/settingsValidation/types.ts +0 -27
  877. package/src/utils/settingsValidation/url.ts +0 -30
  878. package/src/utils/time/index.ts +0 -8
  879. package/src/utils/timeTracker/now/browser.ts +0 -12
  880. package/src/utils/timeTracker/now/node.ts +0 -6
  881. package/src/utils/timeTracker/timer.ts +0 -7
@@ -1,136 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SplitsUpdateWorker = void 0;
4
- var constants_1 = require("../../../logger/constants");
5
- var constants_2 = require("../../../readiness/constants");
6
- var Backoff_1 = require("../../../utils/Backoff");
7
- var constants_3 = require("../../../utils/constants");
8
- var constants_4 = require("../constants");
9
- var parseUtils_1 = require("../parseUtils");
10
- var constants_5 = require("./constants");
11
- /**
12
- * SplitsUpdateWorker factory
13
- */
14
- function SplitsUpdateWorker(log, storage, splitsSyncTask, splitsEventEmitter, telemetryTracker, segmentsSyncTask) {
15
- var ff = SplitsUpdateWorker(storage.splits);
16
- var rbs = SplitsUpdateWorker(storage.rbSegments);
17
- function SplitsUpdateWorker(cache) {
18
- var maxChangeNumber = -1;
19
- var handleNewEvent = false;
20
- var isHandlingEvent;
21
- var cdnBypass;
22
- var instantUpdate;
23
- var backoff = new Backoff_1.Backoff(__handleSplitUpdateCall, constants_5.FETCH_BACKOFF_BASE, constants_5.FETCH_BACKOFF_MAX_WAIT);
24
- function __handleSplitUpdateCall() {
25
- isHandlingEvent = true;
26
- if (maxChangeNumber > cache.getChangeNumber()) {
27
- handleNewEvent = false;
28
- // fetch splits revalidating data if cached
29
- splitsSyncTask.execute(true, cdnBypass ? maxChangeNumber : undefined, instantUpdate).then(function () {
30
- if (!isHandlingEvent)
31
- return; // halt if `stop` has been called
32
- if (handleNewEvent) {
33
- __handleSplitUpdateCall();
34
- }
35
- else {
36
- if (instantUpdate)
37
- telemetryTracker.trackUpdatesFromSSE(constants_3.SPLITS);
38
- // fetch new registered segments for server-side API. Not retrying on error
39
- if (segmentsSyncTask)
40
- segmentsSyncTask.execute(true);
41
- var attempts = backoff.attempts + 1;
42
- if (ff.isSync() && rbs.isSync()) {
43
- log.debug("Refresh completed" + (cdnBypass ? ' bypassing the CDN' : '') + " in " + attempts + " attempts.");
44
- isHandlingEvent = false;
45
- return;
46
- }
47
- if (attempts < constants_5.FETCH_BACKOFF_MAX_RETRIES) {
48
- backoff.scheduleCall();
49
- return;
50
- }
51
- if (cdnBypass) {
52
- log.debug("No changes fetched after " + attempts + " attempts with CDN bypassed.");
53
- isHandlingEvent = false;
54
- }
55
- else {
56
- backoff.reset();
57
- cdnBypass = true;
58
- __handleSplitUpdateCall();
59
- }
60
- }
61
- });
62
- }
63
- else {
64
- isHandlingEvent = false;
65
- }
66
- }
67
- return {
68
- /**
69
- * Invoked by NotificationProcessor on SPLIT_UPDATE or RB_SEGMENT_UPDATE event
70
- *
71
- * @param changeNumber - change number of the notification
72
- */
73
- put: function (_a, payload) {
74
- var changeNumber = _a.changeNumber, pcn = _a.pcn, type = _a.type;
75
- var currentChangeNumber = cache.getChangeNumber();
76
- if (changeNumber <= currentChangeNumber || changeNumber <= maxChangeNumber)
77
- return;
78
- maxChangeNumber = changeNumber;
79
- handleNewEvent = true;
80
- cdnBypass = false;
81
- instantUpdate = undefined;
82
- if (payload && currentChangeNumber === pcn) {
83
- instantUpdate = { payload: payload, changeNumber: changeNumber, type: type };
84
- }
85
- if (backoff.timeoutID || !isHandlingEvent)
86
- __handleSplitUpdateCall();
87
- backoff.reset();
88
- },
89
- stop: function () {
90
- isHandlingEvent = false;
91
- backoff.reset();
92
- },
93
- isSync: function () {
94
- return maxChangeNumber <= cache.getChangeNumber();
95
- }
96
- };
97
- }
98
- return {
99
- put: function (parsedData) {
100
- if (parsedData.d && parsedData.c !== undefined) {
101
- try {
102
- var payload = (0, parseUtils_1.parseFFUpdatePayload)(parsedData.c, parsedData.d);
103
- if (payload) {
104
- (parsedData.type === constants_4.RB_SEGMENT_UPDATE ? rbs : ff).put(parsedData, payload);
105
- return;
106
- }
107
- }
108
- catch (e) {
109
- log.warn(constants_1.STREAMING_PARSING_SPLIT_UPDATE, [parsedData.type, e]);
110
- }
111
- }
112
- (parsedData.type === constants_4.RB_SEGMENT_UPDATE ? rbs : ff).put(parsedData);
113
- },
114
- /**
115
- * Invoked by NotificationProcessor on SPLIT_KILL event
116
- *
117
- * @param changeNumber - change number of the notification
118
- * @param splitName - name of split to kill
119
- * @param defaultTreatment - default treatment value
120
- */
121
- killSplit: function (_a) {
122
- var changeNumber = _a.changeNumber, splitName = _a.splitName, defaultTreatment = _a.defaultTreatment;
123
- if (storage.splits.killLocally(splitName, defaultTreatment, changeNumber)) {
124
- // trigger an SDK_UPDATE if Split was killed locally
125
- splitsEventEmitter.emit(constants_2.SDK_SPLITS_ARRIVED, true);
126
- }
127
- // queues the SplitChanges fetch (only if changeNumber is newer)
128
- ff.put({ changeNumber: changeNumber });
129
- },
130
- stop: function () {
131
- ff.stop();
132
- rbs.stop();
133
- }
134
- };
135
- }
136
- exports.SplitsUpdateWorker = SplitsUpdateWorker;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FETCH_BACKOFF_MAX_RETRIES = exports.FETCH_BACKOFF_MAX_WAIT = exports.FETCH_BACKOFF_BASE = void 0;
4
- exports.FETCH_BACKOFF_BASE = 10000; // backoff base starting at 10 seconds
5
- exports.FETCH_BACKOFF_MAX_WAIT = 60000; // don't wait for more than 1 minute
6
- exports.FETCH_BACKOFF_MAX_RETRIES = 10; // max retries
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ControlType = exports.OCCUPANCY = exports.CONTROL = exports.RB_SEGMENT_UPDATE = exports.SPLIT_UPDATE = exports.SPLIT_KILL = exports.SEGMENT_UPDATE = exports.MEMBERSHIPS_LS_UPDATE = exports.MEMBERSHIPS_MS_UPDATE = exports.PUSH_SUBSYSTEM_DOWN = exports.PUSH_SUBSYSTEM_UP = exports.PUSH_RETRYABLE_ERROR = exports.PUSH_NONRETRYABLE_ERROR = exports.SECONDS_BEFORE_EXPIRATION = void 0;
4
- // time for refresh token
5
- exports.SECONDS_BEFORE_EXPIRATION = 600;
6
- // Internal SDK events, subscribed by SyncManager and PushManager
7
- /**
8
- * emitted on SSE and Authenticate non-recoverable errors, STREAMING_DISABLED control notification and authentication with pushEnabled false
9
- * triggers `handleNonRetryableError` call
10
- */
11
- exports.PUSH_NONRETRYABLE_ERROR = 'PUSH_NONRETRYABLE_ERROR';
12
- /**
13
- * emitted on SSE and Authenticate recoverable errors
14
- * triggers `handleRetryableError` call
15
- */
16
- exports.PUSH_RETRYABLE_ERROR = 'PUSH_RETRYABLE_ERROR';
17
- /**
18
- * emitted on STREAMING_RESUMED control notification, OCCUPANCY different than 0, and SSE onopen event
19
- * triggers `stopPollingAndSyncAll` call
20
- */
21
- exports.PUSH_SUBSYSTEM_UP = 'PUSH_SUBSYSTEM_UP';
22
- /**
23
- * emitted on STREAMING_PAUSED control notification, OCCUPANCY equal to 0, PUSH_NONRETRYABLE_ERROR and PUSH_RETRYABLE_ERROR events.
24
- * triggers `startPolling` and `stopWorkers` calls
25
- */
26
- exports.PUSH_SUBSYSTEM_DOWN = 'PUSH_SUBSYSTEM_DOWN';
27
- // Update-type push notifications, handled by NotificationProcessor
28
- exports.MEMBERSHIPS_MS_UPDATE = 'MEMBERSHIPS_MS_UPDATE';
29
- exports.MEMBERSHIPS_LS_UPDATE = 'MEMBERSHIPS_LS_UPDATE';
30
- exports.SEGMENT_UPDATE = 'SEGMENT_UPDATE';
31
- exports.SPLIT_KILL = 'SPLIT_KILL';
32
- exports.SPLIT_UPDATE = 'SPLIT_UPDATE';
33
- exports.RB_SEGMENT_UPDATE = 'RB_SEGMENT_UPDATE';
34
- // Control-type push notifications, handled by NotificationKeeper
35
- exports.CONTROL = 'CONTROL';
36
- exports.OCCUPANCY = 'OCCUPANCY';
37
- var ControlType;
38
- (function (ControlType) {
39
- ControlType["STREAMING_DISABLED"] = "STREAMING_DISABLED";
40
- ControlType["STREAMING_PAUSED"] = "STREAMING_PAUSED";
41
- ControlType["STREAMING_RESUMED"] = "STREAMING_RESUMED";
42
- ControlType["STREAMING_RESET"] = "STREAMING_RESET";
43
- })(ControlType = exports.ControlType || (exports.ControlType = {}));
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDelay = exports.parseFFUpdatePayload = exports.isInBitmap = exports.parseBitmap = exports.parseKeyList = void 0;
4
- var decompress_1 = require("../../utils/decompress");
5
- var base64_1 = require("../../utils/base64");
6
- var murmur3_1 = require("../../utils/murmur3/murmur3");
7
- var GZIP = 1;
8
- var ZLIB = 2;
9
- function Uint8ArrayToString(myUint8Arr) {
10
- return String.fromCharCode.apply(null, myUint8Arr);
11
- }
12
- function StringToUint8Array(myString) {
13
- var charCodes = myString.split('').map(function (e) { return e.charCodeAt(0); });
14
- return new Uint8Array(charCodes);
15
- }
16
- /**
17
- * Decode and decompress 'data' with 'compression' algorithm
18
- *
19
- * @param data - base64 encoded string
20
- * @param compression - 1 GZIP, 2 ZLIB
21
- * @returns
22
- * @throws if data string cannot be decoded, decompressed or the provided compression value is invalid (not 1 or 2)
23
- */
24
- function decompress(data, compression) {
25
- var compressData = (0, base64_1.decodeFromBase64)(data);
26
- var binData = StringToUint8Array(compressData);
27
- if (typeof decompress_1.algorithms === 'string')
28
- throw new Error(decompress_1.algorithms);
29
- if (compression === GZIP)
30
- return decompress_1.algorithms.gunzipSync(binData);
31
- if (compression === ZLIB)
32
- return decompress_1.algorithms.unzlibSync(binData);
33
- throw new Error("Invalid compression algorithm #" + compression);
34
- }
35
- /**
36
- * Decode, decompress and parse the provided 'data' into a KeyList object
37
- *
38
- * @param data - base64 encoded string
39
- * @param compression - 1 GZIP, 2 ZLIB
40
- * @param avoidPrecisionLoss - true as default, set it as false if dont need to avoid precission loss
41
- * @returns keyList
42
- * @throws if data string cannot be decoded, decompressed or parsed
43
- */
44
- function parseKeyList(data, compression, avoidPrecisionLoss) {
45
- if (avoidPrecisionLoss === void 0) { avoidPrecisionLoss = true; }
46
- var binKeyList = decompress(data, compression);
47
- var strKeyList = Uint8ArrayToString(binKeyList);
48
- // replace numbers to strings, to avoid losing precision
49
- if (avoidPrecisionLoss)
50
- strKeyList = strKeyList.replace(/\d+/g, '"$&"');
51
- return JSON.parse(strKeyList);
52
- }
53
- exports.parseKeyList = parseKeyList;
54
- /**
55
- * Decode, decompress and parse the provided 'data' into a Bitmap object
56
- *
57
- * @param data - base64 encoded string
58
- * @param compression - 1 GZIP, 2 ZLIB
59
- * @returns Bitmap
60
- * @throws if data string cannot be decoded or decompressed
61
- */
62
- function parseBitmap(data, compression) {
63
- return decompress(data, compression);
64
- }
65
- exports.parseBitmap = parseBitmap;
66
- /**
67
- * Check if the 'bitmap' bit at 'hash64hex' position is 1
68
- *
69
- * @param bitmap - Uint8Array bitmap
70
- * @param hash64hex - 16-chars string, representing a number in hexa
71
- * @returns whether the provided 'hash64hex' index is set in the bitmap
72
- */
73
- function isInBitmap(bitmap, hash64hex) {
74
- // using the lowest 32 bits as index, to avoid losing precision when converting to number
75
- var index = parseInt(hash64hex.slice(8), 16) % (bitmap.length * 8);
76
- var internal = Math.floor(index / 8);
77
- var offset = index % 8;
78
- return (bitmap[internal] & 1 << offset) > 0;
79
- }
80
- exports.isInBitmap = isInBitmap;
81
- /**
82
- * Parse feature flags notifications for instant feature flag updates
83
- */
84
- function parseFFUpdatePayload(compression, data) {
85
- return compression > 0 ?
86
- parseKeyList(data, compression, false) :
87
- JSON.parse((0, base64_1.decodeFromBase64)(data));
88
- }
89
- exports.parseFFUpdatePayload = parseFFUpdatePayload;
90
- var DEFAULT_MAX_INTERVAL = 60000;
91
- function getDelay(parsedData, matchingKey) {
92
- if (parsedData.h === 0)
93
- return 0;
94
- var interval = parsedData.i || DEFAULT_MAX_INTERVAL;
95
- var seed = parsedData.s || 0;
96
- return (0, murmur3_1.hash)(matchingKey, seed) % interval;
97
- }
98
- exports.getDelay = getDelay;
@@ -1,317 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pushManagerFactory = void 0;
4
- var objectAssign_1 = require("../../utils/lang/objectAssign");
5
- var Backoff_1 = require("../../utils/Backoff");
6
- var SSEHandler_1 = require("./SSEHandler");
7
- var MySegmentsUpdateWorker_1 = require("./UpdateWorkers/MySegmentsUpdateWorker");
8
- var SegmentsUpdateWorker_1 = require("./UpdateWorkers/SegmentsUpdateWorker");
9
- var SplitsUpdateWorker_1 = require("./UpdateWorkers/SplitsUpdateWorker");
10
- var AuthClient_1 = require("./AuthClient");
11
- var lang_1 = require("../../utils/lang");
12
- var SSEClient_1 = require("./SSEClient");
13
- var key_1 = require("../../utils/key");
14
- var constants_1 = require("./constants");
15
- var constants_2 = require("../../logger/constants");
16
- var types_1 = require("./SSEHandler/types");
17
- var parseUtils_1 = require("./parseUtils");
18
- var murmur3_64_1 = require("../../utils/murmur3/murmur3_64");
19
- var constants_3 = require("../../utils/constants");
20
- /**
21
- * PushManager factory:
22
- * - for server-side if key is not provided in settings.
23
- * - for client-side, with support for multiple clients, if key is provided in settings
24
- */
25
- function pushManagerFactory(params, pollingManager) {
26
- var settings = params.settings, storage = params.storage, splitApi = params.splitApi, readiness = params.readiness, platform = params.platform, telemetryTracker = params.telemetryTracker;
27
- // `userKey` is the matching key of main client in client-side SDK.
28
- // It can be used to check if running on client-side or server-side SDK.
29
- var userKey = settings.core.key ? (0, key_1.getMatching)(settings.core.key) : undefined;
30
- var log = settings.log;
31
- var sseClient;
32
- try {
33
- // `useHeaders` false for client-side, even if the platform EventSource supports headers (e.g., React Native).
34
- sseClient = new SSEClient_1.SSEClient(settings, platform);
35
- }
36
- catch (e) {
37
- log.warn(constants_2.STREAMING_FALLBACK, [e]);
38
- return;
39
- }
40
- var authenticate = (0, AuthClient_1.authenticateFactory)(splitApi.fetchAuth);
41
- // init feedback loop
42
- var pushEmitter = new platform.EventEmitter();
43
- var sseHandler = (0, SSEHandler_1.SSEHandlerFactory)(log, pushEmitter, telemetryTracker);
44
- sseClient.setEventHandler(sseHandler);
45
- // init workers
46
- // MySegmentsUpdateWorker (client-side) are initiated in `add` method
47
- var segmentsUpdateWorker = userKey ? undefined : (0, SegmentsUpdateWorker_1.SegmentsUpdateWorker)(log, pollingManager.segmentsSyncTask, storage.segments);
48
- // For server-side we pass the segmentsSyncTask, used by SplitsUpdateWorker to fetch new segments
49
- var splitsUpdateWorker = (0, SplitsUpdateWorker_1.SplitsUpdateWorker)(log, storage, pollingManager.splitsSyncTask, readiness.splits, telemetryTracker, userKey ? undefined : pollingManager.segmentsSyncTask);
50
- // [Only for client-side] map of hashes to user keys, to dispatch membership update events to the corresponding MySegmentsUpdateWorker
51
- var userKeyHashes = {};
52
- // [Only for client-side] map of user keys to their corresponding hash64 and MySegmentsUpdateWorkers.
53
- // Hash64 is used to process membership update events and dispatch actions to the corresponding MySegmentsUpdateWorker.
54
- var clients = {};
55
- // [Only for client-side] variable to flag that a new client was added. It is needed to reconnect streaming.
56
- var connectForNewClient = false;
57
- // flag that indicates if `stop/disconnectPush` was called, either by the SyncManager, when the client is destroyed, or due to a PUSH_NONRETRYABLE_ERROR error.
58
- // It is used to halt the `connectPush` process if it was in progress.
59
- var disconnected;
60
- // flag that indicates a PUSH_NONRETRYABLE_ERROR, condition with which starting pushManager again is ignored.
61
- // true if STREAMING_DISABLED control event, or 'pushEnabled: false', or non-recoverable SSE or Auth errors.
62
- var disabled; // `disabled` implies `disconnected === true`
63
- /** PushManager functions related to initialization */
64
- var connectPushRetryBackoff = new Backoff_1.Backoff(connectPush, settings.scheduler.pushRetryBackoffBase);
65
- var timeoutIdTokenRefresh;
66
- var timeoutIdSseOpen;
67
- function scheduleTokenRefreshAndSse(authData) {
68
- // clear scheduled tasks if exist
69
- if (timeoutIdTokenRefresh)
70
- clearTimeout(timeoutIdTokenRefresh);
71
- if (timeoutIdSseOpen)
72
- clearTimeout(timeoutIdSseOpen);
73
- // Set token refresh 10 minutes before `expirationTime - issuedAt`
74
- var decodedToken = authData.decodedToken;
75
- var refreshTokenDelay = decodedToken.exp - decodedToken.iat - constants_1.SECONDS_BEFORE_EXPIRATION;
76
- // Default connDelay of 60 secs
77
- var connDelay = typeof authData.connDelay === 'number' && authData.connDelay >= 0 ? authData.connDelay : 60;
78
- log.info(constants_2.STREAMING_REFRESH_TOKEN, [refreshTokenDelay, connDelay]);
79
- timeoutIdTokenRefresh = setTimeout(connectPush, refreshTokenDelay * 1000);
80
- timeoutIdSseOpen = setTimeout(function () {
81
- // halt if disconnected
82
- if (disconnected)
83
- return;
84
- sseClient.open(authData);
85
- }, connDelay * 1000);
86
- telemetryTracker.streamingEvent(constants_3.TOKEN_REFRESH, decodedToken.exp);
87
- }
88
- function connectPush() {
89
- // Guard condition in case `stop/disconnectPush` has been called (e.g., calling SDK destroy, or app signal close/background)
90
- if (disconnected)
91
- return;
92
- // @TODO distinguish log for 'Connecting' (1st time) and 'Re-connecting'
93
- log.info(constants_2.STREAMING_CONNECTING);
94
- disconnected = false;
95
- var userKeys = userKey ? Object.keys(clients) : undefined;
96
- authenticate(userKeys).then(function (authData) {
97
- if (disconnected)
98
- return;
99
- // 'pushEnabled: false' is handled as a PUSH_NONRETRYABLE_ERROR instead of PUSH_SUBSYSTEM_DOWN, in order to
100
- // close the sseClient in case the org has been bloqued while the instance was connected to streaming
101
- if (!authData.pushEnabled) {
102
- log.info(constants_2.STREAMING_DISABLED);
103
- pushEmitter.emit(constants_1.PUSH_NONRETRYABLE_ERROR);
104
- return;
105
- }
106
- // [Only for client-side] don't open SSE connection if a new shared client was added, since it means that a new authentication is taking place
107
- if (userKeys && userKeys.length < Object.keys(clients).length)
108
- return;
109
- // Schedule SSE connection and refresh token
110
- scheduleTokenRefreshAndSse(authData);
111
- }).catch(function (error) {
112
- if (disconnected)
113
- return;
114
- log.error(constants_2.ERROR_STREAMING_AUTH, [error.message]);
115
- // Handle 4XX HTTP errors: 401 (invalid SDK Key) or 400 (using incorrect SDK Key, i.e., client-side SDK Key on server-side)
116
- if (error.statusCode >= 400 && error.statusCode < 500) {
117
- telemetryTracker.streamingEvent(constants_3.AUTH_REJECTION);
118
- pushEmitter.emit(constants_1.PUSH_NONRETRYABLE_ERROR);
119
- return;
120
- }
121
- // Handle other HTTP and network errors as recoverable errors
122
- pushEmitter.emit(constants_1.PUSH_RETRYABLE_ERROR);
123
- });
124
- }
125
- // close SSE connection and cancel scheduled tasks
126
- function disconnectPush() {
127
- // Halt disconnecting, just to avoid redundant logs if called multiple times
128
- if (disconnected)
129
- return;
130
- disconnected = true;
131
- sseClient.close();
132
- log.info(constants_2.STREAMING_DISCONNECTING);
133
- if (timeoutIdTokenRefresh)
134
- clearTimeout(timeoutIdTokenRefresh);
135
- if (timeoutIdSseOpen)
136
- clearTimeout(timeoutIdSseOpen);
137
- connectPushRetryBackoff.reset();
138
- stopWorkers();
139
- }
140
- // cancel scheduled fetch retries of Splits, Segments, and MySegments Update Workers
141
- function stopWorkers() {
142
- splitsUpdateWorker.stop();
143
- if (userKey)
144
- (0, lang_1.forOwn)(clients, function (_a) {
145
- var worker = _a.worker;
146
- return worker.stop();
147
- });
148
- else
149
- segmentsUpdateWorker.stop();
150
- }
151
- pushEmitter.on(constants_1.PUSH_SUBSYSTEM_DOWN, stopWorkers);
152
- // Only required when streaming connects after a PUSH_RETRYABLE_ERROR.
153
- // Otherwise it is unnecessary (e.g, STREAMING_RESUMED).
154
- pushEmitter.on(constants_1.PUSH_SUBSYSTEM_UP, function () {
155
- connectPushRetryBackoff.reset();
156
- });
157
- /** Fallback to polling without retry due to: STREAMING_DISABLED control event, or 'pushEnabled: false', or non-recoverable SSE and Authentication errors */
158
- pushEmitter.on(constants_1.PUSH_NONRETRYABLE_ERROR, function handleNonRetryableError() {
159
- disabled = true;
160
- // Note: `stopWorkers` is been called twice, but it is not harmful
161
- disconnectPush();
162
- pushEmitter.emit(constants_1.PUSH_SUBSYSTEM_DOWN); // no harm if polling already
163
- });
164
- /** Fallback to polling with retry due to recoverable SSE and Authentication errors */
165
- pushEmitter.on(constants_1.PUSH_RETRYABLE_ERROR, function handleRetryableError() {
166
- // SSE connection is closed to avoid repeated errors due to retries
167
- sseClient.close();
168
- // retry streaming reconnect with backoff algorithm
169
- var delayInMillis = connectPushRetryBackoff.scheduleCall();
170
- log.info(constants_2.STREAMING_RECONNECT, [delayInMillis / 1000]);
171
- pushEmitter.emit(constants_1.PUSH_SUBSYSTEM_DOWN); // no harm if polling already
172
- });
173
- /** STREAMING_RESET notification. Unlike a PUSH_RETRYABLE_ERROR, it doesn't emit PUSH_SUBSYSTEM_DOWN to fallback polling */
174
- pushEmitter.on(constants_1.ControlType.STREAMING_RESET, function handleStreamingReset() {
175
- if (disconnected)
176
- return; // should never happen
177
- // Minimum required clean-up.
178
- // `disconnectPush` cannot be called because it sets `disconnected` and thus `connectPush` will not execute
179
- if (timeoutIdTokenRefresh)
180
- clearTimeout(timeoutIdTokenRefresh);
181
- connectPush();
182
- });
183
- /** Functions related to synchronization (Queues and Workers in the spec) */
184
- pushEmitter.on(constants_1.SPLIT_KILL, splitsUpdateWorker.killSplit);
185
- pushEmitter.on(constants_1.SPLIT_UPDATE, splitsUpdateWorker.put);
186
- pushEmitter.on(constants_1.RB_SEGMENT_UPDATE, splitsUpdateWorker.put);
187
- function handleMySegmentsUpdate(parsedData) {
188
- switch (parsedData.u) {
189
- case types_1.UpdateStrategy.BoundedFetchRequest: {
190
- var bitmap_1;
191
- try {
192
- bitmap_1 = (0, parseUtils_1.parseBitmap)(parsedData.d, parsedData.c);
193
- }
194
- catch (e) {
195
- log.warn(constants_2.STREAMING_PARSING_MEMBERSHIPS_UPDATE, ['BoundedFetchRequest', e]);
196
- break;
197
- }
198
- (0, lang_1.forOwn)(clients, function (_a, matchingKey) {
199
- var hash64 = _a.hash64, worker = _a.worker;
200
- if ((0, parseUtils_1.isInBitmap)(bitmap_1, hash64.hex)) {
201
- worker.put(parsedData, undefined, (0, parseUtils_1.getDelay)(parsedData, matchingKey));
202
- }
203
- });
204
- return;
205
- }
206
- case types_1.UpdateStrategy.KeyList: {
207
- var keyList = void 0, added_1, removed_1;
208
- try {
209
- keyList = (0, parseUtils_1.parseKeyList)(parsedData.d, parsedData.c);
210
- added_1 = new Set(keyList.a);
211
- removed_1 = new Set(keyList.r);
212
- }
213
- catch (e) {
214
- log.warn(constants_2.STREAMING_PARSING_MEMBERSHIPS_UPDATE, ['KeyList', e]);
215
- break;
216
- }
217
- if (!parsedData.n || !parsedData.n.length) {
218
- log.warn(constants_2.STREAMING_PARSING_MEMBERSHIPS_UPDATE, ['KeyList', 'No segment name was provided']);
219
- break;
220
- }
221
- (0, lang_1.forOwn)(clients, function (_a) {
222
- var hash64 = _a.hash64, worker = _a.worker;
223
- var add = added_1.has(hash64.dec) ? true : removed_1.has(hash64.dec) ? false : undefined;
224
- if (add !== undefined) {
225
- worker.put(parsedData, {
226
- added: add ? [parsedData.n[0]] : [],
227
- removed: add ? [] : [parsedData.n[0]]
228
- });
229
- }
230
- });
231
- return;
232
- }
233
- case types_1.UpdateStrategy.SegmentRemoval:
234
- if (!parsedData.n || !parsedData.n.length) {
235
- log.warn(constants_2.STREAMING_PARSING_MEMBERSHIPS_UPDATE, ['SegmentRemoval', 'No segment name was provided']);
236
- break;
237
- }
238
- (0, lang_1.forOwn)(clients, function (_a) {
239
- var worker = _a.worker;
240
- worker.put(parsedData, {
241
- added: [],
242
- removed: parsedData.n
243
- });
244
- });
245
- return;
246
- }
247
- // `UpdateStrategy.UnboundedFetchRequest` and fallbacks of other cases
248
- (0, lang_1.forOwn)(clients, function (_a, matchingKey) {
249
- var worker = _a.worker;
250
- worker.put(parsedData, undefined, (0, parseUtils_1.getDelay)(parsedData, matchingKey));
251
- });
252
- }
253
- if (userKey) {
254
- pushEmitter.on(constants_1.MEMBERSHIPS_MS_UPDATE, handleMySegmentsUpdate);
255
- pushEmitter.on(constants_1.MEMBERSHIPS_LS_UPDATE, handleMySegmentsUpdate);
256
- }
257
- else {
258
- pushEmitter.on(constants_1.SEGMENT_UPDATE, segmentsUpdateWorker.put);
259
- }
260
- return (0, objectAssign_1.objectAssign)(
261
- // Expose Event Emitter functionality and Event constants
262
- Object.create(pushEmitter), {
263
- // Stop/pause push mode.
264
- // It doesn't emit events. Neither PUSH_SUBSYSTEM_DOWN to start polling.
265
- stop: function () {
266
- disconnectPush(); // `handleNonRetryableError` cannot be used as `stop`, because it emits PUSH_SUBSYSTEM_DOWN event, which starts polling.
267
- if (userKey)
268
- this.remove(userKey); // Necessary to properly resume streaming in client-side (e.g., RN SDK transition to foreground).
269
- },
270
- // Start/resume push mode.
271
- // It eventually emits PUSH_SUBSYSTEM_DOWN, that starts polling, or PUSH_SUBSYSTEM_UP, that executes a syncAll
272
- start: function () {
273
- // Guard condition to avoid calling `connectPush` again if the `start` method is called multiple times or if push has been disabled.
274
- if (disabled || disconnected === false)
275
- return;
276
- disconnected = false;
277
- if (userKey)
278
- this.add(userKey, pollingManager.segmentsSyncTask); // client-side
279
- else
280
- setTimeout(connectPush); // server-side runs in next cycle as in client-side, for consistency with client-side
281
- },
282
- // true/false if start or stop was called last respectively
283
- isRunning: function () {
284
- return disconnected === false;
285
- },
286
- // [Only for client-side]
287
- add: function (userKey, mySegmentsSyncTask) {
288
- var hash = (0, AuthClient_1.hashUserKey)(userKey);
289
- if (!userKeyHashes[hash]) {
290
- userKeyHashes[hash] = userKey;
291
- clients[userKey] = {
292
- hash64: (0, murmur3_64_1.hash64)(userKey),
293
- worker: (0, MySegmentsUpdateWorker_1.MySegmentsUpdateWorker)(log, storage, mySegmentsSyncTask, telemetryTracker)
294
- };
295
- connectForNewClient = true; // we must reconnect on start, to listen the channel for the new user key
296
- // Reconnects in case of a new client.
297
- // Run in next event-loop cycle to save authentication calls
298
- // in case multiple clients are created in the current cycle.
299
- if (this.isRunning()) {
300
- setTimeout(function checkForReconnect() {
301
- if (connectForNewClient) {
302
- connectForNewClient = false;
303
- connectPush();
304
- }
305
- }, 0);
306
- }
307
- }
308
- },
309
- // [Only for client-side]
310
- remove: function (userKey) {
311
- var hash = (0, AuthClient_1.hashUserKey)(userKey);
312
- delete userKeyHashes[hash];
313
- delete clients[userKey];
314
- }
315
- });
316
- }
317
- exports.pushManagerFactory = pushManagerFactory;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.eventsSubmitterFactory = void 0;
4
- var submitter_1 = require("./submitter");
5
- var constants_1 = require("../../logger/constants");
6
- var DATA_NAME = 'events';
7
- /**
8
- * Submitter that periodically posts tracked events
9
- */
10
- function eventsSubmitterFactory(params) {
11
- var _a = params.settings, log = _a.log, eventsPushRate = _a.scheduler.eventsPushRate, eventsFirstPushWindow = _a.startup.eventsFirstPushWindow, postEventsBulk = params.splitApi.postEventsBulk, events = params.storage.events;
12
- // don't retry events.
13
- var submitter = (0, submitter_1.submitterFactory)(log, postEventsBulk, events, eventsPushRate, DATA_NAME);
14
- // Set a timer for the first push window of events.
15
- if (eventsFirstPushWindow > 0)
16
- submitter = (0, submitter_1.firstPushWindowDecorator)(submitter, eventsFirstPushWindow);
17
- // register events submitter to be executed when events cache is full
18
- events.setOnFullQueueCb(function () {
19
- if (submitter.isRunning()) {
20
- log.info(constants_1.SUBMITTERS_PUSH_FULL_QUEUE, [DATA_NAME]);
21
- submitter.execute();
22
- }
23
- // If submitter is stopped (e.g., user consent declined or unknown, or app state offline), we don't send the data.
24
- // Data will be sent when submitter is resumed.
25
- });
26
- return submitter;
27
- }
28
- exports.eventsSubmitterFactory = eventsSubmitterFactory;