vwo-fme-node-sdk 1.0.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 (385) hide show
  1. package/CONTRIBUTING.md +46 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +18 -0
  4. package/README.md +52 -0
  5. package/dist/VWO.d.ts +9 -0
  6. package/dist/VWO.js +100 -0
  7. package/dist/VWO.js.map +1 -0
  8. package/dist/VWOBuilder.d.ts +48 -0
  9. package/dist/VWOBuilder.js +173 -0
  10. package/dist/VWOBuilder.js.map +1 -0
  11. package/dist/VWOClient.d.ts +20 -0
  12. package/dist/VWOClient.js +249 -0
  13. package/dist/VWOClient.js.map +1 -0
  14. package/dist/api/GetFlag.d.ts +19 -0
  15. package/dist/api/GetFlag.js +394 -0
  16. package/dist/api/GetFlag.js.map +1 -0
  17. package/dist/api/GetVariable.d.ts +0 -0
  18. package/dist/api/GetVariable.js +1 -0
  19. package/dist/api/GetVariable.js.map +1 -0
  20. package/dist/api/GetVariables.d.ts +0 -0
  21. package/dist/api/GetVariables.js +1 -0
  22. package/dist/api/GetVariables.js.map +1 -0
  23. package/dist/api/SetAttribute.d.ts +7 -0
  24. package/dist/api/SetAttribute.js +62 -0
  25. package/dist/api/SetAttribute.js.map +1 -0
  26. package/dist/api/Track.js +76 -0
  27. package/dist/api/Track.js.map +1 -0
  28. package/dist/api/TrackEvent.d.ts +8 -0
  29. package/dist/api/TrackEvent.js +78 -0
  30. package/dist/api/TrackEvent.js.map +1 -0
  31. package/dist/constants/index.d.ts +24 -0
  32. package/dist/constants/index.js +31 -0
  33. package/dist/constants/index.js.map +1 -0
  34. package/dist/constants/url.d.ts +6 -0
  35. package/dist/constants/url.js +10 -0
  36. package/dist/constants/url.js.map +1 -0
  37. package/dist/decision-maker/index.js +75 -0
  38. package/dist/decision-maker/index.js.map +1 -0
  39. package/dist/decorators/StorageDecorator.d.ts +12 -0
  40. package/dist/decorators/StorageDecorator.js +119 -0
  41. package/dist/decorators/StorageDecorator.js.map +1 -0
  42. package/dist/enums/ApiEnum.d.ts +4 -0
  43. package/dist/enums/ApiEnum.js +9 -0
  44. package/dist/enums/ApiEnum.js.map +1 -0
  45. package/dist/enums/EventEnum.d.ts +4 -0
  46. package/dist/enums/EventEnum.js +9 -0
  47. package/dist/enums/EventEnum.js.map +1 -0
  48. package/dist/enums/HeadersEnum.d.ts +4 -0
  49. package/dist/enums/HeadersEnum.js +9 -0
  50. package/dist/enums/HeadersEnum.js.map +1 -0
  51. package/dist/enums/HooksEnum.d.ts +7 -0
  52. package/dist/enums/HooksEnum.js +8 -0
  53. package/dist/enums/HooksEnum.js.map +1 -0
  54. package/dist/enums/LogLevelEnum.d.ts +7 -0
  55. package/dist/enums/LogLevelEnum.js +12 -0
  56. package/dist/enums/LogLevelEnum.js.map +1 -0
  57. package/dist/enums/StatusEnum.d.ts +4 -0
  58. package/dist/enums/StorageEnum.d.ts +8 -0
  59. package/dist/enums/StorageEnum.js +13 -0
  60. package/dist/enums/StorageEnum.js.map +1 -0
  61. package/dist/enums/UrlEnum.d.ts +13 -0
  62. package/dist/enums/UrlEnum.js +18 -0
  63. package/dist/enums/UrlEnum.js.map +1 -0
  64. package/dist/enums/campaignTypeEnum.d.ts +5 -0
  65. package/dist/enums/campaignTypeEnum.js +10 -0
  66. package/dist/enums/campaignTypeEnum.js.map +1 -0
  67. package/dist/enums/logMessages/DbugLogMessageEnum.js +1 -0
  68. package/dist/enums/logMessages/DbugLogMessageEnum.js.map +1 -0
  69. package/dist/enums/logMessages/DebugLogMessageEnum.d.ts +3 -0
  70. package/dist/enums/logMessages/ErorLogMessageEnum.js +1 -0
  71. package/dist/enums/logMessages/ErorLogMessageEnum.js.map +1 -0
  72. package/dist/enums/logMessages/ErrorLogMessageEnum.d.ts +3 -0
  73. package/dist/enums/logMessages/debugLogMessageEnum.js +8 -0
  74. package/dist/enums/logMessages/debugLogMessageEnum.js.map +1 -0
  75. package/dist/enums/logMessages/errorLogMessageEnum.js +8 -0
  76. package/dist/enums/logMessages/errorLogMessageEnum.js.map +1 -0
  77. package/dist/enums/statusEnum.js +9 -0
  78. package/dist/enums/statusEnum.js.map +1 -0
  79. package/dist/index.d.ts +1 -0
  80. package/dist/index.js +7 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/logger/core/logManager.js +97 -0
  83. package/dist/logger/core/logManager.js.map +1 -0
  84. package/dist/logger/core/transportManager.js +60 -0
  85. package/dist/logger/core/transportManager.js.map +1 -0
  86. package/dist/logger/enums/logLevelEnum.js +12 -0
  87. package/dist/logger/enums/logLevelEnum.js.map +1 -0
  88. package/dist/logger/index.js +8 -0
  89. package/dist/logger/index.js.map +1 -0
  90. package/dist/logger/logMessageBuilder.js +43 -0
  91. package/dist/logger/logMessageBuilder.js.map +1 -0
  92. package/dist/logger/logger.js +10 -0
  93. package/dist/logger/logger.js.map +1 -0
  94. package/dist/logger/transports/consoleTransport.js +32 -0
  95. package/dist/logger/transports/consoleTransport.js.map +1 -0
  96. package/dist/models/CampaignModel.d.ts +32 -0
  97. package/dist/models/CampaignModel.js +149 -0
  98. package/dist/models/CampaignModel.js.map +1 -0
  99. package/dist/models/FeatureModel.d.ts +20 -0
  100. package/dist/models/FeatureModel.js +72 -0
  101. package/dist/models/FeatureModel.js.map +1 -0
  102. package/dist/models/ImpactCampaignModel.d.ts +7 -0
  103. package/dist/models/ImpactCampaignModel.js +21 -0
  104. package/dist/models/ImpactCampaignModel.js.map +1 -0
  105. package/dist/models/MetricModel.d.ts +12 -0
  106. package/dist/models/MetricModel.js +25 -0
  107. package/dist/models/MetricModel.js.map +1 -0
  108. package/dist/models/RuleModel.d.ts +11 -0
  109. package/dist/models/RuleModel.js +29 -0
  110. package/dist/models/RuleModel.js.map +1 -0
  111. package/dist/models/SettingsModel.d.ts +28 -0
  112. package/dist/models/SettingsModel.js +70 -0
  113. package/dist/models/SettingsModel.js.map +1 -0
  114. package/dist/models/VariableModel.d.ts +18 -0
  115. package/dist/models/VariableModel.js +38 -0
  116. package/dist/models/VariableModel.js.map +1 -0
  117. package/dist/models/VariationModel.d.ts +29 -0
  118. package/dist/models/VariationModel.js +80 -0
  119. package/dist/models/VariationModel.js.map +1 -0
  120. package/dist/models/schemas/SettingsSchemaValidation.d.ts +13 -0
  121. package/dist/models/schemas/SettingsSchemaValidation.js +70 -0
  122. package/dist/models/schemas/SettingsSchemaValidation.js.map +1 -0
  123. package/dist/modules/decision-maker/index.d.ts +38 -0
  124. package/dist/modules/decision-maker/index.js +67 -0
  125. package/dist/modules/decision-maker/index.js.map +1 -0
  126. package/dist/modules/logger/core/logManager.d.ts +40 -0
  127. package/dist/modules/logger/core/logManager.js +97 -0
  128. package/dist/modules/logger/core/logManager.js.map +1 -0
  129. package/dist/modules/logger/core/transportManager.d.ts +22 -0
  130. package/dist/modules/logger/core/transportManager.js +60 -0
  131. package/dist/modules/logger/core/transportManager.js.map +1 -0
  132. package/dist/modules/logger/enums/logLevelEnum.d.ts +7 -0
  133. package/dist/modules/logger/enums/logLevelEnum.js +12 -0
  134. package/dist/modules/logger/enums/logLevelEnum.js.map +1 -0
  135. package/dist/modules/logger/index.d.ts +2 -0
  136. package/dist/modules/logger/index.js +8 -0
  137. package/dist/modules/logger/index.js.map +1 -0
  138. package/dist/modules/logger/logMessageBuilder.d.ts +21 -0
  139. package/dist/modules/logger/logMessageBuilder.js +43 -0
  140. package/dist/modules/logger/logMessageBuilder.js.map +1 -0
  141. package/dist/modules/logger/logger.d.ts +7 -0
  142. package/dist/modules/logger/logger.js +10 -0
  143. package/dist/modules/logger/logger.js.map +1 -0
  144. package/dist/modules/logger/transports/consoleTransport.d.ts +12 -0
  145. package/dist/modules/logger/transports/consoleTransport.js +32 -0
  146. package/dist/modules/logger/transports/consoleTransport.js.map +1 -0
  147. package/dist/modules/networking/client/networkClient.d.ts +7 -0
  148. package/dist/modules/networking/client/networkClient.js +117 -0
  149. package/dist/modules/networking/client/networkClient.js.map +1 -0
  150. package/dist/modules/networking/client/networkClientInterface.d.ts +6 -0
  151. package/dist/modules/networking/client/networkClientInterface.js +3 -0
  152. package/dist/modules/networking/client/networkClientInterface.js.map +1 -0
  153. package/dist/modules/networking/handlers/requestHandler.d.ts +5 -0
  154. package/dist/modules/networking/handlers/requestHandler.js +29 -0
  155. package/dist/modules/networking/handlers/requestHandler.js.map +1 -0
  156. package/dist/modules/networking/index.d.ts +6 -0
  157. package/dist/modules/networking/index.js +14 -0
  158. package/dist/modules/networking/index.js.map +1 -0
  159. package/dist/modules/networking/manager/networkManager.d.ts +16 -0
  160. package/dist/modules/networking/manager/networkManager.js +72 -0
  161. package/dist/modules/networking/manager/networkManager.js.map +1 -0
  162. package/dist/modules/networking/models/globalRequestModel.d.ts +22 -0
  163. package/dist/modules/networking/models/globalRequestModel.js +51 -0
  164. package/dist/modules/networking/models/globalRequestModel.js.map +1 -0
  165. package/dist/modules/networking/models/requestModel.d.ts +32 -0
  166. package/dist/modules/networking/models/requestModel.js +128 -0
  167. package/dist/modules/networking/models/requestModel.js.map +1 -0
  168. package/dist/modules/networking/models/responseModel.d.ts +15 -0
  169. package/dist/modules/networking/models/responseModel.js +34 -0
  170. package/dist/modules/networking/models/responseModel.js.map +1 -0
  171. package/dist/modules/segmentor/core/segmentationManger.d.ts +10 -0
  172. package/dist/modules/segmentor/core/segmentationManger.js +68 -0
  173. package/dist/modules/segmentor/core/segmentationManger.js.map +1 -0
  174. package/dist/modules/segmentor/enums/segmentOperandRegexEnum.d.ts +10 -0
  175. package/dist/modules/segmentor/enums/segmentOperandRegexEnum.js +15 -0
  176. package/dist/modules/segmentor/enums/segmentOperandRegexEnum.js.map +1 -0
  177. package/dist/modules/segmentor/enums/segmentOperandValueEnum.d.ts +8 -0
  178. package/dist/modules/segmentor/enums/segmentOperandValueEnum.js +13 -0
  179. package/dist/modules/segmentor/enums/segmentOperandValueEnum.js.map +1 -0
  180. package/dist/modules/segmentor/enums/segmentOperatorValueEnum.d.ts +15 -0
  181. package/dist/modules/segmentor/enums/segmentOperatorValueEnum.js +20 -0
  182. package/dist/modules/segmentor/enums/segmentOperatorValueEnum.js.map +1 -0
  183. package/dist/modules/segmentor/evaluators/segmentEvaluator.d.ts +15 -0
  184. package/dist/modules/segmentor/evaluators/segmentEvaluator.js +379 -0
  185. package/dist/modules/segmentor/evaluators/segmentEvaluator.js.map +1 -0
  186. package/dist/modules/segmentor/evaluators/segmentOperandEvaluator.d.ts +12 -0
  187. package/dist/modules/segmentor/evaluators/segmentOperandEvaluator.js +248 -0
  188. package/dist/modules/segmentor/evaluators/segmentOperandEvaluator.js.map +1 -0
  189. package/dist/modules/segmentor/index.d.ts +3 -0
  190. package/dist/modules/segmentor/index.js +8 -0
  191. package/dist/modules/segmentor/index.js.map +1 -0
  192. package/dist/modules/segmentor/segmentation.d.ts +5 -0
  193. package/dist/modules/segmentor/segmentation.js +3 -0
  194. package/dist/modules/segmentor/segmentation.js.map +1 -0
  195. package/dist/modules/segmentor/utils/SegmentUtil.d.ts +2 -0
  196. package/dist/modules/segmentor/utils/SegmentUtil.js +26 -0
  197. package/dist/modules/segmentor/utils/SegmentUtil.js.map +1 -0
  198. package/dist/modules/storage/connector.d.ts +14 -0
  199. package/dist/modules/storage/connector.js +10 -0
  200. package/dist/modules/storage/connector.js.map +1 -0
  201. package/dist/modules/storage/connectors/index.d.ts +0 -0
  202. package/dist/modules/storage/connectors/index.js +3 -0
  203. package/dist/modules/storage/connectors/index.js.map +1 -0
  204. package/dist/modules/storage/connectors/memoryConnector.d.ts +26 -0
  205. package/dist/modules/storage/connectors/memoryConnector.js +103 -0
  206. package/dist/modules/storage/connectors/memoryConnector.js.map +1 -0
  207. package/dist/modules/storage/connectors/redisConnector.d.ts +0 -0
  208. package/dist/modules/storage/connectors/redisConnector.js +181 -0
  209. package/dist/modules/storage/connectors/redisConnector.js.map +1 -0
  210. package/dist/modules/storage/index.d.ts +1 -0
  211. package/dist/modules/storage/index.js +6 -0
  212. package/dist/modules/storage/index.js.map +1 -0
  213. package/dist/modules/storage/storage.d.ts +10 -0
  214. package/dist/modules/storage/storage.js +50 -0
  215. package/dist/modules/storage/storage.js.map +1 -0
  216. package/dist/networking/client/networkClient.js +117 -0
  217. package/dist/networking/client/networkClient.js.map +1 -0
  218. package/dist/networking/client/networkClientInterface.js +3 -0
  219. package/dist/networking/client/networkClientInterface.js.map +1 -0
  220. package/dist/networking/handlers/requestHandler.js +29 -0
  221. package/dist/networking/handlers/requestHandler.js.map +1 -0
  222. package/dist/networking/index.js +14 -0
  223. package/dist/networking/index.js.map +1 -0
  224. package/dist/networking/manager/networkManager.js +72 -0
  225. package/dist/networking/manager/networkManager.js.map +1 -0
  226. package/dist/networking/models/globalRequestModel.js +51 -0
  227. package/dist/networking/models/globalRequestModel.js.map +1 -0
  228. package/dist/networking/models/requestModel.js +107 -0
  229. package/dist/networking/models/requestModel.js.map +1 -0
  230. package/dist/networking/models/responseModel.js +34 -0
  231. package/dist/networking/models/responseModel.js.map +1 -0
  232. package/dist/segmentor/core/segmentationManger.js +25 -0
  233. package/dist/segmentor/core/segmentationManger.js.map +1 -0
  234. package/dist/segmentor/enums/segmentOperandRegexEnum.js +15 -0
  235. package/dist/segmentor/enums/segmentOperandRegexEnum.js.map +1 -0
  236. package/dist/segmentor/enums/segmentOperandValueEnum.js +13 -0
  237. package/dist/segmentor/enums/segmentOperandValueEnum.js.map +1 -0
  238. package/dist/segmentor/enums/segmentOperatorValueEnum.js +12 -0
  239. package/dist/segmentor/enums/segmentOperatorValueEnum.js.map +1 -0
  240. package/dist/segmentor/evaluators/segmentEvaluator.js +52 -0
  241. package/dist/segmentor/evaluators/segmentEvaluator.js.map +1 -0
  242. package/dist/segmentor/evaluators/segmentOperandEvaluator.js +158 -0
  243. package/dist/segmentor/evaluators/segmentOperandEvaluator.js.map +1 -0
  244. package/dist/segmentor/index.js +8 -0
  245. package/dist/segmentor/index.js.map +1 -0
  246. package/dist/segmentor/segmentation.js +3 -0
  247. package/dist/segmentor/segmentation.js.map +1 -0
  248. package/dist/segmentor/utils/SegmentUtil.js +27 -0
  249. package/dist/segmentor/utils/SegmentUtil.js.map +1 -0
  250. package/dist/services/CampaignDecisionService.d.ts +44 -0
  251. package/dist/services/CampaignDecisionService.js +175 -0
  252. package/dist/services/CampaignDecisionService.js.map +1 -0
  253. package/dist/services/HooksManager.d.ts +27 -0
  254. package/dist/services/HooksManager.js +40 -0
  255. package/dist/services/HooksManager.js.map +1 -0
  256. package/dist/services/SettingsManager.d.ts +21 -0
  257. package/dist/services/SettingsManager.js +168 -0
  258. package/dist/services/SettingsManager.js.map +1 -0
  259. package/dist/services/StorageService.d.ts +5 -0
  260. package/dist/services/StorageService.js +94 -0
  261. package/dist/services/StorageService.js.map +1 -0
  262. package/dist/services/UrlService.d.ts +13 -0
  263. package/dist/services/UrlService.js +37 -0
  264. package/dist/services/UrlService.js.map +1 -0
  265. package/dist/types/common.d.ts +2 -0
  266. package/dist/types/common.js +3 -0
  267. package/dist/types/common.js.map +1 -0
  268. package/dist/utils/CampaignUtil.d.ts +23 -0
  269. package/dist/utils/CampaignUtil.js +228 -0
  270. package/dist/utils/CampaignUtil.js.map +1 -0
  271. package/dist/utils/DataTypeUtil.d.ts +17 -0
  272. package/dist/utils/DataTypeUtil.js +86 -0
  273. package/dist/utils/DataTypeUtil.js.map +1 -0
  274. package/dist/utils/DecisionUtil.d.ts +4 -0
  275. package/dist/utils/DecisionUtil.js +197 -0
  276. package/dist/utils/DecisionUtil.js.map +1 -0
  277. package/dist/utils/FunctionUtil.d.ts +13 -0
  278. package/dist/utils/FunctionUtil.js +121 -0
  279. package/dist/utils/FunctionUtil.js.map +1 -0
  280. package/dist/utils/LogMessageUtil.d.ts +16 -0
  281. package/dist/utils/LogMessageUtil.js +53 -0
  282. package/dist/utils/LogMessageUtil.js.map +1 -0
  283. package/dist/utils/MegUtil.d.ts +7 -0
  284. package/dist/utils/MegUtil.js +413 -0
  285. package/dist/utils/MegUtil.js.map +1 -0
  286. package/dist/utils/NetworkUtil.d.ts +140 -0
  287. package/dist/utils/NetworkUtil.js +238 -0
  288. package/dist/utils/NetworkUtil.js.map +1 -0
  289. package/dist/utils/PromiseUtil.d.ts +1 -0
  290. package/dist/utils/PromiseUtil.js +13 -0
  291. package/dist/utils/PromiseUtil.js.map +1 -0
  292. package/dist/utils/SettingsUtil.d.ts +2 -0
  293. package/dist/utils/SettingsUtil.js +17 -0
  294. package/dist/utils/SettingsUtil.js.map +1 -0
  295. package/dist/utils/UuidUtil.d.ts +2 -0
  296. package/dist/utils/UuidUtil.js +30 -0
  297. package/dist/utils/UuidUtil.js.map +1 -0
  298. package/dist/utils/WebServiceUtil.d.ts +4 -0
  299. package/dist/utils/WebServiceUtil.js +93 -0
  300. package/dist/utils/WebServiceUtil.js.map +1 -0
  301. package/dist/utils/logMessageBuilder.d.ts +21 -0
  302. package/dist/utils/logMessageBuilder.js +43 -0
  303. package/dist/utils/logMessageBuilder.js.map +1 -0
  304. package/lib/VWO.ts +55 -0
  305. package/lib/VWOBuilder.ts +237 -0
  306. package/lib/VWOClient.ts +321 -0
  307. package/lib/api/GetFlag.ts +458 -0
  308. package/lib/api/GetVariable.ts +0 -0
  309. package/lib/api/GetVariables.ts +0 -0
  310. package/lib/api/SetAttribute.ts +33 -0
  311. package/lib/api/TrackEvent.ts +52 -0
  312. package/lib/constants/index.ts +35 -0
  313. package/lib/constants/url.ts +7 -0
  314. package/lib/decorators/StorageDecorator.ts +98 -0
  315. package/lib/enums/ApiEnum.ts +4 -0
  316. package/lib/enums/EventEnum.ts +4 -0
  317. package/lib/enums/HeadersEnum.ts +4 -0
  318. package/lib/enums/HooksEnum.ts +11 -0
  319. package/lib/enums/LogLevelEnum.ts +7 -0
  320. package/lib/enums/StatusEnum.ts +4 -0
  321. package/lib/enums/StorageEnum.ts +8 -0
  322. package/lib/enums/UrlEnum.ts +13 -0
  323. package/lib/enums/campaignTypeEnum.ts +5 -0
  324. package/lib/enums/logMessages/DebugLogMessageEnum.ts +3 -0
  325. package/lib/enums/logMessages/ErrorLogMessageEnum.ts +3 -0
  326. package/lib/index.ts +1 -0
  327. package/lib/models/CampaignModel.ts +176 -0
  328. package/lib/models/FeatureModel.ts +81 -0
  329. package/lib/models/ImpactCampaignModel.ts +20 -0
  330. package/lib/models/MetricModel.ts +31 -0
  331. package/lib/models/RuleModel.ts +35 -0
  332. package/lib/models/SettingsModel.ts +95 -0
  333. package/lib/models/VariableModel.ts +51 -0
  334. package/lib/models/VariationModel.ts +101 -0
  335. package/lib/models/schemas/SettingsSchemaValidation.ts +83 -0
  336. package/lib/modules/decision-maker/index.ts +65 -0
  337. package/lib/modules/logger/core/logManager.ts +113 -0
  338. package/lib/modules/logger/core/transportManager.ts +76 -0
  339. package/lib/modules/logger/enums/logLevelEnum.ts +7 -0
  340. package/lib/modules/logger/index.ts +2 -0
  341. package/lib/modules/logger/logMessageBuilder.ts +60 -0
  342. package/lib/modules/logger/logger.ts +7 -0
  343. package/lib/modules/logger/transports/consoleTransport.ts +37 -0
  344. package/lib/modules/networking/client/networkClient.ts +128 -0
  345. package/lib/modules/networking/client/networkClientInterface.ts +8 -0
  346. package/lib/modules/networking/handlers/requestHandler.ts +28 -0
  347. package/lib/modules/networking/index.ts +6 -0
  348. package/lib/modules/networking/manager/networkManager.ts +77 -0
  349. package/lib/modules/networking/models/globalRequestModel.ts +69 -0
  350. package/lib/modules/networking/models/requestModel.ts +164 -0
  351. package/lib/modules/networking/models/responseModel.ts +40 -0
  352. package/lib/modules/segmentor/core/segmentationManger.ts +22 -0
  353. package/lib/modules/segmentor/enums/segmentOperandRegexEnum.ts +10 -0
  354. package/lib/modules/segmentor/enums/segmentOperandValueEnum.ts +8 -0
  355. package/lib/modules/segmentor/enums/segmentOperatorValueEnum.ts +15 -0
  356. package/lib/modules/segmentor/evaluators/segmentEvaluator.ts +239 -0
  357. package/lib/modules/segmentor/evaluators/segmentOperandEvaluator.ts +199 -0
  358. package/lib/modules/segmentor/index.ts +3 -0
  359. package/lib/modules/segmentor/segmentation.ts +6 -0
  360. package/lib/modules/segmentor/utils/SegmentUtil.ts +23 -0
  361. package/lib/modules/storage/connector.ts +25 -0
  362. package/lib/modules/storage/connectors/index.ts +2 -0
  363. package/lib/modules/storage/connectors/memoryConnector.ts +115 -0
  364. package/lib/modules/storage/connectors/redisConnector.ts +180 -0
  365. package/lib/modules/storage/index.ts +1 -0
  366. package/lib/modules/storage/storage.ts +48 -0
  367. package/lib/services/CampaignDecisionService.ts +160 -0
  368. package/lib/services/HooksManager.ts +50 -0
  369. package/lib/services/SettingsManager.ts +167 -0
  370. package/lib/services/StorageService.ts +53 -0
  371. package/lib/services/UrlService.ts +50 -0
  372. package/lib/types/common.ts +13 -0
  373. package/lib/utils/CampaignUtil.ts +236 -0
  374. package/lib/utils/DataTypeUtil.ts +87 -0
  375. package/lib/utils/DecisionUtil.ts +180 -0
  376. package/lib/utils/FunctionUtil.ts +105 -0
  377. package/lib/utils/LogMessageUtil.ts +52 -0
  378. package/lib/utils/MegUtil.ts +408 -0
  379. package/lib/utils/NetworkUtil.ts +262 -0
  380. package/lib/utils/PromiseUtil.ts +10 -0
  381. package/lib/utils/SettingsUtil.ts +18 -0
  382. package/lib/utils/UuidUtil.ts +33 -0
  383. package/lib/utils/WebServiceUtil.ts +60 -0
  384. package/lib/utils/logMessageBuilder.ts +60 -0
  385. package/package.json +70 -0
@@ -0,0 +1,4 @@
1
+ export enum EventEnum {
2
+ VWO_VARIATION_SHOWN = 'vwo_variationShown',
3
+ VWO_SYNC_VISITOR_PROP = 'vwo_syncVisitorProp',
4
+ }
@@ -0,0 +1,4 @@
1
+ export enum HeadersEnum {
2
+ USER_AGENT = 'X-Device-User-Agent',
3
+ IP = 'VWO-X-Forwarded-For',
4
+ }
@@ -0,0 +1,11 @@
1
+ enum DecisionTypes {
2
+ CAMPAIGN_DECISION = 'CAMPAIGN_DECISION',
3
+ }
4
+
5
+ interface HooksEnum {
6
+ DECISION_TYPES: typeof DecisionTypes;
7
+ }
8
+
9
+ const HooksEnum: HooksEnum = {
10
+ DECISION_TYPES: DecisionTypes,
11
+ };
@@ -0,0 +1,7 @@
1
+ export enum LogLevelEnum {
2
+ TRACE = 'trace',
3
+ DEBUG = 'debug',
4
+ INFO = 'info',
5
+ WARN = 'warn',
6
+ ERROR = 'error',
7
+ }
@@ -0,0 +1,4 @@
1
+ export enum StatusEnum {
2
+ PASSED = 'passed',
3
+ FAILED = 'failed',
4
+ }
@@ -0,0 +1,8 @@
1
+ export enum StorageEnum {
2
+ STORAGE_UNDEFINED,
3
+ INCORRECT_DATA,
4
+ NO_DATA_FOUND,
5
+ CAMPAIGN_PAUSED,
6
+ VARIATION_NOT_FOUND,
7
+ WHITELISTED_VARIATION,
8
+ }
@@ -0,0 +1,13 @@
1
+ export enum UrlEnum {
2
+ BASE_URL = 'dev.visualwebsiteoptimizer.com',
3
+ SETTINGS_URL = '/server-side/settings',
4
+ WEBHOOK_SETTINGS_URL = '/server-side/pull',
5
+ TRACK_USER = '/server-side/track-user',
6
+ TRACK_GOAL = '/server-side/track-goal',
7
+ PUSH = '/server-side/push',
8
+ BATCH_EVENTS = '/server-side/batch-events',
9
+ EVENTS = '/events/t',
10
+ ATTRIBUTE_CHECK = '/attributes/check',
11
+ LOCATION_CHECK = '/getLocation',
12
+ UAPARSER = '/server-side/ua-parser',
13
+ }
@@ -0,0 +1,5 @@
1
+ export enum CampaignTypeEnum {
2
+ ROLLOUT = 'FLAG_ROLLOUT',
3
+ AB = 'FLAG_TESTING',
4
+ PERSONALIZE = 'FLAG_PERSONALIZE',
5
+ }
@@ -0,0 +1,3 @@
1
+ export enum DebugLogMessageEnum {
2
+ API_CALLED = 'API - {apiName} called'
3
+ }
@@ -0,0 +1,3 @@
1
+ export enum ErrorLogMessageEnum {
2
+ API_THROW_ERROR = 'API - {apiName} failed to execute. Trace - {err}'
3
+ }
package/lib/index.ts ADDED
@@ -0,0 +1 @@
1
+ export { VWO, init } from './VWO';
@@ -0,0 +1,176 @@
1
+ import { VariationModel } from './VariationModel';
2
+ import { MetricModel } from './MetricModel';
3
+ import { VariableModel } from './VariableModel';
4
+ import { dynamic } from '../types/common';
5
+ import { RuleModel } from './RuleModel';
6
+
7
+ export class CampaignModel {
8
+ private id: number;
9
+ private segments: Record<string, dynamic>;
10
+ private percentTraffic: number;
11
+ private isUserListEnabled: boolean;
12
+ // private autoActivate: boolean;
13
+ // private autoTrack: boolean;
14
+ private key: string;
15
+ // private priority: number;
16
+ private type: string;
17
+ private name: string;
18
+ private isForcedVariationEnabled: boolean;
19
+ private variations: Array<VariationModel> = [];
20
+ private metrics: Array<MetricModel> = [];
21
+ private variables: Array<VariableModel> = [];
22
+ // private featureId: number;
23
+ // private featureKey: string;
24
+
25
+ copy(campaignModel: CampaignModel): void {
26
+ this.metrics = campaignModel.metrics;
27
+ this.variations = campaignModel.variations;
28
+ this.variables = campaignModel.variables;
29
+ this.processCampaignKeys(campaignModel);
30
+ }
31
+
32
+ modelFromDictionary(campaign: CampaignModel): this {
33
+ this.processCampaignProperties(campaign);
34
+ this.processCampaignKeys(campaign);
35
+ return this;
36
+ }
37
+
38
+ processCampaignProperties(campaign: CampaignModel): void {
39
+ if (campaign.variables) {
40
+ // campaign.var ||
41
+ if (
42
+ // (campaign.var && campaign.var.constructor === {}.constructor) ||
43
+ campaign.variables.constructor === {}.constructor
44
+ ) {
45
+ this.variables = [];
46
+ } else {
47
+ const variableList: Array<VariableModel> = campaign.variables; // campaign.var ||
48
+ variableList.forEach((variable: any) => {
49
+ this.variables.push(new VariableModel().modelFromDictionary(variable));
50
+ });
51
+ }
52
+ }
53
+
54
+ if (campaign.variations) {
55
+ // campaign.v ||
56
+ if (
57
+ // (campaign.v && campaign.v.constructor === {}.constructor) ||
58
+ campaign.variations.constructor === {}.constructor
59
+ ) {
60
+ this.variations = [];
61
+ } else {
62
+ const variationList: Array<VariationModel> = campaign.variations; // campaign.v ||
63
+ variationList.forEach((variation: any) => {
64
+ this.variations.push(new VariationModel().modelFromDictionary(variation));
65
+ });
66
+ }
67
+ }
68
+
69
+ if (campaign.metrics) {
70
+ // campaign.m ||
71
+ if (campaign.metrics && campaign.metrics.constructor === {}.constructor) {
72
+ this.metrics = [];
73
+ } else {
74
+ const metricsList: Array<MetricModel> = campaign.metrics || [];
75
+ metricsList.forEach((metric: any) => {
76
+ this.metrics.push(new MetricModel().modelFromDictionary(metric));
77
+ });
78
+ }
79
+ }
80
+ }
81
+
82
+ processCampaignKeys(campaign: CampaignModel): void {
83
+ this.id = campaign.id;
84
+ this.percentTraffic = campaign.percentTraffic; // campaign.pT ||
85
+ this.name = campaign.name; // campaign.n ||
86
+ // this.autoActivate =
87
+ // campaign.autoActivate !== undefined
88
+ // ? campaign.autoActivate
89
+ // : campaign.iMAE
90
+ // ? !campaign.iMAE
91
+ // : !campaign.isManualActivationEnabled;
92
+ // this.autoTrack =
93
+ // campaign.autoTrack !== undefined
94
+ // ? campaign.autoTrack
95
+ // : campaign.iMTRE
96
+ // ? !campaign.iMTRE
97
+ // : !campaign.isManualTrackingEnabled;
98
+ this.isForcedVariationEnabled = campaign.isForcedVariationEnabled; // campaign.iFVE ||
99
+ this.isUserListEnabled = campaign.isUserListEnabled; // campaign.iULE ||
100
+ this.segments = campaign.segments;
101
+ this.key = campaign.key; // campaign.k ||
102
+ // this.priority = campaign.pr || campaign.priority;
103
+ this.type = campaign.type; // campaign.t ||
104
+ // this.featureId = campaign.featureId;
105
+ // this.featureKey = campaign.featureKey;
106
+ }
107
+
108
+ // setFeatureDetails(featuerId: number, featureKey: string): void {
109
+ // this.featureId = featuerId;
110
+ // this.featureKey = featureKey;
111
+ // }
112
+
113
+ // getFeatureId(): number {
114
+ // return this.featureId;
115
+ // }
116
+
117
+ // getFeatureKey(): string {
118
+ // return this.featureKey;
119
+ // }
120
+
121
+ getId(): number {
122
+ return this.id;
123
+ }
124
+
125
+ getName(): string {
126
+ return this.name;
127
+ }
128
+
129
+ getSegments(): Record<string, dynamic> {
130
+ return this.segments;
131
+ }
132
+
133
+ getTraffic(): number {
134
+ return this.percentTraffic;
135
+ }
136
+
137
+ getType(): string {
138
+ return this.type;
139
+ }
140
+
141
+ getIsForcedVariationEnabled(): boolean {
142
+ return this.isForcedVariationEnabled;
143
+ }
144
+
145
+ getIsUserListEnabled(): boolean {
146
+ return this.isUserListEnabled;
147
+ }
148
+
149
+ // getAutoTrack(): boolean {
150
+ // return this.autoTrack;
151
+ // }
152
+
153
+ // getAutoActivate(): boolean {
154
+ // return this.autoActivate;
155
+ // }
156
+
157
+ getKey(): string {
158
+ return this.key;
159
+ }
160
+
161
+ getMetrics(): Array<MetricModel> {
162
+ return this.metrics;
163
+ }
164
+
165
+ getVariations(): Array<VariationModel> {
166
+ return this.variations;
167
+ }
168
+
169
+ getVariables(): Array<VariableModel> {
170
+ return this.variables;
171
+ }
172
+
173
+ // getPriority(): number {
174
+ // return this.priority;
175
+ // }
176
+ }
@@ -0,0 +1,81 @@
1
+ import { VariableModel } from './VariableModel';
2
+ import { VariationModel } from './VariationModel';
3
+ import { MetricModel } from './MetricModel';
4
+ import { CampaignModel } from './CampaignModel';
5
+ import { RuleModel } from './RuleModel';
6
+ import { ImpactCapmaignModel } from './ImpactCampaignModel';
7
+
8
+ export class FeatureModel {
9
+ private m: Array<MetricModel> = [];
10
+ private metrics: Array<MetricModel> = [];
11
+
12
+ private id: number;
13
+ private key: string;
14
+ private name: string;
15
+ private type: string;
16
+ private rules: Array<RuleModel> = [];
17
+ private impactCampaign: ImpactCapmaignModel = null;
18
+
19
+ private rulesLinkedCampaign: Array<CampaignModel> = [];
20
+
21
+ modelFromDictionary(feature: FeatureModel): this {
22
+ this.id = feature.id;
23
+ this.key = feature.key;
24
+ this.name = feature.name;
25
+ this.type = feature.type;
26
+ if (feature.impactCampaign) {
27
+ this.impactCampaign = new ImpactCapmaignModel().modelFromDictionary(feature.impactCampaign);
28
+ }
29
+
30
+ if ((feature.m && feature.m.constructor === {}.constructor) || feature.metrics.constructor === {}.constructor) {
31
+ this.metrics = [];
32
+ } else {
33
+ const metricList: Array<MetricModel> = feature.m || feature.metrics;
34
+ metricList.forEach((metric) => {
35
+ this.metrics.push(new MetricModel().modelFromDictionary(metric));
36
+ });
37
+ }
38
+
39
+ if (feature.rules.constructor === {}.constructor) {
40
+ this.rules = [];
41
+ } else {
42
+ const ruleList: Array<RuleModel> = feature.rules;
43
+ ruleList.forEach((rule) => {
44
+ this.rules.push(new RuleModel().modelFromDictionary(rule));
45
+ });
46
+ }
47
+
48
+ if (feature.rulesLinkedCampaign && feature.rulesLinkedCampaign.constructor !== {}.constructor) {
49
+ const linkedCampaignList: Array<CampaignModel> = feature.rulesLinkedCampaign;
50
+ linkedCampaignList.forEach((linkedCampaign) => {
51
+ this.rulesLinkedCampaign.push(new CampaignModel().modelFromDictionary(linkedCampaign));
52
+ });
53
+ }
54
+
55
+ return this;
56
+ }
57
+
58
+ getName(): string {
59
+ return this.name;
60
+ }
61
+
62
+ getType(): string {
63
+ return this.type;
64
+ }
65
+
66
+ getId(): number {
67
+ return this.id;
68
+ }
69
+
70
+ getKey(): string {
71
+ return this.key;
72
+ }
73
+
74
+ getRules(): Array<RuleModel> {
75
+ return this.rules;
76
+ }
77
+
78
+ getImpactCampaign(): ImpactCapmaignModel {
79
+ return this.impactCampaign;
80
+ }
81
+ }
@@ -0,0 +1,20 @@
1
+ import { dynamic } from '../types/common';
2
+
3
+ export class ImpactCapmaignModel {
4
+ private campaignId: number;
5
+ private type: string;
6
+
7
+ modelFromDictionary(impactCampaign: ImpactCapmaignModel): this {
8
+ this.type = impactCampaign.type;
9
+ this.campaignId = impactCampaign.campaignId;
10
+ return this;
11
+ }
12
+
13
+ getCampaignId(): number {
14
+ return this.campaignId;
15
+ }
16
+
17
+ getType(): string {
18
+ return this.type;
19
+ }
20
+ }
@@ -0,0 +1,31 @@
1
+ import { dynamic } from '../types/common';
2
+
3
+ export class MetricModel {
4
+ private key: string;
5
+ private identifier: string;
6
+
7
+ private i: number;
8
+ private id: number;
9
+
10
+ private t: string;
11
+ private type: string;
12
+
13
+ modelFromDictionary(metric: MetricModel): this {
14
+ this.identifier = metric.identifier || metric.key;
15
+ this.id = metric.i || metric.id;
16
+ this.type = metric.t || metric.type;
17
+ return this;
18
+ }
19
+
20
+ getId(): number {
21
+ return this.id;
22
+ }
23
+
24
+ getIdentifier(): string {
25
+ return this.identifier;
26
+ }
27
+
28
+ getType(): string {
29
+ return this.type;
30
+ }
31
+ }
@@ -0,0 +1,35 @@
1
+ import { dynamic } from '../types/common';
2
+
3
+ export class RuleModel {
4
+ private status: boolean;
5
+
6
+ private variationId: number;
7
+
8
+ private campaignId: number;
9
+
10
+ private type: string;
11
+
12
+ modelFromDictionary(rule: RuleModel): this {
13
+ this.type = rule.type;
14
+ this.status = rule.status;
15
+ this.variationId = rule.variationId;
16
+ this.campaignId = rule.campaignId;
17
+ return this;
18
+ }
19
+
20
+ getCampaignId(): number {
21
+ return this.campaignId;
22
+ }
23
+
24
+ getVariationId(): number {
25
+ return this.variationId;
26
+ }
27
+
28
+ getStatus(): boolean {
29
+ return this.status;
30
+ }
31
+
32
+ getType(): string {
33
+ return this.type;
34
+ }
35
+ }
@@ -0,0 +1,95 @@
1
+ import { FeatureModel } from './FeatureModel';
2
+ import { CampaignModel } from './CampaignModel';
3
+ import { dynamic } from '../types/common';
4
+
5
+ export class SettingsModel {
6
+ private sK: string;
7
+ private sdkKey: string;
8
+
9
+ private f: Array<FeatureModel> = [];
10
+ private features: Array<FeatureModel> = [];
11
+
12
+ private c: Array<CampaignModel> = [];
13
+ private campaigns: Array<CampaignModel> = [];
14
+
15
+ private campaignGroups: Record<string, number> = {};
16
+ private cG: Record<string, number> = {};
17
+
18
+ private groups: Record<string, any> = {};
19
+ private g: Record<string, any> = {};
20
+
21
+ private a: string;
22
+ private accountId: string;
23
+
24
+ private v: number;
25
+ private version: number;
26
+ private collectionPrefix: string;
27
+
28
+ constructor(settings: SettingsModel) {
29
+ this.sdkKey = settings.sK || settings.sdkKey;
30
+ this.accountId = settings.a || settings.accountId;
31
+ this.version = settings.v || settings.version;
32
+ this.collectionPrefix = settings.collectionPrefix;
33
+
34
+ if (
35
+ (settings.f && settings.f.constructor !== {}.constructor) ||
36
+ (settings.features && settings.features.constructor !== {}.constructor)
37
+ ) {
38
+ const featureList: Array<FeatureModel> = settings.f || settings.features;
39
+ featureList.forEach((feature) => {
40
+ this.features.push(new FeatureModel().modelFromDictionary(feature));
41
+ });
42
+ }
43
+
44
+ if (
45
+ (settings.c && settings.c.constructor !== {}.constructor) ||
46
+ (settings.campaigns && settings.campaigns.constructor !== {}.constructor)
47
+ ) {
48
+ const campaignList: Array<CampaignModel> = settings.c || settings.campaigns;
49
+ campaignList.forEach((campaign) => {
50
+ this.campaigns.push(new CampaignModel().modelFromDictionary(campaign));
51
+ });
52
+ }
53
+
54
+ if (settings.cG || settings.campaignGroups) {
55
+ this.campaignGroups = settings.cG || settings.campaignGroups;
56
+ }
57
+
58
+ if (settings.g || settings.groups) {
59
+ this.groups = settings.g || settings.groups;
60
+ }
61
+
62
+ return this;
63
+ }
64
+ getFeatures(): Array<FeatureModel> {
65
+ return this.features;
66
+ }
67
+
68
+ getCampaigns(): Array<CampaignModel> {
69
+ return this.campaigns;
70
+ }
71
+
72
+ getSdkkey(): string {
73
+ return this.sdkKey;
74
+ }
75
+
76
+ getAccountId(): string {
77
+ return this.accountId;
78
+ }
79
+
80
+ getVersion(): number {
81
+ return this.version;
82
+ }
83
+
84
+ getCollectionPrefix(): string {
85
+ return this.collectionPrefix;
86
+ }
87
+
88
+ getCampaignGroups(): Record<string, number> {
89
+ return this.campaignGroups;
90
+ }
91
+
92
+ getGroups(): Record<string, any> {
93
+ return this.groups;
94
+ }
95
+ }
@@ -0,0 +1,51 @@
1
+ import { dynamic } from '../types/common';
2
+
3
+ export class VariableModel {
4
+ private val: dynamic;
5
+ private value: dynamic;
6
+
7
+ private type: string;
8
+
9
+ private k: string;
10
+ private key: string;
11
+
12
+ private i: number;
13
+ private id: number;
14
+
15
+ modelFromDictionary(variable: VariableModel): this {
16
+ this.value = variable.val || variable.value;
17
+ this.type = variable.type;
18
+ this.key = variable.k || variable.key;
19
+ this.id = variable.i || variable.id;
20
+
21
+ return this;
22
+ }
23
+
24
+ setValue(value: dynamic): void {
25
+ this.value = value;
26
+ }
27
+
28
+ setKey(key: string): void {
29
+ this.key = key;
30
+ }
31
+
32
+ setType(type: string): void {
33
+ this.type = type;
34
+ }
35
+
36
+ getId(): number {
37
+ return this.id;
38
+ }
39
+
40
+ getValue(): dynamic {
41
+ return this.value;
42
+ }
43
+
44
+ getType(): string {
45
+ return this.type;
46
+ }
47
+
48
+ getKey(): string {
49
+ return this.key;
50
+ }
51
+ }
@@ -0,0 +1,101 @@
1
+ import { dynamic } from '../types/common';
2
+ import { VariableModel } from './VariableModel';
3
+
4
+ export class VariationModel {
5
+ private i: number;
6
+ private id: number;
7
+
8
+ private n: string;
9
+ private key: string;
10
+ private name: string;
11
+
12
+ private w: number;
13
+ private weight: number;
14
+
15
+ private startRangeVariation: number;
16
+ private endRangeVariation: number;
17
+ private variables: Array<VariableModel> = [];
18
+ private variations: Array<VariationModel> = [];
19
+
20
+ private seg: Record<string, dynamic>;
21
+ private segments: Record<string, dynamic>;
22
+
23
+ modelFromDictionary(variation: VariationModel): this {
24
+ this.id = variation.i || variation.id;
25
+ this.key = variation.n || variation.key || variation.name;
26
+ this.weight = variation.w || variation.weight;
27
+ this.setStartRange(variation.startRangeVariation);
28
+ this.setEndRange(variation.endRangeVariation);
29
+ if (variation.seg || variation.segments) {
30
+ this.segments = variation.seg || variation.segments;
31
+ }
32
+
33
+ if (variation.variables) {
34
+ if (variation.variables.constructor === {}.constructor) {
35
+ this.variables = [];
36
+ } else {
37
+ const variableList: Array<VariableModel> = variation.variables;
38
+ variableList.forEach((variable) => {
39
+ this.variables.push(new VariableModel().modelFromDictionary(variable));
40
+ });
41
+ }
42
+ }
43
+
44
+ if (variation.variations) {
45
+ if (variation.variations.constructor === {}.constructor) {
46
+ this.variations = [];
47
+ } else {
48
+ const variationList: Array<VariationModel> = variation.variations;
49
+ variationList.forEach((variation: any) => {
50
+ this.variations.push(new VariationModel().modelFromDictionary(variation));
51
+ });
52
+ }
53
+ }
54
+
55
+ return this;
56
+ }
57
+
58
+ setStartRange(startRange: number): void {
59
+ this.startRangeVariation = startRange;
60
+ }
61
+
62
+ setEndRange(endRange: number): void {
63
+ this.endRangeVariation = endRange;
64
+ }
65
+
66
+ setWeight(weight: number): void {
67
+ this.weight = weight;
68
+ }
69
+
70
+ getId(): number {
71
+ return this.id;
72
+ }
73
+
74
+ getKey(): string {
75
+ return this.key;
76
+ }
77
+
78
+ getWeight(): number {
79
+ return this.weight;
80
+ }
81
+
82
+ getSegments(): Record<string, dynamic> {
83
+ return this.segments;
84
+ }
85
+
86
+ getStartRangeVariation(): number {
87
+ return this.startRangeVariation;
88
+ }
89
+
90
+ getEndRangeVariation(): number {
91
+ return this.endRangeVariation;
92
+ }
93
+
94
+ getVariables(): Array<VariableModel> {
95
+ return this.variables;
96
+ }
97
+
98
+ getVariations(): Array<VariationModel> {
99
+ return this.variations;
100
+ }
101
+ }