@featbit/js-client-sdk 2.0.2 → 3.0.1

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 (574) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +160 -152
  3. package/dist/esm/Configuration.d.ts +35 -0
  4. package/dist/esm/Configuration.d.ts.map +1 -0
  5. package/dist/esm/Configuration.js +179 -0
  6. package/dist/esm/Configuration.js.map +1 -0
  7. package/dist/esm/Context.d.ts +23 -0
  8. package/dist/esm/Context.d.ts.map +1 -0
  9. package/dist/esm/Context.js +49 -0
  10. package/dist/esm/Context.js.map +1 -0
  11. package/dist/esm/FbClientBuilder.d.ts +90 -0
  12. package/dist/esm/FbClientBuilder.d.ts.map +1 -0
  13. package/dist/esm/FbClientBuilder.js +133 -0
  14. package/dist/esm/FbClientBuilder.js.map +1 -0
  15. package/dist/esm/FbClientCore.d.ts +57 -0
  16. package/dist/esm/FbClientCore.d.ts.map +1 -0
  17. package/dist/esm/FbClientCore.js +283 -0
  18. package/dist/esm/FbClientCore.js.map +1 -0
  19. package/dist/esm/IContextProperty.d.ts +5 -0
  20. package/dist/esm/IContextProperty.d.ts.map +1 -0
  21. package/dist/esm/IContextProperty.js +3 -0
  22. package/dist/esm/IContextProperty.js.map +1 -0
  23. package/dist/esm/IDataKind.d.ts +12 -0
  24. package/dist/esm/IDataKind.d.ts.map +1 -0
  25. package/dist/esm/IDataKind.js +3 -0
  26. package/dist/esm/IDataKind.js.map +1 -0
  27. package/dist/esm/IFbClient.d.ts +30 -0
  28. package/dist/esm/IFbClient.d.ts.map +1 -0
  29. package/dist/esm/IFbClient.js +3 -0
  30. package/dist/esm/IFbClient.js.map +1 -0
  31. package/dist/esm/IFbClientCore.d.ts +240 -0
  32. package/dist/esm/IFbClientCore.d.ts.map +1 -0
  33. package/dist/esm/IFbClientCore.js +3 -0
  34. package/dist/esm/IFbClientCore.js.map +1 -0
  35. package/dist/esm/IVersionedData.d.ts +18 -0
  36. package/dist/esm/IVersionedData.d.ts.map +1 -0
  37. package/dist/esm/IVersionedData.js +3 -0
  38. package/dist/esm/IVersionedData.js.map +1 -0
  39. package/dist/esm/bootstrap/IBootstrapProvider.d.ts +5 -0
  40. package/dist/esm/bootstrap/IBootstrapProvider.d.ts.map +1 -0
  41. package/dist/esm/bootstrap/IBootstrapProvider.js +3 -0
  42. package/dist/esm/bootstrap/IBootstrapProvider.js.map +1 -0
  43. package/dist/esm/bootstrap/JsonBootstrapProvider.d.ts +9 -0
  44. package/dist/esm/bootstrap/JsonBootstrapProvider.d.ts.map +1 -0
  45. package/dist/esm/bootstrap/JsonBootstrapProvider.js +29 -0
  46. package/dist/esm/bootstrap/JsonBootstrapProvider.js.map +1 -0
  47. package/dist/esm/bootstrap/NullBootstrapProvider.d.ts +8 -0
  48. package/dist/esm/bootstrap/NullBootstrapProvider.d.ts.map +1 -0
  49. package/dist/esm/bootstrap/NullBootstrapProvider.js +19 -0
  50. package/dist/esm/bootstrap/NullBootstrapProvider.js.map +1 -0
  51. package/dist/esm/bootstrap/index.d.ts +4 -0
  52. package/dist/esm/bootstrap/index.d.ts.map +1 -0
  53. package/dist/esm/bootstrap/index.js +20 -0
  54. package/dist/esm/bootstrap/index.js.map +1 -0
  55. package/dist/esm/constants.d.ts +3 -0
  56. package/dist/esm/constants.d.ts.map +1 -0
  57. package/dist/esm/constants.js +6 -0
  58. package/dist/esm/constants.js.map +1 -0
  59. package/dist/esm/data-sources/DataSourceUpdates.d.ts +17 -0
  60. package/dist/esm/data-sources/DataSourceUpdates.d.ts.map +1 -0
  61. package/dist/esm/data-sources/DataSourceUpdates.js +89 -0
  62. package/dist/esm/data-sources/DataSourceUpdates.js.map +1 -0
  63. package/dist/esm/data-sources/createStreamListeners.d.ts +19 -0
  64. package/dist/esm/data-sources/createStreamListeners.d.ts.map +1 -0
  65. package/dist/esm/data-sources/createStreamListeners.js +49 -0
  66. package/dist/esm/data-sources/createStreamListeners.js.map +1 -0
  67. package/dist/esm/data-sources/index.d.ts +3 -0
  68. package/dist/esm/data-sources/index.d.ts.map +1 -0
  69. package/dist/esm/data-sources/index.js +19 -0
  70. package/dist/esm/data-sources/index.js.map +1 -0
  71. package/dist/esm/data-sync/DataSyncMode.d.ts +5 -0
  72. package/dist/esm/data-sync/DataSyncMode.d.ts.map +1 -0
  73. package/dist/esm/data-sync/DataSyncMode.js +9 -0
  74. package/dist/esm/data-sync/DataSyncMode.js.map +1 -0
  75. package/dist/esm/data-sync/IDataSynchronizer.d.ts +15 -0
  76. package/dist/esm/data-sync/IDataSynchronizer.d.ts.map +1 -0
  77. package/dist/esm/data-sync/IDataSynchronizer.js +3 -0
  78. package/dist/esm/data-sync/IDataSynchronizer.js.map +1 -0
  79. package/dist/esm/data-sync/IRequestor.d.ts +11 -0
  80. package/dist/esm/data-sync/IRequestor.d.ts.map +1 -0
  81. package/dist/esm/data-sync/IRequestor.js +3 -0
  82. package/dist/esm/data-sync/IRequestor.js.map +1 -0
  83. package/dist/esm/data-sync/NullDataSynchronizer.d.ts +8 -0
  84. package/dist/esm/data-sync/NullDataSynchronizer.d.ts.map +1 -0
  85. package/dist/esm/data-sync/NullDataSynchronizer.js +15 -0
  86. package/dist/esm/data-sync/NullDataSynchronizer.js.map +1 -0
  87. package/dist/esm/data-sync/PollingDataSynchronizer.d.ts +23 -0
  88. package/dist/esm/data-sync/PollingDataSynchronizer.d.ts.map +1 -0
  89. package/dist/esm/data-sync/PollingDataSynchronizer.js +87 -0
  90. package/dist/esm/data-sync/PollingDataSynchronizer.js.map +1 -0
  91. package/dist/esm/data-sync/Requestor.d.ts +20 -0
  92. package/dist/esm/data-sync/Requestor.d.ts.map +1 -0
  93. package/dist/esm/data-sync/Requestor.js +56 -0
  94. package/dist/esm/data-sync/Requestor.js.map +1 -0
  95. package/dist/esm/data-sync/WebSocketDataSynchronizer.d.ts +20 -0
  96. package/dist/esm/data-sync/WebSocketDataSynchronizer.d.ts.map +1 -0
  97. package/dist/esm/data-sync/WebSocketDataSynchronizer.js +55 -0
  98. package/dist/esm/data-sync/WebSocketDataSynchronizer.js.map +1 -0
  99. package/dist/esm/data-sync/index.d.ts +10 -0
  100. package/dist/esm/data-sync/index.d.ts.map +1 -0
  101. package/dist/esm/data-sync/index.js +26 -0
  102. package/dist/esm/data-sync/index.js.map +1 -0
  103. package/dist/esm/data-sync/types.d.ts +17 -0
  104. package/dist/esm/data-sync/types.d.ts.map +1 -0
  105. package/dist/esm/data-sync/types.js +9 -0
  106. package/dist/esm/data-sync/types.js.map +1 -0
  107. package/dist/esm/data-sync/utils.d.ts +3 -0
  108. package/dist/esm/data-sync/utils.d.ts.map +1 -0
  109. package/dist/esm/data-sync/utils.js +33 -0
  110. package/dist/esm/data-sync/utils.js.map +1 -0
  111. package/dist/esm/errors.d.ts +16 -0
  112. package/dist/esm/errors.d.ts.map +1 -0
  113. package/dist/esm/errors.js +41 -0
  114. package/dist/esm/errors.js.map +1 -0
  115. package/dist/esm/evaluation/EvalResult.d.ts +20 -0
  116. package/dist/esm/evaluation/EvalResult.d.ts.map +1 -0
  117. package/dist/esm/evaluation/EvalResult.js +33 -0
  118. package/dist/esm/evaluation/EvalResult.js.map +1 -0
  119. package/dist/esm/evaluation/Evaluator.d.ts +15 -0
  120. package/dist/esm/evaluation/Evaluator.d.ts.map +1 -0
  121. package/dist/esm/evaluation/Evaluator.js +28 -0
  122. package/dist/esm/evaluation/Evaluator.js.map +1 -0
  123. package/dist/esm/evaluation/IEvalDetail.d.ts +21 -0
  124. package/dist/esm/evaluation/IEvalDetail.d.ts.map +1 -0
  125. package/dist/esm/evaluation/IEvalDetail.js +3 -0
  126. package/dist/esm/evaluation/IEvalDetail.js.map +1 -0
  127. package/dist/esm/evaluation/ReasonKinds.d.ts +11 -0
  128. package/dist/esm/evaluation/ReasonKinds.d.ts.map +1 -0
  129. package/dist/esm/evaluation/ReasonKinds.js +15 -0
  130. package/dist/esm/evaluation/ReasonKinds.js.map +1 -0
  131. package/dist/esm/evaluation/data/IFlag.d.ts +26 -0
  132. package/dist/esm/evaluation/data/IFlag.d.ts.map +1 -0
  133. package/dist/esm/evaluation/data/IFlag.js +12 -0
  134. package/dist/esm/evaluation/data/IFlag.js.map +1 -0
  135. package/dist/esm/evaluation/data/index.d.ts +2 -0
  136. package/dist/esm/evaluation/data/index.d.ts.map +1 -0
  137. package/dist/esm/evaluation/data/index.js +18 -0
  138. package/dist/esm/evaluation/data/index.js.map +1 -0
  139. package/dist/esm/evaluation/index.d.ts +6 -0
  140. package/dist/esm/evaluation/index.d.ts.map +1 -0
  141. package/dist/esm/evaluation/index.js +22 -0
  142. package/dist/esm/evaluation/index.js.map +1 -0
  143. package/dist/esm/events/DefaultEventProcessor.d.ts +16 -0
  144. package/dist/esm/events/DefaultEventProcessor.d.ts.map +1 -0
  145. package/dist/esm/events/DefaultEventProcessor.js +79 -0
  146. package/dist/esm/events/DefaultEventProcessor.js.map +1 -0
  147. package/dist/esm/events/DefaultEventQueue.d.ts +18 -0
  148. package/dist/esm/events/DefaultEventQueue.d.ts.map +1 -0
  149. package/dist/esm/events/DefaultEventQueue.js +42 -0
  150. package/dist/esm/events/DefaultEventQueue.js.map +1 -0
  151. package/dist/esm/events/DefaultEventSender.d.ts +10 -0
  152. package/dist/esm/events/DefaultEventSender.d.ts.map +1 -0
  153. package/dist/esm/events/DefaultEventSender.js +67 -0
  154. package/dist/esm/events/DefaultEventSender.js.map +1 -0
  155. package/dist/esm/events/DefaultEventSerializer.d.ts +6 -0
  156. package/dist/esm/events/DefaultEventSerializer.d.ts.map +1 -0
  157. package/dist/esm/events/DefaultEventSerializer.js +14 -0
  158. package/dist/esm/events/DefaultEventSerializer.js.map +1 -0
  159. package/dist/esm/events/EventDispatcher.d.ts +17 -0
  160. package/dist/esm/events/EventDispatcher.d.ts.map +1 -0
  161. package/dist/esm/events/EventDispatcher.js +127 -0
  162. package/dist/esm/events/EventDispatcher.js.map +1 -0
  163. package/dist/esm/events/EventSerializer.d.ts +5 -0
  164. package/dist/esm/events/EventSerializer.d.ts.map +1 -0
  165. package/dist/esm/events/EventSerializer.js +3 -0
  166. package/dist/esm/events/EventSerializer.js.map +1 -0
  167. package/dist/esm/events/IEventProcessor.d.ts +7 -0
  168. package/dist/esm/events/IEventProcessor.d.ts.map +1 -0
  169. package/dist/esm/events/IEventProcessor.js +3 -0
  170. package/dist/esm/events/IEventProcessor.js.map +1 -0
  171. package/dist/esm/events/IEventQueue.d.ts +11 -0
  172. package/dist/esm/events/IEventQueue.d.ts.map +1 -0
  173. package/dist/esm/events/IEventQueue.js +3 -0
  174. package/dist/esm/events/IEventQueue.js.map +1 -0
  175. package/dist/esm/events/IEventSender.d.ts +13 -0
  176. package/dist/esm/events/IEventSender.d.ts.map +1 -0
  177. package/dist/esm/events/IEventSender.js +10 -0
  178. package/dist/esm/events/IEventSender.js.map +1 -0
  179. package/dist/esm/events/NullEventProcessor.d.ts +8 -0
  180. package/dist/esm/events/NullEventProcessor.d.ts.map +1 -0
  181. package/dist/esm/events/NullEventProcessor.js +16 -0
  182. package/dist/esm/events/NullEventProcessor.js.map +1 -0
  183. package/dist/esm/events/event.d.ts +44 -0
  184. package/dist/esm/events/event.d.ts.map +1 -0
  185. package/dist/esm/events/event.js +115 -0
  186. package/dist/esm/events/event.js.map +1 -0
  187. package/dist/esm/events/index.d.ts +12 -0
  188. package/dist/esm/events/index.d.ts.map +1 -0
  189. package/dist/esm/events/index.js +28 -0
  190. package/dist/esm/events/index.js.map +1 -0
  191. package/dist/esm/index.d.ts +21 -0
  192. package/dist/esm/index.d.ts.map +1 -0
  193. package/dist/esm/index.js +37 -0
  194. package/dist/esm/index.js.map +1 -0
  195. package/dist/esm/integrations/TestLogger.d.ts +10 -0
  196. package/dist/esm/integrations/TestLogger.d.ts.map +1 -0
  197. package/dist/esm/integrations/TestLogger.js +25 -0
  198. package/dist/esm/integrations/TestLogger.js.map +1 -0
  199. package/dist/esm/integrations/index.d.ts +3 -0
  200. package/dist/esm/integrations/index.d.ts.map +1 -0
  201. package/dist/esm/integrations/index.js +21 -0
  202. package/dist/esm/integrations/index.js.map +1 -0
  203. package/dist/esm/integrations/test_data/FlagBuilder.d.ts +19 -0
  204. package/dist/esm/integrations/test_data/FlagBuilder.d.ts.map +1 -0
  205. package/dist/esm/integrations/test_data/FlagBuilder.js +56 -0
  206. package/dist/esm/integrations/test_data/FlagBuilder.js.map +1 -0
  207. package/dist/esm/integrations/test_data/TestData.d.ts +18 -0
  208. package/dist/esm/integrations/test_data/TestData.d.ts.map +1 -0
  209. package/dist/esm/integrations/test_data/TestData.js +38 -0
  210. package/dist/esm/integrations/test_data/TestData.js.map +1 -0
  211. package/dist/esm/integrations/test_data/TestDataSynchronizer.d.ts +21 -0
  212. package/dist/esm/integrations/test_data/TestDataSynchronizer.d.ts.map +1 -0
  213. package/dist/esm/integrations/test_data/TestDataSynchronizer.js +50 -0
  214. package/dist/esm/integrations/test_data/TestDataSynchronizer.js.map +1 -0
  215. package/dist/esm/integrations/test_data/index.d.ts +5 -0
  216. package/dist/esm/integrations/test_data/index.d.ts.map +1 -0
  217. package/dist/esm/integrations/test_data/index.js +13 -0
  218. package/dist/esm/integrations/test_data/index.js.map +1 -0
  219. package/dist/esm/logging/BasicLogger.d.ts +34 -0
  220. package/dist/esm/logging/BasicLogger.d.ts.map +1 -0
  221. package/dist/esm/logging/BasicLogger.js +101 -0
  222. package/dist/esm/logging/BasicLogger.js.map +1 -0
  223. package/dist/esm/logging/IBasicLoggerOptions.d.ts +43 -0
  224. package/dist/esm/logging/IBasicLoggerOptions.d.ts.map +1 -0
  225. package/dist/esm/logging/IBasicLoggerOptions.js +3 -0
  226. package/dist/esm/logging/IBasicLoggerOptions.js.map +1 -0
  227. package/dist/esm/logging/ILogger.d.ts +47 -0
  228. package/dist/esm/logging/ILogger.d.ts.map +1 -0
  229. package/dist/esm/logging/ILogger.js +3 -0
  230. package/dist/esm/logging/ILogger.js.map +1 -0
  231. package/dist/esm/logging/LogLevel.d.ts +10 -0
  232. package/dist/esm/logging/LogLevel.d.ts.map +1 -0
  233. package/dist/esm/logging/LogLevel.js +3 -0
  234. package/dist/esm/logging/LogLevel.js.map +1 -0
  235. package/dist/esm/logging/SafeLogger.d.ts +28 -0
  236. package/dist/esm/logging/SafeLogger.d.ts.map +1 -0
  237. package/dist/esm/logging/SafeLogger.js +64 -0
  238. package/dist/esm/logging/SafeLogger.js.map +1 -0
  239. package/dist/esm/logging/format.d.ts +12 -0
  240. package/dist/esm/logging/format.d.ts.map +1 -0
  241. package/dist/esm/logging/format.js +156 -0
  242. package/dist/esm/logging/format.js.map +1 -0
  243. package/dist/esm/logging/index.d.ts +7 -0
  244. package/dist/esm/logging/index.d.ts.map +1 -0
  245. package/dist/esm/logging/index.js +23 -0
  246. package/dist/esm/logging/index.js.map +1 -0
  247. package/dist/esm/options/ClientContext.d.ts +28 -0
  248. package/dist/esm/options/ClientContext.d.ts.map +1 -0
  249. package/dist/esm/options/ClientContext.js +21 -0
  250. package/dist/esm/options/ClientContext.js.map +1 -0
  251. package/dist/esm/options/IClientContext.d.ts +45 -0
  252. package/dist/esm/options/IClientContext.d.ts.map +1 -0
  253. package/dist/esm/options/IClientContext.js +3 -0
  254. package/dist/esm/options/IClientContext.js.map +1 -0
  255. package/dist/esm/options/IOptions.d.ts +101 -0
  256. package/dist/esm/options/IOptions.d.ts.map +1 -0
  257. package/dist/esm/options/IOptions.js +3 -0
  258. package/dist/esm/options/IOptions.js.map +1 -0
  259. package/dist/esm/options/IUser.d.ts +7 -0
  260. package/dist/esm/options/IUser.d.ts.map +1 -0
  261. package/dist/esm/options/IUser.js +3 -0
  262. package/dist/esm/options/IUser.js.map +1 -0
  263. package/dist/esm/options/IValidatedOptions.d.ts +27 -0
  264. package/dist/esm/options/IValidatedOptions.d.ts.map +1 -0
  265. package/dist/esm/options/IValidatedOptions.js +3 -0
  266. package/dist/esm/options/IValidatedOptions.js.map +1 -0
  267. package/dist/esm/options/OptionMessages.d.ts +14 -0
  268. package/dist/esm/options/OptionMessages.d.ts.map +1 -0
  269. package/dist/esm/options/OptionMessages.js +33 -0
  270. package/dist/esm/options/OptionMessages.js.map +1 -0
  271. package/dist/esm/options/UserBuilder.d.ts +17 -0
  272. package/dist/esm/options/UserBuilder.d.ts.map +1 -0
  273. package/dist/esm/options/UserBuilder.js +35 -0
  274. package/dist/esm/options/UserBuilder.js.map +1 -0
  275. package/dist/esm/options/Validators.d.ts +111 -0
  276. package/dist/esm/options/Validators.d.ts.map +1 -0
  277. package/dist/esm/options/Validators.js +247 -0
  278. package/dist/esm/options/Validators.js.map +1 -0
  279. package/dist/esm/options/index.d.ts +9 -0
  280. package/dist/esm/options/index.d.ts.map +1 -0
  281. package/dist/esm/options/index.js +25 -0
  282. package/dist/esm/options/index.js.map +1 -0
  283. package/dist/esm/platform/IInfo.d.ts +92 -0
  284. package/dist/esm/platform/IInfo.d.ts.map +1 -0
  285. package/dist/esm/platform/IInfo.js +3 -0
  286. package/dist/esm/platform/IInfo.js.map +1 -0
  287. package/dist/esm/platform/IPlatform.d.ts +19 -0
  288. package/dist/esm/platform/IPlatform.d.ts.map +1 -0
  289. package/dist/esm/platform/IPlatform.js +3 -0
  290. package/dist/esm/platform/IPlatform.js.map +1 -0
  291. package/dist/esm/platform/IStore.d.ts +104 -0
  292. package/dist/esm/platform/IStore.d.ts.map +1 -0
  293. package/dist/esm/platform/IStore.js +3 -0
  294. package/dist/esm/platform/IStore.js.map +1 -0
  295. package/dist/esm/platform/IWebSocket.d.ts +21 -0
  296. package/dist/esm/platform/IWebSocket.d.ts.map +1 -0
  297. package/dist/esm/platform/IWebSocket.js +3 -0
  298. package/dist/esm/platform/IWebSocket.js.map +1 -0
  299. package/dist/esm/platform/browser/BrowserInfo.d.ts +7 -0
  300. package/dist/esm/platform/browser/BrowserInfo.d.ts.map +1 -0
  301. package/dist/esm/platform/browser/BrowserInfo.js +24 -0
  302. package/dist/esm/platform/browser/BrowserInfo.js.map +1 -0
  303. package/dist/esm/platform/browser/BrowserPlatform.d.ts +12 -0
  304. package/dist/esm/platform/browser/BrowserPlatform.d.ts.map +1 -0
  305. package/dist/esm/platform/browser/BrowserPlatform.js +17 -0
  306. package/dist/esm/platform/browser/BrowserPlatform.js.map +1 -0
  307. package/dist/esm/platform/browser/BrowserRequests.d.ts +5 -0
  308. package/dist/esm/platform/browser/BrowserRequests.d.ts.map +1 -0
  309. package/dist/esm/platform/browser/BrowserRequests.js +10 -0
  310. package/dist/esm/platform/browser/BrowserRequests.js.map +1 -0
  311. package/dist/esm/platform/browser/BrowserWebSocket.d.ts +38 -0
  312. package/dist/esm/platform/browser/BrowserWebSocket.d.ts.map +1 -0
  313. package/dist/esm/platform/browser/BrowserWebSocket.js +129 -0
  314. package/dist/esm/platform/browser/BrowserWebSocket.js.map +1 -0
  315. package/dist/esm/platform/browser/FbClient.d.ts +30 -0
  316. package/dist/esm/platform/browser/FbClient.d.ts.map +1 -0
  317. package/dist/esm/platform/browser/FbClient.js +52 -0
  318. package/dist/esm/platform/browser/FbClient.js.map +1 -0
  319. package/dist/esm/platform/browser/LocalStorageStore.d.ts +12 -0
  320. package/dist/esm/platform/browser/LocalStorageStore.d.ts.map +1 -0
  321. package/dist/esm/platform/browser/LocalStorageStore.js +65 -0
  322. package/dist/esm/platform/browser/LocalStorageStore.js.map +1 -0
  323. package/dist/esm/platform/index.d.ts +9 -0
  324. package/dist/esm/platform/index.d.ts.map +1 -0
  325. package/dist/esm/platform/index.js +29 -0
  326. package/dist/esm/platform/index.js.map +1 -0
  327. package/dist/esm/platform/requests.d.ts +64 -0
  328. package/dist/esm/platform/requests.d.ts.map +1 -0
  329. package/dist/esm/platform/requests.js +7 -0
  330. package/dist/esm/platform/requests.js.map +1 -0
  331. package/dist/esm/store/BaseStore.d.ts +25 -0
  332. package/dist/esm/store/BaseStore.d.ts.map +1 -0
  333. package/dist/esm/store/BaseStore.js +125 -0
  334. package/dist/esm/store/BaseStore.js.map +1 -0
  335. package/dist/esm/store/DataKinds.d.ts +5 -0
  336. package/dist/esm/store/DataKinds.d.ts.map +1 -0
  337. package/dist/esm/store/DataKinds.js +9 -0
  338. package/dist/esm/store/DataKinds.js.map +1 -0
  339. package/dist/esm/store/IDataSourceUpdates.d.ts +48 -0
  340. package/dist/esm/store/IDataSourceUpdates.d.ts.map +1 -0
  341. package/dist/esm/store/IDataSourceUpdates.js +3 -0
  342. package/dist/esm/store/IDataSourceUpdates.js.map +1 -0
  343. package/dist/esm/store/InMemoryStore.d.ts +11 -0
  344. package/dist/esm/store/InMemoryStore.d.ts.map +1 -0
  345. package/dist/esm/store/InMemoryStore.js +46 -0
  346. package/dist/esm/store/InMemoryStore.js.map +1 -0
  347. package/dist/esm/store/index.d.ts +7 -0
  348. package/dist/esm/store/index.d.ts.map +1 -0
  349. package/dist/esm/store/index.js +23 -0
  350. package/dist/esm/store/index.js.map +1 -0
  351. package/dist/esm/store/serialization.d.ts +23 -0
  352. package/dist/esm/store/serialization.d.ts.map +1 -0
  353. package/dist/esm/store/serialization.js +37 -0
  354. package/dist/esm/store/serialization.js.map +1 -0
  355. package/dist/esm/store/store.d.ts +30 -0
  356. package/dist/esm/store/store.d.ts.map +1 -0
  357. package/dist/esm/store/store.js +6 -0
  358. package/dist/esm/store/store.js.map +1 -0
  359. package/dist/esm/utils/Emits.d.ts +30 -0
  360. package/dist/esm/utils/Emits.d.ts.map +1 -0
  361. package/dist/esm/utils/Emits.js +64 -0
  362. package/dist/esm/utils/Emits.js.map +1 -0
  363. package/dist/esm/utils/EventEmitter.d.ts +22 -0
  364. package/dist/esm/utils/EventEmitter.d.ts.map +1 -0
  365. package/dist/esm/utils/EventEmitter.js +108 -0
  366. package/dist/esm/utils/EventEmitter.js.map +1 -0
  367. package/dist/esm/utils/IEventEmitter.d.ts +16 -0
  368. package/dist/esm/utils/IEventEmitter.d.ts.map +1 -0
  369. package/dist/esm/utils/IEventEmitter.js +3 -0
  370. package/dist/esm/utils/IEventEmitter.js.map +1 -0
  371. package/dist/esm/utils/Regex.d.ts +7 -0
  372. package/dist/esm/utils/Regex.d.ts.map +1 -0
  373. package/dist/esm/utils/Regex.js +22 -0
  374. package/dist/esm/utils/Regex.js.map +1 -0
  375. package/dist/esm/utils/ValueConverters.d.ts +13 -0
  376. package/dist/esm/utils/ValueConverters.d.ts.map +1 -0
  377. package/dist/esm/utils/ValueConverters.js +46 -0
  378. package/dist/esm/utils/ValueConverters.js.map +1 -0
  379. package/dist/esm/utils/VoidFunction.d.ts +2 -0
  380. package/dist/esm/utils/VoidFunction.d.ts.map +1 -0
  381. package/dist/esm/utils/VoidFunction.js +3 -0
  382. package/dist/esm/utils/VoidFunction.js.map +1 -0
  383. package/dist/esm/utils/canonicalizeUri.d.ts +2 -0
  384. package/dist/esm/utils/canonicalizeUri.d.ts.map +1 -0
  385. package/dist/esm/utils/canonicalizeUri.js +9 -0
  386. package/dist/esm/utils/canonicalizeUri.js.map +1 -0
  387. package/dist/esm/utils/debounce.d.ts +22 -0
  388. package/dist/esm/utils/debounce.d.ts.map +1 -0
  389. package/dist/esm/utils/debounce.js +34 -0
  390. package/dist/esm/utils/debounce.js.map +1 -0
  391. package/dist/esm/utils/http.d.ts +12 -0
  392. package/dist/esm/utils/http.d.ts.map +1 -0
  393. package/dist/esm/utils/http.js +26 -0
  394. package/dist/esm/utils/http.js.map +1 -0
  395. package/dist/esm/utils/index.d.ts +7 -0
  396. package/dist/esm/utils/index.d.ts.map +1 -0
  397. package/dist/esm/utils/index.js +23 -0
  398. package/dist/esm/utils/index.js.map +1 -0
  399. package/dist/esm/utils/isNullOrUndefined.d.ts +2 -0
  400. package/dist/esm/utils/isNullOrUndefined.d.ts.map +1 -0
  401. package/dist/esm/utils/isNullOrUndefined.js +8 -0
  402. package/dist/esm/utils/isNullOrUndefined.js.map +1 -0
  403. package/dist/esm/utils/serializeUser.d.ts +3 -0
  404. package/dist/esm/utils/serializeUser.d.ts.map +1 -0
  405. package/dist/esm/utils/serializeUser.js +24 -0
  406. package/dist/esm/utils/serializeUser.js.map +1 -0
  407. package/dist/esm/utils/sleep.d.ts +3 -0
  408. package/dist/esm/utils/sleep.d.ts.map +1 -0
  409. package/dist/esm/utils/sleep.js +18 -0
  410. package/dist/esm/utils/sleep.js.map +1 -0
  411. package/dist/esm/version.d.ts +3 -0
  412. package/dist/esm/version.d.ts.map +1 -0
  413. package/dist/esm/version.js +6 -0
  414. package/dist/esm/version.js.map +1 -0
  415. package/dist/umd/featbit-js-client-sdk-3.0.1.js +2 -0
  416. package/dist/umd/featbit-js-client-sdk-3.0.1.js.map +1 -0
  417. package/dist/umd/featbit-js-client-sdk.js +2 -0
  418. package/dist/umd/featbit-js-client-sdk.js.map +1 -0
  419. package/package.json +22 -24
  420. package/src/Configuration.ts +233 -0
  421. package/src/Context.ts +62 -0
  422. package/src/FbClientBuilder.ts +161 -0
  423. package/src/FbClientCore.ts +389 -0
  424. package/src/IContextProperty.ts +4 -0
  425. package/src/IDataKind.ts +11 -0
  426. package/src/IFbClient.ts +30 -0
  427. package/src/IFbClientCore.ts +291 -0
  428. package/src/IVersionedData.ts +18 -0
  429. package/src/bootstrap/IBootstrapProvider.ts +5 -0
  430. package/src/bootstrap/JsonBootstrapProvider.ts +35 -0
  431. package/src/bootstrap/NullBootstrapProvider.ts +21 -0
  432. package/src/bootstrap/index.ts +3 -0
  433. package/src/constants.ts +2 -6
  434. package/src/data-sources/DataSourceUpdates.ts +89 -0
  435. package/src/data-sources/createStreamListeners.ts +66 -0
  436. package/src/data-sources/index.ts +2 -0
  437. package/src/data-sync/DataSyncMode.ts +4 -0
  438. package/src/data-sync/IDataSynchronizer.ts +15 -0
  439. package/src/data-sync/IRequestor.ts +10 -0
  440. package/src/data-sync/NullDataSynchronizer.ts +15 -0
  441. package/src/data-sync/PollingDataSynchronizer.ts +111 -0
  442. package/src/data-sync/Requestor.ts +61 -0
  443. package/src/data-sync/WebSocketDataSynchronizer.ts +74 -0
  444. package/src/data-sync/index.ts +9 -0
  445. package/src/data-sync/types.ts +20 -0
  446. package/src/data-sync/utils.ts +32 -0
  447. package/src/errors.ts +41 -0
  448. package/src/evaluation/EvalResult.ts +36 -0
  449. package/src/evaluation/Evaluator.ts +27 -0
  450. package/src/evaluation/IEvalDetail.ts +24 -0
  451. package/src/evaluation/ReasonKinds.ts +10 -0
  452. package/src/evaluation/data/IFlag.ts +29 -0
  453. package/src/evaluation/data/index.ts +1 -0
  454. package/src/evaluation/index.ts +5 -0
  455. package/src/events/DefaultEventProcessor.ts +84 -0
  456. package/src/events/DefaultEventQueue.ts +50 -0
  457. package/src/events/DefaultEventSender.ts +75 -0
  458. package/src/events/DefaultEventSerializer.ts +12 -0
  459. package/src/events/EventDispatcher.ts +128 -0
  460. package/src/events/EventSerializer.ts +5 -0
  461. package/src/events/IEventProcessor.ts +9 -0
  462. package/src/events/IEventQueue.ts +17 -0
  463. package/src/events/IEventSender.ts +14 -0
  464. package/src/events/NullEventProcessor.ts +16 -0
  465. package/src/events/event.ts +130 -0
  466. package/src/events/index.ts +11 -0
  467. package/src/index.ts +20 -4
  468. package/src/integrations/TestLogger.ts +25 -0
  469. package/src/integrations/index.ts +2 -0
  470. package/src/integrations/test_data/FlagBuilder.ts +60 -0
  471. package/src/integrations/test_data/TestData.ts +58 -0
  472. package/src/integrations/test_data/TestDataSynchronizer.ts +50 -0
  473. package/src/integrations/test_data/index.ts +5 -0
  474. package/src/logging/BasicLogger.ts +108 -0
  475. package/src/logging/IBasicLoggerOptions.ts +46 -0
  476. package/src/logging/ILogger.ts +49 -0
  477. package/src/logging/LogLevel.ts +9 -0
  478. package/src/logging/SafeLogger.ts +70 -0
  479. package/src/logging/format.ts +154 -0
  480. package/src/logging/index.ts +6 -0
  481. package/src/options/ClientContext.ts +40 -0
  482. package/src/options/IClientContext.ts +54 -0
  483. package/src/options/IOptions.ts +124 -0
  484. package/src/options/IUser.ts +7 -0
  485. package/src/options/IValidatedOptions.ts +30 -0
  486. package/src/options/OptionMessages.ts +36 -0
  487. package/src/options/UserBuilder.ts +36 -0
  488. package/src/options/Validators.ts +301 -0
  489. package/src/options/index.ts +8 -0
  490. package/src/platform/IInfo.ts +103 -0
  491. package/src/platform/IPlatform.ts +21 -0
  492. package/src/platform/IStore.ts +113 -0
  493. package/src/platform/IWebSocket.ts +23 -0
  494. package/src/platform/browser/BrowserInfo.ts +25 -0
  495. package/src/platform/browser/BrowserPlatform.ts +20 -0
  496. package/src/platform/browser/BrowserRequests.ts +7 -0
  497. package/src/platform/browser/BrowserWebSocket.ts +143 -0
  498. package/src/platform/browser/FbClient.ts +65 -0
  499. package/src/platform/browser/LocalStorageStore.ts +60 -0
  500. package/src/platform/index.ts +12 -0
  501. package/src/platform/requests.ts +77 -0
  502. package/src/store/BaseStore.ts +123 -0
  503. package/src/store/DataKinds.ts +7 -0
  504. package/src/store/IDataSourceUpdates.ts +49 -0
  505. package/src/store/InMemoryStore.ts +37 -0
  506. package/src/store/index.ts +6 -0
  507. package/src/store/serialization.ts +52 -0
  508. package/src/store/store.ts +38 -0
  509. package/src/utils/Emits.ts +76 -0
  510. package/src/utils/EventEmitter.ts +129 -0
  511. package/src/utils/IEventEmitter.ts +15 -0
  512. package/src/utils/Regex.ts +22 -0
  513. package/src/utils/ValueConverters.ts +56 -0
  514. package/src/utils/VoidFunction.ts +1 -0
  515. package/src/utils/canonicalizeUri.ts +4 -0
  516. package/src/utils/debounce.ts +33 -0
  517. package/src/utils/http.ts +40 -0
  518. package/src/utils/index.ts +6 -0
  519. package/src/utils/isNullOrUndefined.ts +3 -0
  520. package/src/utils/serializeUser.ts +28 -0
  521. package/src/utils/sleep.ts +6 -0
  522. package/src/version.ts +1 -0
  523. package/esm/constants.d.ts +0 -6
  524. package/esm/constants.js +0 -7
  525. package/esm/constants.js.map +0 -1
  526. package/esm/events.d.ts +0 -14
  527. package/esm/events.js +0 -27
  528. package/esm/events.js.map +0 -1
  529. package/esm/featbit.d.ts +0 -34
  530. package/esm/featbit.js +0 -382
  531. package/esm/featbit.js.map +0 -1
  532. package/esm/index.d.ts +0 -4
  533. package/esm/index.js +0 -5
  534. package/esm/index.js.map +0 -1
  535. package/esm/logger.d.ts +0 -4
  536. package/esm/logger.js +0 -20
  537. package/esm/logger.js.map +0 -1
  538. package/esm/network.service.d.ts +0 -27
  539. package/esm/network.service.js +0 -288
  540. package/esm/network.service.js.map +0 -1
  541. package/esm/optionMessages.d.ts +0 -5
  542. package/esm/optionMessages.js +0 -16
  543. package/esm/optionMessages.js.map +0 -1
  544. package/esm/queue.d.ts +0 -8
  545. package/esm/queue.js +0 -35
  546. package/esm/queue.js.map +0 -1
  547. package/esm/store.d.ts +0 -20
  548. package/esm/store.js +0 -143
  549. package/esm/store.js.map +0 -1
  550. package/esm/throttleutil.d.ts +0 -9
  551. package/esm/throttleutil.js +0 -133
  552. package/esm/throttleutil.js.map +0 -1
  553. package/esm/types.d.ts +0 -94
  554. package/esm/types.js +0 -24
  555. package/esm/types.js.map +0 -1
  556. package/esm/umd.d.ts +0 -2
  557. package/esm/utils.d.ts +0 -11
  558. package/esm/utils.js +0 -142
  559. package/esm/utils.js.map +0 -1
  560. package/src/events.ts +0 -29
  561. package/src/featbit.ts +0 -343
  562. package/src/logger.ts +0 -13
  563. package/src/network.service.ts +0 -223
  564. package/src/optionMessages.ts +0 -13
  565. package/src/queue.ts +0 -23
  566. package/src/store.ts +0 -169
  567. package/src/throttleutil.ts +0 -72
  568. package/src/types.ts +0 -113
  569. package/src/umd.ts +0 -15
  570. package/src/utils.ts +0 -173
  571. package/umd/featbit-js-client-sdk-2.0.2.js +0 -2
  572. package/umd/featbit-js-client-sdk-2.0.2.js.map +0 -1
  573. package/umd/featbit-js-client-sdk.js +0 -2
  574. package/umd/featbit-js-client-sdk.js.map +0 -1
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FbClientCore = void 0;
16
+ const Configuration_1 = __importDefault(require("./Configuration"));
17
+ const ClientContext_1 = __importDefault(require("./options/ClientContext"));
18
+ const DataSourceUpdates_1 = __importDefault(require("./data-sources/DataSourceUpdates"));
19
+ const createStreamListeners_1 = require("./data-sources/createStreamListeners");
20
+ const WebSocketDataSynchronizer_1 = __importDefault(require("./data-sync/WebSocketDataSynchronizer"));
21
+ const PollingDataSynchronizer_1 = __importDefault(require("./data-sync/PollingDataSynchronizer"));
22
+ const Requestor_1 = __importDefault(require("./data-sync/Requestor"));
23
+ const DataKinds_1 = __importDefault(require("./store/DataKinds"));
24
+ const Evaluator_1 = __importDefault(require("./evaluation/Evaluator"));
25
+ const ReasonKinds_1 = require("./evaluation/ReasonKinds");
26
+ const errors_1 = require("./errors");
27
+ const Context_1 = __importDefault(require("./Context"));
28
+ const ValueConverters_1 = require("./utils/ValueConverters");
29
+ const NullDataSynchronizer_1 = require("./data-sync/NullDataSynchronizer");
30
+ const NullEventProcessor_1 = require("./events/NullEventProcessor");
31
+ const DefaultEventProcessor_1 = require("./events/DefaultEventProcessor");
32
+ const event_1 = require("./events/event");
33
+ const DataSyncMode_1 = require("./data-sync/DataSyncMode");
34
+ const Validators_1 = require("./options/Validators");
35
+ var ClientState;
36
+ (function (ClientState) {
37
+ ClientState[ClientState["Initializing"] = 0] = "Initializing";
38
+ ClientState[ClientState["Initialized"] = 1] = "Initialized";
39
+ ClientState[ClientState["Failed"] = 2] = "Failed";
40
+ })(ClientState || (ClientState = {}));
41
+ class FbClientCore {
42
+ constructor(options, platform, callbacks) {
43
+ this.options = options;
44
+ this.platform = platform;
45
+ this.state = ClientState.Initializing;
46
+ this.onError = callbacks.onError;
47
+ this.onFailed = callbacks.onFailed;
48
+ this.onReady = callbacks.onReady;
49
+ const { onUpdate, hasEventListeners } = callbacks;
50
+ const config = new Configuration_1.default(options);
51
+ if (!config.sdkKey && !config.offline) {
52
+ throw new Error('You must configure the client with an SDK key');
53
+ }
54
+ if (!config.user) {
55
+ throw new Error('You must configure the client with a user');
56
+ }
57
+ this.config = config;
58
+ this.logger = config.logger;
59
+ this.init(platform, onUpdate, hasEventListeners);
60
+ }
61
+ init(platform, onUpdate, hasEventListeners) {
62
+ var _a, _b, _c;
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ const clientContext = new ClientContext_1.default(this.config.sdkKey, this.config, platform);
65
+ this.store = this.config.storeFactory(clientContext);
66
+ yield this.store.identify(this.config.user);
67
+ this.dataSourceUpdates = new DataSourceUpdates_1.default(this.store, hasEventListeners, onUpdate);
68
+ this.evaluator = new Evaluator_1.default(this.store);
69
+ // use bootstrap provider to populate store
70
+ yield this.config.bootstrapProvider.populate(this.config.user.keyId, this.dataSourceUpdates);
71
+ if (this.config.offline) {
72
+ this.eventProcessor = new NullEventProcessor_1.NullEventProcessor();
73
+ this.dataSynchronizer = new NullDataSynchronizer_1.NullDataSynchronizer();
74
+ this.initSuccess();
75
+ }
76
+ else {
77
+ this.eventProcessor = new DefaultEventProcessor_1.DefaultEventProcessor(clientContext);
78
+ const listeners = (0, createStreamListeners_1.createStreamListeners)(this.dataSourceUpdates, this.logger, {
79
+ put: () => this.initSuccess(),
80
+ patch: () => this.initSuccess()
81
+ });
82
+ const dataSynchronizer = this.config.dataSyncMode === DataSyncMode_1.DataSyncModeEnum.STREAMING
83
+ ? new WebSocketDataSynchronizer_1.default(this.config.sdkKey, this.config.user, clientContext, platform.webSocket, () => this.store.version, listeners, this.config.webSocketPingInterval)
84
+ : new PollingDataSynchronizer_1.default(this.config, new Requestor_1.default(this.config.sdkKey, this.config, this.platform.info, this.platform.requests), () => this.store.version, listeners, (e) => this.dataSourceErrorHandler(e));
85
+ this.dataSynchronizer = (_c = (_b = (_a = this.config).dataSynchronizerFactory) === null || _b === void 0 ? void 0 : _b.call(_a, clientContext, this.store, this.dataSourceUpdates, () => this.initSuccess(), (e) => this.dataSourceErrorHandler(e))) !== null && _c !== void 0 ? _c : dataSynchronizer;
86
+ }
87
+ this.start();
88
+ });
89
+ }
90
+ identify(user) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const validator = new Validators_1.UserValidator();
93
+ if (!validator.is(user)) {
94
+ validator.messages.forEach((error) => {
95
+ var _a;
96
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(error);
97
+ });
98
+ return;
99
+ }
100
+ this.store.identify(user);
101
+ this.dataSynchronizer.identify(user);
102
+ const [flags] = this.store.all(DataKinds_1.default.Flags);
103
+ if (Object.keys(flags).length === 0) {
104
+ yield this.config.bootstrapProvider.populate(user.keyId, this.dataSourceUpdates);
105
+ }
106
+ });
107
+ }
108
+ start() {
109
+ if (this.config.offline) {
110
+ return;
111
+ }
112
+ this.dataSynchronizer.start();
113
+ setTimeout(() => {
114
+ var _a, _b;
115
+ if (!this.initialized()) {
116
+ const msg = `FbClient failed to start successfully within ${this.config.startWaitTime} milliseconds. ` +
117
+ 'This error usually indicates a connection issue with FeatBit or an invalid sdkKey.' +
118
+ 'Please double-check your sdkKey and streamingUri/pollingUri configuration. ' +
119
+ 'We will continue to initialize the FbClient, it still have a chance to get to work ' +
120
+ 'if it\'s a temporary network issue';
121
+ const error = new Error(msg);
122
+ this.state = ClientState.Failed;
123
+ this.rejectionReason = error;
124
+ (_a = this.initReject) === null || _a === void 0 ? void 0 : _a.call(this, error);
125
+ return (_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn(msg);
126
+ }
127
+ }, this.config.startWaitTime);
128
+ }
129
+ initialized() {
130
+ return this.state === ClientState.Initialized;
131
+ }
132
+ waitForInitialization() {
133
+ // An initialization promise is only created if someone is going to use that promise.
134
+ // If we always created an initialization promise, and there was no call waitForInitialization
135
+ // by the time the promise was rejected, then that would result in an unhandled promise
136
+ // rejection.
137
+ // Initialization promise was created by a previous call to waitForInitialization.
138
+ if (this.initializedPromise) {
139
+ return this.initializedPromise;
140
+ }
141
+ // Initialization completed before waitForInitialization was called, so we have completed
142
+ // and there was no promise. So we make a resolved promise and return it.
143
+ if (this.state === ClientState.Initialized) {
144
+ this.initializedPromise = Promise.resolve(this);
145
+ return this.initializedPromise;
146
+ }
147
+ // Initialization failed before waitForInitialization was called, so we have completed
148
+ // and there was no promise. So we make a rejected promise and return it.
149
+ if (this.state === ClientState.Failed) {
150
+ this.initializedPromise = Promise.reject(this.rejectionReason);
151
+ return this.initializedPromise;
152
+ }
153
+ if (!this.initializedPromise) {
154
+ this.initializedPromise = new Promise((resolve, reject) => {
155
+ this.initResolve = resolve;
156
+ this.initReject = reject;
157
+ });
158
+ }
159
+ return this.initializedPromise;
160
+ }
161
+ boolVariation(key, defaultValue) {
162
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.bool).value;
163
+ }
164
+ boolVariationDetail(key, defaultValue) {
165
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.bool);
166
+ }
167
+ jsonVariation(key, defaultValue) {
168
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.json).value;
169
+ }
170
+ jsonVariationDetail(key, defaultValue) {
171
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.json);
172
+ }
173
+ numberVariation(key, defaultValue) {
174
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.number).value;
175
+ }
176
+ numberVariationDetail(key, defaultValue) {
177
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.number);
178
+ }
179
+ stringVariation(key, defaultValue) {
180
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.string).value;
181
+ }
182
+ stringVariationDetail(key, defaultValue) {
183
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.string);
184
+ }
185
+ variation(key, defaultValue) {
186
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.string).value;
187
+ }
188
+ variationDetail(key, defaultValue) {
189
+ return this.evaluateCore(key, defaultValue, ValueConverters_1.ValueConverters.string);
190
+ }
191
+ getAllVariations() {
192
+ var _a;
193
+ const context = Context_1.default.fromUser(this.config.user);
194
+ if (!context.valid) {
195
+ const error = new errors_1.ClientError(`${(_a = context.message) !== null && _a !== void 0 ? _a : 'User not valid;'} returning default value.`);
196
+ this.onError(error);
197
+ return Promise.resolve([]);
198
+ }
199
+ const [flags, _] = this.store.all(DataKinds_1.default.Flags);
200
+ const result = Object.keys(flags).map(flagKey => {
201
+ var _a;
202
+ const evalResult = this.evaluator.evaluate(flagKey);
203
+ return { flagKey, kind: evalResult.kind, reason: evalResult.reason, value: (_a = evalResult.value) === null || _a === void 0 ? void 0 : _a.variation };
204
+ });
205
+ return Promise.resolve(result);
206
+ }
207
+ close() {
208
+ var _a;
209
+ return __awaiter(this, void 0, void 0, function* () {
210
+ yield this.eventProcessor.close();
211
+ (_a = this.dataSynchronizer) === null || _a === void 0 ? void 0 : _a.close();
212
+ this.store.close();
213
+ });
214
+ }
215
+ track(eventName, metricValue) {
216
+ const metricEvent = new event_1.MetricEvent(this.config.user, eventName, this.platform.info.appType, metricValue !== null && metricValue !== void 0 ? metricValue : 1);
217
+ this.eventProcessor.record(metricEvent);
218
+ return;
219
+ }
220
+ flush(callback) {
221
+ return __awaiter(this, void 0, void 0, function* () {
222
+ try {
223
+ yield this.eventProcessor.flush();
224
+ callback === null || callback === void 0 ? void 0 : callback(true);
225
+ return true;
226
+ }
227
+ catch (err) {
228
+ callback === null || callback === void 0 ? void 0 : callback(false);
229
+ return false;
230
+ }
231
+ });
232
+ }
233
+ evaluateCore(flagKey, defaultValue, typeConverter) {
234
+ var _a, _b, _c;
235
+ const context = Context_1.default.fromUser(this.config.user);
236
+ if (!context.valid) {
237
+ const error = new errors_1.ClientError(`${(_a = context.message) !== null && _a !== void 0 ? _a : 'User not valid;'} returning default value.`);
238
+ this.onError(error);
239
+ return { flagKey, kind: ReasonKinds_1.ReasonKinds.Error, reason: error.message, value: defaultValue };
240
+ }
241
+ const evalResult = this.evaluator.evaluate(flagKey);
242
+ if (evalResult.kind === ReasonKinds_1.ReasonKinds.FlagNotFound) {
243
+ // flag not found, return default value
244
+ const error = new errors_1.ClientError(evalResult.reason);
245
+ this.onError(error);
246
+ return { flagKey, kind: evalResult.kind, reason: evalResult.reason, value: defaultValue };
247
+ }
248
+ if (!this.initialized()) {
249
+ (_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn('Variation called before FeatBit client initialization completed (did you wait for the' +
250
+ "'ready' event?)");
251
+ }
252
+ else {
253
+ // send event
254
+ this.eventProcessor.record(evalResult.toEvalEvent(this.config.user));
255
+ }
256
+ const { isSucceeded, value } = typeConverter((_c = evalResult.value) === null || _c === void 0 ? void 0 : _c.variation);
257
+ return isSucceeded
258
+ ? { flagKey, kind: evalResult.kind, reason: evalResult.reason, value }
259
+ : { flagKey, kind: ReasonKinds_1.ReasonKinds.WrongType, reason: 'type mismatch', value: defaultValue };
260
+ }
261
+ dataSourceErrorHandler(e) {
262
+ var _a;
263
+ const error = e.code === 401 ? new Error('Authentication failed. Double check your SDK key.') : e;
264
+ this.onError(error);
265
+ this.onFailed(error);
266
+ if (!this.initialized()) {
267
+ this.state = ClientState.Failed;
268
+ this.rejectionReason = error;
269
+ (_a = this.initReject) === null || _a === void 0 ? void 0 : _a.call(this, error);
270
+ }
271
+ }
272
+ initSuccess() {
273
+ var _a, _b;
274
+ if (!this.initialized()) {
275
+ this.state = ClientState.Initialized;
276
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('FbClient started successfully.');
277
+ (_b = this.initResolve) === null || _b === void 0 ? void 0 : _b.call(this, this);
278
+ this.onReady();
279
+ }
280
+ }
281
+ }
282
+ exports.FbClientCore = FbClientCore;
283
+ //# sourceMappingURL=FbClientCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FbClientCore.js","sourceRoot":"","sources":["../../src/FbClientCore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface IContextProperty {
2
+ name: string;
3
+ value: string;
4
+ }
5
+ //# sourceMappingURL=IContextProperty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IContextProperty.d.ts","sourceRoot":"","sources":["../../src/IContextProperty.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IContextProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IContextProperty.js","sourceRoot":"","sources":["../../src/IContextProperty.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Used internally to describe the type of data being queried or updated, such as feature flags or
3
+ * user segments.
4
+ */
5
+ export interface IDataKind {
6
+ /**
7
+ * A string such as `"flags"` or `"segments"` which can be used in keys to distinguish this
8
+ * kind of data from other kinds.
9
+ */
10
+ namespace: string;
11
+ }
12
+ //# sourceMappingURL=IDataKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDataKind.d.ts","sourceRoot":"","sources":["../../src/IDataKind.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IDataKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDataKind.js","sourceRoot":"","sources":["../../src/IDataKind.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { IFbClientCore } from "./IFbClientCore";
2
+ import { IEventEmitter } from "./utils/IEventEmitter";
3
+ export interface IFbClient extends IFbClientCore, IEventEmitter {
4
+ /**
5
+ *
6
+ * Registers an event listener that will be called when the client triggers some type of event.
7
+ *
8
+ * This is the standard `on` method inherited from Node's `EventEmitter`; see the
9
+ * {@link https://nodejs.org/api/events.html#events_class_eventemitter|Node API docs} for more
10
+ * details on how to manage event listeners. Here is a description of the event types defined
11
+ * by `FbClient`.
12
+ *
13
+ * - `"ready"`: Sent only once, when the client has successfully connected to FeatBit.
14
+ * Alternately, you can detect this with [[waitForInitialization]].
15
+ * - `"failed"`: Sent only once, if the client has permanently failed to connect to FeatBit.
16
+ * Alternately, you can detect this with [[waitForInitialization]].
17
+ * - `"error"`: Contains an error object describing some abnormal condition that the client has detected
18
+ * (such as a network error).
19
+ * - `"update"`: The client has received a change to a feature flag. The event parameter is an object
20
+ * containing a single property, `key`, the flag key. Note that this does not necessarily mean the flag's
21
+ * value has changed for any particular context, only that some part of the flag configuration was changed.
22
+ * - `"update:KEY"`: The client has received a change to the feature flag whose key is KEY. This is the
23
+ * same as `"update"` but allows you to listen for a specific flag.
24
+ *
25
+ * @param event the name of the event to listen for
26
+ * @param listener the function to call when the event happens
27
+ */
28
+ on(event: string | symbol, listener: (...args: any[]) => void): this;
29
+ }
30
+ //# sourceMappingURL=IFbClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFbClient.d.ts","sourceRoot":"","sources":["../../src/IFbClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,SAAU,SAAQ,aAAa,EAAE,aAAa;IAC7D;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CACtE"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IFbClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFbClient.js","sourceRoot":"","sources":["../../src/IFbClient.ts"],"names":[],"mappings":""}
@@ -0,0 +1,240 @@
1
+ import { IEvalDetail } from "./evaluation/IEvalDetail";
2
+ import { IConvertResult } from "./utils/ValueConverters";
3
+ import { IUser } from "./options";
4
+ /**
5
+ * The FeatBit SDK client object.
6
+ *
7
+ * Create this object with {@link FbClientBuilder}. Applications should configure the client at startup time
8
+ * and continue to use it throughout the lifetime of the application, rather than creating instances
9
+ * on the fly.
10
+ *
11
+ */
12
+ export interface IFbClientCore {
13
+ /**
14
+ * Set the current user of the client.
15
+ *
16
+ * @param user
17
+ * The current user. The actual type of this parameter is
18
+ * {@link IUser}.
19
+ */
20
+ identify(user: IUser): void;
21
+ /**
22
+ * Indicates whether the client is ready to be used.
23
+ *
24
+ * @returns true if the client is ready to be used, false otherwise.
25
+ */
26
+ initialized(): boolean;
27
+ /**
28
+ * Wait until the client is initialized. The promise resolves when the client has finished initializing successfully.
29
+ * If the client fails to initialize, the promise will be rejected.
30
+ *
31
+ * @returns A promise.
32
+ */
33
+ waitForInitialization(): Promise<IFbClientCore>;
34
+ /**
35
+ * Calculates the boolean value of a feature flag for a given user.
36
+ *
37
+ * If the flag variation does not have a boolean value, {@link defaultValue} is returned.
38
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
39
+ * does not match any existing flag), {@link defaultValue} is returned.
40
+ *
41
+ * @param key
42
+ * The unique key of the feature flag.
43
+ * @param defaultValue
44
+ * The default value to return if the flag cannot be evaluated.
45
+ *
46
+ * @returns the variation for the given user, or {@link defaultValue} if the flag cannot be evaluated
47
+ */
48
+ boolVariation(key: string, defaultValue: boolean): boolean;
49
+ /**
50
+ * Calculates the boolean value of a feature flag for a given user, and returns an object that
51
+ * describes the way the value was determined.
52
+ *
53
+ * If the flag variation does not have a boolean value, {@link defaultValue} is returned.
54
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
55
+ * does not match any existing flag), {@link defaultValue} is returned.
56
+ *
57
+ * @param key
58
+ * The unique key of the feature flag.
59
+ * @param defaultValue
60
+ * The default value to return if the flag cannot be evaluated.
61
+ *
62
+ * @returns {@link IEvalDetail} object describing the way the value was determined.
63
+ */
64
+ boolVariationDetail(key: string, defaultValue: boolean): IEvalDetail<boolean>;
65
+ /**
66
+ * Calculates the number value of a feature flag for a given user.
67
+ *
68
+ * If the flag variation does not have a number value, {@link defaultValue} is returned.
69
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
70
+ * does not match any existing flag), {@link defaultValue} is returned.
71
+ *
72
+ * @param key
73
+ * The unique key of the feature flag.
74
+ * @param defaultValue
75
+ * The default value to return if the flag cannot be evaluated.
76
+ *
77
+ * @returns the variation for the given user, or {@link defaultValue} if the flag cannot be evaluated
78
+ */
79
+ numberVariation(key: string, defaultValue: number): number;
80
+ /**
81
+ * Calculates the number value of a feature flag for a given user, and returns an object that
82
+ * describes the way the value was determined.
83
+ *
84
+ * If the flag variation does not have a number value, {@link defaultValue} is returned.
85
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
86
+ * does not match any existing flag), {@link defaultValue} is returned.
87
+ *
88
+ * @param key
89
+ * The unique key of the feature flag.
90
+ * @param defaultValue
91
+ * The default value to return if the flag cannot be evaluated.
92
+ *
93
+ * @returns {@link IEvalDetail} object describing the way the value was determined.
94
+ */
95
+ numberVariationDetail(key: string, defaultValue: number): IEvalDetail<number>;
96
+ /**
97
+ * Calculates the string value of a feature flag for a given user.
98
+ *
99
+ * If the flag variation does not have a string value, {@link defaultValue} is returned.
100
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
101
+ * does not match any existing flag), {@link defaultValue} is returned.
102
+ *
103
+ * @param key
104
+ * The unique key of the feature flag.
105
+ * @param defaultValue
106
+ * The default value to return if the flag cannot be evaluated.
107
+ *
108
+ * @returns the variation for the given user, or {@link defaultValue} if the flag cannot be evaluated
109
+ */
110
+ stringVariation(key: string, defaultValue: string): string;
111
+ /**
112
+ * Calculates the string value of a feature flag for a given user, and returns an object that
113
+ * describes the way the value was determined.
114
+ *
115
+ * If the flag variation does not have a string value, {@link defaultValue} is returned.
116
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
117
+ * does not match any existing flag), {@link defaultValue} is returned.
118
+ *
119
+ * @param key
120
+ * The unique key of the feature flag.
121
+ * @param defaultValue
122
+ * The default value to return if the flag cannot be evaluated.
123
+ *
124
+ * @returns {@link IEvalDetail} object describing the way the value was determined.
125
+ */
126
+ stringVariationDetail(key: string, defaultValue: string): IEvalDetail<string>;
127
+ /**
128
+ * Calculates the JSON value of a feature flag for a given user.
129
+ *
130
+ * If the flag variation does not have a JSON value, {@link defaultValue} is returned.
131
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
132
+ * does not match any existing flag), {@link defaultValue} is returned.
133
+ *
134
+ * @param key
135
+ * The unique key of the feature flag.
136
+ * @param defaultValue
137
+ * The default value to return if the flag cannot be evaluated.
138
+ *
139
+ * @returns the variation for the given user, or {@link defaultValue} if the flag cannot be evaluated
140
+ */
141
+ jsonVariation(key: string, defaultValue: any): any;
142
+ /**
143
+ * Calculates the JSON value of a feature flag for a given user, and returns an object that
144
+ * describes the way the value was determined.
145
+ *
146
+ * If the flag variation does not have a JSON value, {@link defaultValue} is returned.
147
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
148
+ * does not match any existing flag), {@link defaultValue} is returned.
149
+ *
150
+ * @param key
151
+ * The unique key of the feature flag.
152
+ * @param defaultValue
153
+ * The default value to return if the flag cannot be evaluated.
154
+ *
155
+ * @returns {@link IEvalDetail} object describing the way the value was determined.
156
+ */
157
+ jsonVariationDetail(key: string, defaultValue: any): IEvalDetail<any>;
158
+ /**
159
+ * Calculates the string value of a feature flag for a given user.
160
+ *
161
+ * If the flag variation does not have a string value, {@link defaultValue} is returned.
162
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
163
+ * does not match any existing flag), {@link defaultValue} is returned.
164
+ *
165
+ * @param key
166
+ * The unique key of the feature flag.
167
+ * @param defaultValue
168
+ * The default value to return if the flag cannot be evaluated.
169
+ *
170
+ * @returns the variation for the given user, or {@link defaultValue} if the flag cannot be evaluated
171
+ */
172
+ variation(key: string, defaultValue: string): string;
173
+ /**
174
+ * Calculates the string value of a feature flag for a given user, and returns an object that
175
+ * describes the way the value was determined.
176
+ *
177
+ * If the flag variation does not have a string value, {@link defaultValue} is returned.
178
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
179
+ * does not match any existing flag), {@link defaultValue} is returned.
180
+ *
181
+ * @param key
182
+ * The unique key of the feature flag.
183
+ * @param defaultValue
184
+ * The default value to return if the flag cannot be evaluated.
185
+ *
186
+ * @returns {@link IEvalDetail} object describing the way the value was determined.
187
+ */
188
+ variationDetail(key: string, defaultValue: string): IEvalDetail<string>;
189
+ /**
190
+ * This method is exposed only for testing purpose, please DO NOT USE IT
191
+ *
192
+ * Calculates the value of a feature flag for a given user, and returns a {@link IEvalDetail} object that
193
+ * describes the way the value was determined.
194
+ *
195
+ * If an error makes it impossible to evaluate the flag (for instance, the feature flag key
196
+ * does not match any existing flag), {@link defaultValue} is returned.
197
+ *
198
+ * @param flagKey
199
+ * The unique key of the feature flag.
200
+ * @param defaultValue
201
+ * The default value to return if the flag cannot be evaluated.
202
+ * @param typeConverter
203
+ * the function to convert result.
204
+ *
205
+ * @returns {@link IEvalDetail} object describing the way the value was determined.
206
+ */
207
+ evaluateCore<TValue>(flagKey: string, defaultValue: TValue, typeConverter: (value: string) => IConvertResult<TValue>): IEvalDetail<TValue>;
208
+ /**
209
+ * Returns the variation with of all feature flags for a given user, and returns an object that
210
+ * describes the way the value was determined for each flag.
211
+ *
212
+ * @returns A list of {@link IEvalDetail} objects describing the way the values were determined.
213
+ */
214
+ getAllVariations(): Promise<IEvalDetail<string>[]>;
215
+ /**
216
+ * Shuts down the client and releases any resources it is using.
217
+ *
218
+ * @returns A promise that resolves when the client has been shut down.
219
+ */
220
+ close(): Promise<void>;
221
+ /**
222
+ * Tracks that an application-defined event occurred, and provides an additional numeric value for custom metrics.
223
+ *
224
+ * @param eventName
225
+ * the name of the event.
226
+ * @param metricValue
227
+ * a numeric value used by the FeatBit experimentation feature in custom numeric metrics, the default value is 1 if not provided.
228
+ */
229
+ track(eventName: string, metricValue?: number | undefined): void;
230
+ /**
231
+ * Tells the client that all pending events (if any) should be delivered as soon as possible.
232
+ *
233
+ * @param callback
234
+ * Will be called when the flush operation is complete. If the flush fails, the callback will be called with false.
235
+ *
236
+ * @returns A promise that resolves when the client has been shut down.
237
+ */
238
+ flush(callback?: (res: boolean) => void): Promise<boolean>;
239
+ }
240
+ //# sourceMappingURL=IFbClientCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFbClientCore.d.ts","sourceRoot":"","sources":["../../src/IFbClientCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAE5B;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhD;;;;;;;;;;;;;OAaG;IACH,aAAa,CACX,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC;IAEX;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CACjB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GACpB,WAAW,CAAC,OAAO,CAAC,CAAC;IAExB;;;;;;;;;;;;;OAaG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC;IAEV;;;;;;;;;;;;;;OAcG;IACH,qBAAqB,CACnB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;;;;;;;;;;OAaG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC;IAEV;;;;;;;;;;;;;;OAcG;IACH,qBAAqB,CACnB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;;;;;;;;;;OAaG;IACH,aAAa,CACX,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,GAAG,GAChB,GAAG,CAAC;IAEP;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CACjB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,GAAG,GAChB,WAAW,CAAC,GAAG,CAAC,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,SAAS,CACP,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC;IAEV;;;;;;;;;;;;;;OAcG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CAAC,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC,GACvD,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;;OAKG;IACH,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnD;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;IAEhE;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IFbClientCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFbClientCore.js","sourceRoot":"","sources":["../../src/IFbClientCore.ts"],"names":[],"mappings":""}