@splitsoftware/splitio 10.17.1-rc.0 → 10.17.3-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/CHANGES.txt +6 -1
  2. package/es/factory/clientSide.js +45 -0
  3. package/es/factory/commons.js +16 -0
  4. package/es/factory/package.json +4 -0
  5. package/es/factory/serverSide.js +42 -0
  6. package/es/index.js +1 -132
  7. package/es/platform/browser.js +11 -0
  8. package/es/{services → platform}/getEventSource/browser.js +1 -1
  9. package/es/{services → platform}/getEventSource/node.js +1 -1
  10. package/es/{client → platform/getEventSource}/package.json +0 -0
  11. package/es/{services → platform}/getFetch/browser.js +1 -1
  12. package/es/{services → platform}/getFetch/node.js +1 -1
  13. package/es/{impressions/observer → platform/getFetch}/package.json +0 -0
  14. package/es/platform/node.js +13 -0
  15. package/es/{integrations → platform}/package.json +0 -0
  16. package/es/{services → platform}/request/options/node.js +2 -2
  17. package/es/settings/clientSide.js +18 -0
  18. package/{lib/utils → es}/settings/defaults/browser.js +6 -8
  19. package/{src/utils → es}/settings/defaults/node.js +6 -3
  20. package/es/settings/defaults/version.js +1 -0
  21. package/es/settings/integrations/browser.js +5 -0
  22. package/es/settings/integrations/node.js +5 -0
  23. package/es/settings/package.json +4 -0
  24. package/es/{utils/settings → settings}/runtime/node.js +6 -4
  25. package/es/settings/serverSide.js +20 -0
  26. package/es/{utils/settings → settings}/storage/browser.js +12 -14
  27. package/es/{utils/settings → settings}/storage/node.js +10 -9
  28. package/es/umd.js +2 -1
  29. package/lib/factory/clientSide.js +65 -0
  30. package/lib/factory/commons.js +23 -0
  31. package/lib/factory/package.json +4 -0
  32. package/lib/factory/serverSide.js +60 -0
  33. package/lib/index.js +3 -151
  34. package/lib/platform/browser.js +24 -0
  35. package/lib/{services → platform}/getEventSource/browser.js +1 -1
  36. package/lib/{services → platform}/getEventSource/node.js +1 -1
  37. package/{es/listeners → lib/platform/getEventSource}/package.json +0 -0
  38. package/lib/{services → platform}/getFetch/browser.js +1 -1
  39. package/lib/{services → platform}/getFetch/node.js +1 -1
  40. package/{es/producer/offline → lib/platform/getFetch}/package.json +0 -0
  41. package/lib/platform/node.js +27 -0
  42. package/{es/producer → lib/platform}/package.json +0 -0
  43. package/lib/{services → platform}/request/options/node.js +2 -2
  44. package/lib/settings/clientSide.js +30 -0
  45. package/{src/utils → lib}/settings/defaults/browser.js +13 -3
  46. package/{es/utils → lib}/settings/defaults/node.js +13 -3
  47. package/lib/settings/defaults/version.js +6 -0
  48. package/lib/settings/integrations/browser.js +14 -0
  49. package/lib/settings/integrations/node.js +12 -0
  50. package/lib/settings/package.json +4 -0
  51. package/lib/{utils/settings → settings}/runtime/node.js +7 -5
  52. package/lib/settings/serverSide.js +33 -0
  53. package/lib/{utils/settings → settings}/storage/browser.js +15 -20
  54. package/lib/{utils/settings → settings}/storage/node.js +13 -11
  55. package/lib/umd.js +1 -0
  56. package/package.json +16 -13
  57. package/src/.DS_Store +0 -0
  58. package/src/factory/clientSide.js +58 -0
  59. package/src/factory/commons.js +16 -0
  60. package/src/factory/package.json +4 -0
  61. package/src/factory/serverSide.js +51 -0
  62. package/src/index.js +1 -140
  63. package/src/{sync/SSEHandler → platform}/.DS_Store +0 -0
  64. package/src/platform/browser.js +13 -0
  65. package/src/{services → platform}/getEventSource/browser.js +2 -2
  66. package/src/{services → platform}/getEventSource/node.js +2 -2
  67. package/{es/services → src/platform}/getEventSource/package.json +0 -0
  68. package/src/{services → platform}/getFetch/browser.js +2 -2
  69. package/src/{services → platform}/getFetch/node.js +1 -1
  70. package/{es/services → src/platform}/getFetch/package.json +0 -0
  71. package/src/platform/node.js +15 -0
  72. package/{es/services/request/options → src/platform}/package.json +0 -0
  73. package/src/{services → platform}/request/options/node.js +2 -2
  74. package/src/{listeners → settings}/.DS_Store +0 -0
  75. package/src/settings/clientSide.js +18 -0
  76. package/{es/utils → src}/settings/defaults/browser.js +8 -3
  77. package/{lib/utils → src}/settings/defaults/node.js +6 -6
  78. package/src/settings/defaults/version.js +1 -0
  79. package/src/settings/integrations/browser.js +6 -0
  80. package/src/{utils/settings → settings}/integrations/node.js +1 -3
  81. package/src/settings/package.json +4 -0
  82. package/src/{utils/settings → settings}/runtime/node.js +9 -6
  83. package/src/settings/serverSide.js +20 -0
  84. package/src/{utils/settings → settings}/storage/browser.js +10 -16
  85. package/src/{utils/settings → settings}/storage/node.js +7 -7
  86. package/src/umd.js +1 -0
  87. package/types/splitio.d.ts +2 -2
  88. package/es/client/attributesDecoration.js +0 -116
  89. package/es/client/browser.js +0 -39
  90. package/es/client/client.js +0 -155
  91. package/es/client/inputValidation.js +0 -117
  92. package/es/client/node.js +0 -6
  93. package/es/engine/combiners/and.js +0 -54
  94. package/es/engine/combiners/ifelseif.js +0 -73
  95. package/es/engine/condition/index.js +0 -62
  96. package/es/engine/convertions/index.js +0 -29
  97. package/es/engine/engine/index.js +0 -60
  98. package/es/engine/engine/legacy.js +0 -77
  99. package/es/engine/engine/murmur3/common.js +0 -40
  100. package/es/engine/engine/murmur3/murmur3.js +0 -83
  101. package/es/engine/engine/murmur3/murmur3_128.js +0 -250
  102. package/es/engine/engine/murmur3/murmur3_128_x86.js +0 -183
  103. package/es/engine/engine/murmur3/murmur3_64.js +0 -52
  104. package/es/engine/engine/murmur3/utfx.js +0 -112
  105. package/es/engine/evaluator/index.js +0 -111
  106. package/es/engine/index.js +0 -112
  107. package/es/engine/matchers/all.js +0 -32
  108. package/es/engine/matchers/between.js +0 -35
  109. package/es/engine/matchers/boolean.js +0 -35
  110. package/es/engine/matchers/cont_all.js +0 -51
  111. package/es/engine/matchers/cont_any.js +0 -47
  112. package/es/engine/matchers/cont_str.js +0 -38
  113. package/es/engine/matchers/dependency.js +0 -50
  114. package/es/engine/matchers/eq.js +0 -35
  115. package/es/engine/matchers/eq_set.js +0 -49
  116. package/es/engine/matchers/ew.js +0 -38
  117. package/es/engine/matchers/gte.js +0 -35
  118. package/es/engine/matchers/index.js +0 -65
  119. package/es/engine/matchers/lte.js +0 -35
  120. package/es/engine/matchers/part_of.js +0 -49
  121. package/es/engine/matchers/segment.js +0 -39
  122. package/es/engine/matchers/string.js +0 -44
  123. package/es/engine/matchers/sw.js +0 -38
  124. package/es/engine/matchers/types.js +0 -48
  125. package/es/engine/matchers/whitelist.js +0 -36
  126. package/es/engine/parser/index.js +0 -69
  127. package/es/engine/parser/segments.js +0 -22
  128. package/es/engine/transforms/matcherGroup.js +0 -43
  129. package/es/engine/transforms/matchers.js +0 -109
  130. package/es/engine/transforms/segment.js +0 -28
  131. package/es/engine/transforms/set.js +0 -20
  132. package/es/engine/transforms/unaryNumeric.js +0 -20
  133. package/es/engine/transforms/whitelist.js +0 -22
  134. package/es/engine/treatments/index.js +0 -67
  135. package/es/engine/value/index.js +0 -54
  136. package/es/engine/value/sanitize.js +0 -125
  137. package/es/events/index.js +0 -65
  138. package/es/factory/offline.js +0 -50
  139. package/es/factory/online.js +0 -113
  140. package/es/impressions/counter.js +0 -52
  141. package/es/impressions/hasher/buildKey.js +0 -3
  142. package/es/impressions/hasher/hashImpression128.js +0 -5
  143. package/es/impressions/hasher/hashImpression32.js +0 -5
  144. package/es/impressions/observer/browser.js +0 -9
  145. package/es/impressions/observer/node.js +0 -9
  146. package/es/impressions/observer/observer.js +0 -21
  147. package/es/integrations/browser.js +0 -62
  148. package/es/integrations/ga/GaToSplit.js +0 -246
  149. package/es/integrations/ga/SplitToGa.js +0 -127
  150. package/es/integrations/node.js +0 -3
  151. package/es/listeners/browser.js +0 -157
  152. package/es/listeners/node.js +0 -65
  153. package/es/manager/index.js +0 -104
  154. package/es/metrics/Collectors.js +0 -100
  155. package/es/metrics/index.js +0 -157
  156. package/es/producer/browser/Partial.js +0 -103
  157. package/es/producer/browser.js +0 -70
  158. package/es/producer/fetcher/MySegments.js +0 -47
  159. package/es/producer/fetcher/SegmentChanges.js +0 -52
  160. package/es/producer/fetcher/SplitChanges.js +0 -46
  161. package/es/producer/node.js +0 -130
  162. package/es/producer/offline/browser.js +0 -26
  163. package/es/producer/offline/node.js +0 -26
  164. package/es/producer/task.js +0 -50
  165. package/es/producer/updater/MySegments.js +0 -108
  166. package/es/producer/updater/SegmentChanges.js +0 -135
  167. package/es/producer/updater/SplitChanges.js +0 -131
  168. package/es/producer/updater/SplitChangesFromFeatures.js +0 -21
  169. package/es/producer/updater/SplitChangesFromFileSystem.js +0 -21
  170. package/es/producer/updater/SplitChangesFromObject.js +0 -73
  171. package/es/readiness/index.js +0 -123
  172. package/es/readiness/statusManager.js +0 -114
  173. package/es/services/auth/auth.js +0 -25
  174. package/es/services/auth/index.js +0 -2
  175. package/es/services/events/bulk.js +0 -22
  176. package/es/services/events/index.js +0 -17
  177. package/es/services/impressions/bulk.js +0 -26
  178. package/es/services/impressions/count.js +0 -7
  179. package/es/services/impressions/dto.js +0 -73
  180. package/es/services/impressions/index.js +0 -17
  181. package/es/services/impressions/post.js +0 -22
  182. package/es/services/metrics/counters.js +0 -24
  183. package/es/services/metrics/dto.js +0 -38
  184. package/es/services/metrics/index.js +0 -17
  185. package/es/services/metrics/times.js +0 -24
  186. package/es/services/mySegments/get.js +0 -26
  187. package/es/services/mySegments/index.js +0 -17
  188. package/es/services/request/index.js +0 -43
  189. package/es/services/request/options/browser.js +0 -18
  190. package/es/services/segmentChanges/get.js +0 -21
  191. package/es/services/segmentChanges/index.js +0 -17
  192. package/es/services/splitChanges/get.js +0 -19
  193. package/es/services/splitChanges/index.js +0 -17
  194. package/es/services/splitChanges/offline/browser.js +0 -63
  195. package/es/services/splitChanges/offline/node.js +0 -176
  196. package/es/services/splitChanges/offline/package.json +0 -4
  197. package/es/services/splitChanges/offline/parseCondition.js +0 -43
  198. package/es/services/transport/index.js +0 -51
  199. package/es/storage/AttributesCache/InMemory.js +0 -84
  200. package/es/storage/BaseMetricsAsyncCache.js +0 -23
  201. package/es/storage/CountCache/InMemory.js +0 -48
  202. package/es/storage/CountCache/InRedis.js +0 -42
  203. package/es/storage/EventsCache/InMemory.js +0 -109
  204. package/es/storage/EventsCache/InRedis.js +0 -65
  205. package/es/storage/ImpressionsCache/InMemory.js +0 -71
  206. package/es/storage/ImpressionsCache/InRedis.js +0 -73
  207. package/es/storage/Keys.js +0 -125
  208. package/es/storage/KeysLocalStorage.js +0 -47
  209. package/es/storage/LatencyCache/InMemory.js +0 -56
  210. package/es/storage/LatencyCache/InRedis.js +0 -44
  211. package/es/storage/LatencyCache/findIndex.js +0 -2
  212. package/es/storage/Meta.js +0 -7
  213. package/es/storage/RedisAdapter.js +0 -198
  214. package/es/storage/SegmentCache/InLocalStorage/index.js +0 -138
  215. package/es/storage/SegmentCache/InMemory/browser.js +0 -107
  216. package/es/storage/SegmentCache/InMemory/node.js +0 -82
  217. package/es/storage/SegmentCache/InMemory/package.json +0 -4
  218. package/es/storage/SegmentCache/InRedis/index.js +0 -81
  219. package/es/storage/SplitCache/InLocalStorage.js +0 -332
  220. package/es/storage/SplitCache/InMemory.js +0 -162
  221. package/es/storage/SplitCache/InRedis.js +0 -214
  222. package/es/storage/SplitCache/killLocally.js +0 -35
  223. package/es/storage/browser.js +0 -101
  224. package/es/storage/node.js +0 -81
  225. package/es/storage/package.json +0 -4
  226. package/es/sync/AuthClient/index.js +0 -34
  227. package/es/sync/PushManager/index.js +0 -315
  228. package/es/sync/PushManager/mySegmentsV2utils.js +0 -76
  229. package/es/sync/PushManager/pushRequirements/browser.js +0 -23
  230. package/es/sync/PushManager/pushRequirements/node.js +0 -18
  231. package/es/sync/PushManager/pushRequirements/package.json +0 -4
  232. package/es/sync/SSEClient/index.js +0 -93
  233. package/es/sync/SSEHandler/NotificationKeeper.js +0 -97
  234. package/es/sync/SSEHandler/NotificationParser.js +0 -31
  235. package/es/sync/SSEHandler/index.js +0 -110
  236. package/es/sync/SegmentUpdateWorker/browser.js +0 -74
  237. package/es/sync/SegmentUpdateWorker/node.js +0 -79
  238. package/es/sync/SegmentUpdateWorker/package.json +0 -4
  239. package/es/sync/SplitUpdateWorker/index.js +0 -86
  240. package/es/sync/browser.js +0 -125
  241. package/es/sync/constants.js +0 -42
  242. package/es/sync/node.js +0 -60
  243. package/es/sync/package.json +0 -4
  244. package/es/trackers/event.js +0 -53
  245. package/es/trackers/impressions.js +0 -132
  246. package/es/utils/backoff/index.js +0 -51
  247. package/es/utils/base64/browser.js +0 -19
  248. package/es/utils/base64/node.js +0 -19
  249. package/es/utils/base64/package.json +0 -4
  250. package/es/utils/binarySearch/index.js +0 -50
  251. package/es/utils/constants/index.js +0 -38
  252. package/es/utils/context/constants.js +0 -30
  253. package/es/utils/context/index.js +0 -101
  254. package/es/utils/decompress/index.js +0 -476
  255. package/es/utils/fn/repeat.js +0 -58
  256. package/es/utils/inputValidation/apiKey.js +0 -39
  257. package/es/utils/inputValidation/attribute.js +0 -22
  258. package/es/utils/inputValidation/attributes.js +0 -19
  259. package/es/utils/inputValidation/event.js +0 -23
  260. package/es/utils/inputValidation/eventProperties.js +0 -69
  261. package/es/utils/inputValidation/eventValue.js +0 -9
  262. package/es/utils/inputValidation/index.js +0 -11
  263. package/es/utils/inputValidation/isOperational.js +0 -14
  264. package/es/utils/inputValidation/key.js +0 -50
  265. package/es/utils/inputValidation/split.js +0 -47
  266. package/es/utils/inputValidation/splitFilters.js +0 -121
  267. package/es/utils/inputValidation/splits.js +0 -27
  268. package/es/utils/inputValidation/trafficType.js +0 -55
  269. package/es/utils/jwt/hashUserKey.js +0 -11
  270. package/es/utils/jwt/index.js +0 -14
  271. package/es/utils/key/factory.js +0 -38
  272. package/es/utils/key/parser.js +0 -34
  273. package/es/utils/labels/index.js +0 -7
  274. package/es/utils/lang/Errors.js +0 -41
  275. package/es/utils/lang/Sets.js +0 -114
  276. package/es/utils/lang/index.js +0 -305
  277. package/es/utils/localstorage/isAvailable.js +0 -26
  278. package/es/utils/logger/LoggerFactory.js +0 -86
  279. package/es/utils/logger/index.js +0 -97
  280. package/es/utils/lrucache/linkedlist.js +0 -122
  281. package/es/utils/lrucache/lru.spec.js +0 -24
  282. package/es/utils/lrucache/lrucache.js +0 -80
  283. package/es/utils/now/browser.js +0 -27
  284. package/es/utils/now/node.js +0 -19
  285. package/es/utils/now/package.json +0 -4
  286. package/es/utils/promise/thenable.js +0 -3
  287. package/es/utils/promise/timeout.js +0 -34
  288. package/es/utils/promise/wrapper.js +0 -58
  289. package/es/utils/settings/defaults/package.json +0 -4
  290. package/es/utils/settings/impressionsMode.js +0 -16
  291. package/es/utils/settings/index.js +0 -194
  292. package/es/utils/settings/integrations/browser.js +0 -8
  293. package/es/utils/settings/integrations/common.js +0 -30
  294. package/es/utils/settings/integrations/node.js +0 -7
  295. package/es/utils/settings/integrations/package.json +0 -4
  296. package/es/utils/settings/language/browser.js +0 -16
  297. package/es/utils/settings/language/node.js +0 -16
  298. package/es/utils/settings/language/package.json +0 -4
  299. package/es/utils/settings/mode.js +0 -10
  300. package/es/utils/settings/runtime/browser.js +0 -21
  301. package/es/utils/settings/runtime/package.json +0 -4
  302. package/es/utils/settings/storage/package.json +0 -4
  303. package/es/utils/splits/usesSegments.js +0 -21
  304. package/es/utils/time/index.js +0 -8
  305. package/es/utils/timeTracker/index.js +0 -216
  306. package/es/utils/timeTracker/timer.js +0 -25
  307. package/lib/client/attributesDecoration.js +0 -128
  308. package/lib/client/browser.js +0 -50
  309. package/lib/client/client.js +0 -174
  310. package/lib/client/inputValidation.js +0 -129
  311. package/lib/client/node.js +0 -14
  312. package/lib/client/package.json +0 -4
  313. package/lib/engine/combiners/and.js +0 -65
  314. package/lib/engine/combiners/ifelseif.js +0 -88
  315. package/lib/engine/condition/index.js +0 -76
  316. package/lib/engine/convertions/index.js +0 -36
  317. package/lib/engine/engine/index.js +0 -71
  318. package/lib/engine/engine/legacy.js +0 -83
  319. package/lib/engine/engine/murmur3/common.js +0 -52
  320. package/lib/engine/engine/murmur3/murmur3.js +0 -90
  321. package/lib/engine/engine/murmur3/murmur3_128.js +0 -256
  322. package/lib/engine/engine/murmur3/murmur3_128_x86.js +0 -189
  323. package/lib/engine/engine/murmur3/murmur3_64.js +0 -57
  324. package/lib/engine/engine/murmur3/utfx.js +0 -121
  325. package/lib/engine/evaluator/index.js +0 -129
  326. package/lib/engine/index.js +0 -128
  327. package/lib/engine/matchers/all.js +0 -41
  328. package/lib/engine/matchers/between.js +0 -44
  329. package/lib/engine/matchers/boolean.js +0 -44
  330. package/lib/engine/matchers/cont_all.js +0 -61
  331. package/lib/engine/matchers/cont_any.js +0 -57
  332. package/lib/engine/matchers/cont_str.js +0 -48
  333. package/lib/engine/matchers/dependency.js +0 -60
  334. package/lib/engine/matchers/eq.js +0 -44
  335. package/lib/engine/matchers/eq_set.js +0 -59
  336. package/lib/engine/matchers/ew.js +0 -48
  337. package/lib/engine/matchers/gte.js +0 -44
  338. package/lib/engine/matchers/index.js +0 -90
  339. package/lib/engine/matchers/lte.js +0 -44
  340. package/lib/engine/matchers/part_of.js +0 -59
  341. package/lib/engine/matchers/segment.js +0 -49
  342. package/lib/engine/matchers/string.js +0 -53
  343. package/lib/engine/matchers/sw.js +0 -48
  344. package/lib/engine/matchers/types.js +0 -57
  345. package/lib/engine/matchers/whitelist.js +0 -46
  346. package/lib/engine/parser/index.js +0 -84
  347. package/lib/engine/parser/segments.js +0 -28
  348. package/lib/engine/transforms/matcherGroup.js +0 -54
  349. package/lib/engine/transforms/matchers.js +0 -124
  350. package/lib/engine/transforms/segment.js +0 -34
  351. package/lib/engine/transforms/set.js +0 -26
  352. package/lib/engine/transforms/unaryNumeric.js +0 -26
  353. package/lib/engine/transforms/whitelist.js +0 -28
  354. package/lib/engine/treatments/index.js +0 -73
  355. package/lib/engine/value/index.js +0 -64
  356. package/lib/engine/value/sanitize.js +0 -137
  357. package/lib/events/index.js +0 -80
  358. package/lib/factory/offline.js +0 -62
  359. package/lib/factory/online.js +0 -129
  360. package/lib/impressions/counter.js +0 -61
  361. package/lib/impressions/hasher/buildKey.js +0 -8
  362. package/lib/impressions/hasher/hashImpression128.js +0 -12
  363. package/lib/impressions/hasher/hashImpression32.js +0 -14
  364. package/lib/impressions/observer/browser.js +0 -19
  365. package/lib/impressions/observer/node.js +0 -19
  366. package/lib/impressions/observer/observer.js +0 -29
  367. package/lib/impressions/observer/package.json +0 -4
  368. package/lib/integrations/browser.js +0 -72
  369. package/lib/integrations/ga/GaToSplit.js +0 -267
  370. package/lib/integrations/ga/SplitToGa.js +0 -138
  371. package/lib/integrations/node.js +0 -9
  372. package/lib/integrations/package.json +0 -4
  373. package/lib/listeners/browser.js +0 -173
  374. package/lib/listeners/node.js +0 -74
  375. package/lib/listeners/package.json +0 -4
  376. package/lib/manager/index.js +0 -115
  377. package/lib/metrics/Collectors.js +0 -118
  378. package/lib/metrics/index.js +0 -182
  379. package/lib/producer/browser/Partial.js +0 -114
  380. package/lib/producer/browser.js +0 -82
  381. package/lib/producer/fetcher/MySegments.js +0 -59
  382. package/lib/producer/fetcher/SegmentChanges.js +0 -62
  383. package/lib/producer/fetcher/SplitChanges.js +0 -58
  384. package/lib/producer/node.js +0 -142
  385. package/lib/producer/offline/browser.js +0 -35
  386. package/lib/producer/offline/node.js +0 -35
  387. package/lib/producer/offline/package.json +0 -4
  388. package/lib/producer/package.json +0 -4
  389. package/lib/producer/task.js +0 -61
  390. package/lib/producer/updater/MySegments.js +0 -119
  391. package/lib/producer/updater/SegmentChanges.js +0 -148
  392. package/lib/producer/updater/SplitChanges.js +0 -145
  393. package/lib/producer/updater/SplitChangesFromFeatures.js +0 -30
  394. package/lib/producer/updater/SplitChangesFromFileSystem.js +0 -30
  395. package/lib/producer/updater/SplitChangesFromObject.js +0 -84
  396. package/lib/readiness/index.js +0 -132
  397. package/lib/readiness/statusManager.js +0 -124
  398. package/lib/services/auth/auth.js +0 -32
  399. package/lib/services/auth/index.js +0 -11
  400. package/lib/services/events/bulk.js +0 -31
  401. package/lib/services/events/index.js +0 -26
  402. package/lib/services/getEventSource/package.json +0 -4
  403. package/lib/services/getFetch/package.json +0 -4
  404. package/lib/services/impressions/bulk.js +0 -36
  405. package/lib/services/impressions/count.js +0 -16
  406. package/lib/services/impressions/dto.js +0 -81
  407. package/lib/services/impressions/index.js +0 -26
  408. package/lib/services/impressions/post.js +0 -31
  409. package/lib/services/metrics/counters.js +0 -33
  410. package/lib/services/metrics/dto.js +0 -46
  411. package/lib/services/metrics/index.js +0 -26
  412. package/lib/services/metrics/times.js +0 -33
  413. package/lib/services/mySegments/get.js +0 -35
  414. package/lib/services/mySegments/index.js +0 -26
  415. package/lib/services/request/index.js +0 -53
  416. package/lib/services/request/options/browser.js +0 -23
  417. package/lib/services/request/options/package.json +0 -4
  418. package/lib/services/segmentChanges/get.js +0 -29
  419. package/lib/services/segmentChanges/index.js +0 -26
  420. package/lib/services/splitChanges/get.js +0 -27
  421. package/lib/services/splitChanges/index.js +0 -26
  422. package/lib/services/splitChanges/offline/browser.js +0 -71
  423. package/lib/services/splitChanges/offline/node.js +0 -189
  424. package/lib/services/splitChanges/offline/package.json +0 -4
  425. package/lib/services/splitChanges/offline/parseCondition.js +0 -49
  426. package/lib/services/transport/index.js +0 -62
  427. package/lib/storage/AttributesCache/InMemory.js +0 -92
  428. package/lib/storage/BaseMetricsAsyncCache.js +0 -28
  429. package/lib/storage/CountCache/InMemory.js +0 -54
  430. package/lib/storage/CountCache/InRedis.js +0 -50
  431. package/lib/storage/EventsCache/InMemory.js +0 -118
  432. package/lib/storage/EventsCache/InRedis.js +0 -74
  433. package/lib/storage/ImpressionsCache/InMemory.js +0 -77
  434. package/lib/storage/ImpressionsCache/InRedis.js +0 -79
  435. package/lib/storage/Keys.js +0 -132
  436. package/lib/storage/KeysLocalStorage.js +0 -58
  437. package/lib/storage/LatencyCache/InMemory.js +0 -64
  438. package/lib/storage/LatencyCache/InRedis.js +0 -53
  439. package/lib/storage/LatencyCache/findIndex.js +0 -12
  440. package/lib/storage/Meta.js +0 -12
  441. package/lib/storage/RedisAdapter.js +0 -212
  442. package/lib/storage/SegmentCache/InLocalStorage/index.js +0 -147
  443. package/lib/storage/SegmentCache/InMemory/browser.js +0 -113
  444. package/lib/storage/SegmentCache/InMemory/node.js +0 -89
  445. package/lib/storage/SegmentCache/InMemory/package.json +0 -4
  446. package/lib/storage/SegmentCache/InRedis/index.js +0 -87
  447. package/lib/storage/SplitCache/InLocalStorage.js +0 -344
  448. package/lib/storage/SplitCache/InMemory.js +0 -172
  449. package/lib/storage/SplitCache/InRedis.js +0 -224
  450. package/lib/storage/SplitCache/killLocally.js +0 -42
  451. package/lib/storage/browser.js +0 -122
  452. package/lib/storage/node.js +0 -104
  453. package/lib/storage/package.json +0 -4
  454. package/lib/sync/AuthClient/index.js +0 -44
  455. package/lib/sync/PushManager/index.js +0 -340
  456. package/lib/sync/PushManager/mySegmentsV2utils.js +0 -87
  457. package/lib/sync/PushManager/pushRequirements/browser.js +0 -30
  458. package/lib/sync/PushManager/pushRequirements/node.js +0 -25
  459. package/lib/sync/PushManager/pushRequirements/package.json +0 -4
  460. package/lib/sync/SSEClient/index.js +0 -101
  461. package/lib/sync/SSEHandler/NotificationKeeper.js +0 -104
  462. package/lib/sync/SSEHandler/NotificationParser.js +0 -39
  463. package/lib/sync/SSEHandler/index.js +0 -121
  464. package/lib/sync/SegmentUpdateWorker/browser.js +0 -81
  465. package/lib/sync/SegmentUpdateWorker/node.js +0 -86
  466. package/lib/sync/SegmentUpdateWorker/package.json +0 -4
  467. package/lib/sync/SplitUpdateWorker/index.js +0 -93
  468. package/lib/sync/browser.js +0 -139
  469. package/lib/sync/constants.js +0 -59
  470. package/lib/sync/node.js +0 -71
  471. package/lib/sync/package.json +0 -4
  472. package/lib/trackers/event.js +0 -64
  473. package/lib/trackers/impressions.js +0 -146
  474. package/lib/utils/backoff/index.js +0 -57
  475. package/lib/utils/base64/browser.js +0 -26
  476. package/lib/utils/base64/node.js +0 -26
  477. package/lib/utils/base64/package.json +0 -4
  478. package/lib/utils/binarySearch/index.js +0 -56
  479. package/lib/utils/constants/index.js +0 -60
  480. package/lib/utils/context/constants.js +0 -49
  481. package/lib/utils/context/index.js +0 -111
  482. package/lib/utils/decompress/index.js +0 -483
  483. package/lib/utils/fn/repeat.js +0 -64
  484. package/lib/utils/inputValidation/apiKey.js +0 -51
  485. package/lib/utils/inputValidation/attribute.js +0 -32
  486. package/lib/utils/inputValidation/attributes.js +0 -32
  487. package/lib/utils/inputValidation/event.js +0 -33
  488. package/lib/utils/inputValidation/eventProperties.js +0 -78
  489. package/lib/utils/inputValidation/eventValue.js +0 -19
  490. package/lib/utils/inputValidation/index.js +0 -48
  491. package/lib/utils/inputValidation/isOperational.js +0 -25
  492. package/lib/utils/inputValidation/key.js +0 -59
  493. package/lib/utils/inputValidation/split.js +0 -60
  494. package/lib/utils/inputValidation/splitFilters.js +0 -134
  495. package/lib/utils/inputValidation/splits.js +0 -38
  496. package/lib/utils/inputValidation/trafficType.js +0 -68
  497. package/lib/utils/jwt/hashUserKey.js +0 -19
  498. package/lib/utils/jwt/index.js +0 -19
  499. package/lib/utils/key/factory.js +0 -46
  500. package/lib/utils/key/parser.js +0 -42
  501. package/lib/utils/labels/index.js +0 -18
  502. package/lib/utils/lang/Errors.js +0 -58
  503. package/lib/utils/lang/Sets.js +0 -127
  504. package/lib/utils/lang/index.js +0 -350
  505. package/lib/utils/localstorage/isAvailable.js +0 -31
  506. package/lib/utils/logger/LoggerFactory.js +0 -98
  507. package/lib/utils/logger/index.js +0 -109
  508. package/lib/utils/lrucache/linkedlist.js +0 -132
  509. package/lib/utils/lrucache/lru.spec.js +0 -30
  510. package/lib/utils/lrucache/lrucache.js +0 -88
  511. package/lib/utils/now/browser.js +0 -33
  512. package/lib/utils/now/node.js +0 -24
  513. package/lib/utils/now/package.json +0 -4
  514. package/lib/utils/promise/thenable.js +0 -10
  515. package/lib/utils/promise/timeout.js +0 -40
  516. package/lib/utils/promise/wrapper.js +0 -63
  517. package/lib/utils/settings/defaults/package.json +0 -4
  518. package/lib/utils/settings/impressionsMode.js +0 -26
  519. package/lib/utils/settings/index.js +0 -214
  520. package/lib/utils/settings/integrations/browser.js +0 -17
  521. package/lib/utils/settings/integrations/common.js +0 -40
  522. package/lib/utils/settings/integrations/node.js +0 -13
  523. package/lib/utils/settings/integrations/package.json +0 -4
  524. package/lib/utils/settings/language/browser.js +0 -22
  525. package/lib/utils/settings/language/node.js +0 -22
  526. package/lib/utils/settings/language/package.json +0 -4
  527. package/lib/utils/settings/mode.js +0 -16
  528. package/lib/utils/settings/runtime/browser.js +0 -26
  529. package/lib/utils/settings/runtime/package.json +0 -4
  530. package/lib/utils/settings/storage/package.json +0 -4
  531. package/lib/utils/splits/usesSegments.js +0 -27
  532. package/lib/utils/time/index.js +0 -12
  533. package/lib/utils/timeTracker/index.js +0 -213
  534. package/lib/utils/timeTracker/timer.js +0 -33
  535. package/src/client/attributesDecoration.js +0 -112
  536. package/src/client/browser.js +0 -41
  537. package/src/client/client.js +0 -131
  538. package/src/client/inputValidation.js +0 -130
  539. package/src/client/node.js +0 -8
  540. package/src/client/package.json +0 -4
  541. package/src/engine/combiners/and.js +0 -55
  542. package/src/engine/combiners/ifelseif.js +0 -74
  543. package/src/engine/condition/index.js +0 -65
  544. package/src/engine/convertions/index.js +0 -22
  545. package/src/engine/engine/index.js +0 -63
  546. package/src/engine/engine/legacy.js +0 -66
  547. package/src/engine/engine/murmur3/common.js +0 -54
  548. package/src/engine/engine/murmur3/murmur3.js +0 -79
  549. package/src/engine/engine/murmur3/murmur3_128.js +0 -273
  550. package/src/engine/engine/murmur3/murmur3_128_x86.js +0 -188
  551. package/src/engine/engine/murmur3/murmur3_64.js +0 -34
  552. package/src/engine/engine/murmur3/utfx.js +0 -111
  553. package/src/engine/evaluator/index.js +0 -148
  554. package/src/engine/index.js +0 -123
  555. package/src/engine/matchers/all.js +0 -29
  556. package/src/engine/matchers/between.js +0 -30
  557. package/src/engine/matchers/boolean.js +0 -29
  558. package/src/engine/matchers/cont_all.js +0 -40
  559. package/src/engine/matchers/cont_any.js +0 -35
  560. package/src/engine/matchers/cont_str.js +0 -31
  561. package/src/engine/matchers/dependency.js +0 -52
  562. package/src/engine/matchers/eq.js +0 -30
  563. package/src/engine/matchers/eq_set.js +0 -37
  564. package/src/engine/matchers/ew.js +0 -31
  565. package/src/engine/matchers/gte.js +0 -30
  566. package/src/engine/matchers/index.js +0 -71
  567. package/src/engine/matchers/lte.js +0 -30
  568. package/src/engine/matchers/part_of.js +0 -37
  569. package/src/engine/matchers/segment.js +0 -41
  570. package/src/engine/matchers/string.js +0 -39
  571. package/src/engine/matchers/sw.js +0 -31
  572. package/src/engine/matchers/types.js +0 -52
  573. package/src/engine/matchers/whitelist.js +0 -30
  574. package/src/engine/parser/index.js +0 -79
  575. package/src/engine/parser/segments.js +0 -31
  576. package/src/engine/transforms/matcherGroup.js +0 -45
  577. package/src/engine/transforms/matchers.js +0 -118
  578. package/src/engine/transforms/segment.js +0 -23
  579. package/src/engine/transforms/set.js +0 -20
  580. package/src/engine/transforms/unaryNumeric.js +0 -20
  581. package/src/engine/transforms/whitelist.js +0 -22
  582. package/src/engine/treatments/index.js +0 -67
  583. package/src/engine/value/index.js +0 -53
  584. package/src/engine/value/sanitize.js +0 -117
  585. package/src/events/index.js +0 -62
  586. package/src/factory/offline.js +0 -60
  587. package/src/factory/online.js +0 -127
  588. package/src/impressions/counter.js +0 -43
  589. package/src/impressions/hasher/buildKey.js +0 -3
  590. package/src/impressions/hasher/hashImpression128.js +0 -6
  591. package/src/impressions/hasher/hashImpression32.js +0 -6
  592. package/src/impressions/observer/browser.js +0 -8
  593. package/src/impressions/observer/node.js +0 -8
  594. package/src/impressions/observer/observer.js +0 -17
  595. package/src/impressions/observer/package.json +0 -4
  596. package/src/integrations/browser.js +0 -57
  597. package/src/integrations/ga/GaToSplit.js +0 -278
  598. package/src/integrations/ga/SplitToGa.js +0 -125
  599. package/src/integrations/node.js +0 -4
  600. package/src/integrations/package.json +0 -4
  601. package/src/listeners/browser.js +0 -137
  602. package/src/listeners/node.js +0 -59
  603. package/src/listeners/package.json +0 -4
  604. package/src/manager/index.js +0 -103
  605. package/src/metrics/Collectors.js +0 -77
  606. package/src/metrics/index.js +0 -174
  607. package/src/producer/browser/Partial.js +0 -104
  608. package/src/producer/browser.js +0 -82
  609. package/src/producer/fetcher/MySegments.js +0 -40
  610. package/src/producer/fetcher/SegmentChanges.js +0 -52
  611. package/src/producer/fetcher/SplitChanges.js +0 -39
  612. package/src/producer/node.js +0 -142
  613. package/src/producer/offline/browser.js +0 -28
  614. package/src/producer/offline/node.js +0 -28
  615. package/src/producer/offline/package.json +0 -4
  616. package/src/producer/package.json +0 -4
  617. package/src/producer/task.js +0 -57
  618. package/src/producer/updater/MySegments.js +0 -104
  619. package/src/producer/updater/SegmentChanges.js +0 -126
  620. package/src/producer/updater/SplitChanges.js +0 -138
  621. package/src/producer/updater/SplitChangesFromFeatures.js +0 -23
  622. package/src/producer/updater/SplitChangesFromFileSystem.js +0 -23
  623. package/src/producer/updater/SplitChangesFromObject.js +0 -81
  624. package/src/readiness/index.js +0 -125
  625. package/src/readiness/statusManager.js +0 -121
  626. package/src/services/.DS_Store +0 -0
  627. package/src/services/auth/auth.js +0 -21
  628. package/src/services/auth/index.js +0 -3
  629. package/src/services/events/bulk.js +0 -23
  630. package/src/services/events/index.js +0 -18
  631. package/src/services/getEventSource/package.json +0 -4
  632. package/src/services/getFetch/package.json +0 -4
  633. package/src/services/impressions/bulk.js +0 -26
  634. package/src/services/impressions/count.js +0 -8
  635. package/src/services/impressions/dto.js +0 -71
  636. package/src/services/impressions/index.js +0 -18
  637. package/src/services/impressions/post.js +0 -23
  638. package/src/services/metrics/counters.js +0 -25
  639. package/src/services/metrics/dto.js +0 -44
  640. package/src/services/metrics/index.js +0 -18
  641. package/src/services/metrics/times.js +0 -25
  642. package/src/services/mySegments/get.js +0 -27
  643. package/src/services/mySegments/index.js +0 -18
  644. package/src/services/request/index.js +0 -43
  645. package/src/services/request/options/browser.js +0 -18
  646. package/src/services/request/options/package.json +0 -4
  647. package/src/services/segmentChanges/get.js +0 -20
  648. package/src/services/segmentChanges/index.js +0 -18
  649. package/src/services/splitChanges/get.js +0 -20
  650. package/src/services/splitChanges/index.js +0 -18
  651. package/src/services/splitChanges/offline/browser.js +0 -66
  652. package/src/services/splitChanges/offline/node.js +0 -190
  653. package/src/services/splitChanges/offline/package.json +0 -4
  654. package/src/services/splitChanges/offline/parseCondition.js +0 -52
  655. package/src/services/transport/index.js +0 -44
  656. package/src/storage/AttributesCache/InMemory.js +0 -75
  657. package/src/storage/BaseMetricsAsyncCache.js +0 -14
  658. package/src/storage/CountCache/InMemory.js +0 -48
  659. package/src/storage/CountCache/InRedis.js +0 -32
  660. package/src/storage/EventsCache/InMemory.js +0 -99
  661. package/src/storage/EventsCache/InRedis.js +0 -62
  662. package/src/storage/ImpressionsCache/InMemory.js +0 -62
  663. package/src/storage/ImpressionsCache/InRedis.js +0 -65
  664. package/src/storage/Keys.js +0 -122
  665. package/src/storage/KeysLocalStorage.js +0 -40
  666. package/src/storage/LatencyCache/InMemory.js +0 -56
  667. package/src/storage/LatencyCache/InRedis.js +0 -35
  668. package/src/storage/LatencyCache/findIndex.js +0 -7
  669. package/src/storage/Meta.js +0 -7
  670. package/src/storage/RedisAdapter.js +0 -170
  671. package/src/storage/SegmentCache/InLocalStorage/index.js +0 -120
  672. package/src/storage/SegmentCache/InMemory/browser.js +0 -99
  673. package/src/storage/SegmentCache/InMemory/node.js +0 -84
  674. package/src/storage/SegmentCache/InMemory/package.json +0 -4
  675. package/src/storage/SegmentCache/InRedis/index.js +0 -71
  676. package/src/storage/SplitCache/InLocalStorage.js +0 -324
  677. package/src/storage/SplitCache/InMemory.js +0 -145
  678. package/src/storage/SplitCache/InRedis.js +0 -187
  679. package/src/storage/SplitCache/killLocally.js +0 -33
  680. package/src/storage/browser.js +0 -110
  681. package/src/storage/node.js +0 -83
  682. package/src/storage/package.json +0 -4
  683. package/src/sync/.DS_Store +0 -0
  684. package/src/sync/AuthClient/index.js +0 -31
  685. package/src/sync/PushManager/index.js +0 -328
  686. package/src/sync/PushManager/mySegmentsV2utils.js +0 -76
  687. package/src/sync/PushManager/pushRequirements/browser.js +0 -20
  688. package/src/sync/PushManager/pushRequirements/node.js +0 -16
  689. package/src/sync/PushManager/pushRequirements/package.json +0 -4
  690. package/src/sync/SSEClient/index.js +0 -92
  691. package/src/sync/SSEHandler/NotificationKeeper.js +0 -90
  692. package/src/sync/SSEHandler/NotificationParser.js +0 -35
  693. package/src/sync/SSEHandler/index.js +0 -110
  694. package/src/sync/SegmentUpdateWorker/browser.js +0 -67
  695. package/src/sync/SegmentUpdateWorker/node.js +0 -73
  696. package/src/sync/SegmentUpdateWorker/package.json +0 -4
  697. package/src/sync/SplitUpdateWorker/index.js +0 -79
  698. package/src/sync/browser.js +0 -130
  699. package/src/sync/constants.js +0 -43
  700. package/src/sync/node.js +0 -66
  701. package/src/sync/package.json +0 -4
  702. package/src/trackers/event.js +0 -47
  703. package/src/trackers/impressions.js +0 -123
  704. package/src/utils/backoff/index.js +0 -46
  705. package/src/utils/base64/browser.js +0 -19
  706. package/src/utils/base64/node.js +0 -19
  707. package/src/utils/base64/package.json +0 -4
  708. package/src/utils/binarySearch/index.js +0 -50
  709. package/src/utils/constants/index.js +0 -41
  710. package/src/utils/context/constants.js +0 -18
  711. package/src/utils/context/index.js +0 -84
  712. package/src/utils/decompress/index.js +0 -428
  713. package/src/utils/fn/repeat.js +0 -48
  714. package/src/utils/inputValidation/apiKey.js +0 -42
  715. package/src/utils/inputValidation/attribute.js +0 -22
  716. package/src/utils/inputValidation/attributes.js +0 -26
  717. package/src/utils/inputValidation/event.js +0 -23
  718. package/src/utils/inputValidation/eventProperties.js +0 -65
  719. package/src/utils/inputValidation/eventValue.js +0 -11
  720. package/src/utils/inputValidation/index.js +0 -11
  721. package/src/utils/inputValidation/isOperational.js +0 -16
  722. package/src/utils/inputValidation/key.js +0 -53
  723. package/src/utils/inputValidation/split.js +0 -42
  724. package/src/utils/inputValidation/splitFilters.js +0 -108
  725. package/src/utils/inputValidation/splits.js +0 -21
  726. package/src/utils/inputValidation/trafficType.js +0 -58
  727. package/src/utils/jwt/hashUserKey.js +0 -11
  728. package/src/utils/jwt/index.js +0 -15
  729. package/src/utils/key/factory.js +0 -34
  730. package/src/utils/key/parser.js +0 -34
  731. package/src/utils/labels/index.js +0 -7
  732. package/src/utils/lang/Errors.js +0 -19
  733. package/src/utils/lang/Sets.js +0 -94
  734. package/src/utils/lang/index.js +0 -291
  735. package/src/utils/localstorage/isAvailable.js +0 -26
  736. package/src/utils/logger/LoggerFactory.js +0 -90
  737. package/src/utils/logger/index.js +0 -93
  738. package/src/utils/lrucache/linkedlist.js +0 -116
  739. package/src/utils/lrucache/lru.spec.js +0 -26
  740. package/src/utils/lrucache/lrucache.js +0 -49
  741. package/src/utils/now/browser.js +0 -29
  742. package/src/utils/now/node.js +0 -21
  743. package/src/utils/now/package.json +0 -4
  744. package/src/utils/promise/thenable.js +0 -1
  745. package/src/utils/promise/timeout.js +0 -38
  746. package/src/utils/promise/wrapper.js +0 -60
  747. package/src/utils/settings/defaults/package.json +0 -4
  748. package/src/utils/settings/impressionsMode.js +0 -15
  749. package/src/utils/settings/index.js +0 -217
  750. package/src/utils/settings/integrations/browser.js +0 -8
  751. package/src/utils/settings/integrations/common.js +0 -32
  752. package/src/utils/settings/integrations/package.json +0 -4
  753. package/src/utils/settings/language/browser.js +0 -17
  754. package/src/utils/settings/language/node.js +0 -17
  755. package/src/utils/settings/language/package.json +0 -4
  756. package/src/utils/settings/mode.js +0 -12
  757. package/src/utils/settings/runtime/browser.js +0 -22
  758. package/src/utils/settings/runtime/package.json +0 -4
  759. package/src/utils/settings/storage/package.json +0 -4
  760. package/src/utils/splits/usesSegments.js +0 -17
  761. package/src/utils/time/index.js +0 -8
  762. package/src/utils/timeTracker/index.js +0 -223
  763. package/src/utils/timeTracker/timer.js +0 -27
@@ -0,0 +1,20 @@
1
+ import { settingsValidation } from '@splitsoftware/splitio-commons/src/utils/settingsValidation';
2
+ import { defaults } from './defaults/node';
3
+ import { validateRuntime } from './runtime/node';
4
+ import { validateStorage } from './storage/node';
5
+ import { validateIntegrations } from './integrations/node';
6
+ import { validateLogger } from '@splitsoftware/splitio-commons/src/utils/settingsValidation/logger/builtinLogger';
7
+ import { LocalhostFromFile } from '@splitsoftware/splitio-commons/src/sync/offline/LocalhostFromFile';
8
+
9
+ const params = {
10
+ defaults,
11
+ runtime: validateRuntime,
12
+ storage: validateStorage,
13
+ integrations: validateIntegrations,
14
+ logger: validateLogger,
15
+ localhost: () => LocalhostFromFile(),
16
+ };
17
+
18
+ export function settingsFactory(config) {
19
+ return settingsValidation(config, params);
20
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- Copyright 2016 Split Software
2
+ Copyright 2022 Split Software
3
3
 
4
4
  Licensed under the Apache License, Version 2.0 (the "License");
5
5
  you may not use this file except in compliance with the License.
@@ -14,23 +14,19 @@ See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  **/
16
16
 
17
- import logFactory from '../../../utils/logger';
18
- const log = logFactory('splitio-settings');
19
- import isLocalStorageAvailable from '../../../utils/localstorage/isAvailable';
20
- import {
21
- LOCALHOST_MODE,
22
- STORAGE_MEMORY,
23
- STORAGE_LOCALSTORAGE
24
- } from '../../../utils/constants';
17
+ import { isLocalStorageAvailable } from '@splitsoftware/splitio-commons/src/utils/env/isLocalStorageAvailable';
18
+ import { LOCALHOST_MODE, STORAGE_MEMORY } from '@splitsoftware/splitio-commons/src/utils/constants';
25
19
 
26
- const ParseStorageSettings = settings => {
20
+ const STORAGE_LOCALSTORAGE = 'LOCALSTORAGE';
21
+
22
+ export function validateStorage(settings) {
27
23
  let {
28
24
  mode,
29
25
  storage: {
30
- type = STORAGE_MEMORY,
26
+ type,
31
27
  options = {},
32
28
  prefix
33
- },
29
+ } = { type: STORAGE_MEMORY },
34
30
  } = settings;
35
31
  let __originalType;
36
32
 
@@ -56,7 +52,7 @@ const ParseStorageSettings = settings => {
56
52
  if (type !== STORAGE_MEMORY && type !== STORAGE_LOCALSTORAGE ||
57
53
  type === STORAGE_LOCALSTORAGE && !isLocalStorageAvailable()) {
58
54
  fallbackToMemory();
59
- log.warn('Invalid or unavailable storage. Fallbacking into MEMORY storage');
55
+ settings.log.warn('Invalid or unavailable storage. Fallbacking into MEMORY storage');
60
56
  }
61
57
 
62
58
  return {
@@ -65,6 +61,4 @@ const ParseStorageSettings = settings => {
65
61
  prefix,
66
62
  __originalType
67
63
  };
68
- };
69
-
70
- export default ParseStorageSettings;
64
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- Copyright 2016 Split Software
2
+ Copyright 2022 Split Software
3
3
 
4
4
  Licensed under the Apache License, Version 2.0 (the "License");
5
5
  you may not use this file except in compliance with the License.
@@ -13,16 +13,18 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
  See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  **/
16
- import { LOCALHOST_MODE, STORAGE_MEMORY, STORAGE_REDIS } from '../../constants';
16
+ import { LOCALHOST_MODE, STORAGE_MEMORY } from '@splitsoftware/splitio-commons/src/utils/constants';
17
17
 
18
- const ParseStorageSettings = (settings) => {
18
+ const STORAGE_REDIS = 'REDIS';
19
+
20
+ export function validateStorage(settings) {
19
21
  let {
20
22
  mode,
21
23
  storage: {
22
24
  type,
23
25
  options = {},
24
26
  prefix
25
- }
27
+ } = { type: STORAGE_MEMORY }
26
28
  } = settings;
27
29
 
28
30
  if (prefix) {
@@ -90,6 +92,4 @@ const ParseStorageSettings = (settings) => {
90
92
  };
91
93
  }
92
94
  }
93
- };
94
-
95
- export default ParseStorageSettings;
95
+ }
package/src/umd.js CHANGED
@@ -1,3 +1,4 @@
1
1
  import { SplitFactory } from './index';
2
2
 
3
+ // eslint-disable-next-line import/no-default-export
3
4
  export default SplitFactory;
@@ -482,11 +482,11 @@ declare namespace SplitIO {
482
482
  type Event = 'init::timeout' | 'init::ready' | 'init::cache-ready' | 'state::update';
483
483
  /**
484
484
  * Split attributes should be on object with values of type string, boolean, number (dates should be sent as millis since epoch) or array of strings or numbers.
485
- * @typedef {Object.<number, string, boolean, string[], number[]>} Attributes
485
+ * @typedef {Object.<AttributeType>} Attributes
486
486
  * @see {@link https://help.split.io/hc/en-us/articles/360020448791-JavaScript-SDK#attribute-syntax}
487
487
  */
488
488
  type Attributes = {
489
- [attributeName: string]: string | number | boolean | Array<string | number>
489
+ [attributeName: string]: AttributeType
490
490
  };
491
491
  /**
492
492
  * Type of an attribute value
@@ -1,116 +0,0 @@
1
- import ClientInputValidationLayer from './inputValidation';
2
- import AttributesCacheInMemory from '../storage/AttributesCache/InMemory';
3
- import { validateAttributesDeep } from '../utils/inputValidation/attributes';
4
- import logFactory from '../utils/logger';
5
- import objectAssign from 'object-assign';
6
- var log = logFactory('splitio-client');
7
- /**
8
- * Add in memory attributes storage methods and combine them with any attribute received from the getTreatment/s call
9
- */
10
-
11
- export default function ClientAttributesDecorationLayer(context, isKeyBinded, isTTBinded) {
12
- var client = ClientInputValidationLayer(context, isKeyBinded, isTTBinded);
13
- var attributeStorage = new AttributesCacheInMemory(); // Keep a reference to the original methods
14
-
15
- var clientGetTreatment = client.getTreatment;
16
- var clientGetTreatmentWithConfig = client.getTreatmentWithConfig;
17
- var clientGetTreatments = client.getTreatments;
18
- var clientGetTreatmentsWithConfig = client.getTreatmentsWithConfig;
19
- /**
20
- * Add an attribute to client's in memory attributes storage
21
- *
22
- * @param {string} attributeName Attrinute name
23
- * @param {string, number, boolean, list} attributeValue Attribute value
24
- * @returns {boolean} true if the attribute was stored and false otherways
25
- */
26
-
27
- client.setAttribute = function (attributeName, attributeValue) {
28
- var attribute = {};
29
- attribute[attributeName] = attributeValue;
30
- if (!validateAttributesDeep(attribute)) return false;
31
- log.debug("stored " + attributeValue + " for attribute " + attributeName);
32
- return attributeStorage.setAttribute(attributeName, attributeValue);
33
- };
34
- /**
35
- * Returns the attribute with the given key
36
- *
37
- * @param {string} attributeName Attribute name
38
- * @returns {Object} Attribute with the given key
39
- */
40
-
41
-
42
- client.getAttribute = function (attributeName) {
43
- log.debug("retrieved attribute " + attributeName);
44
- return attributeStorage.getAttribute(attributeName + '');
45
- };
46
- /**
47
- * Add to client's in memory attributes storage the attributes in 'attributes'
48
- *
49
- * @param {Object} attributes Object with attributes to store
50
- * @returns true if attributes were stored an false otherways
51
- */
52
-
53
-
54
- client.setAttributes = function (attributes) {
55
- if (!validateAttributesDeep(attributes)) return false;
56
- return attributeStorage.setAttributes(attributes);
57
- };
58
- /**
59
- * Return all the attributes stored in client's in memory attributes storage
60
- *
61
- * @returns {Object} returns all the stored attributes
62
- */
63
-
64
-
65
- client.getAttributes = function () {
66
- return attributeStorage.getAll();
67
- };
68
- /**
69
- * Removes from client's in memory attributes storage the attribute with the given key
70
- *
71
- * @param {string} attributeName
72
- * @returns {boolean} true if attribute was removed and false otherways
73
- */
74
-
75
-
76
- client.removeAttribute = function (attributeName) {
77
- log.debug("removed attribute " + attributeName);
78
- return attributeStorage.removeAttribute(attributeName + '');
79
- };
80
- /**
81
- * Remove all the stored attributes in the client's in memory attribute storage
82
- */
83
-
84
-
85
- client.clearAttributes = function () {
86
- return attributeStorage.clear();
87
- };
88
-
89
- client.getTreatment = function (maybeKey, maybeSplit, maybeAttributes) {
90
- return clientGetTreatment(maybeKey, maybeSplit, combineAttributes(maybeAttributes));
91
- };
92
-
93
- client.getTreatmentWithConfig = function (maybeKey, maybeSplit, maybeAttributes) {
94
- return clientGetTreatmentWithConfig(maybeKey, maybeSplit, combineAttributes(maybeAttributes));
95
- };
96
-
97
- client.getTreatments = function (maybeKey, maybeSplits, maybeAttributes) {
98
- return clientGetTreatments(maybeKey, maybeSplits, combineAttributes(maybeAttributes));
99
- };
100
-
101
- client.getTreatmentsWithConfig = function (maybeKey, maybeSplits, maybeAttributes) {
102
- return clientGetTreatmentsWithConfig(maybeKey, maybeSplits, combineAttributes(maybeAttributes));
103
- };
104
-
105
- function combineAttributes(maybeAttributes) {
106
- var storedAttributes = attributeStorage.getAll();
107
-
108
- if (Object.keys(storedAttributes).length > 0) {
109
- return objectAssign({}, storedAttributes, maybeAttributes);
110
- }
111
-
112
- return maybeAttributes;
113
- }
114
-
115
- return client;
116
- }
@@ -1,39 +0,0 @@
1
- import { get } from '../utils/lang';
2
- import ClientAttributesDecorationLayer from './attributesDecoration';
3
- import { LOCALHOST_MODE } from '../utils/constants';
4
- import { validateKey, validateTrafficType } from '../utils/inputValidation';
5
-
6
- function BrowserClientFactory(context) {
7
- var _client$track;
8
-
9
- var settings = context.get(context.constants.SETTINGS);
10
- var maybeKey = get(settings, 'core.key', undefined);
11
- var maybeTT = get(settings, 'core.trafficType', undefined);
12
-
13
- if (settings.mode === LOCALHOST_MODE && maybeKey === undefined) {
14
- settings.core.key = 'localhost_key';
15
- } else {
16
- settings.core.key = validateKey(maybeKey, 'Client instantiation');
17
- } // Key is also binded to the .track method. Same thing happens with trafficType but only if present on configs. (not required)
18
-
19
-
20
- var trackBindings = [settings.core.key];
21
-
22
- if (maybeTT !== undefined) {
23
- var tt = validateTrafficType(maybeTT, 'Client instantiation');
24
- settings.core.trafficType = tt;
25
- trackBindings.push(tt);
26
- }
27
-
28
- var client = ClientAttributesDecorationLayer(context, true, trackBindings.length > 1);
29
- client.isBrowserClient = true; // In the browser land, we can bind the key and the traffic type (if provided)
30
-
31
- client.getTreatment = client.getTreatment.bind(client, settings.core.key);
32
- client.getTreatmentWithConfig = client.getTreatmentWithConfig.bind(client, settings.core.key);
33
- client.getTreatments = client.getTreatments.bind(client, settings.core.key);
34
- client.getTreatmentsWithConfig = client.getTreatmentsWithConfig.bind(client, settings.core.key);
35
- client.track = (_client$track = client.track).bind.apply(_client$track, [client].concat(trackBindings));
36
- return client;
37
- }
38
-
39
- export default BrowserClientFactory;
@@ -1,155 +0,0 @@
1
- import logFactory from '../utils/logger';
2
- var log = logFactory('splitio-client');
3
- import { evaluateFeature, evaluateFeatures } from '../engine/evaluator';
4
- import ImpressionsTracker from '../trackers/impressions';
5
- import EventTracker from '../trackers/event';
6
- import tracker from '../utils/timeTracker';
7
- import thenable from '../utils/promise/thenable';
8
- import { matching, bucketing } from '../utils/key/factory';
9
- /* asynchronous validations that live on the client. */
10
-
11
- import { validateSplitExistance, validateTrafficTypeExistance } from '../utils/inputValidation';
12
- import { SDK_NOT_READY } from '../utils/labels';
13
- import { CONTROL } from '../utils/constants';
14
-
15
- function ClientFactory(context) {
16
- var storage = context.get(context.constants.STORAGE);
17
- var metricCollectors = context.get(context.constants.COLLECTORS);
18
- var impressionsTracker = ImpressionsTracker(context);
19
- var eventTracker = EventTracker(context);
20
-
21
- function getTreatment(key, splitName, attributes, withConfig) {
22
- if (withConfig === void 0) {
23
- withConfig = false;
24
- }
25
-
26
- var taskToBeTracked = tracker.TaskNames[withConfig ? 'SDK_GET_TREATMENT_WITH_CONFIG' : 'SDK_GET_TREATMENT'];
27
- var stopLatencyTracker = tracker.start(taskToBeTracked, metricCollectors);
28
- var evaluation = evaluateFeature(key, splitName, attributes, storage);
29
-
30
- var wrapUp = function wrapUp(evaluationResult) {
31
- var treatment = processEvaluation(evaluationResult, splitName, key, attributes, withConfig, "getTreatment" + (withConfig ? 'withConfig' : ''));
32
- impressionsTracker.track();
33
- stopLatencyTracker();
34
- return treatment;
35
- };
36
-
37
- return thenable(evaluation) ? evaluation.then(function (res) {
38
- return wrapUp(res);
39
- }) : wrapUp(evaluation);
40
- }
41
-
42
- function getTreatmentWithConfig(key, splitName, attributes) {
43
- return getTreatment(key, splitName, attributes, true);
44
- }
45
-
46
- function getTreatments(key, splitNames, attributes, withConfig) {
47
- if (withConfig === void 0) {
48
- withConfig = false;
49
- }
50
-
51
- var taskToBeTracked = tracker.TaskNames[withConfig ? 'SDK_GET_TREATMENTS_WITH_CONFIG' : 'SDK_GET_TREATMENTS'];
52
- var stopLatencyTracker = tracker.start(taskToBeTracked, metricCollectors);
53
-
54
- var wrapUp = function wrapUp(evaluationResults) {
55
- var results = {};
56
- Object.keys(evaluationResults).forEach(function (splitName) {
57
- results[splitName] = processEvaluation(evaluationResults[splitName], splitName, key, attributes, withConfig, "getTreatments" + (withConfig ? 'withConfig' : ''));
58
- });
59
- impressionsTracker.track();
60
- stopLatencyTracker();
61
- return results;
62
- };
63
-
64
- var evaluations = evaluateFeatures(key, splitNames, attributes, storage);
65
- return thenable(evaluations) ? evaluations.then(function (res) {
66
- return wrapUp(res);
67
- }) : wrapUp(evaluations);
68
- }
69
-
70
- function getTreatmentsWithConfig(key, splitNames, attributes) {
71
- return getTreatments(key, splitNames, attributes, true);
72
- } // Internal function
73
-
74
-
75
- function processEvaluation(evaluation, splitName, key, attributes, withConfig, invokingMethodName) {
76
- var isSdkReady = context.get(context.constants.READY, true) || context.get(context.constants.READY_FROM_CACHE, true);
77
- var matchingKey = matching(key);
78
- var bucketingKey = bucketing(key); // If the SDK was not ready, treatment may be incorrect due to having Splits but not segments data.
79
-
80
- if (!isSdkReady) {
81
- evaluation = {
82
- treatment: CONTROL,
83
- label: SDK_NOT_READY
84
- };
85
- }
86
-
87
- var _evaluation = evaluation,
88
- treatment = _evaluation.treatment,
89
- label = _evaluation.label,
90
- changeNumber = _evaluation.changeNumber,
91
- _evaluation$config = _evaluation.config,
92
- config = _evaluation$config === void 0 ? null : _evaluation$config;
93
- log.info("Split: " + splitName + ". Key: " + matchingKey + ". Evaluation: " + treatment + ". Label: " + label);
94
-
95
- if (validateSplitExistance(context, splitName, label, invokingMethodName)) {
96
- log.info('Queueing corresponding impression.');
97
- impressionsTracker.queue({
98
- feature: splitName,
99
- keyName: matchingKey,
100
- treatment: treatment,
101
- time: Date.now(),
102
- bucketingKey: bucketingKey,
103
- label: label,
104
- changeNumber: changeNumber
105
- }, attributes);
106
- }
107
-
108
- if (withConfig) {
109
- return {
110
- treatment: treatment,
111
- config: config
112
- };
113
- }
114
-
115
- return treatment;
116
- }
117
-
118
- function track(key, trafficTypeName, eventTypeId, value, properties, size) {
119
- if (value === void 0) {
120
- value = null;
121
- }
122
-
123
- if (properties === void 0) {
124
- properties = null;
125
- }
126
-
127
- if (size === void 0) {
128
- size = 1024;
129
- }
130
-
131
- var matchingKey = matching(key);
132
- var timestamp = Date.now();
133
- var eventData = {
134
- eventTypeId: eventTypeId,
135
- trafficTypeName: trafficTypeName,
136
- value: value,
137
- timestamp: timestamp,
138
- key: matchingKey,
139
- properties: properties
140
- }; // This may be async but we only warn, we don't actually care if it is valid or not in terms of queueing the event.
141
-
142
- validateTrafficTypeExistance(trafficTypeName, context, 'track');
143
- return eventTracker.track(eventData, size);
144
- }
145
-
146
- return {
147
- getTreatment: getTreatment,
148
- getTreatmentWithConfig: getTreatmentWithConfig,
149
- getTreatments: getTreatments,
150
- getTreatmentsWithConfig: getTreatmentsWithConfig,
151
- track: track
152
- };
153
- }
154
-
155
- export default ClientFactory;
@@ -1,117 +0,0 @@
1
- import objectAssign from 'object-assign';
2
- import ClientFactory from './client';
3
- import { validateAttributes, validateEvent, validateEventValue, validateEventProperties, validateKey, validateSplit, validateSplits, validateTrafficType, validateIfDestroyed, validateIfReady } from '../utils/inputValidation';
4
- import { startsWith } from '../utils/lang';
5
- import { STORAGE_REDIS, CONTROL, CONTROL_WITH_CONFIG } from '../utils/constants';
6
- /**
7
- * We will validate the input before actually executing the client methods. We should "guard" the client here,
8
- * while not polluting the "real" implementation of those methods.
9
- */
10
-
11
- function ClientInputValidationLayer(context, isKeyBinded, isTTBinded) {
12
- var settings = context.get(context.constants.SETTINGS);
13
- var isStorageSync = settings.storage.type !== STORAGE_REDIS; // instantiate the client
14
-
15
- var client = ClientFactory(context); // Keep a reference to the original methods
16
-
17
- var clientGetTreatment = client.getTreatment;
18
- var clientGetTreatmentWithConfig = client.getTreatmentWithConfig;
19
- var clientGetTreatments = client.getTreatments;
20
- var clientGetTreatmentsWithConfig = client.getTreatmentsWithConfig;
21
- var clientTrack = client.track;
22
- /**
23
- * Avoid repeating this validations code
24
- */
25
-
26
- function validateEvaluationParams(maybeKey, maybeSplitOrSplits, maybeAttributes, methodName) {
27
- var multi = startsWith(methodName, 'getTreatments');
28
- var key = isKeyBinded ? maybeKey : validateKey(maybeKey, methodName);
29
- var splitOrSplits = multi ? validateSplits(maybeSplitOrSplits, methodName) : validateSplit(maybeSplitOrSplits, methodName);
30
- var attributes = validateAttributes(maybeAttributes, methodName);
31
- var isOperational = validateIfDestroyed(context);
32
- validateIfReady(context, methodName);
33
- var valid = isOperational && key && splitOrSplits && attributes !== false;
34
- return {
35
- valid: valid,
36
- key: key,
37
- splitOrSplits: splitOrSplits,
38
- attributes: attributes
39
- };
40
- }
41
-
42
- client.getTreatment = function getTreatment(maybeKey, maybeSplit, maybeAttributes) {
43
- var params = validateEvaluationParams(maybeKey, maybeSplit, maybeAttributes, 'getTreatment');
44
-
45
- if (params.valid) {
46
- return clientGetTreatment(params.key, params.splitOrSplits, params.attributes);
47
- } else {
48
- if (isStorageSync) return CONTROL;
49
- return Promise.resolve(CONTROL);
50
- }
51
- };
52
-
53
- client.getTreatmentWithConfig = function getTreatmentWithConfig(maybeKey, maybeSplit, maybeAttributes) {
54
- var params = validateEvaluationParams(maybeKey, maybeSplit, maybeAttributes, 'getTreatmentWithConfig');
55
-
56
- if (params.valid) {
57
- return clientGetTreatmentWithConfig(params.key, params.splitOrSplits, params.attributes);
58
- } else {
59
- if (isStorageSync) return objectAssign({}, CONTROL_WITH_CONFIG);
60
- return Promise.resolve(objectAssign({}, CONTROL_WITH_CONFIG));
61
- }
62
- };
63
-
64
- client.getTreatments = function getTreatments(maybeKey, maybeSplits, maybeAttributes) {
65
- var params = validateEvaluationParams(maybeKey, maybeSplits, maybeAttributes, 'getTreatments');
66
-
67
- if (params.valid) {
68
- return clientGetTreatments(params.key, params.splitOrSplits, params.attributes);
69
- } else {
70
- var res = {};
71
- if (params.splitOrSplits) params.splitOrSplits.forEach(function (split) {
72
- return res[split] = CONTROL;
73
- });
74
- if (isStorageSync) return res;
75
- return Promise.resolve(res);
76
- }
77
- };
78
-
79
- client.getTreatmentsWithConfig = function getTreatmentsWithConfig(maybeKey, maybeSplits, maybeAttributes) {
80
- var params = validateEvaluationParams(maybeKey, maybeSplits, maybeAttributes, 'getTreatmentsWithConfig');
81
-
82
- if (params.valid) {
83
- return clientGetTreatmentsWithConfig(params.key, params.splitOrSplits, params.attributes);
84
- } else {
85
- var res = {};
86
- if (params.splitOrSplits) params.splitOrSplits.forEach(function (split) {
87
- return res[split] = objectAssign({}, CONTROL_WITH_CONFIG);
88
- });
89
- if (isStorageSync) return res;
90
- return Promise.resolve(res);
91
- }
92
- };
93
-
94
- client.track = function track(maybeKey, maybeTT, maybeEvent, maybeEventValue, maybeProperties) {
95
- var key = isKeyBinded ? maybeKey : validateKey(maybeKey, 'track');
96
- var tt = isTTBinded ? maybeTT : validateTrafficType(maybeTT, 'track');
97
- var event = validateEvent(maybeEvent, 'track');
98
- var eventValue = validateEventValue(maybeEventValue, 'track');
99
-
100
- var _validateEventPropert = validateEventProperties(maybeProperties, 'track'),
101
- properties = _validateEventPropert.properties,
102
- size = _validateEventPropert.size;
103
-
104
- var isOperational = validateIfDestroyed(context);
105
-
106
- if (isOperational && key && tt && event && eventValue !== false && properties !== false) {
107
- return clientTrack(key, tt, event, eventValue, properties, size);
108
- } else {
109
- if (isStorageSync) return false;
110
- return Promise.resolve(false);
111
- }
112
- };
113
-
114
- return client;
115
- }
116
-
117
- export default ClientInputValidationLayer;
package/es/client/node.js DELETED
@@ -1,6 +0,0 @@
1
- import ClientWithInputValidationLayer from './inputValidation';
2
- export default function NodeClientFactory(context) {
3
- var client = ClientWithInputValidationLayer(context);
4
- client.isBrowserClient = false;
5
- return client;
6
- }
@@ -1,54 +0,0 @@
1
- /**
2
- Copyright 2016 Split Software
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- **/
16
- import { findIndex } from '../../utils/lang';
17
- import logFactory from '../../utils/logger';
18
- var log = logFactory('splitio-engine:combiner');
19
- import thenable from '../../utils/promise/thenable';
20
-
21
- function andResults(results) {
22
- var i = 0;
23
- var len = results.length;
24
- var hasMatchedAll; // loop through all the matchers an stop at the first one returning false.
25
-
26
- for (; i < len && results[i]; i++) {// logic is run inside the condition of evaluates next step.
27
- }
28
-
29
- hasMatchedAll = i === len;
30
- log.debug("[andCombiner] evaluates to " + hasMatchedAll);
31
- return hasMatchedAll;
32
- }
33
-
34
- function andCombinerContext(matchers) {
35
- function andCombiner() {
36
- for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
37
- params[_key] = arguments[_key];
38
- }
39
-
40
- var matcherResults = matchers.map(function (matcher) {
41
- return matcher.apply(void 0, params);
42
- }); // If any matching result is a thenable we should use Promise.all
43
-
44
- if (findIndex(matcherResults, thenable) !== -1) {
45
- return Promise.all(matcherResults).then(andResults);
46
- } else {
47
- return andResults(matcherResults);
48
- }
49
- }
50
-
51
- return andCombiner;
52
- }
53
-
54
- export default andCombinerContext;