@splitsoftware/splitio-commons 2.4.2-rc.3 → 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 (884) hide show
  1. package/CHANGES.txt +895 -152
  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 -2083
  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 -50
  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 -117
  195. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +0 -204
  196. package/cjs/storages/inLocalStorage/constants.js +0 -5
  197. package/cjs/storages/inLocalStorage/index.js +0 -91
  198. package/cjs/storages/inLocalStorage/storageAdapter.js +0 -54
  199. package/cjs/storages/inLocalStorage/validateCache.js +0 -85
  200. package/cjs/storages/inMemory/AttributesCacheInMemory.js +0 -70
  201. package/cjs/storages/inMemory/EventsCacheInMemory.js +0 -63
  202. package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -65
  203. package/cjs/storages/inMemory/ImpressionsCacheInMemory.js +0 -51
  204. package/cjs/storages/inMemory/InMemoryStorage.js +0 -46
  205. package/cjs/storages/inMemory/InMemoryStorageCS.js +0 -63
  206. package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +0 -46
  207. package/cjs/storages/inMemory/RBSegmentsCacheInMemory.js +0 -61
  208. package/cjs/storages/inMemory/SegmentsCacheInMemory.js +0 -61
  209. package/cjs/storages/inMemory/SplitsCacheInMemory.js +0 -121
  210. package/cjs/storages/inMemory/TelemetryCacheInMemory.js +0 -207
  211. package/cjs/storages/inMemory/UniqueKeysCacheInMemory.js +0 -72
  212. package/cjs/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -71
  213. package/cjs/storages/inRedis/EventsCacheInRedis.js +0 -60
  214. package/cjs/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -85
  215. package/cjs/storages/inRedis/ImpressionsCacheInRedis.js +0 -45
  216. package/cjs/storages/inRedis/RBSegmentsCacheInRedis.js +0 -64
  217. package/cjs/storages/inRedis/RedisAdapter.js +0 -195
  218. package/cjs/storages/inRedis/SegmentsCacheInRedis.js +0 -57
  219. package/cjs/storages/inRedis/SplitsCacheInRedis.js +0 -243
  220. package/cjs/storages/inRedis/TelemetryCacheInRedis.js +0 -124
  221. package/cjs/storages/inRedis/UniqueKeysCacheInRedis.js +0 -69
  222. package/cjs/storages/inRedis/constants.js +0 -7
  223. package/cjs/storages/inRedis/index.js +0 -73
  224. package/cjs/storages/pluggable/EventsCachePluggable.js +0 -64
  225. package/cjs/storages/pluggable/ImpressionCountsCachePluggable.js +0 -81
  226. package/cjs/storages/pluggable/ImpressionsCachePluggable.js +0 -48
  227. package/cjs/storages/pluggable/RBSegmentsCachePluggable.js +0 -64
  228. package/cjs/storages/pluggable/SegmentsCachePluggable.js +0 -80
  229. package/cjs/storages/pluggable/SplitsCachePluggable.js +0 -212
  230. package/cjs/storages/pluggable/TelemetryCachePluggable.js +0 -141
  231. package/cjs/storages/pluggable/UniqueKeysCachePluggable.js +0 -62
  232. package/cjs/storages/pluggable/constants.js +0 -4
  233. package/cjs/storages/pluggable/inMemoryWrapper.js +0 -141
  234. package/cjs/storages/pluggable/index.js +0 -135
  235. package/cjs/storages/pluggable/wrapperAdapter.js +0 -53
  236. package/cjs/storages/types.js +0 -2
  237. package/cjs/storages/utils.js +0 -74
  238. package/cjs/sync/offline/LocalhostFromObject.js +0 -8
  239. package/cjs/sync/offline/splitsParser/parseCondition.js +0 -55
  240. package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +0 -62
  241. package/cjs/sync/offline/splitsParser/types.js +0 -2
  242. package/cjs/sync/offline/syncManagerOffline.js +0 -52
  243. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +0 -71
  244. package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +0 -18
  245. package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +0 -34
  246. package/cjs/sync/polling/fetchers/splitChangesFetcher.js +0 -68
  247. package/cjs/sync/polling/fetchers/types.js +0 -2
  248. package/cjs/sync/polling/pollingManagerCS.js +0 -100
  249. package/cjs/sync/polling/pollingManagerSS.js +0 -49
  250. package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -13
  251. package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +0 -13
  252. package/cjs/sync/polling/syncTasks/splitsSyncTask.js +0 -13
  253. package/cjs/sync/polling/types.js +0 -2
  254. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +0 -83
  255. package/cjs/sync/polling/updaters/segmentChangesUpdater.js +0 -80
  256. package/cjs/sync/polling/updaters/splitChangesUpdater.js +0 -190
  257. package/cjs/sync/streaming/AuthClient/index.js +0 -43
  258. package/cjs/sync/streaming/AuthClient/types.js +0 -2
  259. package/cjs/sync/streaming/SSEClient/index.js +0 -86
  260. package/cjs/sync/streaming/SSEClient/types.js +0 -2
  261. package/cjs/sync/streaming/SSEHandler/NotificationKeeper.js +0 -98
  262. package/cjs/sync/streaming/SSEHandler/NotificationParser.js +0 -41
  263. package/cjs/sync/streaming/SSEHandler/index.js +0 -97
  264. package/cjs/sync/streaming/SSEHandler/types.js +0 -16
  265. package/cjs/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -124
  266. package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -92
  267. package/cjs/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -136
  268. package/cjs/sync/streaming/UpdateWorkers/constants.js +0 -6
  269. package/cjs/sync/streaming/UpdateWorkers/types.js +0 -2
  270. package/cjs/sync/streaming/constants.js +0 -43
  271. package/cjs/sync/streaming/parseUtils.js +0 -98
  272. package/cjs/sync/streaming/pushManager.js +0 -317
  273. package/cjs/sync/streaming/types.js +0 -2
  274. package/cjs/sync/submitters/eventsSubmitter.js +0 -28
  275. package/cjs/sync/submitters/impressionCountsSubmitter.js +0 -36
  276. package/cjs/sync/submitters/impressionsSubmitter.js +0 -54
  277. package/cjs/sync/submitters/submitter.js +0 -66
  278. package/cjs/sync/submitters/submitterManager.js +0 -46
  279. package/cjs/sync/submitters/telemetrySubmitter.js +0 -125
  280. package/cjs/sync/submitters/types.js +0 -2
  281. package/cjs/sync/submitters/uniqueKeysSubmitter.js +0 -27
  282. package/cjs/sync/syncManagerOnline.js +0 -176
  283. package/cjs/sync/syncTask.js +0 -84
  284. package/cjs/sync/types.js +0 -2
  285. package/cjs/trackers/eventTracker.js +0 -62
  286. package/cjs/trackers/impressionObserver/ImpressionObserver.js +0 -18
  287. package/cjs/trackers/impressionObserver/buildKey.js +0 -7
  288. package/cjs/trackers/impressionObserver/impressionObserverCS.js +0 -15
  289. package/cjs/trackers/impressionObserver/impressionObserverSS.js +0 -15
  290. package/cjs/trackers/impressionObserver/types.js +0 -2
  291. package/cjs/trackers/impressionsTracker.js +0 -78
  292. package/cjs/trackers/strategy/strategyDebug.js +0 -20
  293. package/cjs/trackers/strategy/strategyNone.js +0 -24
  294. package/cjs/trackers/strategy/strategyOptimized.js +0 -28
  295. package/cjs/trackers/telemetryTracker.js +0 -75
  296. package/cjs/trackers/types.js +0 -2
  297. package/cjs/trackers/uniqueKeysTracker.js +0 -40
  298. package/cjs/types.js +0 -2
  299. package/cjs/utils/Backoff.js +0 -41
  300. package/cjs/utils/LRUCache/LinkedList.js +0 -114
  301. package/cjs/utils/LRUCache/index.js +0 -42
  302. package/cjs/utils/MinEventEmitter.js +0 -100
  303. package/cjs/utils/Semver.js +0 -103
  304. package/cjs/utils/base64/index.js +0 -75
  305. package/cjs/utils/constants/index.js +0 -100
  306. package/cjs/utils/decompress/index.js +0 -427
  307. package/cjs/utils/env/isLocalStorageAvailable.js +0 -39
  308. package/cjs/utils/env/isNode.js +0 -9
  309. package/cjs/utils/inputValidation/apiKey.js +0 -54
  310. package/cjs/utils/inputValidation/attribute.js +0 -20
  311. package/cjs/utils/inputValidation/attributes.js +0 -25
  312. package/cjs/utils/inputValidation/event.js +0 -28
  313. package/cjs/utils/inputValidation/eventProperties.js +0 -74
  314. package/cjs/utils/inputValidation/eventValue.js +0 -12
  315. package/cjs/utils/inputValidation/index.js +0 -34
  316. package/cjs/utils/inputValidation/isOperational.js +0 -18
  317. package/cjs/utils/inputValidation/key.js +0 -51
  318. package/cjs/utils/inputValidation/preloadedData.js +0 -59
  319. package/cjs/utils/inputValidation/split.js +0 -30
  320. package/cjs/utils/inputValidation/splitExistence.js +0 -19
  321. package/cjs/utils/inputValidation/splits.js +0 -25
  322. package/cjs/utils/inputValidation/trafficType.js +0 -29
  323. package/cjs/utils/inputValidation/trafficTypeExistence.js +0 -31
  324. package/cjs/utils/jwt/index.js +0 -17
  325. package/cjs/utils/jwt/types.js +0 -2
  326. package/cjs/utils/key/index.js +0 -36
  327. package/cjs/utils/labels/index.js +0 -12
  328. package/cjs/utils/lang/binarySearch.js +0 -42
  329. package/cjs/utils/lang/getFnName.js +0 -12
  330. package/cjs/utils/lang/getGlobal.js +0 -18
  331. package/cjs/utils/lang/index.js +0 -281
  332. package/cjs/utils/lang/objectAssign.js +0 -20
  333. package/cjs/utils/lang/sets.js +0 -23
  334. package/cjs/utils/murmur3/common.js +0 -46
  335. package/cjs/utils/murmur3/legacy.js +0 -44
  336. package/cjs/utils/murmur3/murmur3.js +0 -62
  337. package/cjs/utils/murmur3/murmur3_128.js +0 -219
  338. package/cjs/utils/murmur3/murmur3_128_x86.js +0 -154
  339. package/cjs/utils/murmur3/murmur3_64.js +0 -36
  340. package/cjs/utils/murmur3/utfx.js +0 -108
  341. package/cjs/utils/promise/thenable.js +0 -8
  342. package/cjs/utils/promise/timeout.js +0 -20
  343. package/cjs/utils/promise/wrapper.js +0 -58
  344. package/cjs/utils/settingsValidation/consent.js +0 -16
  345. package/cjs/utils/settingsValidation/impressionsMode.js +0 -14
  346. package/cjs/utils/settingsValidation/index.js +0 -184
  347. package/cjs/utils/settingsValidation/integrations/common.js +0 -27
  348. package/cjs/utils/settingsValidation/integrations/configurable.js +0 -18
  349. package/cjs/utils/settingsValidation/integrations/pluggable.js +0 -15
  350. package/cjs/utils/settingsValidation/logger/builtinLogger.js +0 -46
  351. package/cjs/utils/settingsValidation/logger/commons.js +0 -28
  352. package/cjs/utils/settingsValidation/logger/pluggableLogger.js +0 -32
  353. package/cjs/utils/settingsValidation/mode.js +0 -20
  354. package/cjs/utils/settingsValidation/runtime.js +0 -11
  355. package/cjs/utils/settingsValidation/splitFilters.js +0 -188
  356. package/cjs/utils/settingsValidation/storage/storageCS.js +0 -49
  357. package/cjs/utils/settingsValidation/types.js +0 -2
  358. package/cjs/utils/settingsValidation/url.js +0 -31
  359. package/cjs/utils/time/index.js +0 -11
  360. package/cjs/utils/timeTracker/now/browser.js +0 -15
  361. package/cjs/utils/timeTracker/now/node.js +0 -9
  362. package/cjs/utils/timeTracker/timer.js +0 -10
  363. package/esm/consent/index.js +0 -6
  364. package/esm/consent/sdkUserConsent.js +0 -56
  365. package/esm/dtos/types.js +0 -1
  366. package/esm/evaluator/Engine.js +0 -54
  367. package/esm/evaluator/combiners/and.js +0 -21
  368. package/esm/evaluator/combiners/ifelseif.js +0 -44
  369. package/esm/evaluator/condition/engineUtils.js +0 -24
  370. package/esm/evaluator/condition/index.js +0 -37
  371. package/esm/evaluator/convertions/index.js +0 -6
  372. package/esm/evaluator/index.js +0 -128
  373. package/esm/evaluator/matchers/all.js +0 -5
  374. package/esm/evaluator/matchers/between.js +0 -6
  375. package/esm/evaluator/matchers/boolean.js +0 -6
  376. package/esm/evaluator/matchers/cont_all.js +0 -19
  377. package/esm/evaluator/matchers/cont_any.js +0 -14
  378. package/esm/evaluator/matchers/cont_str.js +0 -7
  379. package/esm/evaluator/matchers/dependency.js +0 -24
  380. package/esm/evaluator/matchers/eq.js +0 -6
  381. package/esm/evaluator/matchers/eq_set.js +0 -16
  382. package/esm/evaluator/matchers/ew.js +0 -7
  383. package/esm/evaluator/matchers/gte.js +0 -6
  384. package/esm/evaluator/matchers/index.js +0 -62
  385. package/esm/evaluator/matchers/large_segment.js +0 -6
  386. package/esm/evaluator/matchers/lte.js +0 -6
  387. package/esm/evaluator/matchers/matcherTypes.js +0 -42
  388. package/esm/evaluator/matchers/part_of.js +0 -16
  389. package/esm/evaluator/matchers/prerequisites.js +0 -18
  390. package/esm/evaluator/matchers/rbsegment.js +0 -52
  391. package/esm/evaluator/matchers/segment.js +0 -6
  392. package/esm/evaluator/matchers/semver_between.js +0 -10
  393. package/esm/evaluator/matchers/semver_eq.js +0 -9
  394. package/esm/evaluator/matchers/semver_gte.js +0 -9
  395. package/esm/evaluator/matchers/semver_inlist.js +0 -12
  396. package/esm/evaluator/matchers/semver_lte.js +0 -9
  397. package/esm/evaluator/matchers/string.js +0 -7
  398. package/esm/evaluator/matchers/sw.js +0 -7
  399. package/esm/evaluator/matchers/whitelist.js +0 -7
  400. package/esm/evaluator/matchersTransform/index.js +0 -100
  401. package/esm/evaluator/matchersTransform/segment.js +0 -8
  402. package/esm/evaluator/matchersTransform/unaryNumeric.js +0 -6
  403. package/esm/evaluator/matchersTransform/whitelist.js +0 -6
  404. package/esm/evaluator/parser/index.js +0 -57
  405. package/esm/evaluator/treatments/index.js +0 -39
  406. package/esm/evaluator/types.js +0 -1
  407. package/esm/evaluator/value/index.js +0 -33
  408. package/esm/evaluator/value/sanitize.js +0 -90
  409. package/esm/integrations/pluggable.js +0 -31
  410. package/esm/integrations/types.js +0 -1
  411. package/esm/listeners/browser.js +0 -118
  412. package/esm/listeners/node.js +0 -65
  413. package/esm/listeners/types.js +0 -1
  414. package/esm/logger/browser/DebugLogger.js +0 -5
  415. package/esm/logger/browser/ErrorLogger.js +0 -5
  416. package/esm/logger/browser/InfoLogger.js +0 -5
  417. package/esm/logger/browser/WarnLogger.js +0 -5
  418. package/esm/logger/constants.js +0 -135
  419. package/esm/logger/index.js +0 -95
  420. package/esm/logger/messages/debug.js +0 -32
  421. package/esm/logger/messages/error.js +0 -38
  422. package/esm/logger/messages/info.js +0 -33
  423. package/esm/logger/messages/warn.js +0 -38
  424. package/esm/logger/sdkLogger.js +0 -41
  425. package/esm/logger/types.js +0 -1
  426. package/esm/readiness/constants.js +0 -10
  427. package/esm/readiness/readinessManager.js +0 -150
  428. package/esm/readiness/sdkReadinessManager.js +0 -100
  429. package/esm/readiness/types.js +0 -1
  430. package/esm/sdkClient/client.js +0 -179
  431. package/esm/sdkClient/clientAttributesDecoration.js +0 -118
  432. package/esm/sdkClient/clientCS.js +0 -26
  433. package/esm/sdkClient/clientInputValidation.js +0 -143
  434. package/esm/sdkClient/identity.js +0 -3
  435. package/esm/sdkClient/sdkClient.js +0 -60
  436. package/esm/sdkClient/sdkClientMethod.js +0 -18
  437. package/esm/sdkClient/sdkClientMethodCS.js +0 -62
  438. package/esm/sdkFactory/index.js +0 -104
  439. package/esm/sdkFactory/types.js +0 -1
  440. package/esm/sdkManager/index.js +0 -92
  441. package/esm/services/decorateHeaders.js +0 -35
  442. package/esm/services/splitApi.js +0 -127
  443. package/esm/services/splitHttpClient.js +0 -78
  444. package/esm/services/types.js +0 -1
  445. package/esm/storages/AbstractMySegmentsCacheSync.js +0 -57
  446. package/esm/storages/AbstractSplitsCacheAsync.js +0 -48
  447. package/esm/storages/AbstractSplitsCacheSync.js +0 -70
  448. package/esm/storages/KeyBuilder.js +0 -63
  449. package/esm/storages/KeyBuilderCS.js +0 -61
  450. package/esm/storages/KeyBuilderSS.js +0 -57
  451. package/esm/storages/dataLoader.js +0 -46
  452. package/esm/storages/findLatencyIndex.js +0 -14
  453. package/esm/storages/inLocalStorage/MySegmentsCacheInLocal.js +0 -78
  454. package/esm/storages/inLocalStorage/RBSegmentsCacheInLocal.js +0 -114
  455. package/esm/storages/inLocalStorage/SplitsCacheInLocal.js +0 -201
  456. package/esm/storages/inLocalStorage/constants.js +0 -2
  457. package/esm/storages/inLocalStorage/index.js +0 -87
  458. package/esm/storages/inLocalStorage/storageAdapter.js +0 -50
  459. package/esm/storages/inLocalStorage/validateCache.js +0 -81
  460. package/esm/storages/inMemory/AttributesCacheInMemory.js +0 -67
  461. package/esm/storages/inMemory/EventsCacheInMemory.js +0 -60
  462. package/esm/storages/inMemory/ImpressionCountsCacheInMemory.js +0 -62
  463. package/esm/storages/inMemory/ImpressionsCacheInMemory.js +0 -48
  464. package/esm/storages/inMemory/InMemoryStorage.js +0 -42
  465. package/esm/storages/inMemory/InMemoryStorageCS.js +0 -59
  466. package/esm/storages/inMemory/MySegmentsCacheInMemory.js +0 -43
  467. package/esm/storages/inMemory/RBSegmentsCacheInMemory.js +0 -58
  468. package/esm/storages/inMemory/SegmentsCacheInMemory.js +0 -58
  469. package/esm/storages/inMemory/SplitsCacheInMemory.js +0 -118
  470. package/esm/storages/inMemory/TelemetryCacheInMemory.js +0 -202
  471. package/esm/storages/inMemory/UniqueKeysCacheInMemory.js +0 -68
  472. package/esm/storages/inMemory/UniqueKeysCacheInMemoryCS.js +0 -68
  473. package/esm/storages/inRedis/EventsCacheInRedis.js +0 -57
  474. package/esm/storages/inRedis/ImpressionCountsCacheInRedis.js +0 -82
  475. package/esm/storages/inRedis/ImpressionsCacheInRedis.js +0 -42
  476. package/esm/storages/inRedis/RBSegmentsCacheInRedis.js +0 -61
  477. package/esm/storages/inRedis/RedisAdapter.js +0 -192
  478. package/esm/storages/inRedis/SegmentsCacheInRedis.js +0 -54
  479. package/esm/storages/inRedis/SplitsCacheInRedis.js +0 -240
  480. package/esm/storages/inRedis/TelemetryCacheInRedis.js +0 -121
  481. package/esm/storages/inRedis/UniqueKeysCacheInRedis.js +0 -66
  482. package/esm/storages/inRedis/constants.js +0 -4
  483. package/esm/storages/inRedis/index.js +0 -69
  484. package/esm/storages/pluggable/EventsCachePluggable.js +0 -61
  485. package/esm/storages/pluggable/ImpressionCountsCachePluggable.js +0 -78
  486. package/esm/storages/pluggable/ImpressionsCachePluggable.js +0 -45
  487. package/esm/storages/pluggable/RBSegmentsCachePluggable.js +0 -61
  488. package/esm/storages/pluggable/SegmentsCachePluggable.js +0 -77
  489. package/esm/storages/pluggable/SplitsCachePluggable.js +0 -209
  490. package/esm/storages/pluggable/TelemetryCachePluggable.js +0 -138
  491. package/esm/storages/pluggable/UniqueKeysCachePluggable.js +0 -59
  492. package/esm/storages/pluggable/constants.js +0 -1
  493. package/esm/storages/pluggable/inMemoryWrapper.js +0 -137
  494. package/esm/storages/pluggable/index.js +0 -131
  495. package/esm/storages/pluggable/wrapperAdapter.js +0 -49
  496. package/esm/storages/types.js +0 -1
  497. package/esm/storages/utils.js +0 -66
  498. package/esm/sync/offline/LocalhostFromObject.js +0 -5
  499. package/esm/sync/offline/splitsParser/parseCondition.js +0 -51
  500. package/esm/sync/offline/splitsParser/splitsParserFromSettings.js +0 -58
  501. package/esm/sync/offline/splitsParser/types.js +0 -1
  502. package/esm/sync/offline/syncManagerOffline.js +0 -48
  503. package/esm/sync/offline/syncTasks/fromObjectSyncTask.js +0 -66
  504. package/esm/sync/polling/fetchers/mySegmentsFetcher.js +0 -14
  505. package/esm/sync/polling/fetchers/segmentChangesFetcher.js +0 -30
  506. package/esm/sync/polling/fetchers/splitChangesFetcher.js +0 -64
  507. package/esm/sync/polling/fetchers/types.js +0 -1
  508. package/esm/sync/polling/pollingManagerCS.js +0 -96
  509. package/esm/sync/polling/pollingManagerSS.js +0 -45
  510. package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +0 -9
  511. package/esm/sync/polling/syncTasks/segmentsSyncTask.js +0 -9
  512. package/esm/sync/polling/syncTasks/splitsSyncTask.js +0 -9
  513. package/esm/sync/polling/types.js +0 -1
  514. package/esm/sync/polling/updaters/mySegmentsUpdater.js +0 -79
  515. package/esm/sync/polling/updaters/segmentChangesUpdater.js +0 -76
  516. package/esm/sync/polling/updaters/splitChangesUpdater.js +0 -184
  517. package/esm/sync/streaming/AuthClient/index.js +0 -38
  518. package/esm/sync/streaming/AuthClient/types.js +0 -1
  519. package/esm/sync/streaming/SSEClient/index.js +0 -83
  520. package/esm/sync/streaming/SSEClient/types.js +0 -1
  521. package/esm/sync/streaming/SSEHandler/NotificationKeeper.js +0 -94
  522. package/esm/sync/streaming/SSEHandler/NotificationParser.js +0 -36
  523. package/esm/sync/streaming/SSEHandler/index.js +0 -93
  524. package/esm/sync/streaming/SSEHandler/types.js +0 -13
  525. package/esm/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.js +0 -120
  526. package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +0 -88
  527. package/esm/sync/streaming/UpdateWorkers/SplitsUpdateWorker.js +0 -132
  528. package/esm/sync/streaming/UpdateWorkers/constants.js +0 -3
  529. package/esm/sync/streaming/UpdateWorkers/types.js +0 -1
  530. package/esm/sync/streaming/constants.js +0 -40
  531. package/esm/sync/streaming/parseUtils.js +0 -90
  532. package/esm/sync/streaming/pushManager.js +0 -313
  533. package/esm/sync/streaming/types.js +0 -1
  534. package/esm/sync/submitters/eventsSubmitter.js +0 -24
  535. package/esm/sync/submitters/impressionCountsSubmitter.js +0 -31
  536. package/esm/sync/submitters/impressionsSubmitter.js +0 -49
  537. package/esm/sync/submitters/submitter.js +0 -61
  538. package/esm/sync/submitters/submitterManager.js +0 -42
  539. package/esm/sync/submitters/telemetrySubmitter.js +0 -119
  540. package/esm/sync/submitters/types.js +0 -1
  541. package/esm/sync/submitters/uniqueKeysSubmitter.js +0 -23
  542. package/esm/sync/syncManagerOnline.js +0 -172
  543. package/esm/sync/syncTask.js +0 -80
  544. package/esm/sync/types.js +0 -1
  545. package/esm/trackers/eventTracker.js +0 -58
  546. package/esm/trackers/impressionObserver/ImpressionObserver.js +0 -15
  547. package/esm/trackers/impressionObserver/buildKey.js +0 -3
  548. package/esm/trackers/impressionObserver/impressionObserverCS.js +0 -10
  549. package/esm/trackers/impressionObserver/impressionObserverSS.js +0 -10
  550. package/esm/trackers/impressionObserver/types.js +0 -1
  551. package/esm/trackers/impressionsTracker.js +0 -74
  552. package/esm/trackers/strategy/strategyDebug.js +0 -16
  553. package/esm/trackers/strategy/strategyNone.js +0 -20
  554. package/esm/trackers/strategy/strategyOptimized.js +0 -24
  555. package/esm/trackers/telemetryTracker.js +0 -71
  556. package/esm/trackers/types.js +0 -1
  557. package/esm/trackers/uniqueKeysTracker.js +0 -36
  558. package/esm/types.js +0 -1
  559. package/esm/utils/Backoff.js +0 -38
  560. package/esm/utils/LRUCache/LinkedList.js +0 -111
  561. package/esm/utils/LRUCache/index.js +0 -39
  562. package/esm/utils/MinEventEmitter.js +0 -97
  563. package/esm/utils/Semver.js +0 -100
  564. package/esm/utils/base64/index.js +0 -70
  565. package/esm/utils/constants/index.js +0 -96
  566. package/esm/utils/decompress/index.js +0 -424
  567. package/esm/utils/env/isLocalStorageAvailable.js +0 -33
  568. package/esm/utils/env/isNode.js +0 -6
  569. package/esm/utils/inputValidation/apiKey.js +0 -48
  570. package/esm/utils/inputValidation/attribute.js +0 -16
  571. package/esm/utils/inputValidation/attributes.js +0 -20
  572. package/esm/utils/inputValidation/event.js +0 -24
  573. package/esm/utils/inputValidation/eventProperties.js +0 -69
  574. package/esm/utils/inputValidation/eventValue.js +0 -8
  575. package/esm/utils/inputValidation/index.js +0 -14
  576. package/esm/utils/inputValidation/isOperational.js +0 -13
  577. package/esm/utils/inputValidation/key.js +0 -47
  578. package/esm/utils/inputValidation/preloadedData.js +0 -55
  579. package/esm/utils/inputValidation/split.js +0 -26
  580. package/esm/utils/inputValidation/splitExistence.js +0 -15
  581. package/esm/utils/inputValidation/splits.js +0 -21
  582. package/esm/utils/inputValidation/trafficType.js +0 -25
  583. package/esm/utils/inputValidation/trafficTypeExistence.js +0 -27
  584. package/esm/utils/jwt/index.js +0 -13
  585. package/esm/utils/jwt/types.js +0 -1
  586. package/esm/utils/key/index.js +0 -30
  587. package/esm/utils/labels/index.js +0 -9
  588. package/esm/utils/lang/binarySearch.js +0 -38
  589. package/esm/utils/lang/getFnName.js +0 -8
  590. package/esm/utils/lang/getGlobal.js +0 -14
  591. package/esm/utils/lang/index.js +0 -258
  592. package/esm/utils/lang/objectAssign.js +0 -17
  593. package/esm/utils/lang/sets.js +0 -17
  594. package/esm/utils/murmur3/common.js +0 -39
  595. package/esm/utils/murmur3/legacy.js +0 -39
  596. package/esm/utils/murmur3/murmur3.js +0 -57
  597. package/esm/utils/murmur3/murmur3_128.js +0 -215
  598. package/esm/utils/murmur3/murmur3_128_x86.js +0 -150
  599. package/esm/utils/murmur3/murmur3_64.js +0 -32
  600. package/esm/utils/murmur3/utfx.js +0 -102
  601. package/esm/utils/promise/thenable.js +0 -4
  602. package/esm/utils/promise/timeout.js +0 -16
  603. package/esm/utils/promise/wrapper.js +0 -54
  604. package/esm/utils/settingsValidation/consent.js +0 -12
  605. package/esm/utils/settingsValidation/impressionsMode.js +0 -10
  606. package/esm/utils/settingsValidation/index.js +0 -180
  607. package/esm/utils/settingsValidation/integrations/common.js +0 -23
  608. package/esm/utils/settingsValidation/integrations/configurable.js +0 -14
  609. package/esm/utils/settingsValidation/integrations/pluggable.js +0 -11
  610. package/esm/utils/settingsValidation/logger/builtinLogger.js +0 -42
  611. package/esm/utils/settingsValidation/logger/commons.js +0 -24
  612. package/esm/utils/settingsValidation/logger/pluggableLogger.js +0 -28
  613. package/esm/utils/settingsValidation/mode.js +0 -15
  614. package/esm/utils/settingsValidation/runtime.js +0 -7
  615. package/esm/utils/settingsValidation/splitFilters.js +0 -183
  616. package/esm/utils/settingsValidation/storage/storageCS.js +0 -44
  617. package/esm/utils/settingsValidation/types.js +0 -1
  618. package/esm/utils/settingsValidation/url.js +0 -27
  619. package/esm/utils/time/index.js +0 -7
  620. package/esm/utils/timeTracker/now/browser.js +0 -12
  621. package/esm/utils/timeTracker/now/node.js +0 -5
  622. package/esm/utils/timeTracker/timer.js +0 -6
  623. package/src/consent/index.ts +0 -8
  624. package/src/consent/sdkUserConsent.ts +0 -60
  625. package/src/dtos/types.ts +0 -294
  626. package/src/evaluator/Engine.ts +0 -73
  627. package/src/evaluator/combiners/and.ts +0 -29
  628. package/src/evaluator/combiners/ifelseif.ts +0 -56
  629. package/src/evaluator/condition/engineUtils.ts +0 -31
  630. package/src/evaluator/condition/index.ts +0 -50
  631. package/src/evaluator/convertions/index.ts +0 -7
  632. package/src/evaluator/index.ts +0 -199
  633. package/src/evaluator/matchers/all.ts +0 -6
  634. package/src/evaluator/matchers/between.ts +0 -10
  635. package/src/evaluator/matchers/boolean.ts +0 -8
  636. package/src/evaluator/matchers/cont_all.ts +0 -18
  637. package/src/evaluator/matchers/cont_any.ts +0 -13
  638. package/src/evaluator/matchers/cont_str.ts +0 -9
  639. package/src/evaluator/matchers/dependency.ts +0 -32
  640. package/src/evaluator/matchers/eq.ts +0 -8
  641. package/src/evaluator/matchers/eq_set.ts +0 -15
  642. package/src/evaluator/matchers/ew.ts +0 -9
  643. package/src/evaluator/matchers/gte.ts +0 -8
  644. package/src/evaluator/matchers/index.ts +0 -70
  645. package/src/evaluator/matchers/large_segment.ts +0 -11
  646. package/src/evaluator/matchers/lte.ts +0 -8
  647. package/src/evaluator/matchers/matcherTypes.ts +0 -42
  648. package/src/evaluator/matchers/part_of.ts +0 -15
  649. package/src/evaluator/matchers/prerequisites.ts +0 -24
  650. package/src/evaluator/matchers/rbsegment.ts +0 -74
  651. package/src/evaluator/matchers/segment.ts +0 -11
  652. package/src/evaluator/matchers/semver_between.ts +0 -15
  653. package/src/evaluator/matchers/semver_eq.ts +0 -13
  654. package/src/evaluator/matchers/semver_gte.ts +0 -13
  655. package/src/evaluator/matchers/semver_inlist.ts +0 -16
  656. package/src/evaluator/matchers/semver_lte.ts +0 -13
  657. package/src/evaluator/matchers/string.ts +0 -9
  658. package/src/evaluator/matchers/sw.ts +0 -9
  659. package/src/evaluator/matchers/whitelist.ts +0 -9
  660. package/src/evaluator/matchersTransform/index.ts +0 -118
  661. package/src/evaluator/matchersTransform/segment.ts +0 -10
  662. package/src/evaluator/matchersTransform/unaryNumeric.ts +0 -8
  663. package/src/evaluator/matchersTransform/whitelist.ts +0 -8
  664. package/src/evaluator/parser/index.ts +0 -82
  665. package/src/evaluator/treatments/index.ts +0 -53
  666. package/src/evaluator/types.ts +0 -34
  667. package/src/evaluator/value/index.ts +0 -37
  668. package/src/evaluator/value/sanitize.ts +0 -106
  669. package/src/index.ts +0 -14
  670. package/src/integrations/pluggable.ts +0 -39
  671. package/src/integrations/types.ts +0 -21
  672. package/src/listeners/browser.ts +0 -138
  673. package/src/listeners/node.ts +0 -81
  674. package/src/listeners/types.ts +0 -4
  675. package/src/logger/browser/DebugLogger.ts +0 -6
  676. package/src/logger/browser/ErrorLogger.ts +0 -6
  677. package/src/logger/browser/InfoLogger.ts +0 -6
  678. package/src/logger/browser/WarnLogger.ts +0 -6
  679. package/src/logger/constants.ts +0 -139
  680. package/src/logger/index.ts +0 -110
  681. package/src/logger/messages/debug.ts +0 -33
  682. package/src/logger/messages/error.ts +0 -39
  683. package/src/logger/messages/info.ts +0 -36
  684. package/src/logger/messages/warn.ts +0 -40
  685. package/src/logger/sdkLogger.ts +0 -46
  686. package/src/logger/types.ts +0 -21
  687. package/src/readiness/constants.ts +0 -12
  688. package/src/readiness/readinessManager.ts +0 -170
  689. package/src/readiness/sdkReadinessManager.ts +0 -121
  690. package/src/readiness/types.ts +0 -85
  691. package/src/sdkClient/client.ts +0 -217
  692. package/src/sdkClient/clientAttributesDecoration.ts +0 -139
  693. package/src/sdkClient/clientCS.ts +0 -34
  694. package/src/sdkClient/clientInputValidation.ts +0 -178
  695. package/src/sdkClient/identity.ts +0 -5
  696. package/src/sdkClient/sdkClient.ts +0 -77
  697. package/src/sdkClient/sdkClientMethod.ts +0 -24
  698. package/src/sdkClient/sdkClientMethodCS.ts +0 -85
  699. package/src/sdkFactory/index.ts +0 -131
  700. package/src/sdkFactory/types.ts +0 -119
  701. package/src/sdkManager/index.ts +0 -114
  702. package/src/services/decorateHeaders.ts +0 -37
  703. package/src/services/splitApi.ts +0 -148
  704. package/src/services/splitHttpClient.ts +0 -84
  705. package/src/services/types.ts +0 -86
  706. package/src/storages/AbstractMySegmentsCacheSync.ts +0 -94
  707. package/src/storages/AbstractSplitsCacheAsync.ts +0 -63
  708. package/src/storages/AbstractSplitsCacheSync.ts +0 -94
  709. package/src/storages/KeyBuilder.ts +0 -81
  710. package/src/storages/KeyBuilderCS.ts +0 -79
  711. package/src/storages/KeyBuilderSS.ts +0 -74
  712. package/src/storages/dataLoader.ts +0 -55
  713. package/src/storages/findLatencyIndex.ts +0 -16
  714. package/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +0 -87
  715. package/src/storages/inLocalStorage/RBSegmentsCacheInLocal.ts +0 -137
  716. package/src/storages/inLocalStorage/SplitsCacheInLocal.ts +0 -241
  717. package/src/storages/inLocalStorage/constants.ts +0 -2
  718. package/src/storages/inLocalStorage/index.ts +0 -104
  719. package/src/storages/inLocalStorage/storageAdapter.ts +0 -62
  720. package/src/storages/inLocalStorage/validateCache.ts +0 -99
  721. package/src/storages/inMemory/AttributesCacheInMemory.ts +0 -74
  722. package/src/storages/inMemory/EventsCacheInMemory.ts +0 -76
  723. package/src/storages/inMemory/ImpressionCountsCacheInMemory.ts +0 -69
  724. package/src/storages/inMemory/ImpressionsCacheInMemory.ts +0 -58
  725. package/src/storages/inMemory/InMemoryStorage.ts +0 -50
  726. package/src/storages/inMemory/InMemoryStorageCS.ts +0 -69
  727. package/src/storages/inMemory/MySegmentsCacheInMemory.ts +0 -49
  728. package/src/storages/inMemory/RBSegmentsCacheInMemory.ts +0 -68
  729. package/src/storages/inMemory/SegmentsCacheInMemory.ts +0 -74
  730. package/src/storages/inMemory/SplitsCacheInMemory.ts +0 -130
  731. package/src/storages/inMemory/TelemetryCacheInMemory.ts +0 -263
  732. package/src/storages/inMemory/UniqueKeysCacheInMemory.ts +0 -79
  733. package/src/storages/inMemory/UniqueKeysCacheInMemoryCS.ts +0 -80
  734. package/src/storages/inRedis/EventsCacheInRedis.ts +0 -75
  735. package/src/storages/inRedis/ImpressionCountsCacheInRedis.ts +0 -95
  736. package/src/storages/inRedis/ImpressionsCacheInRedis.ts +0 -61
  737. package/src/storages/inRedis/RBSegmentsCacheInRedis.ts +0 -79
  738. package/src/storages/inRedis/RedisAdapter.ts +0 -209
  739. package/src/storages/inRedis/SegmentsCacheInRedis.ts +0 -70
  740. package/src/storages/inRedis/SplitsCacheInRedis.ts +0 -268
  741. package/src/storages/inRedis/TelemetryCacheInRedis.ts +0 -144
  742. package/src/storages/inRedis/UniqueKeysCacheInRedis.ts +0 -75
  743. package/src/storages/inRedis/constants.ts +0 -4
  744. package/src/storages/inRedis/index.ts +0 -85
  745. package/src/storages/package.json +0 -3
  746. package/src/storages/pluggable/EventsCachePluggable.ts +0 -79
  747. package/src/storages/pluggable/ImpressionCountsCachePluggable.ts +0 -92
  748. package/src/storages/pluggable/ImpressionsCachePluggable.ts +0 -63
  749. package/src/storages/pluggable/RBSegmentsCachePluggable.ts +0 -76
  750. package/src/storages/pluggable/SegmentsCachePluggable.ts +0 -90
  751. package/src/storages/pluggable/SplitsCachePluggable.ts +0 -230
  752. package/src/storages/pluggable/TelemetryCachePluggable.ts +0 -159
  753. package/src/storages/pluggable/UniqueKeysCachePluggable.ts +0 -67
  754. package/src/storages/pluggable/constants.ts +0 -1
  755. package/src/storages/pluggable/inMemoryWrapper.ts +0 -130
  756. package/src/storages/pluggable/index.ts +0 -152
  757. package/src/storages/pluggable/wrapperAdapter.ts +0 -58
  758. package/src/storages/types.ts +0 -538
  759. package/src/storages/utils.ts +0 -80
  760. package/src/sync/offline/LocalhostFromObject.ts +0 -6
  761. package/src/sync/offline/splitsParser/parseCondition.ts +0 -59
  762. package/src/sync/offline/splitsParser/splitsParserFromSettings.ts +0 -72
  763. package/src/sync/offline/splitsParser/types.ts +0 -5
  764. package/src/sync/offline/syncManagerOffline.ts +0 -66
  765. package/src/sync/offline/syncTasks/fromObjectSyncTask.ts +0 -97
  766. package/src/sync/polling/fetchers/mySegmentsFetcher.ts +0 -25
  767. package/src/sync/polling/fetchers/segmentChangesFetcher.ts +0 -41
  768. package/src/sync/polling/fetchers/splitChangesFetcher.ts +0 -85
  769. package/src/sync/polling/fetchers/types.ts +0 -25
  770. package/src/sync/polling/pollingManagerCS.ts +0 -116
  771. package/src/sync/polling/pollingManagerSS.ts +0 -56
  772. package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +0 -34
  773. package/src/sync/polling/syncTasks/segmentsSyncTask.ts +0 -30
  774. package/src/sync/polling/syncTasks/splitsSyncTask.ts +0 -35
  775. package/src/sync/polling/types.ts +0 -33
  776. package/src/sync/polling/updaters/mySegmentsUpdater.ts +0 -104
  777. package/src/sync/polling/updaters/segmentChangesUpdater.ts +0 -92
  778. package/src/sync/polling/updaters/splitChangesUpdater.ts +0 -220
  779. package/src/sync/streaming/AuthClient/index.ts +0 -42
  780. package/src/sync/streaming/AuthClient/types.ts +0 -20
  781. package/src/sync/streaming/SSEClient/index.ts +0 -103
  782. package/src/sync/streaming/SSEClient/types.ts +0 -13
  783. package/src/sync/streaming/SSEHandler/NotificationKeeper.ts +0 -107
  784. package/src/sync/streaming/SSEHandler/NotificationParser.ts +0 -40
  785. package/src/sync/streaming/SSEHandler/index.ts +0 -105
  786. package/src/sync/streaming/SSEHandler/types.ts +0 -73
  787. package/src/sync/streaming/UpdateWorkers/MySegmentsUpdateWorker.ts +0 -134
  788. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +0 -99
  789. package/src/sync/streaming/UpdateWorkers/SplitsUpdateWorker.ts +0 -145
  790. package/src/sync/streaming/UpdateWorkers/constants.ts +0 -3
  791. package/src/sync/streaming/UpdateWorkers/types.ts +0 -4
  792. package/src/sync/streaming/constants.ts +0 -44
  793. package/src/sync/streaming/parseUtils.ts +0 -100
  794. package/src/sync/streaming/pushManager.ts +0 -358
  795. package/src/sync/streaming/types.ts +0 -51
  796. package/src/sync/submitters/eventsSubmitter.ts +0 -35
  797. package/src/sync/submitters/impressionCountsSubmitter.ts +0 -44
  798. package/src/sync/submitters/impressionsSubmitter.ts +0 -66
  799. package/src/sync/submitters/submitter.ts +0 -76
  800. package/src/sync/submitters/submitterManager.ts +0 -48
  801. package/src/sync/submitters/telemetrySubmitter.ts +0 -148
  802. package/src/sync/submitters/types.ts +0 -241
  803. package/src/sync/submitters/uniqueKeysSubmitter.ts +0 -35
  804. package/src/sync/syncManagerOnline.ts +0 -195
  805. package/src/sync/syncTask.ts +0 -83
  806. package/src/sync/types.ts +0 -48
  807. package/src/trackers/eventTracker.ts +0 -72
  808. package/src/trackers/impressionObserver/ImpressionObserver.ts +0 -20
  809. package/src/trackers/impressionObserver/buildKey.ts +0 -5
  810. package/src/trackers/impressionObserver/impressionObserverCS.ts +0 -14
  811. package/src/trackers/impressionObserver/impressionObserverSS.ts +0 -14
  812. package/src/trackers/impressionObserver/types.ts +0 -5
  813. package/src/trackers/impressionsTracker.ts +0 -87
  814. package/src/trackers/strategy/strategyDebug.ts +0 -23
  815. package/src/trackers/strategy/strategyNone.ts +0 -28
  816. package/src/trackers/strategy/strategyOptimized.ts +0 -35
  817. package/src/trackers/telemetryTracker.ts +0 -73
  818. package/src/trackers/types.ts +0 -86
  819. package/src/trackers/uniqueKeysTracker.ts +0 -50
  820. package/src/types.ts +0 -79
  821. package/src/utils/Backoff.ts +0 -51
  822. package/src/utils/LRUCache/LinkedList.ts +0 -130
  823. package/src/utils/LRUCache/index.ts +0 -43
  824. package/src/utils/MinEventEmitter.ts +0 -102
  825. package/src/utils/Semver.ts +0 -111
  826. package/src/utils/base64/index.ts +0 -74
  827. package/src/utils/constants/index.ts +0 -116
  828. package/src/utils/decompress/index.ts +0 -429
  829. package/src/utils/env/isLocalStorageAvailable.ts +0 -32
  830. package/src/utils/env/isNode.ts +0 -6
  831. package/src/utils/inputValidation/apiKey.ts +0 -52
  832. package/src/utils/inputValidation/attribute.ts +0 -21
  833. package/src/utils/inputValidation/attributes.ts +0 -26
  834. package/src/utils/inputValidation/event.ts +0 -24
  835. package/src/utils/inputValidation/eventProperties.ts +0 -78
  836. package/src/utils/inputValidation/eventValue.ts +0 -11
  837. package/src/utils/inputValidation/index.ts +0 -14
  838. package/src/utils/inputValidation/isOperational.ts +0 -17
  839. package/src/utils/inputValidation/key.ts +0 -51
  840. package/src/utils/inputValidation/preloadedData.ts +0 -57
  841. package/src/utils/inputValidation/split.ts +0 -27
  842. package/src/utils/inputValidation/splitExistence.ts +0 -19
  843. package/src/utils/inputValidation/splits.ts +0 -21
  844. package/src/utils/inputValidation/trafficType.ts +0 -27
  845. package/src/utils/inputValidation/trafficTypeExistence.ts +0 -33
  846. package/src/utils/jwt/index.ts +0 -16
  847. package/src/utils/jwt/types.ts +0 -10
  848. package/src/utils/key/index.ts +0 -34
  849. package/src/utils/labels/index.ts +0 -9
  850. package/src/utils/lang/binarySearch.ts +0 -41
  851. package/src/utils/lang/getFnName.ts +0 -8
  852. package/src/utils/lang/getGlobal.ts +0 -17
  853. package/src/utils/lang/index.ts +0 -279
  854. package/src/utils/lang/objectAssign.ts +0 -25
  855. package/src/utils/lang/sets.ts +0 -17
  856. package/src/utils/murmur3/common.ts +0 -54
  857. package/src/utils/murmur3/legacy.ts +0 -48
  858. package/src/utils/murmur3/murmur3.ts +0 -74
  859. package/src/utils/murmur3/murmur3_128.ts +0 -273
  860. package/src/utils/murmur3/murmur3_128_x86.ts +0 -188
  861. package/src/utils/murmur3/murmur3_64.ts +0 -36
  862. package/src/utils/murmur3/utfx.ts +0 -109
  863. package/src/utils/promise/thenable.ts +0 -4
  864. package/src/utils/promise/timeout.ts +0 -17
  865. package/src/utils/promise/wrapper.ts +0 -60
  866. package/src/utils/settingsValidation/consent.ts +0 -16
  867. package/src/utils/settingsValidation/impressionsMode.ts +0 -14
  868. package/src/utils/settingsValidation/index.ts +0 -207
  869. package/src/utils/settingsValidation/integrations/common.ts +0 -27
  870. package/src/utils/settingsValidation/integrations/configurable.ts +0 -20
  871. package/src/utils/settingsValidation/integrations/pluggable.ts +0 -19
  872. package/src/utils/settingsValidation/logger/builtinLogger.ts +0 -54
  873. package/src/utils/settingsValidation/logger/commons.ts +0 -24
  874. package/src/utils/settingsValidation/logger/pluggableLogger.ts +0 -35
  875. package/src/utils/settingsValidation/mode.ts +0 -17
  876. package/src/utils/settingsValidation/runtime.ts +0 -9
  877. package/src/utils/settingsValidation/splitFilters.ts +0 -197
  878. package/src/utils/settingsValidation/storage/storageCS.ts +0 -52
  879. package/src/utils/settingsValidation/types.ts +0 -27
  880. package/src/utils/settingsValidation/url.ts +0 -30
  881. package/src/utils/time/index.ts +0 -8
  882. package/src/utils/timeTracker/now/browser.ts +0 -12
  883. package/src/utils/timeTracker/now/node.ts +0 -6
  884. package/src/utils/timeTracker/timer.ts +0 -7
@@ -1,54 +0,0 @@
1
- /**
2
- * wraps a given promise in a new one with a default onRejected function,
3
- * that handles the promise rejection if not other onRejected handler is provided.
4
- *
5
- * Caveats:
6
- * - There are some cases where the `defaultOnRejected` handler is not invoked
7
- * and the promise rejection must be handled by the user (same as the Promise spec):
8
- * - using async/await syntax with a transpiler to Promises
9
- * - setting an `onFinally` handler as the first handler (e.g. `promiseWrapper(Promise.reject()).finally(...)`)
10
- * - setting more than one handler with at least one of them being an onRejected handler
11
- * - If the wrapped promise is rejected when using native async/await syntax, the `defaultOnRejected` handler is invoked
12
- * and neither the catch block nor the remaining try block are executed.
13
- *
14
- * @param customPromise - promise to wrap
15
- * @param defaultOnRejected - default onRejected function
16
- * @returns a promise that doesn't need to be handled for rejection (except when using async/await syntax) and
17
- * includes a method named `hasOnFulfilled` that returns true if the promise has attached an onFulfilled handler.
18
- */
19
- export function promiseWrapper(customPromise, defaultOnRejected) {
20
- var hasOnFulfilled = false;
21
- var hasOnRejected = false;
22
- function chain(promise) {
23
- var newPromise = new Promise(function (res, rej) {
24
- return promise.then(res, function (value) {
25
- if (hasOnRejected) {
26
- rej(value);
27
- }
28
- else {
29
- defaultOnRejected(value);
30
- }
31
- });
32
- });
33
- var originalThen = newPromise.then;
34
- // Using `defineProperty` in case Promise.prototype.then property is not writable
35
- Object.defineProperty(newPromise, 'then', {
36
- value: function (onfulfilled, onrejected) {
37
- var result = originalThen.call(newPromise, onfulfilled, onrejected);
38
- if (typeof onfulfilled === 'function')
39
- hasOnFulfilled = true;
40
- if (typeof onrejected === 'function') {
41
- hasOnRejected = true;
42
- return result;
43
- }
44
- else {
45
- return chain(result);
46
- }
47
- }
48
- });
49
- return newPromise;
50
- }
51
- var result = chain(customPromise);
52
- result.hasOnFulfilled = function () { return hasOnFulfilled; };
53
- return result;
54
- }
@@ -1,12 +0,0 @@
1
- import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
2
- import { CONSENT_DECLINED, CONSENT_GRANTED, CONSENT_UNKNOWN } from '../constants';
3
- import { stringToUpperCase } from '../lang';
4
- var userConsentValues = [CONSENT_DECLINED, CONSENT_GRANTED, CONSENT_UNKNOWN];
5
- export function validateConsent(_a) {
6
- var userConsent = _a.userConsent, log = _a.log;
7
- userConsent = stringToUpperCase(userConsent);
8
- if (userConsentValues.indexOf(userConsent) > -1)
9
- return userConsent;
10
- log.error(ERROR_INVALID_CONFIG_PARAM, ['userConsent', userConsentValues, CONSENT_GRANTED]);
11
- return CONSENT_GRANTED;
12
- }
@@ -1,10 +0,0 @@
1
- import { ERROR_INVALID_CONFIG_PARAM } from '../../logger/constants';
2
- import { DEBUG, OPTIMIZED, NONE } from '../constants';
3
- import { stringToUpperCase } from '../lang';
4
- export function validImpressionsMode(log, impressionsMode) {
5
- impressionsMode = stringToUpperCase(impressionsMode);
6
- if ([DEBUG, OPTIMIZED, NONE].indexOf(impressionsMode) > -1)
7
- return impressionsMode;
8
- log.error(ERROR_INVALID_CONFIG_PARAM, ['impressionsMode', [DEBUG, OPTIMIZED, NONE], OPTIMIZED]);
9
- return OPTIMIZED;
10
- }
@@ -1,180 +0,0 @@
1
- import { merge, get } from '../lang';
2
- import { validateMode } from './mode';
3
- import { validateSplitFilters } from './splitFilters';
4
- import { STANDALONE_MODE, OPTIMIZED, LOCALHOST_MODE, DEBUG, FLAG_SPEC_VERSION } from '../constants';
5
- import { validImpressionsMode } from './impressionsMode';
6
- import { validateKey } from '../inputValidation/key';
7
- import { ERROR_MIN_CONFIG_PARAM, LOG_PREFIX_CLIENT_INSTANTIATION } from '../../logger/constants';
8
- // Exported for telemetry
9
- export var base = {
10
- // Define which kind of object you want to retrieve from SplitFactory
11
- mode: STANDALONE_MODE,
12
- core: {
13
- // API token (tight to an environment)
14
- authorizationKey: undefined,
15
- // key used in your system (only required for browser version)
16
- key: undefined,
17
- // toggle impressions tracking of labels
18
- labelsEnabled: true,
19
- // toggle sendind (true) or not sending (false) IP and Host Name with impressions, events, and telemetries requests (only used on nodejs version)
20
- IPAddressesEnabled: undefined
21
- },
22
- scheduler: {
23
- // fetch feature updates each 60 sec
24
- featuresRefreshRate: 60,
25
- // fetch segments updates each 60 sec
26
- segmentsRefreshRate: 60,
27
- // publish telemetry stats each 3600 secs (1 hour)
28
- telemetryRefreshRate: 3600,
29
- // publish evaluations each 300 sec (default value for OPTIMIZED impressions mode)
30
- impressionsRefreshRate: 300,
31
- // fetch offline changes each 15 sec
32
- offlineRefreshRate: 15,
33
- // publish events every 60 seconds after the first flush
34
- eventsPushRate: 60,
35
- // how many events will be queued before flushing
36
- eventsQueueSize: 500,
37
- // how many impressions will be queued before flushing
38
- impressionsQueueSize: 30000,
39
- // backoff base seconds to wait before re attempting to connect to push notifications
40
- pushRetryBackoffBase: 1,
41
- },
42
- urls: {
43
- // CDN having all the information for your environment
44
- sdk: 'https://sdk.split.io/api',
45
- // SDK event and impression endpoints
46
- events: 'https://events.split.io/api',
47
- // SDK Auth Server
48
- auth: 'https://auth.split.io/api',
49
- // Streaming Server
50
- streaming: 'https://streaming.split.io',
51
- // Telemetry Server
52
- telemetry: 'https://telemetry.split.io/api',
53
- },
54
- // Defines which kind of storage we should instantiate.
55
- storage: undefined,
56
- // Defines if the logs are enabled, SDK wide.
57
- debug: undefined,
58
- // Defines the impression listener.
59
- impressionListener: undefined,
60
- // Instance version.
61
- version: undefined,
62
- // List of integrations.
63
- integrations: undefined,
64
- // toggle using (true) or not using (false) Server-Side Events for synchronizing storage
65
- streamingEnabled: true,
66
- sync: {
67
- splitFilters: undefined,
68
- // impressions collection mode
69
- impressionsMode: OPTIMIZED,
70
- enabled: true,
71
- flagSpecVersion: FLAG_SPEC_VERSION
72
- },
73
- // Logger
74
- log: undefined
75
- };
76
- function fromSecondsToMillis(n) {
77
- return Math.round(n * 1000);
78
- }
79
- /**
80
- * Validates the given config and use it to build a settings object.
81
- * NOTE: it doesn't validate the SDK Key. Call `validateApiKey` or `validateAndTrackApiKey` for that after settings validation.
82
- *
83
- * @param config - user defined configuration
84
- * @param validationParams - defaults and fields validators used to validate and creates a settings object from a given config
85
- */
86
- export function settingsValidation(config, validationParams) {
87
- var defaults = validationParams.defaults, runtime = validationParams.runtime, storage = validationParams.storage, integrations = validationParams.integrations, logger = validationParams.logger, consent = validationParams.consent, flagSpec = validationParams.flagSpec;
88
- // creates a settings object merging base, defaults and config objects.
89
- var withDefaults = merge({}, base, defaults, config);
90
- // Keeps reference to the `features` property
91
- withDefaults.features = get(config, 'features');
92
- // ensure a valid logger.
93
- // First thing to validate, since other validators might use the logger.
94
- var log = logger(withDefaults); // @ts-ignore, modify readonly prop
95
- withDefaults.log = log;
96
- // ensure a valid impressionsMode
97
- var sync = withDefaults.sync;
98
- sync.impressionsMode = validImpressionsMode(log, sync.impressionsMode);
99
- function validateMinValue(paramName, actualValue, minValue) {
100
- if (actualValue >= minValue)
101
- return actualValue;
102
- // actualValue is not a number or is lower than minValue
103
- log.error(ERROR_MIN_CONFIG_PARAM, [paramName, minValue]);
104
- return minValue;
105
- }
106
- // Scheduler periods
107
- var scheduler = withDefaults.scheduler, startup = withDefaults.startup;
108
- scheduler.featuresRefreshRate = fromSecondsToMillis(scheduler.featuresRefreshRate);
109
- scheduler.segmentsRefreshRate = fromSecondsToMillis(scheduler.segmentsRefreshRate);
110
- scheduler.offlineRefreshRate = fromSecondsToMillis(scheduler.offlineRefreshRate);
111
- scheduler.eventsPushRate = fromSecondsToMillis(scheduler.eventsPushRate);
112
- scheduler.telemetryRefreshRate = fromSecondsToMillis(validateMinValue('telemetryRefreshRate', scheduler.telemetryRefreshRate, 60));
113
- // Default impressionsRefreshRate for DEBUG mode is 60 secs
114
- if (get(config, 'scheduler.impressionsRefreshRate') === undefined && sync.impressionsMode === DEBUG)
115
- scheduler.impressionsRefreshRate = 60;
116
- scheduler.impressionsRefreshRate = fromSecondsToMillis(scheduler.impressionsRefreshRate);
117
- // Log deprecation for old telemetry param
118
- if (scheduler.metricsRefreshRate)
119
- log.warn('`metricsRefreshRate` will be deprecated soon. For configuring telemetry rates, update `telemetryRefreshRate` value in configs');
120
- // Startup periods
121
- startup.requestTimeoutBeforeReady = fromSecondsToMillis(startup.requestTimeoutBeforeReady);
122
- startup.readyTimeout = fromSecondsToMillis(startup.readyTimeout);
123
- startup.eventsFirstPushWindow = fromSecondsToMillis(startup.eventsFirstPushWindow);
124
- // ensure a valid SDK mode
125
- // @ts-ignore, modify readonly prop
126
- withDefaults.mode = validateMode(withDefaults.core.authorizationKey, withDefaults.mode);
127
- // ensure a valid Storage based on mode defined.
128
- // @ts-ignore, modify readonly prop
129
- if (storage)
130
- withDefaults.storage = storage(withDefaults);
131
- // Validate key and TT (for client-side)
132
- var maybeKey = withDefaults.core.key;
133
- if (validationParams.acceptKey) {
134
- // Although `key` is required in client-side, it can be omitted in LOCALHOST mode. In that case, the value `localhost_key` is used.
135
- if (withDefaults.mode === LOCALHOST_MODE && maybeKey === undefined) {
136
- withDefaults.core.key = 'localhost_key';
137
- }
138
- else {
139
- // Keeping same behavior than JS SDK: if settings key or TT are invalid,
140
- // `false` value is used as bound key/TT of the default client, which leads to some issues.
141
- // @ts-ignore, @TODO handle invalid keys as a non-recoverable error?
142
- withDefaults.core.key = validateKey(log, maybeKey, LOG_PREFIX_CLIENT_INSTANTIATION);
143
- }
144
- }
145
- else {
146
- // On server-side, key is undefined and used to distinguish from client-side
147
- if (maybeKey !== undefined)
148
- log.warn('Provided `key` is ignored in server-side SDK.'); // @ts-ignore
149
- withDefaults.core.key = undefined;
150
- }
151
- // Current ip/hostname information
152
- // @ts-ignore, modify readonly prop
153
- withDefaults.runtime = runtime(withDefaults);
154
- // ensure a valid list of integrations.
155
- // `integrations` returns an array of valid integration items.
156
- // @ts-ignore, modify readonly prop
157
- if (integrations)
158
- withDefaults.integrations = integrations(withDefaults);
159
- // validate push options
160
- if (withDefaults.streamingEnabled !== false) { // @ts-ignore, modify readonly prop
161
- withDefaults.streamingEnabled = true;
162
- // Backoff bases.
163
- // We are not checking if bases are positive numbers. Thus, we might be re-authenticating immediately (`setTimeout` with NaN or negative number)
164
- scheduler.pushRetryBackoffBase = fromSecondsToMillis(scheduler.pushRetryBackoffBase);
165
- }
166
- // validate sync enabled
167
- if (sync.enabled !== false) {
168
- sync.enabled = true;
169
- }
170
- // validate the `splitFilters` settings and parse splits query
171
- var splitFiltersValidation = validateSplitFilters(log, sync.splitFilters, withDefaults.mode);
172
- sync.splitFilters = splitFiltersValidation.validFilters;
173
- sync.__splitFiltersValidation = splitFiltersValidation;
174
- // ensure a valid flag spec version
175
- sync.flagSpecVersion = flagSpec ? flagSpec(withDefaults) : FLAG_SPEC_VERSION;
176
- // ensure a valid user consent value
177
- // @ts-ignore, modify readonly prop
178
- withDefaults.userConsent = consent ? consent(withDefaults) : undefined;
179
- return withDefaults;
180
- }
@@ -1,23 +0,0 @@
1
- import { WARN_INTEGRATION_INVALID } from '../../../logger/constants';
2
- /**
3
- * This function validates `settings.integrations` object
4
- *
5
- * @param settings - config object provided by the user to initialize the sdk
6
- * @param integrationValidator - filter used to remove invalid integration items
7
- * @param extraWarning - optional string used to better describe why an item might be invalid
8
- *
9
- * @returns array of valid integration items. The array might be empty if `settings` object does not have valid integrations.
10
- */
11
- export function validateIntegrations(settings, integrationValidator, extraWarning) {
12
- var integrations = settings.integrations, log = settings.log;
13
- // If integrations is not an array or an empty array, we return an empty array (no integrations).
14
- if (!Array.isArray(integrations) || integrations.length === 0)
15
- return [];
16
- // We remove invalid integration items
17
- var validIntegrations = integrations.filter(integrationValidator);
18
- // Log a warning if at least one item is invalid
19
- var invalids = integrations.length - validIntegrations.length;
20
- if (invalids)
21
- log.warn(WARN_INTEGRATION_INVALID, [invalids, extraWarning || '']);
22
- return validIntegrations;
23
- }
@@ -1,14 +0,0 @@
1
- import { validateIntegrations } from './common';
2
- import { isString } from '../../lang';
3
- /**
4
- * This function validates `settings.integrations` object that consists of a list of configuration items, used by the isomorphic JS SDK.
5
- *
6
- * @param settings - config object provided by the user to initialize the sdk
7
- * @param validIntegrationTypes - list of integration types to filter from `settings.integrations`
8
- *
9
- * @returns array of valid integration items. The array might be empty if `settings` object does not have valid integrations.
10
- */
11
- export function validateConfigurableIntegrations(settings, validIntegrationTypes) {
12
- if (validIntegrationTypes === void 0) { validIntegrationTypes = []; }
13
- return validateIntegrations(settings, function (integration) { return integration && isString(integration.type) && validIntegrationTypes.indexOf(integration.type) > -1; }, 'Integration items must have a valid "type" value');
14
- }
@@ -1,11 +0,0 @@
1
- import { validateIntegrations } from './common';
2
- /**
3
- * This function validates `settings.integrations` object that consists of a list of pluggable integration factories.
4
- *
5
- * @param settings - config object provided by the user to initialize the sdk
6
- *
7
- * @returns array of valid integration factories. The array might be empty if `settings` object does not have valid integrations.
8
- */
9
- export function validatePluggableIntegrations(settings) {
10
- return validateIntegrations(settings, function (integration) { return typeof integration === 'function'; }, 'Integration items must be functions that initialize the integrations');
11
- }
@@ -1,42 +0,0 @@
1
- import { isLogLevelString, Logger, LogLevels } from '../../../logger';
2
- import { isLocalStorageAvailable } from '../../env/isLocalStorageAvailable';
3
- import { isNode } from '../../env/isNode';
4
- import { codesDebug } from '../../../logger/messages/debug';
5
- import { getLogLevel } from './commons';
6
- var allCodes = new Map(codesDebug);
7
- // @TODO set default debug setting instead of initialLogLevel when integrating in JS and Node packages
8
- var LS_KEY = 'splitio_debug';
9
- var ENV_VAR_KEY = 'SPLITIO_DEBUG';
10
- /**
11
- * Logger initial debug level, that is disabled ('NONE') by default.
12
- * Acceptable values are: 'DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'.
13
- * Other acceptable values are 'on', 'enable' and 'enabled', which are equivalent to 'DEBUG'.
14
- * Any other string value is equivalent to disable.
15
- */
16
- var initialState = String(
17
- // eslint-disable-next-line no-undef
18
- isNode ? process.env[ENV_VAR_KEY] : isLocalStorageAvailable() ? localStorage.getItem(LS_KEY) : '');
19
- // By default it starts disabled.
20
- var initialLogLevel = LogLevels.NONE;
21
- // Kept to avoid a breaking change ('on', 'enable' and 'enabled' are equivalent)
22
- if (/^(enabled?|on)/i.test(initialState)) {
23
- initialLogLevel = LogLevels.DEBUG;
24
- }
25
- else if (isLogLevelString(initialState)) {
26
- initialLogLevel = initialState;
27
- }
28
- /**
29
- * Validates the `debug` property at config and use it to set the log level.
30
- *
31
- * @param settings - user config object, with an optional `debug` property of type boolean or string log level.
32
- * @returns a logger instance with the log level at `settings.debug`. If `settings.debug` is invalid or not provided, `initialLogLevel` is used.
33
- */
34
- export function validateLogger(settings) {
35
- var debug = settings.debug;
36
- var logLevel = debug !== undefined ? getLogLevel(debug) : initialLogLevel;
37
- var log = new Logger({ logLevel: logLevel || initialLogLevel }, allCodes);
38
- // @ts-ignore // if logLevel is undefined at this point, it means that settings `debug` value is invalid
39
- if (!logLevel)
40
- log._log(LogLevels.ERROR, 'Invalid Log Level - No changes to the logs will be applied.');
41
- return log;
42
- }
@@ -1,24 +0,0 @@
1
- import { LogLevels, isLogLevelString } from '../../../logger';
2
- /**
3
- * Returns the LogLevel for the given debugValue or undefined if it is invalid,
4
- * i.e., if the debugValue is not a boolean or LogLevel string.
5
- *
6
- * @param debugValue - debug value at config
7
- * @returns LogLevel of the given debugValue or undefined if the provided value is invalid
8
- */
9
- export function getLogLevel(debugValue) {
10
- if (typeof debugValue === 'boolean') {
11
- if (debugValue) {
12
- return LogLevels.DEBUG;
13
- }
14
- else {
15
- return LogLevels.NONE;
16
- }
17
- }
18
- else if (typeof debugValue === 'string' && isLogLevelString(debugValue)) {
19
- return debugValue;
20
- }
21
- else {
22
- return undefined;
23
- }
24
- }
@@ -1,28 +0,0 @@
1
- import { Logger, LogLevels } from '../../../logger';
2
- import { getLogLevel } from './commons';
3
- function isLogger(log) {
4
- return log !== null && typeof log === 'object' && typeof log.debug === 'function' && typeof log.info === 'function' && typeof log.warn === 'function' && typeof log.error === 'function' && typeof log.setLogLevel === 'function';
5
- }
6
- // By default it starts disabled.
7
- var initialLogLevel = LogLevels.NONE;
8
- /**
9
- * Validates the `debug` property at config and use it to set the logger.
10
- *
11
- * @param settings - user config object, with an optional `debug` property of type boolean, string log level or a Logger object.
12
- * @returns a logger instance, that might be: the provided logger at `settings.debug`, or one with the given `debug` log level,
13
- * or one with NONE log level if `debug` is not defined or invalid.
14
- */
15
- export function validateLogger(settings) {
16
- var debug = settings.debug;
17
- var logLevel = initialLogLevel;
18
- if (debug !== undefined) {
19
- if (isLogger(debug))
20
- return debug;
21
- logLevel = getLogLevel(settings.debug);
22
- }
23
- var log = new Logger({ logLevel: logLevel || initialLogLevel });
24
- // @ts-ignore // `debug` value is invalid if logLevel is undefined at this point
25
- if (!logLevel)
26
- log._log(LogLevels.ERROR, 'Invalid `debug` value at config. Logs will be disabled.');
27
- return log;
28
- }
@@ -1,15 +0,0 @@
1
- import { LOCALHOST_MODE, STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE, CONSUMER_PARTIAL_MODE } from '../constants';
2
- export function validateMode(key, mode) {
3
- // Leaving the comparison as is, in case we change the mode name but not the setting.
4
- if (key === 'localhost')
5
- return LOCALHOST_MODE;
6
- if ([STANDALONE_MODE, PRODUCER_MODE, CONSUMER_MODE, CONSUMER_PARTIAL_MODE].indexOf(mode) === -1)
7
- throw Error('Invalid mode provided');
8
- return mode;
9
- }
10
- /**
11
- * Storage is async if mode is consumer or partial consumer
12
- */
13
- export function isConsumerMode(mode) {
14
- return CONSUMER_MODE === mode || CONSUMER_PARTIAL_MODE === mode;
15
- }
@@ -1,7 +0,0 @@
1
- // For client-side SDKs, machine IP and Hostname are not captured and sent to Split backend.
2
- export function validateRuntime() {
3
- return {
4
- ip: false,
5
- hostname: false
6
- };
7
- }
@@ -1,183 +0,0 @@
1
- import { validateSplits } from '../inputValidation/splits';
2
- import { WARN_SPLITS_FILTER_IGNORED, WARN_SPLITS_FILTER_EMPTY, WARN_SPLITS_FILTER_INVALID, SETTINGS_SPLITS_FILTER, LOG_PREFIX_SETTINGS, ERROR_SETS_FILTER_EXCLUSIVE, WARN_LOWERCASE_FLAGSET, WARN_INVALID_FLAGSET, WARN_FLAGSET_NOT_CONFIGURED } from '../../logger/constants';
3
- import { objectAssign } from '../lang/objectAssign';
4
- import { find, uniq } from '../lang';
5
- import { isConsumerMode } from './mode';
6
- // Split filters metadata.
7
- // Ordered according to their precedency when forming the filter query string: `&names=<values>&prefixes=<values>`
8
- var FILTERS_METADATA = [
9
- {
10
- type: 'bySet',
11
- maxLength: 50,
12
- queryParam: 'sets='
13
- },
14
- {
15
- type: 'byName',
16
- maxLength: 400,
17
- queryParam: 'names='
18
- },
19
- {
20
- type: 'byPrefix',
21
- maxLength: 50,
22
- queryParam: 'prefixes='
23
- }
24
- ];
25
- var VALID_FLAGSET_REGEX = /^[a-z0-9][_a-z0-9]{0,49}$/;
26
- var CAPITAL_LETTERS_REGEX = /[A-Z]/;
27
- /**
28
- * Validates that the given value is a valid filter type
29
- */
30
- function validateFilterType(maybeFilterType) {
31
- return FILTERS_METADATA.some(function (filterMetadata) { return filterMetadata.type === maybeFilterType; });
32
- }
33
- /**
34
- * Validate, deduplicate and sort a given list of filter values.
35
- *
36
- * @param type - filter type string used for log messages
37
- * @param values - list of values to validate, deduplicate and sort
38
- * @param maxLength - max length allowed for the list of values
39
- * @returns list of valid, unique and alphabetically sorted non-empty strings. The list is empty if `values` param is not a non-empty array or all its values are invalid.
40
- *
41
- * @throws Error if the sanitized list exceeds the length indicated by `maxLength`
42
- */
43
- function validateSplitFilter(log, type, values, maxLength) {
44
- // validate and remove invalid and duplicated values
45
- var result = validateSplits(log, values, LOG_PREFIX_SETTINGS, type + " filter", type + " filter value");
46
- if (result) {
47
- if (type === 'bySet') {
48
- result = sanitizeFlagSets(log, result, LOG_PREFIX_SETTINGS);
49
- }
50
- // check max length
51
- if (result.length > maxLength)
52
- throw new Error(maxLength + " unique values can be specified at most for '" + type + "' filter. You passed " + result.length + ". Please consider reducing the amount or using other filter.");
53
- // sort values
54
- result.sort();
55
- }
56
- return result || []; // returns empty array if `result` is `false`
57
- }
58
- /**
59
- * Returns a string representing the URL encoded query component of /splitChanges URL.
60
- *
61
- * @param groupedFilters - object of filters. Each filter must be a list of valid, unique and ordered string values.
62
- * @returns null or string with the `split filter query` component of the URL.
63
- */
64
- function queryStringBuilder(groupedFilters) {
65
- var queryParams = [];
66
- FILTERS_METADATA.forEach(function (_a) {
67
- var type = _a.type, queryParam = _a.queryParam;
68
- var filter = groupedFilters[type];
69
- if (filter.length > 0)
70
- queryParams.push(queryParam + filter.map(function (value) { return encodeURIComponent(value); }).join(','));
71
- });
72
- return queryParams.length > 0 ? '&' + queryParams.join('&') : null;
73
- }
74
- /**
75
- * Sanitizes set names list taking into account:
76
- * - It should be lowercase
77
- * - Must adhere the following regular expression `/^[a-z0-9][_a-z0-9]{0,49}$/` that means
78
- * - must start with a letter or number
79
- * - Be in lowercase
80
- * - Be alphanumeric
81
- * - have a max length of 50 characters
82
- *
83
- * @returns sanitized list of set names
84
- */
85
- function sanitizeFlagSets(log, flagSets, method) {
86
- var sanitizedSets = flagSets
87
- .map(function (flagSet) {
88
- if (CAPITAL_LETTERS_REGEX.test(flagSet)) {
89
- log.warn(WARN_LOWERCASE_FLAGSET, [method, flagSet]);
90
- flagSet = flagSet.toLowerCase();
91
- }
92
- return flagSet;
93
- })
94
- .filter(function (flagSet) {
95
- if (!VALID_FLAGSET_REGEX.test(flagSet)) {
96
- log.warn(WARN_INVALID_FLAGSET, [method, flagSet, VALID_FLAGSET_REGEX, flagSet]);
97
- return false;
98
- }
99
- if (typeof flagSet !== 'string')
100
- return false;
101
- return true;
102
- });
103
- return uniq(sanitizedSets);
104
- }
105
- function configuredFilter(validFilters, filterType) {
106
- return find(validFilters, function (filter) { return filter.type === filterType && filter.values.length > 0; });
107
- }
108
- /**
109
- * Validates `splitFilters` configuration object and parses it into a query string for filtering splits on `/splitChanges` fetch.
110
- *
111
- * @param log - logger
112
- * @param maybeSplitFilters - split filters configuration param provided by the user
113
- * @param mode - settings mode
114
- * @returns it returns an object with the following properties:
115
- * - `validFilters`: the validated `splitFilters` configuration object defined by the user.
116
- * - `queryString`: the parsed split filter query. it is null if all filters are invalid or all values in filters are invalid.
117
- * - `groupedFilters`: list of values grouped by filter type.
118
- *
119
- * @throws Error if the some of the grouped list of values per filter exceeds the max allowed length
120
- */
121
- export function validateSplitFilters(log, maybeSplitFilters, mode) {
122
- // Validation result schema
123
- var res = {
124
- validFilters: [],
125
- queryString: null,
126
- groupedFilters: { bySet: [], byName: [], byPrefix: [] },
127
- };
128
- // do nothing if `splitFilters` param is not a non-empty array or mode is not STANDALONE
129
- if (!maybeSplitFilters)
130
- return res;
131
- // Warn depending on the mode
132
- if (isConsumerMode(mode)) {
133
- log.warn(WARN_SPLITS_FILTER_IGNORED);
134
- return res;
135
- }
136
- // Check collection type
137
- if (!Array.isArray(maybeSplitFilters) || maybeSplitFilters.length === 0) {
138
- log.warn(WARN_SPLITS_FILTER_EMPTY);
139
- return res;
140
- }
141
- // Validate filters and group their values by filter type inside `groupedFilters` object
142
- res.validFilters = maybeSplitFilters.filter(function (filter, index) {
143
- if (filter && validateFilterType(filter.type) && Array.isArray(filter.values)) {
144
- res.groupedFilters[filter.type] = res.groupedFilters[filter.type].concat(filter.values);
145
- return true;
146
- }
147
- else {
148
- log.warn(WARN_SPLITS_FILTER_INVALID, [index]);
149
- }
150
- return false;
151
- });
152
- // By filter type, remove invalid and duplicated values and order them
153
- FILTERS_METADATA.forEach(function (_a) {
154
- var type = _a.type, maxLength = _a.maxLength;
155
- if (res.groupedFilters[type].length > 0)
156
- res.groupedFilters[type] = validateSplitFilter(log, type, res.groupedFilters[type], maxLength);
157
- });
158
- var setFilter = configuredFilter(res.validFilters, 'bySet');
159
- // Clean all filters if set filter is present
160
- if (setFilter) {
161
- if (configuredFilter(res.validFilters, 'byName') || configuredFilter(res.validFilters, 'byPrefix'))
162
- log.error(ERROR_SETS_FILTER_EXCLUSIVE);
163
- objectAssign(res.groupedFilters, { byName: [], byPrefix: [] });
164
- }
165
- // build query string
166
- res.queryString = queryStringBuilder(res.groupedFilters);
167
- log.debug(SETTINGS_SPLITS_FILTER, [res.queryString]);
168
- return res;
169
- }
170
- export function validateFlagSets(log, method, flagSets, flagSetsInConfig) {
171
- var sets = validateSplits(log, flagSets, method, 'flag sets', 'flag set');
172
- var toReturn = sets ? sanitizeFlagSets(log, sets, method) : [];
173
- if (flagSetsInConfig.length > 0) {
174
- toReturn = toReturn.filter(function (flagSet) {
175
- if (flagSetsInConfig.indexOf(flagSet) > -1) {
176
- return true;
177
- }
178
- log.warn(WARN_FLAGSET_NOT_CONFIGURED, [method, flagSet]);
179
- return false;
180
- });
181
- }
182
- return toReturn.length ? toReturn : false;
183
- }
@@ -1,44 +0,0 @@
1
- import { InMemoryStorageCSFactory } from '../../../storages/inMemory/InMemoryStorageCS';
2
- import { ERROR_STORAGE_INVALID } from '../../../logger/constants';
3
- import { LOCALHOST_MODE, STANDALONE_MODE, STORAGE_PLUGGABLE, STORAGE_LOCALSTORAGE, STORAGE_MEMORY } from '../../../utils/constants';
4
- export function __InLocalStorageMockFactory(params) {
5
- var result = InMemoryStorageCSFactory(params);
6
- result.validateCache = function () { return Promise.resolve(true); }; // to emit SDK_READY_FROM_CACHE
7
- return result;
8
- }
9
- __InLocalStorageMockFactory.type = STORAGE_MEMORY;
10
- /**
11
- * This function validates `settings.storage` object
12
- *
13
- * @param settings - config object provided by the user to initialize the sdk
14
- *
15
- * @returns valid storage factory. Default to `InMemoryStorageCSFactory` if the provided storage is invalid or not compatible with the sdk mode if mode is standalone or localhost
16
- *
17
- * @throws error if mode is consumer and the provided storage is not compatible
18
- */
19
- export function validateStorageCS(settings) {
20
- var _a = settings.storage, storage = _a === void 0 ? InMemoryStorageCSFactory : _a, log = settings.log, mode = settings.mode;
21
- // If an invalid storage is provided, fallback into MEMORY
22
- if (typeof storage !== 'function' || [STORAGE_MEMORY, STORAGE_LOCALSTORAGE, STORAGE_PLUGGABLE].indexOf(storage.type) === -1) {
23
- storage = InMemoryStorageCSFactory;
24
- log.error(ERROR_STORAGE_INVALID);
25
- }
26
- // In localhost mode with InLocalStorage, fallback to a mock InLocalStorage to emit SDK_READY_FROM_CACHE
27
- if (mode === LOCALHOST_MODE && storage.type === STORAGE_LOCALSTORAGE) {
28
- return __InLocalStorageMockFactory;
29
- }
30
- if ([LOCALHOST_MODE, STANDALONE_MODE].indexOf(mode) === -1) {
31
- // Consumer modes require an async storage
32
- if (storage.type !== STORAGE_PLUGGABLE)
33
- throw new Error('A PluggableStorage instance is required on consumer mode');
34
- }
35
- else {
36
- // Standalone and localhost modes require a sync storage
37
- if (storage.type === STORAGE_PLUGGABLE) {
38
- storage = InMemoryStorageCSFactory;
39
- log.error(ERROR_STORAGE_INVALID, [' It requires consumer mode.']);
40
- }
41
- }
42
- // return default InMemory storage if provided one is not valid
43
- return storage;
44
- }