@featbit/js-client-sdk 2.0.1 → 3.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 (564) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +162 -150
  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 +56 -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 +84 -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 +20 -0
  192. package/dist/esm/index.d.ts.map +1 -0
  193. package/dist/esm/index.js +36 -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 +63 -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 +73 -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 +110 -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 +9 -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 +47 -0
  318. package/dist/esm/platform/browser/FbClient.js.map +1 -0
  319. package/dist/esm/platform/browser/LocalStorageStore.d.ts +26 -0
  320. package/dist/esm/platform/browser/LocalStorageStore.d.ts.map +1 -0
  321. package/dist/esm/platform/browser/LocalStorageStore.js +122 -0
  322. package/dist/esm/platform/browser/LocalStorageStore.js.map +1 -0
  323. package/dist/esm/platform/index.d.ts +5 -0
  324. package/dist/esm/platform/index.d.ts.map +1 -0
  325. package/dist/esm/platform/index.js +21 -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/DataKinds.d.ts +5 -0
  332. package/dist/esm/store/DataKinds.d.ts.map +1 -0
  333. package/dist/esm/store/DataKinds.js +9 -0
  334. package/dist/esm/store/DataKinds.js.map +1 -0
  335. package/dist/esm/store/IDataSourceUpdates.d.ts +48 -0
  336. package/dist/esm/store/IDataSourceUpdates.d.ts.map +1 -0
  337. package/dist/esm/store/IDataSourceUpdates.js +3 -0
  338. package/dist/esm/store/IDataSourceUpdates.js.map +1 -0
  339. package/dist/esm/store/InMemoryStore.d.ts +24 -0
  340. package/dist/esm/store/InMemoryStore.d.ts.map +1 -0
  341. package/dist/esm/store/InMemoryStore.js +96 -0
  342. package/dist/esm/store/InMemoryStore.js.map +1 -0
  343. package/dist/esm/store/index.d.ts +6 -0
  344. package/dist/esm/store/index.d.ts.map +1 -0
  345. package/dist/esm/store/index.js +22 -0
  346. package/dist/esm/store/index.js.map +1 -0
  347. package/dist/esm/store/serialization.d.ts +23 -0
  348. package/dist/esm/store/serialization.d.ts.map +1 -0
  349. package/dist/esm/store/serialization.js +37 -0
  350. package/dist/esm/store/serialization.js.map +1 -0
  351. package/dist/esm/store/store.d.ts +30 -0
  352. package/dist/esm/store/store.d.ts.map +1 -0
  353. package/dist/esm/store/store.js +6 -0
  354. package/dist/esm/store/store.js.map +1 -0
  355. package/dist/esm/utils/Emits.d.ts +30 -0
  356. package/dist/esm/utils/Emits.d.ts.map +1 -0
  357. package/dist/esm/utils/Emits.js +64 -0
  358. package/dist/esm/utils/Emits.js.map +1 -0
  359. package/dist/esm/utils/EventEmitter.d.ts +22 -0
  360. package/dist/esm/utils/EventEmitter.d.ts.map +1 -0
  361. package/dist/esm/utils/EventEmitter.js +108 -0
  362. package/dist/esm/utils/EventEmitter.js.map +1 -0
  363. package/dist/esm/utils/IEventEmitter.d.ts +16 -0
  364. package/dist/esm/utils/IEventEmitter.d.ts.map +1 -0
  365. package/dist/esm/utils/IEventEmitter.js +3 -0
  366. package/dist/esm/utils/IEventEmitter.js.map +1 -0
  367. package/dist/esm/utils/Regex.d.ts +7 -0
  368. package/dist/esm/utils/Regex.d.ts.map +1 -0
  369. package/dist/esm/utils/Regex.js +22 -0
  370. package/dist/esm/utils/Regex.js.map +1 -0
  371. package/dist/esm/utils/ValueConverters.d.ts +13 -0
  372. package/dist/esm/utils/ValueConverters.d.ts.map +1 -0
  373. package/dist/esm/utils/ValueConverters.js +46 -0
  374. package/dist/esm/utils/ValueConverters.js.map +1 -0
  375. package/dist/esm/utils/VoidFunction.d.ts +2 -0
  376. package/dist/esm/utils/VoidFunction.d.ts.map +1 -0
  377. package/dist/esm/utils/VoidFunction.js +3 -0
  378. package/dist/esm/utils/VoidFunction.js.map +1 -0
  379. package/dist/esm/utils/canonicalizeUri.d.ts +2 -0
  380. package/dist/esm/utils/canonicalizeUri.d.ts.map +1 -0
  381. package/dist/esm/utils/canonicalizeUri.js +9 -0
  382. package/dist/esm/utils/canonicalizeUri.js.map +1 -0
  383. package/dist/esm/utils/http.d.ts +12 -0
  384. package/dist/esm/utils/http.d.ts.map +1 -0
  385. package/dist/esm/utils/http.js +26 -0
  386. package/dist/esm/utils/http.js.map +1 -0
  387. package/dist/esm/utils/index.d.ts +5 -0
  388. package/dist/esm/utils/index.d.ts.map +1 -0
  389. package/dist/esm/utils/index.js +21 -0
  390. package/dist/esm/utils/index.js.map +1 -0
  391. package/dist/esm/utils/isNullOrUndefined.d.ts +2 -0
  392. package/dist/esm/utils/isNullOrUndefined.d.ts.map +1 -0
  393. package/dist/esm/utils/isNullOrUndefined.js +8 -0
  394. package/dist/esm/utils/isNullOrUndefined.js.map +1 -0
  395. package/dist/esm/utils/serializeUser.d.ts +3 -0
  396. package/dist/esm/utils/serializeUser.d.ts.map +1 -0
  397. package/dist/esm/utils/serializeUser.js +24 -0
  398. package/dist/esm/utils/serializeUser.js.map +1 -0
  399. package/dist/esm/utils/sleep.d.ts +3 -0
  400. package/dist/esm/utils/sleep.d.ts.map +1 -0
  401. package/dist/esm/utils/sleep.js +18 -0
  402. package/dist/esm/utils/sleep.js.map +1 -0
  403. package/dist/esm/version.d.ts +3 -0
  404. package/dist/esm/version.d.ts.map +1 -0
  405. package/dist/esm/version.js +6 -0
  406. package/dist/esm/version.js.map +1 -0
  407. package/dist/umd/featbit-js-client-sdk-3.0.0.js +2 -0
  408. package/dist/umd/featbit-js-client-sdk-3.0.0.js.map +1 -0
  409. package/dist/umd/featbit-js-client-sdk.js +2 -0
  410. package/dist/umd/featbit-js-client-sdk.js.map +1 -0
  411. package/package.json +22 -24
  412. package/src/Configuration.ts +234 -0
  413. package/src/Context.ts +62 -0
  414. package/src/FbClientBuilder.ts +161 -0
  415. package/src/FbClientCore.ts +389 -0
  416. package/src/IContextProperty.ts +4 -0
  417. package/src/IDataKind.ts +11 -0
  418. package/src/IFbClient.ts +30 -0
  419. package/src/IFbClientCore.ts +291 -0
  420. package/src/IVersionedData.ts +18 -0
  421. package/src/bootstrap/IBootstrapProvider.ts +5 -0
  422. package/src/bootstrap/JsonBootstrapProvider.ts +35 -0
  423. package/src/bootstrap/NullBootstrapProvider.ts +21 -0
  424. package/src/bootstrap/index.ts +3 -0
  425. package/src/constants.ts +2 -6
  426. package/src/data-sources/DataSourceUpdates.ts +93 -0
  427. package/src/data-sources/createStreamListeners.ts +66 -0
  428. package/src/data-sources/index.ts +2 -0
  429. package/src/data-sync/DataSyncMode.ts +4 -0
  430. package/src/data-sync/IDataSynchronizer.ts +15 -0
  431. package/src/data-sync/IRequestor.ts +10 -0
  432. package/src/data-sync/NullDataSynchronizer.ts +15 -0
  433. package/src/data-sync/PollingDataSynchronizer.ts +111 -0
  434. package/src/data-sync/Requestor.ts +61 -0
  435. package/src/data-sync/WebSocketDataSynchronizer.ts +74 -0
  436. package/src/data-sync/index.ts +9 -0
  437. package/src/data-sync/types.ts +20 -0
  438. package/src/data-sync/utils.ts +32 -0
  439. package/src/errors.ts +41 -0
  440. package/src/evaluation/EvalResult.ts +36 -0
  441. package/src/evaluation/Evaluator.ts +27 -0
  442. package/src/evaluation/IEvalDetail.ts +24 -0
  443. package/src/evaluation/ReasonKinds.ts +10 -0
  444. package/src/evaluation/data/IFlag.ts +29 -0
  445. package/src/evaluation/data/index.ts +1 -0
  446. package/src/evaluation/index.ts +5 -0
  447. package/src/events/DefaultEventProcessor.ts +84 -0
  448. package/src/events/DefaultEventQueue.ts +50 -0
  449. package/src/events/DefaultEventSender.ts +75 -0
  450. package/src/events/DefaultEventSerializer.ts +12 -0
  451. package/src/events/EventDispatcher.ts +128 -0
  452. package/src/events/EventSerializer.ts +5 -0
  453. package/src/events/IEventProcessor.ts +9 -0
  454. package/src/events/IEventQueue.ts +17 -0
  455. package/src/events/IEventSender.ts +14 -0
  456. package/src/events/NullEventProcessor.ts +16 -0
  457. package/src/events/event.ts +130 -0
  458. package/src/events/index.ts +11 -0
  459. package/src/index.ts +19 -4
  460. package/src/integrations/TestLogger.ts +25 -0
  461. package/src/integrations/index.ts +2 -0
  462. package/src/integrations/test_data/FlagBuilder.ts +60 -0
  463. package/src/integrations/test_data/TestData.ts +58 -0
  464. package/src/integrations/test_data/TestDataSynchronizer.ts +50 -0
  465. package/src/integrations/test_data/index.ts +5 -0
  466. package/src/logging/BasicLogger.ts +108 -0
  467. package/src/logging/IBasicLoggerOptions.ts +46 -0
  468. package/src/logging/ILogger.ts +49 -0
  469. package/src/logging/LogLevel.ts +9 -0
  470. package/src/logging/SafeLogger.ts +70 -0
  471. package/src/logging/format.ts +154 -0
  472. package/src/logging/index.ts +6 -0
  473. package/src/options/ClientContext.ts +40 -0
  474. package/src/options/IClientContext.ts +54 -0
  475. package/src/options/IOptions.ts +124 -0
  476. package/src/options/IUser.ts +7 -0
  477. package/src/options/IValidatedOptions.ts +30 -0
  478. package/src/options/OptionMessages.ts +36 -0
  479. package/src/options/UserBuilder.ts +36 -0
  480. package/src/options/Validators.ts +301 -0
  481. package/src/options/index.ts +8 -0
  482. package/src/platform/IInfo.ts +82 -0
  483. package/src/platform/IPlatform.ts +21 -0
  484. package/src/platform/IStore.ts +119 -0
  485. package/src/platform/IWebSocket.ts +23 -0
  486. package/src/platform/browser/BrowserInfo.ts +25 -0
  487. package/src/platform/browser/BrowserPlatform.ts +20 -0
  488. package/src/platform/browser/BrowserRequests.ts +7 -0
  489. package/src/platform/browser/BrowserWebSocket.ts +143 -0
  490. package/src/platform/browser/FbClient.ts +59 -0
  491. package/src/platform/browser/LocalStorageStore.ts +153 -0
  492. package/src/platform/index.ts +4 -0
  493. package/src/platform/requests.ts +77 -0
  494. package/src/store/DataKinds.ts +7 -0
  495. package/src/store/IDataSourceUpdates.ts +49 -0
  496. package/src/store/InMemoryStore.ts +115 -0
  497. package/src/store/index.ts +5 -0
  498. package/src/store/serialization.ts +52 -0
  499. package/src/store/store.ts +38 -0
  500. package/src/utils/Emits.ts +76 -0
  501. package/src/utils/EventEmitter.ts +129 -0
  502. package/src/utils/IEventEmitter.ts +15 -0
  503. package/src/utils/Regex.ts +22 -0
  504. package/src/utils/ValueConverters.ts +56 -0
  505. package/src/utils/VoidFunction.ts +1 -0
  506. package/src/utils/canonicalizeUri.ts +4 -0
  507. package/src/utils/http.ts +40 -0
  508. package/src/utils/index.ts +4 -0
  509. package/src/utils/isNullOrUndefined.ts +3 -0
  510. package/src/utils/serializeUser.ts +28 -0
  511. package/src/utils/sleep.ts +6 -0
  512. package/src/version.ts +1 -0
  513. package/esm/constants.d.ts +0 -6
  514. package/esm/constants.js +0 -7
  515. package/esm/constants.js.map +0 -1
  516. package/esm/events.d.ts +0 -14
  517. package/esm/events.js +0 -27
  518. package/esm/events.js.map +0 -1
  519. package/esm/featbit.d.ts +0 -34
  520. package/esm/featbit.js +0 -382
  521. package/esm/featbit.js.map +0 -1
  522. package/esm/index.d.ts +0 -4
  523. package/esm/index.js +0 -5
  524. package/esm/index.js.map +0 -1
  525. package/esm/logger.d.ts +0 -4
  526. package/esm/logger.js +0 -20
  527. package/esm/logger.js.map +0 -1
  528. package/esm/network.service.d.ts +0 -27
  529. package/esm/network.service.js +0 -288
  530. package/esm/network.service.js.map +0 -1
  531. package/esm/optionMessages.d.ts +0 -5
  532. package/esm/optionMessages.js +0 -16
  533. package/esm/optionMessages.js.map +0 -1
  534. package/esm/queue.d.ts +0 -8
  535. package/esm/queue.js +0 -35
  536. package/esm/queue.js.map +0 -1
  537. package/esm/store.d.ts +0 -20
  538. package/esm/store.js +0 -143
  539. package/esm/store.js.map +0 -1
  540. package/esm/throttleutil.d.ts +0 -9
  541. package/esm/throttleutil.js +0 -133
  542. package/esm/throttleutil.js.map +0 -1
  543. package/esm/types.d.ts +0 -94
  544. package/esm/types.js +0 -24
  545. package/esm/types.js.map +0 -1
  546. package/esm/umd.d.ts +0 -2
  547. package/esm/utils.d.ts +0 -11
  548. package/esm/utils.js +0 -142
  549. package/esm/utils.js.map +0 -1
  550. package/src/events.ts +0 -29
  551. package/src/featbit.ts +0 -343
  552. package/src/logger.ts +0 -13
  553. package/src/network.service.ts +0 -223
  554. package/src/optionMessages.ts +0 -13
  555. package/src/queue.ts +0 -23
  556. package/src/store.ts +0 -169
  557. package/src/throttleutil.ts +0 -72
  558. package/src/types.ts +0 -113
  559. package/src/umd.ts +0 -15
  560. package/src/utils.ts +0 -173
  561. package/umd/featbit-js-client-sdk-2.0.1.js +0 -2
  562. package/umd/featbit-js-client-sdk-2.0.1.js.map +0 -1
  563. package/umd/featbit-js-client-sdk.js +0 -2
  564. package/umd/featbit-js-client-sdk.js.map +0 -1
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Interface for type validation.
3
+ */
4
+ export interface TypeValidator {
5
+ messages?: string[];
6
+ is(u: unknown): boolean;
7
+ getType(): string;
8
+ }
9
+ /**
10
+ * Validate a factory or instance.
11
+ */
12
+ export declare class FactoryOrInstance implements TypeValidator {
13
+ is(factoryOrInstance: unknown): boolean;
14
+ getType(): string;
15
+ }
16
+ /**
17
+ * Validate a basic type.
18
+ */
19
+ export declare class Type<T> implements TypeValidator {
20
+ private typeName;
21
+ protected typeOf: string;
22
+ constructor(typeName: string, example: T);
23
+ is(u: unknown): u is T;
24
+ getType(): string;
25
+ }
26
+ /**
27
+ * Validate an array of the specified type.
28
+ *
29
+ * This does not validate instances of types. All class instances
30
+ * of classes will simply objects.
31
+ */
32
+ export declare class TypeArray<T> implements TypeValidator {
33
+ private typeName;
34
+ protected typeOf: string;
35
+ constructor(typeName: string, example: T);
36
+ is(u: unknown): u is T;
37
+ getType(): string;
38
+ }
39
+ /**
40
+ * Validate a value is a number and is greater or eval than a minimum.
41
+ */
42
+ export declare class NumberWithMinimum extends Type<number> {
43
+ readonly min: number;
44
+ constructor(min: number);
45
+ is(u: unknown): u is number;
46
+ }
47
+ /**
48
+ * Validate a value is a string and it matches the given expression.
49
+ */
50
+ export declare class StringMatchingRegex extends Type<string> {
51
+ readonly expression: RegExp;
52
+ constructor(expression: RegExp);
53
+ is(u: unknown): u is string;
54
+ }
55
+ /**
56
+ * Validate a value is a function.
57
+ */
58
+ export declare class Function implements TypeValidator {
59
+ is(u: unknown): u is (...args: any[]) => void;
60
+ getType(): string;
61
+ }
62
+ export declare class NullableBoolean implements TypeValidator {
63
+ is(u: unknown): boolean;
64
+ getType(): string;
65
+ }
66
+ export declare class BootstrapValidator implements TypeValidator {
67
+ messages: string[];
68
+ is(u: unknown): boolean;
69
+ getType(): string;
70
+ }
71
+ export declare class UserValidator implements TypeValidator {
72
+ messages: string[];
73
+ is(u: unknown): boolean;
74
+ getType(): string;
75
+ }
76
+ /**
77
+ * Validate a value is a date. Values which are numbers are treated as dates and any string
78
+ * which if compliant with `time.RFC3339Nano` is a date.
79
+ */
80
+ export declare class DateValidator implements TypeValidator {
81
+ is(u: unknown): boolean;
82
+ getType(): string;
83
+ }
84
+ /**
85
+ * Validates that a string is a valid kind.
86
+ */
87
+ export declare class KindValidator extends StringMatchingRegex {
88
+ constructor();
89
+ is(u: unknown): u is string;
90
+ }
91
+ /**
92
+ * A set of standard type validators.
93
+ */
94
+ export declare class TypeValidators {
95
+ static readonly String: Type<string>;
96
+ static readonly Number: Type<number>;
97
+ static readonly ObjectOrFactory: FactoryOrInstance;
98
+ static readonly Object: Type<object>;
99
+ static readonly StringArray: TypeArray<string>;
100
+ static readonly Boolean: Type<boolean>;
101
+ static readonly User: Type<object>;
102
+ static readonly Bootstrap: Type<object>;
103
+ static readonly Function: Function;
104
+ static createTypeArray<T>(typeName: string, example: T): TypeArray<T>;
105
+ static numberWithMin(min: number): NumberWithMinimum;
106
+ static stringMatchingRegex(expression: RegExp): StringMatchingRegex;
107
+ static readonly Date: DateValidator;
108
+ static readonly Kind: KindValidator;
109
+ static readonly NullableBoolean: NullableBoolean;
110
+ }
111
+ //# sourceMappingURL=Validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validators.d.ts","sourceRoot":"","sources":["../../../src/options/Validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ /* eslint-disable class-methods-use-this */
3
+ /* eslint-disable max-classes-per-file */
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TypeValidators = exports.KindValidator = exports.DateValidator = exports.UserValidator = exports.BootstrapValidator = exports.NullableBoolean = exports.Function = exports.StringMatchingRegex = exports.NumberWithMinimum = exports.TypeArray = exports.Type = exports.FactoryOrInstance = void 0;
9
+ // The classes here are static, but needs to be instantiated to
10
+ // support the generic functionality. Which is why we do not care about using
11
+ // `this`
12
+ // These validators are also of trivial complexity, so we are allowing more than
13
+ // one per file.
14
+ const OptionMessages_1 = __importDefault(require("./OptionMessages"));
15
+ /**
16
+ * Validate a factory or instance.
17
+ */
18
+ class FactoryOrInstance {
19
+ is(factoryOrInstance) {
20
+ if (Array.isArray(factoryOrInstance)) {
21
+ return false;
22
+ }
23
+ const anyFactory = factoryOrInstance;
24
+ const typeOfFactory = typeof anyFactory;
25
+ return typeOfFactory === 'function' || typeOfFactory === 'object';
26
+ }
27
+ getType() {
28
+ return 'factory method or object';
29
+ }
30
+ }
31
+ exports.FactoryOrInstance = FactoryOrInstance;
32
+ /**
33
+ * Validate a basic type.
34
+ */
35
+ class Type {
36
+ constructor(typeName, example) {
37
+ this.typeName = typeName;
38
+ this.typeOf = typeof example;
39
+ }
40
+ is(u) {
41
+ if (Array.isArray(u)) {
42
+ return false;
43
+ }
44
+ return typeof u === this.typeOf;
45
+ }
46
+ getType() {
47
+ return this.typeName;
48
+ }
49
+ }
50
+ exports.Type = Type;
51
+ /**
52
+ * Validate an array of the specified type.
53
+ *
54
+ * This does not validate instances of types. All class instances
55
+ * of classes will simply objects.
56
+ */
57
+ class TypeArray {
58
+ constructor(typeName, example) {
59
+ this.typeName = typeName;
60
+ this.typeOf = typeof example;
61
+ }
62
+ is(u) {
63
+ if (Array.isArray(u)) {
64
+ if (u.length > 0) {
65
+ return u.every((val) => typeof val === this.typeOf);
66
+ }
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ getType() {
72
+ return this.typeName;
73
+ }
74
+ }
75
+ exports.TypeArray = TypeArray;
76
+ /**
77
+ * Validate a value is a number and is greater or eval than a minimum.
78
+ */
79
+ class NumberWithMinimum extends Type {
80
+ constructor(min) {
81
+ super(`number with minimum value of ${min}`, 0);
82
+ this.min = min;
83
+ }
84
+ is(u) {
85
+ return typeof u === this.typeOf && u >= this.min;
86
+ }
87
+ }
88
+ exports.NumberWithMinimum = NumberWithMinimum;
89
+ /**
90
+ * Validate a value is a string and it matches the given expression.
91
+ */
92
+ class StringMatchingRegex extends Type {
93
+ constructor(expression) {
94
+ super(`string matching ${expression}`, '');
95
+ this.expression = expression;
96
+ }
97
+ is(u) {
98
+ return !!u.match(this.expression);
99
+ }
100
+ }
101
+ exports.StringMatchingRegex = StringMatchingRegex;
102
+ /**
103
+ * Validate a value is a function.
104
+ */
105
+ class Function {
106
+ is(u) {
107
+ // We cannot inspect the parameters and there isn't really
108
+ // a generic function type we can instantiate.
109
+ // So the type guard is here just to make TS comfortable
110
+ // calling something after using this guard.
111
+ return typeof u === 'function';
112
+ }
113
+ getType() {
114
+ return 'function';
115
+ }
116
+ }
117
+ exports.Function = Function;
118
+ class NullableBoolean {
119
+ is(u) {
120
+ return typeof u === 'boolean' || typeof u === 'undefined' || u === null;
121
+ }
122
+ getType() {
123
+ return 'boolean | undefined | null';
124
+ }
125
+ }
126
+ exports.NullableBoolean = NullableBoolean;
127
+ class BootstrapValidator {
128
+ constructor() {
129
+ this.messages = [];
130
+ }
131
+ is(u) {
132
+ if (typeof u !== 'object' || u === null) {
133
+ this.messages.push(OptionMessages_1.default.invalidOptionValue('bootstrap'));
134
+ return false;
135
+ }
136
+ try {
137
+ const bootstrap = u;
138
+ for (let flag of bootstrap) {
139
+ const hasMandatoryKeys = ['id', 'variation'].every((key) => Object.keys(flag).includes(key));
140
+ const keys = Object.keys(flag);
141
+ if (keys.includes('id')) {
142
+ this.messages.push(OptionMessages_1.default.missingKeyInBootstrapValue('id'));
143
+ }
144
+ if (keys.includes('variation')) {
145
+ this.messages.push(OptionMessages_1.default.missingKeyInBootstrapValue('variation'));
146
+ }
147
+ if (this.messages.length > 0) {
148
+ return false;
149
+ }
150
+ }
151
+ }
152
+ catch (_) {
153
+ this.messages.push(OptionMessages_1.default.wrongOptionType('bootstrap', this.getType(), typeof u));
154
+ return false;
155
+ }
156
+ return true;
157
+ }
158
+ getType() {
159
+ return 'IFlagBase[]';
160
+ }
161
+ }
162
+ exports.BootstrapValidator = BootstrapValidator;
163
+ class UserValidator {
164
+ constructor() {
165
+ this.messages = [];
166
+ }
167
+ is(u) {
168
+ if (typeof u !== 'object' || u === null) {
169
+ this.messages.push(OptionMessages_1.default.mandatory('user'));
170
+ return false;
171
+ }
172
+ const user = u;
173
+ if (typeof user.keyId !== 'string' || user.keyId.trim() === '') {
174
+ this.messages.push(OptionMessages_1.default.mandatory('user.keyId'));
175
+ return false;
176
+ }
177
+ if (typeof user.name !== 'string' || user.name.trim() === '') {
178
+ this.messages.push(OptionMessages_1.default.mandatory('user.name'));
179
+ return false;
180
+ }
181
+ return true;
182
+ }
183
+ getType() {
184
+ return 'user';
185
+ }
186
+ }
187
+ exports.UserValidator = UserValidator;
188
+ // Our reference SDK, Go, parses date/time strings with the time.RFC3339Nano format.
189
+ // This regex should match strings that are valid in that format, and no others.
190
+ // Acceptable:
191
+ // 2019-10-31T23:59:59Z, 2019-10-31T23:59:59.100Z,
192
+ // 2019-10-31T23:59:59-07, 2019-10-31T23:59:59-07:00, etc.
193
+ // Unacceptable: no "T", no time zone designation
194
+ const DATE_REGEX = /^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d\d*)?(Z|[-+]\d\d(:\d\d)?)/;
195
+ /**
196
+ * Validate a value is a date. Values which are numbers are treated as dates and any string
197
+ * which if compliant with `time.RFC3339Nano` is a date.
198
+ */
199
+ class DateValidator {
200
+ is(u) {
201
+ return typeof u === 'number' || (typeof u === 'string' && DATE_REGEX.test(u));
202
+ }
203
+ getType() {
204
+ return 'date';
205
+ }
206
+ }
207
+ exports.DateValidator = DateValidator;
208
+ /**
209
+ * Validates that a string is a valid kind.
210
+ */
211
+ class KindValidator extends StringMatchingRegex {
212
+ constructor() {
213
+ super(/^(\w|\.|-)+$/);
214
+ }
215
+ is(u) {
216
+ return super.is(u) && u !== 'kind';
217
+ }
218
+ }
219
+ exports.KindValidator = KindValidator;
220
+ /**
221
+ * A set of standard type validators.
222
+ */
223
+ class TypeValidators {
224
+ static createTypeArray(typeName, example) {
225
+ return new TypeArray(typeName, example);
226
+ }
227
+ static numberWithMin(min) {
228
+ return new NumberWithMinimum(min);
229
+ }
230
+ static stringMatchingRegex(expression) {
231
+ return new StringMatchingRegex(expression);
232
+ }
233
+ }
234
+ exports.TypeValidators = TypeValidators;
235
+ TypeValidators.String = new Type('string', '');
236
+ TypeValidators.Number = new Type('number', 0);
237
+ TypeValidators.ObjectOrFactory = new FactoryOrInstance();
238
+ TypeValidators.Object = new Type('object', {});
239
+ TypeValidators.StringArray = new TypeArray('string[]', '');
240
+ TypeValidators.Boolean = new Type('boolean', true);
241
+ TypeValidators.User = new Type('object', {});
242
+ TypeValidators.Bootstrap = new Type('object', {});
243
+ TypeValidators.Function = new Function();
244
+ TypeValidators.Date = new DateValidator();
245
+ TypeValidators.Kind = new KindValidator();
246
+ TypeValidators.NullableBoolean = new NullableBoolean();
247
+ //# sourceMappingURL=Validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validators.js","sourceRoot":"","sources":["../../../src/options/Validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export * from './ClientContext';
2
+ export * from './IClientContext';
3
+ export * from './IOptions';
4
+ export * from './IUser';
5
+ export * from './IValidatedOptions';
6
+ export * from './OptionMessages';
7
+ export * from './UserBuilder';
8
+ export * from './Validators';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ClientContext"), exports);
18
+ __exportStar(require("./IClientContext"), exports);
19
+ __exportStar(require("./IOptions"), exports);
20
+ __exportStar(require("./IUser"), exports);
21
+ __exportStar(require("./IValidatedOptions"), exports);
22
+ __exportStar(require("./OptionMessages"), exports);
23
+ __exportStar(require("./UserBuilder"), exports);
24
+ __exportStar(require("./Validators"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/options/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,mDAAiC;AACjC,6CAA2B;AAC3B,0CAAwB;AACxB,sDAAoC;AACpC,mDAAiC;AACjC,gDAA8B;AAC9B,+CAA6B"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Information about the platform of the SDK and the environment it is executing.
3
+ */
4
+ export interface IPlatformData {
5
+ /**
6
+ * Information about the OS on which the SDK is running. Should be populated
7
+ * when available. Not all platforms will make this data accessible.
8
+ */
9
+ os?: {
10
+ /**
11
+ * The architecture. Ideally at runtime, but may be build time if that is
12
+ * a constraint.
13
+ */
14
+ arch?: string;
15
+ /**
16
+ * The name of the OS. "MacOS", "Windows", or "Linux". If not one of those,
17
+ * then use the value provided by the OS.
18
+ */
19
+ name?: string;
20
+ /** The version of the OS. */
21
+ version?: string;
22
+ };
23
+ /**
24
+ * The name of the platform the SDK is running on. For instance 'Node'.
25
+ */
26
+ name?: string;
27
+ /**
28
+ * Any additional attributes associated with the platform.
29
+ */
30
+ additional?: Record<string, string>;
31
+ }
32
+ export interface ISdkData {
33
+ /**
34
+ * The name of the SDK. e.g. "browser-server-sdk"
35
+ */
36
+ name?: string;
37
+ /**
38
+ * The version of the SDK.
39
+ */
40
+ version?: string;
41
+ /**
42
+ * If this is a top-level (not a wrapper) SDK this will be used to create the user agent string.
43
+ * It will take the form 'userAgentBase/version`.
44
+ */
45
+ userAgentBase?: string;
46
+ /**
47
+ * Name of the wrapper SDK if present.
48
+ */
49
+ wrapperName?: string;
50
+ /**
51
+ * Version of the wrapper if present.
52
+ */
53
+ wrapperVersion?: string;
54
+ }
55
+ /**
56
+ * Interface for getting information about the SDK or the environment it is
57
+ * executing in.
58
+ */
59
+ export interface IInfo {
60
+ /**
61
+ * Get the app type
62
+ */
63
+ get appType(): string;
64
+ /**
65
+ * Get information about the platform.
66
+ */
67
+ platformData(): IPlatformData;
68
+ /**
69
+ * Get information about the SDK implementation.
70
+ */
71
+ sdkData(): ISdkData;
72
+ }
73
+ //# sourceMappingURL=IInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IInfo.d.ts","sourceRoot":"","sources":["../../../src/platform/IInfo.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,EAAE,CAAC,EAAE;QACH;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd,6BAA6B;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,IAAI,aAAa,CAAC;IAE9B;;OAEG;IACH,OAAO,IAAI,QAAQ,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IInfo.js","sourceRoot":"","sources":["../../../src/platform/IInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { IRequests } from "./requests";
2
+ import { IInfo } from "./IInfo";
3
+ import { IWebSocketWithEvents } from "./IWebSocket";
4
+ export interface IPlatform {
5
+ /**
6
+ * The interface for getting information about the platform and the execution
7
+ * environment.
8
+ */
9
+ info: IInfo;
10
+ /**
11
+ * The interface for performing http/https requests.
12
+ */
13
+ requests: IRequests;
14
+ /**
15
+ * The interface for performing websocket connections.
16
+ */
17
+ webSocket: IWebSocketWithEvents;
18
+ }
19
+ //# sourceMappingURL=IPlatform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPlatform.d.ts","sourceRoot":"","sources":["../../../src/platform/IPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,oBAAoB,CAAC;CACjC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IPlatform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPlatform.js","sourceRoot":"","sources":["../../../src/platform/IPlatform.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ import { IDataKind } from "../IDataKind";
2
+ import { IKeyedStoreItem, IStoreDataStorage, IStoreItem, IStoreKindData } from "../store/store";
3
+ import { IUser } from "../options/IUser";
4
+ /**
5
+ * Interface for a feature store component.
6
+ *
7
+ * The feature store is what the client uses to store feature flag data that has been received
8
+ * from FeatBit. By default, it uses an in-memory implementation; database integrations are
9
+ * also available. Read the [SDK features guide](xxx).
10
+ * You will not need to use this interface unless you are writing your own implementation.
11
+ *
12
+ * Feature store methods can and should call their callbacks directly whenever possible, rather
13
+ * than deferring them with setImmediate() or process.nextTick(). This means that if for any
14
+ * reason you are updating or querying a feature store directly in your application code (which
15
+ * is not part of normal use of the SDK) you should be aware that the callback may be executed
16
+ * immediately.
17
+ */
18
+ export interface IStore {
19
+ /**
20
+ * Set the current user of the store.
21
+ *
22
+ * @param user
23
+ * The current user. The actual type of this parameter is
24
+ * {@link IUser}.
25
+ */
26
+ identify(user: IUser): void;
27
+ /**
28
+ * Get the current user of the store.
29
+ */
30
+ user: IUser;
31
+ /**
32
+ * Get an entity from the store.
33
+ *
34
+ * The store should treat any entity with the property `deleted: true` as "not found".
35
+ *
36
+ * @param kind
37
+ * The type of data to be accessed. The store should not make any assumptions about the format
38
+ * of the data, but just return a JSON object. The actual type of this parameter is
39
+ * {@link DataKind}.
40
+ *
41
+ * @param key
42
+ * The unique key of the entity within the specified collection.
43
+ */
44
+ get(kind: IDataKind, key: string): IStoreItem | null;
45
+ /**
46
+ * Get all entities from a collection.
47
+ *
48
+ * The store should filter out any entities with the property `deleted: true`.
49
+ *
50
+ * @param kind
51
+ * The type of data to be accessed. The store should not make any assumptions about the format
52
+ * of the data, but just return an object in which each key is the `key` property of an entity
53
+ * and the value is the entity. The actual type of this parameter is
54
+ * {@link IDataKind}.
55
+ */
56
+ all(kind: IDataKind): [IStoreKindData, number];
57
+ /**
58
+ * Initialize the store, overwriting any existing data.
59
+ *
60
+ * @param allData
61
+ * An object in which each key is the "namespace" of a collection (e.g. `"features"`) and
62
+ * the value is an object that maps keys to entities. The actual type of this parameter is
63
+ * `interfaces.FullDataSet<VersionedData>`.
64
+ *
65
+ * @param callback
66
+ * Will be called when the store has been initialized.
67
+ */
68
+ init(allData: IStoreDataStorage, callback: () => void): void;
69
+ /**
70
+ * Add an entity or update an existing entity.
71
+ *
72
+ * @param kind
73
+ * The type of data to be accessed. The actual type of this parameter is
74
+ * {@link IDataKind}.
75
+ *
76
+ * @param data
77
+ * The contents of the entity, as an object that can be converted to JSON. The store
78
+ * should check the `version` property of this object, and should *not* overwrite any
79
+ * existing data if the existing `version` is greater than or equal to that value.
80
+ * The actual type of this parameter is {@link IKeyedStoreItem}.
81
+ *
82
+ * @param callback
83
+ * Will be called after the upsert operation is complete.
84
+ */
85
+ upsert(kind: IDataKind, data: IKeyedStoreItem, callback: () => void): void;
86
+ /**
87
+ * Tests whether the store is initialized.
88
+ *
89
+ * "Initialized" means that the store has been populated with data, either by the client
90
+ * having called `init()` within this process, or by another process (if this is a shared
91
+ * database).
92
+ *
93
+ * @param callback
94
+ * Will be called back with the boolean result.
95
+ */
96
+ initialized(): boolean;
97
+ /**
98
+ * Releases any resources being used by the feature store.
99
+ */
100
+ close(): void;
101
+ /**
102
+ * Get a description of the store.
103
+ */
104
+ getDescription?(): string;
105
+ /**
106
+ * The current version of the store.
107
+ */
108
+ version: number;
109
+ }
110
+ //# sourceMappingURL=IStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStore.d.ts","sourceRoot":"","sources":["../../../src/platform/IStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IAEpD;;;;;;;;;;OAUG;IACH,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAE/C;;;;;;;;;;OAUG;IACH,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAE7D;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAE3E;;;;;;;;;OASG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,cAAc,CAAC,IAAI,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStore.js","sourceRoot":"","sources":["../../../src/platform/IStore.ts"],"names":[],"mappings":""}