@splitsoftware/splitio 10.17.2 → 10.17.3-rc.3

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 (778) hide show
  1. package/client/package.json +5 -0
  2. package/es/factory/browser.js +66 -0
  3. package/es/factory/node.js +64 -0
  4. package/es/{client → factory}/package.json +0 -0
  5. package/es/index.js +16 -132
  6. package/es/platform/EventEmitter.js +386 -0
  7. package/es/platform/browser.js +10 -0
  8. package/es/platform/getEventSource/browser.js +3 -0
  9. package/es/platform/getEventSource/node.js +19 -0
  10. package/es/{impressions/observer → platform/getEventSource}/package.json +0 -0
  11. package/es/platform/getFetch/browser.js +4 -0
  12. package/es/platform/getFetch/node.js +18 -0
  13. package/es/{integrations → platform/getFetch}/package.json +0 -0
  14. package/es/platform/node.js +12 -0
  15. package/es/{listeners → platform}/package.json +0 -0
  16. package/es/platform/request/options/node.js +13 -0
  17. package/es/settings/browser.js +18 -0
  18. package/es/settings/defaults/browser.js +15 -0
  19. package/es/settings/defaults/node.js +24 -0
  20. package/es/settings/defaults/version.js +1 -0
  21. package/es/settings/integrations/browser.js +5 -0
  22. package/es/settings/node.js +17 -0
  23. package/es/{producer/offline → settings}/package.json +0 -0
  24. package/es/settings/storage/browser.js +35 -0
  25. package/es/settings/storage/node.js +66 -0
  26. package/es/umd.js +2 -1
  27. package/lib/factory/browser.js +70 -0
  28. package/lib/factory/node.js +68 -0
  29. package/{es/producer → lib/factory}/package.json +0 -0
  30. package/lib/index.js +19 -155
  31. package/lib/platform/EventEmitter.js +390 -0
  32. package/lib/platform/browser.js +13 -0
  33. package/lib/platform/getEventSource/browser.js +7 -0
  34. package/lib/platform/getEventSource/node.js +25 -0
  35. package/{es/services → lib/platform}/getEventSource/package.json +0 -0
  36. package/lib/platform/getFetch/browser.js +9 -0
  37. package/lib/platform/getFetch/node.js +23 -0
  38. package/{es/services → lib/platform}/getFetch/package.json +0 -0
  39. package/lib/platform/node.js +16 -0
  40. package/{es/services/request/options → lib/platform}/package.json +0 -0
  41. package/lib/platform/request/options/node.js +18 -0
  42. package/lib/settings/browser.js +22 -0
  43. package/lib/settings/defaults/browser.js +18 -0
  44. package/lib/settings/defaults/node.js +27 -0
  45. package/lib/settings/defaults/version.js +4 -0
  46. package/lib/settings/integrations/browser.js +9 -0
  47. package/lib/settings/node.js +21 -0
  48. package/{es/services/splitChanges/offline → lib/settings}/package.json +0 -0
  49. package/lib/settings/storage/browser.js +39 -0
  50. package/lib/settings/storage/node.js +70 -0
  51. package/lib/umd.js +4 -8
  52. package/package.json +30 -31
  53. package/server/package.json +5 -0
  54. package/src/.DS_Store +0 -0
  55. package/src/factory/browser.js +83 -0
  56. package/src/factory/node.js +80 -0
  57. package/{es/storage/SegmentCache/InMemory → src/factory}/package.json +0 -0
  58. package/src/index.js +13 -136
  59. package/src/{sync/SSEHandler → platform}/.DS_Store +0 -0
  60. package/src/platform/EventEmitter.js +443 -0
  61. package/src/platform/browser.js +12 -0
  62. package/{es/services → src/platform}/getEventSource/browser.js +2 -2
  63. package/src/{services → platform}/getEventSource/node.js +2 -2
  64. package/{es/storage → src/platform/getEventSource}/package.json +0 -0
  65. package/src/{services → platform}/getFetch/browser.js +2 -2
  66. package/src/{services → platform}/getFetch/node.js +1 -1
  67. package/{es/sync/PushManager/pushRequirements → src/platform/getFetch}/package.json +0 -0
  68. package/src/platform/node.js +14 -0
  69. package/{es/sync/SegmentUpdateWorker → src/platform}/package.json +0 -0
  70. package/src/platform/request/options/node.js +15 -0
  71. package/src/{listeners → settings}/.DS_Store +0 -0
  72. package/src/settings/browser.js +20 -0
  73. package/{lib/utils → src}/settings/defaults/browser.js +6 -6
  74. package/{lib/utils → src}/settings/defaults/node.js +6 -6
  75. package/src/settings/defaults/version.js +1 -0
  76. package/src/settings/integrations/browser.js +6 -0
  77. package/src/settings/node.js +19 -0
  78. package/{es/sync → src/settings}/package.json +0 -0
  79. package/src/settings/storage/browser.js +49 -0
  80. package/src/{utils/settings → settings}/storage/node.js +18 -28
  81. package/src/umd.js +1 -0
  82. package/types/client/index.d.ts +14 -0
  83. package/types/server/index.d.ts +20 -0
  84. package/types/splitio.d.ts +22 -5
  85. package/es/client/attributesDecoration.js +0 -116
  86. package/es/client/browser.js +0 -39
  87. package/es/client/client.js +0 -155
  88. package/es/client/inputValidation.js +0 -117
  89. package/es/client/node.js +0 -6
  90. package/es/engine/combiners/and.js +0 -54
  91. package/es/engine/combiners/ifelseif.js +0 -73
  92. package/es/engine/condition/index.js +0 -62
  93. package/es/engine/convertions/index.js +0 -29
  94. package/es/engine/engine/index.js +0 -60
  95. package/es/engine/engine/legacy.js +0 -77
  96. package/es/engine/engine/murmur3/common.js +0 -40
  97. package/es/engine/engine/murmur3/murmur3.js +0 -83
  98. package/es/engine/engine/murmur3/murmur3_128.js +0 -250
  99. package/es/engine/engine/murmur3/murmur3_128_x86.js +0 -183
  100. package/es/engine/engine/murmur3/murmur3_64.js +0 -52
  101. package/es/engine/engine/murmur3/utfx.js +0 -112
  102. package/es/engine/evaluator/index.js +0 -111
  103. package/es/engine/index.js +0 -112
  104. package/es/engine/matchers/all.js +0 -32
  105. package/es/engine/matchers/between.js +0 -35
  106. package/es/engine/matchers/boolean.js +0 -35
  107. package/es/engine/matchers/cont_all.js +0 -51
  108. package/es/engine/matchers/cont_any.js +0 -47
  109. package/es/engine/matchers/cont_str.js +0 -38
  110. package/es/engine/matchers/dependency.js +0 -50
  111. package/es/engine/matchers/eq.js +0 -35
  112. package/es/engine/matchers/eq_set.js +0 -49
  113. package/es/engine/matchers/ew.js +0 -38
  114. package/es/engine/matchers/gte.js +0 -35
  115. package/es/engine/matchers/index.js +0 -65
  116. package/es/engine/matchers/lte.js +0 -35
  117. package/es/engine/matchers/part_of.js +0 -49
  118. package/es/engine/matchers/segment.js +0 -39
  119. package/es/engine/matchers/string.js +0 -44
  120. package/es/engine/matchers/sw.js +0 -38
  121. package/es/engine/matchers/types.js +0 -48
  122. package/es/engine/matchers/whitelist.js +0 -36
  123. package/es/engine/parser/index.js +0 -69
  124. package/es/engine/parser/segments.js +0 -22
  125. package/es/engine/transforms/matcherGroup.js +0 -43
  126. package/es/engine/transforms/matchers.js +0 -109
  127. package/es/engine/transforms/segment.js +0 -28
  128. package/es/engine/transforms/set.js +0 -20
  129. package/es/engine/transforms/unaryNumeric.js +0 -20
  130. package/es/engine/transforms/whitelist.js +0 -22
  131. package/es/engine/treatments/index.js +0 -67
  132. package/es/engine/value/index.js +0 -54
  133. package/es/engine/value/sanitize.js +0 -125
  134. package/es/events/index.js +0 -65
  135. package/es/factory/offline.js +0 -50
  136. package/es/factory/online.js +0 -113
  137. package/es/impressions/counter.js +0 -52
  138. package/es/impressions/hasher/buildKey.js +0 -3
  139. package/es/impressions/hasher/hashImpression128.js +0 -5
  140. package/es/impressions/hasher/hashImpression32.js +0 -5
  141. package/es/impressions/observer/browser.js +0 -9
  142. package/es/impressions/observer/node.js +0 -9
  143. package/es/impressions/observer/observer.js +0 -21
  144. package/es/integrations/browser.js +0 -62
  145. package/es/integrations/ga/GaToSplit.js +0 -246
  146. package/es/integrations/ga/SplitToGa.js +0 -127
  147. package/es/integrations/node.js +0 -3
  148. package/es/listeners/browser.js +0 -157
  149. package/es/listeners/node.js +0 -65
  150. package/es/manager/index.js +0 -104
  151. package/es/metrics/Collectors.js +0 -100
  152. package/es/metrics/index.js +0 -157
  153. package/es/producer/browser/Partial.js +0 -103
  154. package/es/producer/browser.js +0 -70
  155. package/es/producer/fetcher/MySegments.js +0 -47
  156. package/es/producer/fetcher/SegmentChanges.js +0 -52
  157. package/es/producer/fetcher/SplitChanges.js +0 -46
  158. package/es/producer/node.js +0 -130
  159. package/es/producer/offline/browser.js +0 -26
  160. package/es/producer/offline/node.js +0 -26
  161. package/es/producer/task.js +0 -50
  162. package/es/producer/updater/MySegments.js +0 -108
  163. package/es/producer/updater/SegmentChanges.js +0 -135
  164. package/es/producer/updater/SplitChanges.js +0 -131
  165. package/es/producer/updater/SplitChangesFromFeatures.js +0 -21
  166. package/es/producer/updater/SplitChangesFromFileSystem.js +0 -21
  167. package/es/producer/updater/SplitChangesFromObject.js +0 -73
  168. package/es/readiness/index.js +0 -123
  169. package/es/readiness/statusManager.js +0 -114
  170. package/es/services/auth/auth.js +0 -25
  171. package/es/services/auth/index.js +0 -2
  172. package/es/services/events/bulk.js +0 -22
  173. package/es/services/events/index.js +0 -17
  174. package/es/services/getEventSource/node.js +0 -18
  175. package/es/services/getFetch/browser.js +0 -4
  176. package/es/services/getFetch/node.js +0 -18
  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/request/options/node.js +0 -28
  191. package/es/services/segmentChanges/get.js +0 -21
  192. package/es/services/segmentChanges/index.js +0 -17
  193. package/es/services/splitChanges/get.js +0 -19
  194. package/es/services/splitChanges/index.js +0 -17
  195. package/es/services/splitChanges/offline/browser.js +0 -63
  196. package/es/services/splitChanges/offline/node.js +0 -176
  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 -85
  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/InRedis/index.js +0 -81
  218. package/es/storage/SplitCache/InLocalStorage.js +0 -332
  219. package/es/storage/SplitCache/InMemory.js +0 -162
  220. package/es/storage/SplitCache/InRedis.js +0 -214
  221. package/es/storage/SplitCache/killLocally.js +0 -35
  222. package/es/storage/browser.js +0 -101
  223. package/es/storage/node.js +0 -81
  224. package/es/sync/AuthClient/index.js +0 -34
  225. package/es/sync/PushManager/index.js +0 -315
  226. package/es/sync/PushManager/mySegmentsV2utils.js +0 -76
  227. package/es/sync/PushManager/pushRequirements/browser.js +0 -23
  228. package/es/sync/PushManager/pushRequirements/node.js +0 -18
  229. package/es/sync/SSEClient/index.js +0 -93
  230. package/es/sync/SSEHandler/NotificationKeeper.js +0 -97
  231. package/es/sync/SSEHandler/NotificationParser.js +0 -31
  232. package/es/sync/SSEHandler/index.js +0 -110
  233. package/es/sync/SegmentUpdateWorker/browser.js +0 -74
  234. package/es/sync/SegmentUpdateWorker/node.js +0 -79
  235. package/es/sync/SplitUpdateWorker/index.js +0 -86
  236. package/es/sync/browser.js +0 -125
  237. package/es/sync/constants.js +0 -42
  238. package/es/sync/node.js +0 -60
  239. package/es/trackers/event.js +0 -53
  240. package/es/trackers/impressions.js +0 -132
  241. package/es/utils/backoff/index.js +0 -51
  242. package/es/utils/base64/browser.js +0 -19
  243. package/es/utils/base64/node.js +0 -19
  244. package/es/utils/base64/package.json +0 -4
  245. package/es/utils/binarySearch/index.js +0 -50
  246. package/es/utils/constants/index.js +0 -38
  247. package/es/utils/context/constants.js +0 -30
  248. package/es/utils/context/index.js +0 -101
  249. package/es/utils/decompress/index.js +0 -476
  250. package/es/utils/fn/repeat.js +0 -58
  251. package/es/utils/inputValidation/apiKey.js +0 -39
  252. package/es/utils/inputValidation/attribute.js +0 -22
  253. package/es/utils/inputValidation/attributes.js +0 -19
  254. package/es/utils/inputValidation/event.js +0 -23
  255. package/es/utils/inputValidation/eventProperties.js +0 -69
  256. package/es/utils/inputValidation/eventValue.js +0 -9
  257. package/es/utils/inputValidation/index.js +0 -11
  258. package/es/utils/inputValidation/isOperational.js +0 -14
  259. package/es/utils/inputValidation/key.js +0 -50
  260. package/es/utils/inputValidation/split.js +0 -47
  261. package/es/utils/inputValidation/splitFilters.js +0 -121
  262. package/es/utils/inputValidation/splits.js +0 -27
  263. package/es/utils/inputValidation/trafficType.js +0 -55
  264. package/es/utils/jwt/hashUserKey.js +0 -11
  265. package/es/utils/jwt/index.js +0 -14
  266. package/es/utils/key/factory.js +0 -38
  267. package/es/utils/key/parser.js +0 -34
  268. package/es/utils/labels/index.js +0 -7
  269. package/es/utils/lang/Errors.js +0 -41
  270. package/es/utils/lang/Sets.js +0 -114
  271. package/es/utils/lang/index.js +0 -305
  272. package/es/utils/localstorage/isAvailable.js +0 -26
  273. package/es/utils/logger/LoggerFactory.js +0 -86
  274. package/es/utils/logger/index.js +0 -97
  275. package/es/utils/lrucache/linkedlist.js +0 -122
  276. package/es/utils/lrucache/lru.spec.js +0 -24
  277. package/es/utils/lrucache/lrucache.js +0 -80
  278. package/es/utils/now/browser.js +0 -27
  279. package/es/utils/now/node.js +0 -19
  280. package/es/utils/now/package.json +0 -4
  281. package/es/utils/promise/thenable.js +0 -3
  282. package/es/utils/promise/timeout.js +0 -34
  283. package/es/utils/promise/wrapper.js +0 -58
  284. package/es/utils/settings/defaults/browser.js +0 -12
  285. package/es/utils/settings/defaults/node.js +0 -21
  286. package/es/utils/settings/defaults/package.json +0 -4
  287. package/es/utils/settings/impressionsMode.js +0 -16
  288. package/es/utils/settings/index.js +0 -194
  289. package/es/utils/settings/integrations/browser.js +0 -8
  290. package/es/utils/settings/integrations/common.js +0 -30
  291. package/es/utils/settings/integrations/node.js +0 -7
  292. package/es/utils/settings/integrations/package.json +0 -4
  293. package/es/utils/settings/language/browser.js +0 -16
  294. package/es/utils/settings/language/node.js +0 -16
  295. package/es/utils/settings/language/package.json +0 -4
  296. package/es/utils/settings/mode.js +0 -10
  297. package/es/utils/settings/runtime/browser.js +0 -21
  298. package/es/utils/settings/runtime/node.js +0 -33
  299. package/es/utils/settings/runtime/package.json +0 -4
  300. package/es/utils/settings/storage/browser.js +0 -64
  301. package/es/utils/settings/storage/node.js +0 -86
  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/browser.js +0 -8
  403. package/lib/services/getEventSource/node.js +0 -26
  404. package/lib/services/getEventSource/package.json +0 -4
  405. package/lib/services/getFetch/browser.js +0 -12
  406. package/lib/services/getFetch/node.js +0 -24
  407. package/lib/services/getFetch/package.json +0 -4
  408. package/lib/services/impressions/bulk.js +0 -36
  409. package/lib/services/impressions/count.js +0 -16
  410. package/lib/services/impressions/dto.js +0 -81
  411. package/lib/services/impressions/index.js +0 -26
  412. package/lib/services/impressions/post.js +0 -31
  413. package/lib/services/metrics/counters.js +0 -33
  414. package/lib/services/metrics/dto.js +0 -46
  415. package/lib/services/metrics/index.js +0 -26
  416. package/lib/services/metrics/times.js +0 -33
  417. package/lib/services/mySegments/get.js +0 -35
  418. package/lib/services/mySegments/index.js +0 -26
  419. package/lib/services/request/index.js +0 -53
  420. package/lib/services/request/options/browser.js +0 -23
  421. package/lib/services/request/options/node.js +0 -37
  422. package/lib/services/request/options/package.json +0 -4
  423. package/lib/services/segmentChanges/get.js +0 -29
  424. package/lib/services/segmentChanges/index.js +0 -26
  425. package/lib/services/splitChanges/get.js +0 -27
  426. package/lib/services/splitChanges/index.js +0 -26
  427. package/lib/services/splitChanges/offline/browser.js +0 -71
  428. package/lib/services/splitChanges/offline/node.js +0 -189
  429. package/lib/services/splitChanges/offline/package.json +0 -4
  430. package/lib/services/splitChanges/offline/parseCondition.js +0 -49
  431. package/lib/services/transport/index.js +0 -62
  432. package/lib/storage/AttributesCache/InMemory.js +0 -93
  433. package/lib/storage/BaseMetricsAsyncCache.js +0 -28
  434. package/lib/storage/CountCache/InMemory.js +0 -54
  435. package/lib/storage/CountCache/InRedis.js +0 -50
  436. package/lib/storage/EventsCache/InMemory.js +0 -118
  437. package/lib/storage/EventsCache/InRedis.js +0 -74
  438. package/lib/storage/ImpressionsCache/InMemory.js +0 -77
  439. package/lib/storage/ImpressionsCache/InRedis.js +0 -79
  440. package/lib/storage/Keys.js +0 -132
  441. package/lib/storage/KeysLocalStorage.js +0 -58
  442. package/lib/storage/LatencyCache/InMemory.js +0 -64
  443. package/lib/storage/LatencyCache/InRedis.js +0 -53
  444. package/lib/storage/LatencyCache/findIndex.js +0 -12
  445. package/lib/storage/Meta.js +0 -12
  446. package/lib/storage/RedisAdapter.js +0 -212
  447. package/lib/storage/SegmentCache/InLocalStorage/index.js +0 -147
  448. package/lib/storage/SegmentCache/InMemory/browser.js +0 -113
  449. package/lib/storage/SegmentCache/InMemory/node.js +0 -89
  450. package/lib/storage/SegmentCache/InMemory/package.json +0 -4
  451. package/lib/storage/SegmentCache/InRedis/index.js +0 -87
  452. package/lib/storage/SplitCache/InLocalStorage.js +0 -344
  453. package/lib/storage/SplitCache/InMemory.js +0 -172
  454. package/lib/storage/SplitCache/InRedis.js +0 -224
  455. package/lib/storage/SplitCache/killLocally.js +0 -42
  456. package/lib/storage/browser.js +0 -122
  457. package/lib/storage/node.js +0 -104
  458. package/lib/storage/package.json +0 -4
  459. package/lib/sync/AuthClient/index.js +0 -44
  460. package/lib/sync/PushManager/index.js +0 -340
  461. package/lib/sync/PushManager/mySegmentsV2utils.js +0 -87
  462. package/lib/sync/PushManager/pushRequirements/browser.js +0 -30
  463. package/lib/sync/PushManager/pushRequirements/node.js +0 -25
  464. package/lib/sync/PushManager/pushRequirements/package.json +0 -4
  465. package/lib/sync/SSEClient/index.js +0 -101
  466. package/lib/sync/SSEHandler/NotificationKeeper.js +0 -104
  467. package/lib/sync/SSEHandler/NotificationParser.js +0 -39
  468. package/lib/sync/SSEHandler/index.js +0 -121
  469. package/lib/sync/SegmentUpdateWorker/browser.js +0 -81
  470. package/lib/sync/SegmentUpdateWorker/node.js +0 -86
  471. package/lib/sync/SegmentUpdateWorker/package.json +0 -4
  472. package/lib/sync/SplitUpdateWorker/index.js +0 -93
  473. package/lib/sync/browser.js +0 -139
  474. package/lib/sync/constants.js +0 -59
  475. package/lib/sync/node.js +0 -71
  476. package/lib/sync/package.json +0 -4
  477. package/lib/trackers/event.js +0 -64
  478. package/lib/trackers/impressions.js +0 -146
  479. package/lib/utils/backoff/index.js +0 -57
  480. package/lib/utils/base64/browser.js +0 -26
  481. package/lib/utils/base64/node.js +0 -26
  482. package/lib/utils/base64/package.json +0 -4
  483. package/lib/utils/binarySearch/index.js +0 -56
  484. package/lib/utils/constants/index.js +0 -60
  485. package/lib/utils/context/constants.js +0 -49
  486. package/lib/utils/context/index.js +0 -111
  487. package/lib/utils/decompress/index.js +0 -483
  488. package/lib/utils/fn/repeat.js +0 -64
  489. package/lib/utils/inputValidation/apiKey.js +0 -51
  490. package/lib/utils/inputValidation/attribute.js +0 -32
  491. package/lib/utils/inputValidation/attributes.js +0 -32
  492. package/lib/utils/inputValidation/event.js +0 -33
  493. package/lib/utils/inputValidation/eventProperties.js +0 -78
  494. package/lib/utils/inputValidation/eventValue.js +0 -19
  495. package/lib/utils/inputValidation/index.js +0 -48
  496. package/lib/utils/inputValidation/isOperational.js +0 -25
  497. package/lib/utils/inputValidation/key.js +0 -59
  498. package/lib/utils/inputValidation/split.js +0 -60
  499. package/lib/utils/inputValidation/splitFilters.js +0 -134
  500. package/lib/utils/inputValidation/splits.js +0 -38
  501. package/lib/utils/inputValidation/trafficType.js +0 -68
  502. package/lib/utils/jwt/hashUserKey.js +0 -19
  503. package/lib/utils/jwt/index.js +0 -19
  504. package/lib/utils/key/factory.js +0 -46
  505. package/lib/utils/key/parser.js +0 -42
  506. package/lib/utils/labels/index.js +0 -18
  507. package/lib/utils/lang/Errors.js +0 -58
  508. package/lib/utils/lang/Sets.js +0 -127
  509. package/lib/utils/lang/index.js +0 -350
  510. package/lib/utils/localstorage/isAvailable.js +0 -31
  511. package/lib/utils/logger/LoggerFactory.js +0 -98
  512. package/lib/utils/logger/index.js +0 -109
  513. package/lib/utils/lrucache/linkedlist.js +0 -132
  514. package/lib/utils/lrucache/lru.spec.js +0 -30
  515. package/lib/utils/lrucache/lrucache.js +0 -88
  516. package/lib/utils/now/browser.js +0 -33
  517. package/lib/utils/now/node.js +0 -24
  518. package/lib/utils/now/package.json +0 -4
  519. package/lib/utils/promise/thenable.js +0 -10
  520. package/lib/utils/promise/timeout.js +0 -40
  521. package/lib/utils/promise/wrapper.js +0 -63
  522. package/lib/utils/settings/defaults/package.json +0 -4
  523. package/lib/utils/settings/impressionsMode.js +0 -26
  524. package/lib/utils/settings/index.js +0 -214
  525. package/lib/utils/settings/integrations/browser.js +0 -17
  526. package/lib/utils/settings/integrations/common.js +0 -40
  527. package/lib/utils/settings/integrations/node.js +0 -13
  528. package/lib/utils/settings/integrations/package.json +0 -4
  529. package/lib/utils/settings/language/browser.js +0 -22
  530. package/lib/utils/settings/language/node.js +0 -22
  531. package/lib/utils/settings/language/package.json +0 -4
  532. package/lib/utils/settings/mode.js +0 -16
  533. package/lib/utils/settings/runtime/browser.js +0 -26
  534. package/lib/utils/settings/runtime/node.js +0 -43
  535. package/lib/utils/settings/runtime/package.json +0 -4
  536. package/lib/utils/settings/storage/browser.js +0 -75
  537. package/lib/utils/settings/storage/node.js +0 -92
  538. package/lib/utils/settings/storage/package.json +0 -4
  539. package/lib/utils/splits/usesSegments.js +0 -27
  540. package/lib/utils/time/index.js +0 -12
  541. package/lib/utils/timeTracker/index.js +0 -213
  542. package/lib/utils/timeTracker/timer.js +0 -33
  543. package/src/client/attributesDecoration.js +0 -112
  544. package/src/client/browser.js +0 -41
  545. package/src/client/client.js +0 -131
  546. package/src/client/inputValidation.js +0 -130
  547. package/src/client/node.js +0 -8
  548. package/src/client/package.json +0 -4
  549. package/src/engine/combiners/and.js +0 -55
  550. package/src/engine/combiners/ifelseif.js +0 -74
  551. package/src/engine/condition/index.js +0 -65
  552. package/src/engine/convertions/index.js +0 -22
  553. package/src/engine/engine/index.js +0 -63
  554. package/src/engine/engine/legacy.js +0 -66
  555. package/src/engine/engine/murmur3/common.js +0 -54
  556. package/src/engine/engine/murmur3/murmur3.js +0 -79
  557. package/src/engine/engine/murmur3/murmur3_128.js +0 -273
  558. package/src/engine/engine/murmur3/murmur3_128_x86.js +0 -188
  559. package/src/engine/engine/murmur3/murmur3_64.js +0 -34
  560. package/src/engine/engine/murmur3/utfx.js +0 -111
  561. package/src/engine/evaluator/index.js +0 -148
  562. package/src/engine/index.js +0 -123
  563. package/src/engine/matchers/all.js +0 -29
  564. package/src/engine/matchers/between.js +0 -30
  565. package/src/engine/matchers/boolean.js +0 -29
  566. package/src/engine/matchers/cont_all.js +0 -40
  567. package/src/engine/matchers/cont_any.js +0 -35
  568. package/src/engine/matchers/cont_str.js +0 -31
  569. package/src/engine/matchers/dependency.js +0 -52
  570. package/src/engine/matchers/eq.js +0 -30
  571. package/src/engine/matchers/eq_set.js +0 -37
  572. package/src/engine/matchers/ew.js +0 -31
  573. package/src/engine/matchers/gte.js +0 -30
  574. package/src/engine/matchers/index.js +0 -71
  575. package/src/engine/matchers/lte.js +0 -30
  576. package/src/engine/matchers/part_of.js +0 -37
  577. package/src/engine/matchers/segment.js +0 -41
  578. package/src/engine/matchers/string.js +0 -39
  579. package/src/engine/matchers/sw.js +0 -31
  580. package/src/engine/matchers/types.js +0 -52
  581. package/src/engine/matchers/whitelist.js +0 -30
  582. package/src/engine/parser/index.js +0 -79
  583. package/src/engine/parser/segments.js +0 -31
  584. package/src/engine/transforms/matcherGroup.js +0 -45
  585. package/src/engine/transforms/matchers.js +0 -118
  586. package/src/engine/transforms/segment.js +0 -23
  587. package/src/engine/transforms/set.js +0 -20
  588. package/src/engine/transforms/unaryNumeric.js +0 -20
  589. package/src/engine/transforms/whitelist.js +0 -22
  590. package/src/engine/treatments/index.js +0 -67
  591. package/src/engine/value/index.js +0 -53
  592. package/src/engine/value/sanitize.js +0 -117
  593. package/src/events/index.js +0 -62
  594. package/src/factory/offline.js +0 -60
  595. package/src/factory/online.js +0 -127
  596. package/src/impressions/counter.js +0 -43
  597. package/src/impressions/hasher/buildKey.js +0 -3
  598. package/src/impressions/hasher/hashImpression128.js +0 -6
  599. package/src/impressions/hasher/hashImpression32.js +0 -6
  600. package/src/impressions/observer/browser.js +0 -8
  601. package/src/impressions/observer/node.js +0 -8
  602. package/src/impressions/observer/observer.js +0 -17
  603. package/src/impressions/observer/package.json +0 -4
  604. package/src/integrations/browser.js +0 -57
  605. package/src/integrations/ga/GaToSplit.js +0 -278
  606. package/src/integrations/ga/SplitToGa.js +0 -125
  607. package/src/integrations/node.js +0 -4
  608. package/src/integrations/package.json +0 -4
  609. package/src/listeners/browser.js +0 -137
  610. package/src/listeners/node.js +0 -59
  611. package/src/listeners/package.json +0 -4
  612. package/src/manager/index.js +0 -103
  613. package/src/metrics/Collectors.js +0 -77
  614. package/src/metrics/index.js +0 -174
  615. package/src/producer/browser/Partial.js +0 -104
  616. package/src/producer/browser.js +0 -82
  617. package/src/producer/fetcher/MySegments.js +0 -40
  618. package/src/producer/fetcher/SegmentChanges.js +0 -52
  619. package/src/producer/fetcher/SplitChanges.js +0 -39
  620. package/src/producer/node.js +0 -142
  621. package/src/producer/offline/browser.js +0 -28
  622. package/src/producer/offline/node.js +0 -28
  623. package/src/producer/offline/package.json +0 -4
  624. package/src/producer/package.json +0 -4
  625. package/src/producer/task.js +0 -57
  626. package/src/producer/updater/MySegments.js +0 -104
  627. package/src/producer/updater/SegmentChanges.js +0 -126
  628. package/src/producer/updater/SplitChanges.js +0 -138
  629. package/src/producer/updater/SplitChangesFromFeatures.js +0 -23
  630. package/src/producer/updater/SplitChangesFromFileSystem.js +0 -23
  631. package/src/producer/updater/SplitChangesFromObject.js +0 -81
  632. package/src/readiness/index.js +0 -125
  633. package/src/readiness/statusManager.js +0 -121
  634. package/src/services/.DS_Store +0 -0
  635. package/src/services/auth/auth.js +0 -21
  636. package/src/services/auth/index.js +0 -3
  637. package/src/services/events/bulk.js +0 -23
  638. package/src/services/events/index.js +0 -18
  639. package/src/services/getEventSource/browser.js +0 -3
  640. package/src/services/getEventSource/package.json +0 -4
  641. package/src/services/getFetch/package.json +0 -4
  642. package/src/services/impressions/bulk.js +0 -26
  643. package/src/services/impressions/count.js +0 -8
  644. package/src/services/impressions/dto.js +0 -71
  645. package/src/services/impressions/index.js +0 -18
  646. package/src/services/impressions/post.js +0 -23
  647. package/src/services/metrics/counters.js +0 -25
  648. package/src/services/metrics/dto.js +0 -44
  649. package/src/services/metrics/index.js +0 -18
  650. package/src/services/metrics/times.js +0 -25
  651. package/src/services/mySegments/get.js +0 -27
  652. package/src/services/mySegments/index.js +0 -18
  653. package/src/services/request/index.js +0 -43
  654. package/src/services/request/options/browser.js +0 -18
  655. package/src/services/request/options/node.js +0 -30
  656. package/src/services/request/options/package.json +0 -4
  657. package/src/services/segmentChanges/get.js +0 -20
  658. package/src/services/segmentChanges/index.js +0 -18
  659. package/src/services/splitChanges/get.js +0 -20
  660. package/src/services/splitChanges/index.js +0 -18
  661. package/src/services/splitChanges/offline/browser.js +0 -66
  662. package/src/services/splitChanges/offline/node.js +0 -190
  663. package/src/services/splitChanges/offline/package.json +0 -4
  664. package/src/services/splitChanges/offline/parseCondition.js +0 -52
  665. package/src/services/transport/index.js +0 -44
  666. package/src/storage/AttributesCache/InMemory.js +0 -76
  667. package/src/storage/BaseMetricsAsyncCache.js +0 -14
  668. package/src/storage/CountCache/InMemory.js +0 -48
  669. package/src/storage/CountCache/InRedis.js +0 -32
  670. package/src/storage/EventsCache/InMemory.js +0 -99
  671. package/src/storage/EventsCache/InRedis.js +0 -62
  672. package/src/storage/ImpressionsCache/InMemory.js +0 -62
  673. package/src/storage/ImpressionsCache/InRedis.js +0 -65
  674. package/src/storage/Keys.js +0 -122
  675. package/src/storage/KeysLocalStorage.js +0 -40
  676. package/src/storage/LatencyCache/InMemory.js +0 -56
  677. package/src/storage/LatencyCache/InRedis.js +0 -35
  678. package/src/storage/LatencyCache/findIndex.js +0 -7
  679. package/src/storage/Meta.js +0 -7
  680. package/src/storage/RedisAdapter.js +0 -170
  681. package/src/storage/SegmentCache/InLocalStorage/index.js +0 -120
  682. package/src/storage/SegmentCache/InMemory/browser.js +0 -99
  683. package/src/storage/SegmentCache/InMemory/node.js +0 -84
  684. package/src/storage/SegmentCache/InMemory/package.json +0 -4
  685. package/src/storage/SegmentCache/InRedis/index.js +0 -71
  686. package/src/storage/SplitCache/InLocalStorage.js +0 -324
  687. package/src/storage/SplitCache/InMemory.js +0 -145
  688. package/src/storage/SplitCache/InRedis.js +0 -187
  689. package/src/storage/SplitCache/killLocally.js +0 -33
  690. package/src/storage/browser.js +0 -110
  691. package/src/storage/node.js +0 -83
  692. package/src/storage/package.json +0 -4
  693. package/src/sync/.DS_Store +0 -0
  694. package/src/sync/AuthClient/index.js +0 -31
  695. package/src/sync/PushManager/index.js +0 -328
  696. package/src/sync/PushManager/mySegmentsV2utils.js +0 -76
  697. package/src/sync/PushManager/pushRequirements/browser.js +0 -20
  698. package/src/sync/PushManager/pushRequirements/node.js +0 -16
  699. package/src/sync/PushManager/pushRequirements/package.json +0 -4
  700. package/src/sync/SSEClient/index.js +0 -92
  701. package/src/sync/SSEHandler/NotificationKeeper.js +0 -90
  702. package/src/sync/SSEHandler/NotificationParser.js +0 -35
  703. package/src/sync/SSEHandler/index.js +0 -110
  704. package/src/sync/SegmentUpdateWorker/browser.js +0 -67
  705. package/src/sync/SegmentUpdateWorker/node.js +0 -73
  706. package/src/sync/SegmentUpdateWorker/package.json +0 -4
  707. package/src/sync/SplitUpdateWorker/index.js +0 -79
  708. package/src/sync/browser.js +0 -130
  709. package/src/sync/constants.js +0 -43
  710. package/src/sync/node.js +0 -66
  711. package/src/sync/package.json +0 -4
  712. package/src/trackers/event.js +0 -47
  713. package/src/trackers/impressions.js +0 -123
  714. package/src/utils/backoff/index.js +0 -46
  715. package/src/utils/base64/browser.js +0 -19
  716. package/src/utils/base64/node.js +0 -19
  717. package/src/utils/base64/package.json +0 -4
  718. package/src/utils/binarySearch/index.js +0 -50
  719. package/src/utils/constants/index.js +0 -41
  720. package/src/utils/context/constants.js +0 -18
  721. package/src/utils/context/index.js +0 -84
  722. package/src/utils/decompress/index.js +0 -428
  723. package/src/utils/fn/repeat.js +0 -48
  724. package/src/utils/inputValidation/apiKey.js +0 -42
  725. package/src/utils/inputValidation/attribute.js +0 -22
  726. package/src/utils/inputValidation/attributes.js +0 -26
  727. package/src/utils/inputValidation/event.js +0 -23
  728. package/src/utils/inputValidation/eventProperties.js +0 -65
  729. package/src/utils/inputValidation/eventValue.js +0 -11
  730. package/src/utils/inputValidation/index.js +0 -11
  731. package/src/utils/inputValidation/isOperational.js +0 -16
  732. package/src/utils/inputValidation/key.js +0 -53
  733. package/src/utils/inputValidation/split.js +0 -42
  734. package/src/utils/inputValidation/splitFilters.js +0 -108
  735. package/src/utils/inputValidation/splits.js +0 -21
  736. package/src/utils/inputValidation/trafficType.js +0 -58
  737. package/src/utils/jwt/hashUserKey.js +0 -11
  738. package/src/utils/jwt/index.js +0 -15
  739. package/src/utils/key/factory.js +0 -34
  740. package/src/utils/key/parser.js +0 -34
  741. package/src/utils/labels/index.js +0 -7
  742. package/src/utils/lang/Errors.js +0 -19
  743. package/src/utils/lang/Sets.js +0 -94
  744. package/src/utils/lang/index.js +0 -291
  745. package/src/utils/localstorage/isAvailable.js +0 -26
  746. package/src/utils/logger/LoggerFactory.js +0 -90
  747. package/src/utils/logger/index.js +0 -93
  748. package/src/utils/lrucache/linkedlist.js +0 -116
  749. package/src/utils/lrucache/lru.spec.js +0 -26
  750. package/src/utils/lrucache/lrucache.js +0 -49
  751. package/src/utils/now/browser.js +0 -29
  752. package/src/utils/now/node.js +0 -21
  753. package/src/utils/now/package.json +0 -4
  754. package/src/utils/promise/thenable.js +0 -1
  755. package/src/utils/promise/timeout.js +0 -38
  756. package/src/utils/promise/wrapper.js +0 -60
  757. package/src/utils/settings/defaults/browser.js +0 -12
  758. package/src/utils/settings/defaults/node.js +0 -21
  759. package/src/utils/settings/defaults/package.json +0 -4
  760. package/src/utils/settings/impressionsMode.js +0 -15
  761. package/src/utils/settings/index.js +0 -217
  762. package/src/utils/settings/integrations/browser.js +0 -8
  763. package/src/utils/settings/integrations/common.js +0 -32
  764. package/src/utils/settings/integrations/node.js +0 -7
  765. package/src/utils/settings/integrations/package.json +0 -4
  766. package/src/utils/settings/language/browser.js +0 -17
  767. package/src/utils/settings/language/node.js +0 -17
  768. package/src/utils/settings/language/package.json +0 -4
  769. package/src/utils/settings/mode.js +0 -12
  770. package/src/utils/settings/runtime/browser.js +0 -22
  771. package/src/utils/settings/runtime/node.js +0 -34
  772. package/src/utils/settings/runtime/package.json +0 -4
  773. package/src/utils/settings/storage/browser.js +0 -70
  774. package/src/utils/settings/storage/package.json +0 -4
  775. package/src/utils/splits/usesSegments.js +0 -17
  776. package/src/utils/time/index.js +0 -8
  777. package/src/utils/timeTracker/index.js +0 -223
  778. package/src/utils/timeTracker/timer.js +0 -27
@@ -1,28 +1,14 @@
1
- /**
2
- Copyright 2016 Split Software
1
+ import { LOCALHOST_MODE, STORAGE_MEMORY, STORAGE_REDIS, CONSUMER_MODE, STANDALONE_MODE } from '@splitsoftware/splitio-commons/src/utils/constants';
3
2
 
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 { LOCALHOST_MODE, STORAGE_MEMORY, STORAGE_REDIS } from '../../constants';
17
-
18
- const ParseStorageSettings = (settings) => {
3
+ export function validateStorage(settings) {
19
4
  let {
5
+ log,
20
6
  mode,
21
7
  storage: {
22
8
  type,
23
9
  options = {},
24
10
  prefix
25
- }
11
+ } = { type: STORAGE_MEMORY }
26
12
  } = settings;
27
13
 
28
14
  if (prefix) {
@@ -31,15 +17,17 @@ const ParseStorageSettings = (settings) => {
31
17
  prefix = 'SPLITIO';
32
18
  }
33
19
 
34
- // In localhost mode we should force the user to use the MEMORY storage
35
- if (mode === LOCALHOST_MODE) return {
36
- type: STORAGE_MEMORY,
37
- prefix
38
- };
39
-
40
- // In other cases we can have MEMORY or REDIS
20
+ // We can have MEMORY, REDIS or an invalid storage type
41
21
  switch (type) {
42
22
  case STORAGE_REDIS: {
23
+ // If passing REDIS storage in localhost or standalone mode, we log an error and fallback to MEMORY storage
24
+ if (mode === STANDALONE_MODE || mode === LOCALHOST_MODE) {
25
+ log.error('The provided REDIS storage is invalid for this mode. It requires consumer mode. Fallbacking into default MEMORY storage.');
26
+ return {
27
+ type: STORAGE_MEMORY,
28
+ prefix
29
+ };
30
+ }
43
31
  let {
44
32
  host,
45
33
  port,
@@ -84,12 +72,14 @@ const ParseStorageSettings = (settings) => {
84
72
  // For now, we don't have modifiers or settings for MEMORY in NodeJS
85
73
  case STORAGE_MEMORY:
86
74
  default: {
75
+ // If passing MEMORY storage in consumer mode, throw an error (no way to fallback to REDIS storage)
76
+ if (mode === CONSUMER_MODE) throw new Error('A REDIS storage is required on consumer mode');
77
+ // If passing an invalid storage type, log an error
78
+ if (type !== STORAGE_MEMORY) log.error(`The provided '${type}' storage type is invalid. Fallbacking into default MEMORY storage.`);
87
79
  return {
88
80
  type: STORAGE_MEMORY,
89
81
  prefix
90
82
  };
91
83
  }
92
84
  }
93
- };
94
-
95
- export default ParseStorageSettings;
85
+ }
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;
@@ -0,0 +1,14 @@
1
+ // Declaration file for Javascript Split Software SDK
2
+ // Project: http://www.split.io/
3
+
4
+ /// <reference path="../splitio.d.ts" />
5
+ export = JsSdk;
6
+
7
+ declare module JsSdk {
8
+ /**
9
+ * Split.io sdk factory function.
10
+ * The settings parameter should be an object that complies with the SplitIO.IBrowserSettings.
11
+ * For more information read the corresponding article: @see {@link https://help.split.io/hc/en-us/articles/360020448791-JavaScript-SDK#configuration}
12
+ */
13
+ export function SplitFactory(settings: SplitIO.IBrowserSettings): SplitIO.IBrowserSDK;
14
+ }
@@ -0,0 +1,20 @@
1
+ // Declaration file for Javascript Split Software SDK
2
+ // Project: http://www.split.io/
3
+
4
+ /// <reference path="../splitio.d.ts" />
5
+ export = JsSdk;
6
+
7
+ declare module JsSdk {
8
+ /**
9
+ * Split.io sdk factory function.
10
+ * The settings parameter should be an object that complies with the SplitIO.INodeAsyncSettings.
11
+ * For more information read the corresponding article: @see {@link https://help.split.io/hc/en-us/articles/360020564931-Node-js-SDK#configuration}
12
+ */
13
+ export function SplitFactory(settings: SplitIO.INodeAsyncSettings): SplitIO.IAsyncSDK;
14
+ /**
15
+ * Split.io sdk factory function.
16
+ * The settings parameter should be an object that complies with the SplitIO.INodeSettings.
17
+ * For more information read the corresponding article: @see {@link https://help.split.io/hc/en-us/articles/360020564931-Node-js-SDK#configuration}
18
+ */
19
+ export function SplitFactory(settings: SplitIO.INodeSettings): SplitIO.ISDK;
20
+ }
@@ -1,4 +1,4 @@
1
- // Type definitions for Javascript and Node Split Software SDK v8.1.0
1
+ // Type definitions for Javascript and Node Split Software SDK
2
2
  // Project: http://www.split.io/
3
3
  // Definitions by: Nico Zelaya <https://github.com/NicoZelaya/>
4
4
 
@@ -336,7 +336,8 @@ interface INodeBasicSettings extends ISharedSettings {
336
336
  prefix?: string
337
337
  },
338
338
  /**
339
- * The SDK mode. Possible values are "standalone" (which is the default) and "consumer". For "localhost" mode, use "localhost" as authorizationKey.
339
+ * The SDK mode. Possible values are "standalone", which is the default when using a synchronous storage, like 'MEMORY' and 'LOCALSTORAGE',
340
+ * and "consumer", which must be set when using an asynchronous storage, like 'REDIS'. For "localhost" mode, use "localhost" as authorizationKey.
340
341
  * @property {SDKMode} mode
341
342
  * @default standalone
342
343
  */
@@ -1020,7 +1021,15 @@ declare namespace SplitIO {
1020
1021
  * @default SPLITIO
1021
1022
  */
1022
1023
  prefix?: string
1023
- }
1024
+ },
1025
+ /**
1026
+ * The SDK mode. When using the default 'MEMORY' storage, the only possible value is "standalone", which is the default.
1027
+ * For "localhost" mode, use "localhost" as authorizationKey.
1028
+ *
1029
+ * @property {'standalone'} mode
1030
+ * @default standalone
1031
+ */
1032
+ mode?: 'standalone'
1024
1033
  }
1025
1034
  /**
1026
1035
  * Settings interface with async storage for SDK instances created on NodeJS.
@@ -1032,7 +1041,7 @@ declare namespace SplitIO {
1032
1041
  interface INodeAsyncSettings extends INodeBasicSettings {
1033
1042
  storage: {
1034
1043
  /**
1035
- * Redis storage type to be instantiated by the SDK.
1044
+ * 'REDIS' storage type to be instantiated by the SDK.
1036
1045
  * @property {NodeAsyncStorage} type
1037
1046
  */
1038
1047
  type: NodeAsyncStorage,
@@ -1047,7 +1056,15 @@ declare namespace SplitIO {
1047
1056
  * @default SPLITIO
1048
1057
  */
1049
1058
  prefix?: string
1050
- }
1059
+ },
1060
+ /**
1061
+ * The SDK mode. When using 'REDIS' storage type, the only possible value is "consumer", which is required.
1062
+ *
1063
+ * @see {@link https://help.split.io/hc/en-us/articles/360020564931-Node-js-SDK#state-sharing-redis-integration}
1064
+ *
1065
+ * @property {'consumer'} mode
1066
+ */
1067
+ mode: 'consumer'
1051
1068
  }
1052
1069
  /**
1053
1070
  * This represents the interface for the SDK instance with synchronous storage.
@@ -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;