@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
@@ -0,0 +1,17 @@
1
+ import osFunction from 'os';
2
+ import { address } from '../../utils/ip';
3
+ import { UNKNOWN, NA, CONSUMER_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
4
+ export function validateRuntime(settings) {
5
+ var isIPAddressesEnabled = settings.core.IPAddressesEnabled === true;
6
+ var isConsumerMode = settings.mode === CONSUMER_MODE;
7
+ // If the values are not available, default to false (for standalone) or "unknown" (for consumer mode, to be used on Redis keys)
8
+ var ip = address() || (isConsumerMode ? UNKNOWN : false);
9
+ var hostname = osFunction.hostname() || (isConsumerMode ? UNKNOWN : false);
10
+ if (!isIPAddressesEnabled) { // If IPAddresses setting is not enabled, set as false (for standalone) or "NA" (for consumer mode, to be used on Redis keys)
11
+ ip = hostname = isConsumerMode ? NA : false;
12
+ }
13
+ return {
14
+ ip: ip,
15
+ hostname: hostname
16
+ };
17
+ }
@@ -0,0 +1,31 @@
1
+ import { isLocalStorageAvailable } from '@splitsoftware/splitio-commons/esm/utils/env/isLocalStorageAvailable';
2
+ import { LOCALHOST_MODE, STORAGE_MEMORY } from '@splitsoftware/splitio-commons/esm/utils/constants';
3
+ var STORAGE_LOCALSTORAGE = 'LOCALSTORAGE';
4
+ export function validateStorage(settings) {
5
+ var log = settings.log, mode = settings.mode, _a = settings.storage, _b = _a === void 0 ? { type: STORAGE_MEMORY } : _a, type = _b.type, _c = _b.options, options = _c === void 0 ? {} : _c, prefix = _b.prefix, expirationDays = _b.expirationDays, clearOnInit = _b.clearOnInit;
6
+ var __originalType;
7
+ var fallbackToMemory = function () {
8
+ __originalType = type;
9
+ type = STORAGE_MEMORY;
10
+ };
11
+ // In localhost mode, fallback to Memory storage and track original type to emit SDK_READY_FROM_CACHE if corresponds.
12
+ // ATM, other mode settings (e.g., 'consumer') are ignored in client-side API, and so treated as standalone.
13
+ if (mode === LOCALHOST_MODE && type === STORAGE_LOCALSTORAGE) {
14
+ fallbackToMemory();
15
+ }
16
+ // If an invalid storage type is provided OR we want to use LOCALSTORAGE and
17
+ // it's not available, fallback into MEMORY
18
+ if (type !== STORAGE_MEMORY && type !== STORAGE_LOCALSTORAGE ||
19
+ type === STORAGE_LOCALSTORAGE && !isLocalStorageAvailable()) {
20
+ fallbackToMemory();
21
+ log.error('Invalid or unavailable storage. Fallback into MEMORY storage');
22
+ }
23
+ return {
24
+ type: type,
25
+ options: options,
26
+ prefix: prefix,
27
+ expirationDays: expirationDays,
28
+ clearOnInit: clearOnInit,
29
+ __originalType: __originalType
30
+ };
31
+ }
@@ -0,0 +1,63 @@
1
+ import { LOCALHOST_MODE, STORAGE_MEMORY, STORAGE_REDIS, CONSUMER_MODE, STANDALONE_MODE } from '@splitsoftware/splitio-commons/esm/utils/constants';
2
+ export function validateStorage(settings) {
3
+ var log = settings.log, mode = settings.mode, _a = settings.storage, _b = _a === void 0 ? { type: STORAGE_MEMORY } : _a, type = _b.type, _c = _b.options, options = _c === void 0 ? {} : _c, prefix = _b.prefix;
4
+ // We can have MEMORY, REDIS or an invalid storage type
5
+ switch (type) {
6
+ case STORAGE_REDIS: {
7
+ // If passing REDIS storage in localhost or standalone mode, we log an error and fallback to MEMORY storage
8
+ if (mode === STANDALONE_MODE || mode === LOCALHOST_MODE) {
9
+ log.error('The provided REDIS storage is invalid for this mode. It requires consumer mode. Fallback into default MEMORY storage.');
10
+ return {
11
+ type: STORAGE_MEMORY,
12
+ prefix: prefix
13
+ };
14
+ }
15
+ var host = options.host, port = options.port, db = options.db, pass = options.pass, url = options.url, tls = options.tls, connectionTimeout = options.connectionTimeout, operationTimeout = options.operationTimeout;
16
+ if (process.env.REDIS_HOST)
17
+ host = process.env.REDIS_HOST;
18
+ if (process.env.REDIS_PORT)
19
+ port = process.env.REDIS_PORT;
20
+ if (process.env.REDIS_DB)
21
+ db = process.env.REDIS_DB;
22
+ if (process.env.REDIS_PASS)
23
+ pass = process.env.REDIS_PASS;
24
+ if (process.env.REDIS_URL)
25
+ url = process.env.REDIS_URL;
26
+ var newOpts = {
27
+ connectionTimeout: connectionTimeout,
28
+ operationTimeout: operationTimeout
29
+ };
30
+ if (url) {
31
+ newOpts.url = url;
32
+ }
33
+ else {
34
+ newOpts.host = host;
35
+ newOpts.port = port;
36
+ newOpts.db = db;
37
+ newOpts.pass = pass;
38
+ }
39
+ if (tls) {
40
+ newOpts.tls = tls;
41
+ }
42
+ return {
43
+ type: type,
44
+ prefix: prefix,
45
+ options: newOpts
46
+ };
47
+ }
48
+ // For now, we don't have modifiers or settings for MEMORY in Node.js
49
+ case STORAGE_MEMORY:
50
+ default: {
51
+ // If passing MEMORY storage in consumer mode, throw an error (no way to fallback to REDIS storage)
52
+ if (mode === CONSUMER_MODE)
53
+ throw new Error('A REDIS storage is required on consumer mode');
54
+ // If passing an invalid storage type, log an error
55
+ if (type !== STORAGE_MEMORY)
56
+ log.error("The provided '" + type + "' storage type is invalid. Fallback into default MEMORY storage.");
57
+ return {
58
+ type: STORAGE_MEMORY,
59
+ prefix: prefix
60
+ };
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,5 @@
1
+ import { splitsParserFromFileFactory } from './splitsParserFromFile';
2
+ import { syncManagerOfflineFactory } from '@splitsoftware/splitio-commons/esm/sync/offline/syncManagerOffline';
3
+ // Singleton instance of the factory function for offline SyncManager from YAML file
4
+ // It uses Node.js APIs.
5
+ export var localhostFromFileFactory = syncManagerOfflineFactory(splitsParserFromFileFactory);
@@ -0,0 +1,143 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import yaml from 'js-yaml';
4
+ import { isString, endsWith, find, forOwn, uniq, } from '@splitsoftware/splitio-commons/esm/utils/lang';
5
+ import { parseCondition } from '@splitsoftware/splitio-commons/esm/sync/offline/splitsParser/parseCondition';
6
+ var logPrefix = 'sync:offline:fetcher: ';
7
+ var DEFAULT_FILENAME = '.split';
8
+ function configFilesPath(configFilePath) {
9
+ if (configFilePath === DEFAULT_FILENAME || !isString(configFilePath)) {
10
+ var root = process.env.HOME;
11
+ // @TODO env var not documented in help center
12
+ if (process.env.SPLIT_CONFIG_ROOT)
13
+ root = process.env.SPLIT_CONFIG_ROOT;
14
+ if (!root)
15
+ throw new Error('Missing root of the feature flags mock file.');
16
+ configFilePath = path.join(root, DEFAULT_FILENAME);
17
+ }
18
+ // Validate the extensions
19
+ if (!(endsWith(configFilePath, '.yaml', true) || endsWith(configFilePath, '.yml', true) || endsWith(configFilePath, '.split', true)))
20
+ throw new Error("Invalid extension specified for feature flags mock file. Accepted extensions are \".yml\" and \".yaml\". Your specified file is " + configFilePath);
21
+ if (!fs.existsSync(configFilePath))
22
+ throw new Error("Feature flags mock file not found in " + configFilePath + " - Please review the file location.");
23
+ return configFilePath;
24
+ }
25
+ // This function is not pure nor meant to be. Here we apply modifications to cover
26
+ // for behavior that's ensured by the BE.
27
+ function arrangeConditions(mocksData) {
28
+ // Iterate through each feature flag data
29
+ forOwn(mocksData, function (data) {
30
+ var conditions = data.conditions;
31
+ // On the manager, as feature flag JSONs come with all treatments on the partitions prop,
32
+ // we'll add all the treatments to the first condition.
33
+ var firstRolloutCondition = find(conditions, function (cond) { return cond.conditionType === 'ROLLOUT'; });
34
+ // Malformed mocks may have
35
+ var treatments = uniq(data.treatments);
36
+ // If they're only specifying a whitelist we add the treatments there.
37
+ var allTreatmentsCondition = firstRolloutCondition ? firstRolloutCondition : conditions[0];
38
+ var fullyAllocatedTreatment = allTreatmentsCondition.partitions[0].treatment;
39
+ treatments.forEach(function (treatment) {
40
+ if (treatment !== fullyAllocatedTreatment) {
41
+ allTreatmentsCondition.partitions.push({
42
+ treatment: treatment,
43
+ size: 0
44
+ });
45
+ }
46
+ });
47
+ // Don't need these anymore
48
+ delete data.treatments;
49
+ });
50
+ }
51
+ export function splitsParserFromFileFactory() {
52
+ var previousMock = 'NO_MOCK_LOADED';
53
+ // Parse `.split` configuration file and return a map of feature flag objects
54
+ function readFeatureFlagConfigFile(log, filePath) {
55
+ var FEATURE_FLAG_POSITION = 0;
56
+ var TREATMENT_POSITION = 1;
57
+ var data;
58
+ try {
59
+ data = fs.readFileSync(filePath, 'utf-8');
60
+ }
61
+ catch (e) {
62
+ log.error(e && e.message);
63
+ return {};
64
+ }
65
+ if (data === previousMock)
66
+ return false;
67
+ previousMock = data;
68
+ var featureFlagObjects = data.split(/\r?\n/).reduce(function (accum, line, index) {
69
+ var tuple = line.trim();
70
+ if (tuple === '' || tuple.charAt(0) === '#') {
71
+ log.debug(logPrefix + ("Ignoring empty line or comment at #" + index));
72
+ }
73
+ else {
74
+ tuple = tuple.split(/\s+/);
75
+ if (tuple.length !== 2) {
76
+ log.debug(logPrefix + ("Ignoring line since it does not have exactly two columns #" + index));
77
+ }
78
+ else {
79
+ var featureFlagName = tuple[FEATURE_FLAG_POSITION];
80
+ var condition = parseCondition({ treatment: tuple[TREATMENT_POSITION] });
81
+ accum[featureFlagName] = { conditions: [condition], configurations: {}, trafficTypeName: 'localhost' };
82
+ }
83
+ }
84
+ return accum;
85
+ }, {});
86
+ return featureFlagObjects;
87
+ }
88
+ // Parse `.yml` or `.yaml` configuration files and return a map of feature flag objects
89
+ function readYAMLConfigFile(log, filePath) {
90
+ var data = '';
91
+ var yamldoc = null;
92
+ try {
93
+ data = fs.readFileSync(filePath, 'utf8');
94
+ if (data === previousMock)
95
+ return false;
96
+ previousMock = data;
97
+ yamldoc = yaml.safeLoad(data);
98
+ }
99
+ catch (e) {
100
+ log.error(e);
101
+ return {};
102
+ }
103
+ // Each entry will be mapped to a condition, but we'll also keep the configurations map.
104
+ var mocksData = (yamldoc).reduce(function (accum, featureFlagEntry) {
105
+ var featureFlagName = Object.keys(featureFlagEntry)[0];
106
+ if (!featureFlagName || !isString(featureFlagEntry[featureFlagName].treatment))
107
+ log.error(logPrefix + 'Ignoring entry on YAML since the format is incorrect.');
108
+ var mockData = featureFlagEntry[featureFlagName];
109
+ // "Template" for each feature flag accumulated data
110
+ if (!accum[featureFlagName]) {
111
+ accum[featureFlagName] = {
112
+ configurations: {}, conditions: [], treatments: [], trafficTypeName: 'localhost'
113
+ };
114
+ }
115
+ // Assign the config if there is one on the mock
116
+ if (mockData.config)
117
+ accum[featureFlagName].configurations[mockData.treatment] = mockData.config;
118
+ // Parse the condition from the entry.
119
+ var condition = parseCondition(mockData);
120
+ accum[featureFlagName].conditions[condition.conditionType === 'ROLLOUT' ? 'push' : 'unshift'](condition);
121
+ // Also keep track of the treatments, will be useful for manager functionality.
122
+ accum[featureFlagName].treatments.push(mockData.treatment);
123
+ return accum;
124
+ }, {});
125
+ arrangeConditions(mocksData);
126
+ return mocksData;
127
+ }
128
+ // Load the content of a configuration file into an Object
129
+ return function featureFlagsParserFromFile(_a) {
130
+ var features = _a.features, log = _a.log;
131
+ var filePath = configFilesPath(features);
132
+ var mockData;
133
+ // If we have a filePath, it means the extension is correct, choose the parser.
134
+ if (endsWith(filePath, '.split')) {
135
+ log.warn(logPrefix + '.split mocks will be deprecated soon in favor of YAML files, which provide more targeting power. Take a look in our documentation.');
136
+ mockData = readFeatureFlagConfigFile(log, filePath);
137
+ }
138
+ else {
139
+ mockData = readYAMLConfigFile(log, filePath);
140
+ }
141
+ return mockData;
142
+ };
143
+ }
package/esm/umd.js ADDED
@@ -0,0 +1,3 @@
1
+ import { SplitFactory } from './index';
2
+ // eslint-disable-next-line import/no-default-export
3
+ export default SplitFactory;
@@ -0,0 +1,109 @@
1
+ /* eslint-disable no-redeclare */
2
+ /*
3
+ Trimmed version of "ip" package (https://www.npmjs.com/package/ip) that fixes an error when running in Node.js v18.
4
+
5
+ This software is licensed under the MIT License.
6
+
7
+ Copyright Fedor Indutny, 2012.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14
+ */
15
+ import os from 'os';
16
+ function _resolveFamily(family) {
17
+ return typeof family === 'number' ? 'ipv' + family : family.toLowerCase();
18
+ }
19
+ function _normalizeFamily(family) {
20
+ return family ? _resolveFamily(family) : 'ipv4';
21
+ }
22
+ function isPrivate(addr) {
23
+ return /^(::f{4}:)?10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i
24
+ .test(addr) ||
25
+ /^(::f{4}:)?192\.168\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) ||
26
+ /^(::f{4}:)?172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})$/i
27
+ .test(addr) ||
28
+ /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) ||
29
+ /^(::f{4}:)?169\.254\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) ||
30
+ /^f[cd][0-9a-f]{2}:/i.test(addr) ||
31
+ /^fe80:/i.test(addr) ||
32
+ /^::1$/.test(addr) ||
33
+ /^::$/.test(addr);
34
+ }
35
+ function isPublic(addr) {
36
+ return !isPrivate(addr);
37
+ }
38
+ function isLoopback(addr) {
39
+ return /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/
40
+ .test(addr) ||
41
+ /^fe80::1$/.test(addr) ||
42
+ /^::1$/.test(addr) ||
43
+ /^::$/.test(addr);
44
+ }
45
+ function loopback(family) {
46
+ //
47
+ // Default to `ipv4`
48
+ //
49
+ family = _normalizeFamily(family);
50
+ if (family !== 'ipv4' && family !== 'ipv6') {
51
+ throw new Error('family must be ipv4 or ipv6');
52
+ }
53
+ return family === 'ipv4' ? '127.0.0.1' : 'fe80::1';
54
+ }
55
+ //
56
+ // ### function address (name, family)
57
+ // #### @name {string|'public'|'private'} **Optional** Name or security
58
+ // of the network interface.
59
+ // #### @family {ipv4|ipv6} **Optional** IP family of the address (defaults
60
+ // to ipv4).
61
+ //
62
+ // Returns the address for the network interface on the current system with
63
+ // the specified `name`:
64
+ // * String: First `family` address of the interface.
65
+ // If not found see `undefined`.
66
+ // * 'public': the first public ip address of family.
67
+ // * 'private': the first private ip address of family.
68
+ // * undefined: First address with `ipv4` or loopback address `127.0.0.1`.
69
+ //
70
+ export function address(name, family) {
71
+ var interfaces = os.networkInterfaces();
72
+ var all;
73
+ //
74
+ // Default to `ipv4`
75
+ //
76
+ family = _normalizeFamily(family);
77
+ //
78
+ // If a specific network interface has been named,
79
+ // return the address.
80
+ //
81
+ if (name && name !== 'private' && name !== 'public') {
82
+ var res = interfaces[name].filter(function (details) {
83
+ var itemFamily = _resolveFamily(details.family);
84
+ return itemFamily === family;
85
+ });
86
+ if (res.length === 0)
87
+ return undefined;
88
+ return res[0].address;
89
+ }
90
+ var all = Object.keys(interfaces).map(function (nic) {
91
+ //
92
+ // Note: name will only be `public` or `private`
93
+ // when this is called.
94
+ //
95
+ var addresses = interfaces[nic].filter(function (details) {
96
+ details.family = _resolveFamily(details.family);
97
+ if (details.family !== family || isLoopback(details.address)) {
98
+ return false;
99
+ }
100
+ else if (!name) {
101
+ return true;
102
+ }
103
+ return name === 'public' ? isPrivate(details.address) :
104
+ isPublic(details.address);
105
+ });
106
+ return addresses.length ? addresses[0].address : undefined;
107
+ }).filter(Boolean);
108
+ return !all.length ? loopback(family) : all[0];
109
+ }
package/package.json CHANGED
@@ -1,83 +1,124 @@
1
1
  {
2
2
  "name": "@splitsoftware/splitio-commons",
3
- "version": "2.4.2-rc.3",
4
- "description": "Split JavaScript SDK common components",
5
- "main": "cjs/index.js",
6
- "module": "esm/index.js",
7
- "types": "types",
3
+ "version": "11.5.0-rc.0",
4
+ "description": "Split SDK",
8
5
  "files": [
9
6
  "README.md",
10
7
  "CONTRIBUTORS-GUIDE.md",
11
8
  "LICENSE",
12
9
  "CHANGES.txt",
13
10
  "cjs",
11
+ "types",
14
12
  "esm",
15
13
  "src",
16
- "types"
14
+ "client",
15
+ "server"
16
+ ],
17
+ "repository": "splitio/javascript-client",
18
+ "homepage": "https://github.com/splitio/javascript-client#readme",
19
+ "bugs": "https://github.com/splitio/javascript-client/issues",
20
+ "license": "Apache-2.0",
21
+ "author": "Facundo Cabrera <facundo@split.io>",
22
+ "contributors": [
23
+ {
24
+ "name": "Nico Zelaya",
25
+ "email": "nicolas.zelaya@split.io",
26
+ "url": "https://github.com/NicoZelaya"
27
+ }
17
28
  ],
18
- "scripts": {
19
- "check": "npm run check:lint && npm run check:types",
20
- "check:lint": "eslint src types --ext .js,.ts",
21
- "check:types": "tsc --noEmit",
22
- "build": "npm run build:cjs && npm run build:esm",
23
- "build:esm": "rimraf esm && tsc -m es2015 --outDir esm",
24
- "build:cjs": "rimraf cjs && tsc -m CommonJS --outDir cjs",
25
- "test": "jest",
26
- "test:coverage": "jest --coverage",
27
- "all": "npm run check && npm run build && npm run test",
28
- "publish:rc": "npm run check && npm run test && npm run build && npm publish --tag rc",
29
- "publish:stable": "npm run check && npm run test && npm run build && npm publish"
30
- },
31
- "repository": {
32
- "type": "git",
33
- "url": "git+https://github.com/splitio/javascript-commons.git"
34
- },
35
29
  "keywords": [
36
30
  "splitio",
37
31
  "sdk",
38
32
  "javascript"
39
33
  ],
40
- "author": "Emiliano Sanchez <emiliano.sanchez@split.io> (https://github.com/EmilianoSanchez)",
41
- "contributors": [
42
- "Nicolas Zelaya <nicolas.zelaya@split.io> (https://github.com/NicoZelaya)"
43
- ],
44
- "license": "Apache-2.0",
45
- "bugs": "https://github.com/splitio/javascript-commons/issues",
46
- "homepage": "https://github.com/splitio/javascript-commons#readme",
47
- "dependencies": {
48
- "@types/ioredis": "^4.28.0",
49
- "tslib": "^2.3.1"
50
- },
51
- "peerDependencies": {
52
- "ioredis": "^4.28.0"
34
+ "main": "cjs/index.js",
35
+ "module": "esm/index.js",
36
+ "types": "types",
37
+ "engines": {
38
+ "node": ">=14.0.0"
53
39
  },
54
- "peerDependenciesMeta": {
55
- "ioredis": {
56
- "optional": true
57
- }
40
+ "dependencies": {
41
+ "@splitsoftware/splitio-commons": "2.5.0-rc.0",
42
+ "bloom-filters": "^3.0.4",
43
+ "ioredis": "^4.28.0",
44
+ "js-yaml": "^3.13.1",
45
+ "node-fetch": "^2.7.0",
46
+ "tslib": "^2.3.1",
47
+ "unfetch": "^4.2.0"
58
48
  },
59
49
  "devDependencies": {
60
- "@types/google.analytics": "0.0.40",
61
- "@types/ioredis": "^4.28.0",
62
- "@types/jest": "^27.0.0",
63
- "@types/lodash": "^4.14.162",
64
- "@typescript-eslint/eslint-plugin": "^6.6.0",
65
- "@typescript-eslint/parser": "^6.6.0",
66
- "cross-env": "^7.0.2",
50
+ "@types/node-fetch": "^2.6.10",
51
+ "@types/seedrandom": "^3.0.2",
52
+ "copyfiles": "^2.4.1",
53
+ "cross-env": "^7.0.3",
54
+ "csv-streamify": "4.0.0",
67
55
  "eslint": "^8.48.0",
68
- "eslint-plugin-compat": "^6.0.1",
69
- "eslint-plugin-import": "^2.25.3",
70
- "eslint-plugin-tsdoc": "^0.3.0",
71
- "fetch-mock": "^9.11.0",
72
- "ioredis": "^4.28.0",
73
- "jest": "^27.2.3",
74
- "jest-localstorage-mock": "^2.4.3",
56
+ "eslint-plugin-compat": "^4.2.0",
57
+ "eslint-plugin-import": "^2.25.4",
58
+ "fetch-mock": "^11.1.5",
59
+ "karma": "^6.3.16",
60
+ "karma-chrome-launcher": "^3.1.0",
61
+ "karma-tap": "^4.2.0",
62
+ "karma-webpack": "^5.0.0",
75
63
  "lodash": "^4.17.21",
76
- "node-fetch": "^2.7.0",
64
+ "node-polyfill-webpack-plugin": "^1.1.4",
65
+ "proxyquire": "^2.1.3",
66
+ "puppeteer": "^3.3.0",
67
+ "redis-dumpz": "0.1.12",
77
68
  "redis-server": "1.2.2",
69
+ "replace": "^1.2.1",
78
70
  "rimraf": "^3.0.2",
79
- "ts-jest": "^27.0.5",
80
- "typescript": "4.4.4"
71
+ "sinon": "^9.2.4",
72
+ "tap-min": "^2.0.0",
73
+ "tape": "4.13.2",
74
+ "tape-catch": "1.0.6",
75
+ "ts-loader": "^9.2.6",
76
+ "ts-node": "^10.5.0",
77
+ "typescript": "4.4.4",
78
+ "webpack": "^5.53.0",
79
+ "webpack-cli": "^4.8.0",
80
+ "webpack-merge": "^5.8.0"
81
+ },
82
+ "scripts": {
83
+ "build-esm": "rimraf esm && tsc -outDir esm",
84
+ "postbuild-esm": "cross-env NODE_ENV=esm node scripts/copy.packages.json.js && ./scripts/build_esm_replace_imports.sh",
85
+ "build-umd:stats": "webpack --progress --env production --json > ./stats/stat_results.json",
86
+ "build-cjs": "rimraf cjs && tsc -outDir cjs -m CommonJS",
87
+ "postbuild-cjs": "cross-env NODE_ENV=cjs node scripts/copy.packages.json.js && ./scripts/build_cjs_replace_imports.sh",
88
+ "build-umd": "rimraf umd && webpack --config webpack.dev.js --env branch=$BUILD_BRANCH && webpack --config webpack.prod.js --env branch=$BUILD_BRANCH && ./scripts/clean_umd_build.sh",
89
+ "build:npm": "npm run build-cjs && npm run build-esm",
90
+ "build": "npm run build-cjs && npm run build-esm && npm run build-umd",
91
+ "check": "npm run check:lint && npm run check:version",
92
+ "check:lint": "eslint src",
93
+ "check:version": "cross-env NODE_ENV=test tape -r ./ts-node.register src/settings/__tests__/defaults.spec.js",
94
+ "test-browser": "npm run test-browser-unit && npm run test-browser-e2e",
95
+ "test-browser-unit": "cross-env NODE_ENV=test karma start karma/unit.karma.conf.js",
96
+ "test-browser-e2e": "npm run test-browser-e2e-online && npm run test-browser-e2e-offline && npm run test-browser-e2e-destroy && npm run test-browser-e2e-errorCatching && npm run test-browser-e2e-push",
97
+ "test-browser-e2e-online": "cross-env NODE_ENV=test karma start karma/e2e.online.karma.conf.js",
98
+ "test-browser-e2e-offline": "cross-env NODE_ENV=test karma start karma/e2e.offline.karma.conf.js",
99
+ "test-browser-e2e-destroy": "cross-env NODE_ENV=test karma start karma/e2e.destroy.karma.conf.js",
100
+ "test-browser-e2e-errorCatching": "cross-env NODE_ENV=test karma start karma/e2e.errorCatching.karma.conf.js",
101
+ "test-browser-e2e-push": "cross-env NODE_ENV=test karma start karma/e2e.push.karma.conf.js",
102
+ "test-node": "npm run test-node-unit && npm run test-node-e2e",
103
+ "test-node-unit": "cross-env NODE_ENV=test tape -r ./ts-node.register \"src/*/**/__tests__/**/!(browser).spec.js\" | tap-min",
104
+ "test-node-e2e": "npm run test-node-e2e-online && npm run test-node-e2e-offline && npm run test-node-e2e-destroy && npm run test-node-e2e-errorCatching && npm run test-node-e2e-push && npm run test-node-e2e-redis",
105
+ "test-node-e2e-online": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/online/node.spec.js | tap-min",
106
+ "test-node-e2e-offline": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/offline/node.spec.js | tap-min",
107
+ "test-node-e2e-destroy": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/destroy/node.spec.js | tap-min",
108
+ "test-node-e2e-errorCatching": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/errorCatching/node.spec.js | tap-min",
109
+ "test-node-e2e-push": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/push/node.spec.js | tap-min",
110
+ "test-node-e2e-redis": "cross-env NODE_ENV=test tape -r ./ts-node.register src/__tests__/consumer/node_redis.spec.js | tap-min",
111
+ "test-ts-decls": "tsc --build ts-tests",
112
+ "test": "npm run test-node && npm run test-browser",
113
+ "all": "npm run check && npm run build && npm run test-ts-decls && npm run test",
114
+ "publish:rc": "npm run check && npm run build && npm publish --tag canary",
115
+ "publish:stable": "npm run check && npm run build && npm publish"
81
116
  },
82
- "sideEffects": false
117
+ "greenkeeper": {
118
+ "ignore": [
119
+ "karma",
120
+ "karma-tap",
121
+ "karma-webpack"
122
+ ]
123
+ }
83
124
  }
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../cjs/factory/node.js",
3
+ "module": "../esm/factory/node.js",
4
+ "types": "../types/server/index.d.ts"
5
+ }
@@ -0,0 +1,85 @@
1
+ import { splitApiFactory } from '@splitsoftware/splitio-commons/src/services/splitApi';
2
+ import { syncManagerOnlineFactory } from '@splitsoftware/splitio-commons/src/sync/syncManagerOnline';
3
+ import { pushManagerFactory } from '@splitsoftware/splitio-commons/src/sync/streaming/pushManager';
4
+ import { pollingManagerCSFactory } from '@splitsoftware/splitio-commons/src/sync/polling/pollingManagerCS';
5
+ import { InLocalStorage } from '@splitsoftware/splitio-commons/src/storages/inLocalStorage';
6
+ import { InMemoryStorageCSFactory } from '@splitsoftware/splitio-commons/src/storages/inMemory/InMemoryStorageCS';
7
+ import { sdkManagerFactory } from '@splitsoftware/splitio-commons/src/sdkManager';
8
+ import { sdkClientMethodCSFactory } from '@splitsoftware/splitio-commons/src/sdkClient/sdkClientMethodCS';
9
+ import { impressionObserverCSFactory } from '@splitsoftware/splitio-commons/src/trackers/impressionObserver/impressionObserverCS';
10
+ import { __InLocalStorageMockFactory } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/storage/storageCS';
11
+ import { sdkFactory } from '@splitsoftware/splitio-commons/src/sdkFactory';
12
+ import { LOCALHOST_MODE, STORAGE_LOCALSTORAGE } from '@splitsoftware/splitio-commons/src/utils/constants';
13
+ import { createUserConsentAPI } from '@splitsoftware/splitio-commons/src/consent/sdkUserConsent';
14
+ import { localhostFromObjectFactory } from '@splitsoftware/splitio-commons/src/sync/offline/LocalhostFromObject';
15
+
16
+ import { settingsFactory } from '../settings/browser';
17
+ import { platform, SignalListener } from '../platform';
18
+
19
+ const syncManagerOnlineCSFactory = syncManagerOnlineFactory(pollingManagerCSFactory, pushManagerFactory);
20
+
21
+ function getStorage(settings) {
22
+ return settings.storage.type === STORAGE_LOCALSTORAGE ?
23
+ InLocalStorage(settings.storage) :
24
+ settings.storage.__originalType === STORAGE_LOCALSTORAGE ?
25
+ __InLocalStorageMockFactory :
26
+ InMemoryStorageCSFactory;
27
+ }
28
+
29
+ /**
30
+ *
31
+ * @param {import("@splitsoftware/splitio-commons/types/types").ISettings} settings
32
+ */
33
+ function getModules(settings) {
34
+
35
+ const modules = {
36
+ settings,
37
+
38
+ platform,
39
+
40
+ storageFactory: getStorage(settings),
41
+
42
+ splitApiFactory,
43
+
44
+ syncManagerFactory: syncManagerOnlineCSFactory,
45
+
46
+ sdkManagerFactory,
47
+
48
+ sdkClientMethodFactory: sdkClientMethodCSFactory,
49
+
50
+ SignalListener,
51
+
52
+ impressionsObserverFactory: impressionObserverCSFactory,
53
+
54
+ extraProps: (params) => {
55
+ return {
56
+ UserConsent: createUserConsentAPI(params)
57
+ };
58
+ }
59
+ };
60
+
61
+ switch (settings.mode) {
62
+ case LOCALHOST_MODE:
63
+ modules.splitApiFactory = undefined;
64
+ modules.syncManagerFactory = localhostFromObjectFactory;
65
+ modules.SignalListener = undefined;
66
+ break;
67
+ }
68
+
69
+ return modules;
70
+ }
71
+
72
+ /**
73
+ * SplitFactory for client-side.
74
+ *
75
+ * @param {SplitIO.IBrowserSettings} config configuration object used to instantiate the SDK
76
+ * @param {Function=} __updateModules optional function that lets redefine internal SDK modules. Use with
77
+ * caution since, unlike `config`, this param is not validated neither considered part of the public API.
78
+ * @throws Will throw an error if the provided config is invalid.
79
+ */
80
+ export function SplitFactory(config, __updateModules) {
81
+ const settings = settingsFactory(config);
82
+ const modules = getModules(settings);
83
+ if (__updateModules) __updateModules(modules);
84
+ return sdkFactory(modules);
85
+ }