@splitsoftware/splitio-commons 1.1.1-rc.0 → 1.2.1-rc.2

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 (269) hide show
  1. package/CHANGES.txt +1 -1
  2. package/cjs/evaluator/Engine.js +6 -6
  3. package/cjs/evaluator/combiners/and.js +1 -1
  4. package/cjs/evaluator/combiners/ifelseif.js +2 -2
  5. package/cjs/evaluator/condition/engineUtils.js +2 -2
  6. package/cjs/evaluator/condition/index.js +4 -4
  7. package/cjs/evaluator/index.js +5 -5
  8. package/cjs/evaluator/matchers/cont_all.js +1 -1
  9. package/cjs/evaluator/matchers/cont_any.js +1 -1
  10. package/cjs/evaluator/matchers/cont_str.js +1 -1
  11. package/cjs/evaluator/matchers/dependency.js +1 -1
  12. package/cjs/evaluator/matchers/eq_set.js +1 -1
  13. package/cjs/evaluator/matchers/ew.js +3 -3
  14. package/cjs/evaluator/matchers/part_of.js +1 -1
  15. package/cjs/evaluator/matchers/segment.js +1 -1
  16. package/cjs/evaluator/matchers/sw.js +1 -1
  17. package/cjs/evaluator/matchers/whitelist.js +1 -1
  18. package/cjs/evaluator/matchersTransform/index.js +12 -12
  19. package/cjs/evaluator/parser/index.js +6 -6
  20. package/cjs/evaluator/treatments/index.js +1 -1
  21. package/cjs/evaluator/value/index.js +1 -1
  22. package/cjs/evaluator/value/sanitize.js +4 -4
  23. package/cjs/integrations/browser.js +3 -3
  24. package/cjs/integrations/ga/GaToSplit.js +14 -14
  25. package/cjs/integrations/ga/GoogleAnalyticsToSplit.js +1 -1
  26. package/cjs/integrations/ga/SplitToGa.js +1 -1
  27. package/cjs/listeners/browser.js +1 -1
  28. package/cjs/listeners/node.js +1 -1
  29. package/cjs/logger/constants.js +3 -1
  30. package/cjs/logger/index.js +2 -2
  31. package/cjs/logger/messages/debug.js +1 -1
  32. package/cjs/logger/messages/error.js +1 -1
  33. package/cjs/logger/messages/info.js +4 -4
  34. package/cjs/logger/messages/warn.js +1 -1
  35. package/cjs/logger/sdkLogger.js +1 -1
  36. package/cjs/readiness/readinessManager.js +2 -2
  37. package/cjs/readiness/sdkReadinessManager.js +4 -4
  38. package/cjs/sdkClient/client.js +11 -10
  39. package/cjs/sdkClient/clientAttributesDecoration.js +4 -4
  40. package/cjs/sdkClient/clientCS.js +4 -3
  41. package/cjs/sdkClient/clientInputValidation.js +14 -14
  42. package/cjs/sdkClient/sdkClient.js +3 -3
  43. package/cjs/sdkClient/sdkClientMethod.js +1 -1
  44. package/cjs/sdkClient/sdkClientMethodCS.js +6 -6
  45. package/cjs/sdkClient/sdkClientMethodCSWithTT.js +8 -8
  46. package/cjs/sdkFactory/index.js +8 -8
  47. package/cjs/sdkManager/index.js +11 -11
  48. package/cjs/services/splitApi.js +3 -2
  49. package/cjs/services/splitHttpClient.js +3 -3
  50. package/cjs/storages/KeyBuilder.js +2 -2
  51. package/cjs/storages/KeyBuilderCS.js +2 -2
  52. package/cjs/storages/KeyBuilderSS.js +1 -1
  53. package/cjs/storages/findLatencyIndex.js +1 -1
  54. package/cjs/storages/inLocalStorage/MySegmentsCacheInLocal.js +1 -1
  55. package/cjs/storages/inLocalStorage/SplitsCacheInLocal.js +12 -12
  56. package/cjs/storages/inLocalStorage/index.js +3 -3
  57. package/cjs/storages/inMemory/AttributesCacheInMemory.js +1 -1
  58. package/cjs/storages/inMemory/ImpressionCountsCacheInMemory.js +1 -1
  59. package/cjs/storages/inMemory/LatenciesCacheInMemory.js +1 -1
  60. package/cjs/storages/inMemory/MySegmentsCacheInMemory.js +1 -1
  61. package/cjs/storages/inMemory/SegmentsCacheInMemory.js +2 -2
  62. package/cjs/storages/inMemory/SplitsCacheInMemory.js +5 -5
  63. package/cjs/storages/inRedis/LatenciesCacheInRedis.js +1 -1
  64. package/cjs/storages/inRedis/RedisAdapter.js +16 -10
  65. package/cjs/storages/inRedis/SegmentsCacheInRedis.js +1 -1
  66. package/cjs/storages/inRedis/SplitsCacheInRedis.js +3 -3
  67. package/cjs/storages/inRedis/index.js +1 -1
  68. package/cjs/storages/pluggable/SegmentsCachePluggable.js +1 -1
  69. package/cjs/storages/pluggable/SplitsCachePluggable.js +3 -3
  70. package/cjs/storages/pluggable/inMemoryWrapper.js +4 -4
  71. package/cjs/storages/pluggable/index.js +4 -4
  72. package/cjs/sync/offline/LocalhostFromFile.js +1 -1
  73. package/cjs/sync/offline/LocalhostFromObject.js +1 -1
  74. package/cjs/sync/offline/splitsParser/parseCondition.js +1 -1
  75. package/cjs/sync/offline/splitsParser/splitsParserFromFile.js +13 -13
  76. package/cjs/sync/offline/splitsParser/splitsParserFromSettings.js +3 -3
  77. package/cjs/sync/offline/syncManagerOffline.js +1 -1
  78. package/cjs/sync/offline/syncTasks/fromObjectSyncTask.js +2 -2
  79. package/cjs/sync/polling/fetchers/mySegmentsFetcher.js +2 -2
  80. package/cjs/sync/polling/fetchers/segmentChangesFetcher.js +1 -1
  81. package/cjs/sync/polling/pollingManagerCS.js +8 -7
  82. package/cjs/sync/polling/pollingManagerSS.js +5 -4
  83. package/cjs/sync/polling/syncTasks/mySegmentsSyncTask.js +1 -1
  84. package/cjs/sync/polling/syncTasks/segmentsSyncTask.js +1 -1
  85. package/cjs/sync/polling/syncTasks/splitsSyncTask.js +1 -1
  86. package/cjs/sync/polling/updaters/mySegmentsUpdater.js +3 -3
  87. package/cjs/sync/polling/updaters/segmentChangesUpdater.js +2 -2
  88. package/cjs/sync/polling/updaters/splitChangesUpdater.js +2 -2
  89. package/cjs/sync/streaming/AuthClient/index.js +4 -5
  90. package/cjs/sync/streaming/SSEHandler/NotificationParser.js +1 -1
  91. package/cjs/sync/streaming/SSEHandler/index.js +3 -3
  92. package/cjs/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +1 -1
  93. package/cjs/sync/streaming/mySegmentsV2utils.js +1 -1
  94. package/cjs/sync/streaming/pushManager.js +39 -35
  95. package/cjs/sync/submitters/eventsSyncTask.js +1 -1
  96. package/cjs/sync/submitters/impressionCountsSyncTask.js +1 -1
  97. package/cjs/sync/submitters/impressionsSyncTask.js +3 -3
  98. package/cjs/sync/submitters/metricsSyncTask.js +3 -3
  99. package/cjs/sync/submitters/submitterManager.js +6 -5
  100. package/cjs/sync/submitters/submitterSyncTask.js +1 -1
  101. package/cjs/sync/syncManagerOnline.js +12 -12
  102. package/cjs/trackers/eventTracker.js +3 -3
  103. package/cjs/trackers/impressionObserver/impressionObserverCS.js +1 -1
  104. package/cjs/trackers/impressionObserver/impressionObserverSS.js +1 -1
  105. package/cjs/trackers/impressionsTracker.js +3 -3
  106. package/cjs/utils/MinEvents.js +2 -1
  107. package/cjs/utils/inputValidation/apiKey.js +1 -1
  108. package/cjs/utils/inputValidation/attribute.js +4 -4
  109. package/cjs/utils/inputValidation/attributes.js +2 -2
  110. package/cjs/utils/inputValidation/event.js +1 -1
  111. package/cjs/utils/inputValidation/eventProperties.js +7 -5
  112. package/cjs/utils/inputValidation/eventValue.js +1 -1
  113. package/cjs/utils/inputValidation/key.js +6 -5
  114. package/cjs/utils/inputValidation/preloadedData.js +8 -8
  115. package/cjs/utils/inputValidation/split.js +1 -1
  116. package/cjs/utils/inputValidation/splits.js +2 -2
  117. package/cjs/utils/inputValidation/trafficType.js +1 -1
  118. package/cjs/utils/inputValidation/trafficTypeExistance.js +1 -1
  119. package/cjs/utils/jwt/index.js +1 -1
  120. package/cjs/utils/key/index.js +3 -3
  121. package/cjs/utils/lang/index.js +2 -14
  122. package/cjs/utils/murmur3/common.js +1 -1
  123. package/cjs/utils/murmur3/legacy.js +44 -0
  124. package/cjs/utils/murmur3/murmur3.js +10 -10
  125. package/cjs/utils/murmur3/murmur3_128.js +1 -1
  126. package/cjs/utils/murmur3/murmur3_128_x86.js +37 -37
  127. package/cjs/utils/murmur3/murmur3_64.js +1 -1
  128. package/cjs/utils/promise/timeout.js +1 -1
  129. package/cjs/utils/settingsValidation/index.js +5 -10
  130. package/cjs/utils/settingsValidation/integrations/configurable.js +1 -1
  131. package/cjs/utils/settingsValidation/integrations/pluggable.js +1 -1
  132. package/cjs/utils/settingsValidation/localhost/builtin.js +2 -2
  133. package/cjs/utils/settingsValidation/logger/builtinLogger.js +3 -3
  134. package/cjs/utils/settingsValidation/logger/commons.js +1 -1
  135. package/cjs/utils/settingsValidation/logger/pluggableLogger.js +1 -1
  136. package/cjs/utils/settingsValidation/runtime/browser.js +10 -0
  137. package/cjs/utils/settingsValidation/runtime/node.js +22 -0
  138. package/cjs/utils/settingsValidation/splitFilters.js +1 -1
  139. package/cjs/utils/settingsValidation/storage/storageCS.js +1 -1
  140. package/cjs/utils/timeTracker/index.js +3 -3
  141. package/esm/evaluator/matchers/ew.js +4 -4
  142. package/esm/logger/messages/info.js +3 -3
  143. package/esm/sdkClient/client.js +2 -1
  144. package/esm/sdkClient/clientCS.js +2 -1
  145. package/esm/services/splitApi.js +2 -1
  146. package/esm/services/splitHttpClient.js +1 -1
  147. package/esm/storages/inRedis/RedisAdapter.js +7 -1
  148. package/esm/sync/offline/splitsParser/splitsParserFromFile.js +1 -1
  149. package/esm/sync/polling/fetchers/mySegmentsFetcher.js +2 -2
  150. package/esm/sync/polling/fetchers/segmentChangesFetcher.js +2 -2
  151. package/esm/sync/polling/pollingManagerCS.js +2 -1
  152. package/esm/sync/polling/pollingManagerSS.js +2 -1
  153. package/esm/sync/polling/syncTasks/mySegmentsSyncTask.js +1 -1
  154. package/esm/sync/polling/updaters/mySegmentsUpdater.js +2 -2
  155. package/esm/sync/streaming/AuthClient/index.js +1 -2
  156. package/esm/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.js +1 -1
  157. package/esm/sync/streaming/pushManager.js +27 -23
  158. package/esm/sync/submitters/submitterManager.js +2 -1
  159. package/esm/sync/syncManagerOnline.js +12 -12
  160. package/esm/utils/inputValidation/eventProperties.js +4 -2
  161. package/esm/utils/inputValidation/key.js +2 -1
  162. package/esm/utils/lang/index.js +2 -13
  163. package/esm/utils/murmur3/legacy.js +39 -0
  164. package/esm/utils/promise/timeout.js +1 -1
  165. package/esm/utils/settingsValidation/index.js +1 -6
  166. package/esm/utils/settingsValidation/runtime/browser.js +6 -0
  167. package/esm/utils/settingsValidation/runtime/node.js +17 -0
  168. package/package.json +8 -7
  169. package/src/evaluator/matchers/ew.ts +4 -4
  170. package/src/logger/.DS_Store +0 -0
  171. package/src/logger/messages/info.ts +3 -3
  172. package/src/logger/types.ts +4 -0
  173. package/src/sdkClient/client.ts +2 -1
  174. package/src/sdkClient/clientCS.ts +3 -1
  175. package/src/services/splitHttpClient.ts +1 -1
  176. package/src/sync/offline/splitsParser/splitsParserFromFile.ts +1 -1
  177. package/src/sync/polling/fetchers/mySegmentsFetcher.ts +2 -1
  178. package/src/sync/polling/fetchers/types.ts +1 -0
  179. package/src/sync/polling/pollingManagerCS.ts +3 -6
  180. package/src/sync/polling/pollingManagerSS.ts +3 -8
  181. package/src/sync/polling/syncTasks/mySegmentsSyncTask.ts +2 -1
  182. package/src/sync/polling/types.ts +0 -12
  183. package/src/sync/polling/updaters/mySegmentsUpdater.ts +2 -1
  184. package/src/sync/streaming/AuthClient/index.ts +1 -2
  185. package/src/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.ts +1 -1
  186. package/src/sync/streaming/pushManager.ts +31 -38
  187. package/src/sync/streaming/types.ts +5 -25
  188. package/src/sync/submitters/submitterManager.ts +4 -8
  189. package/src/sync/syncManagerOnline.ts +16 -22
  190. package/src/types.ts +5 -1
  191. package/src/utils/inputValidation/eventProperties.ts +4 -2
  192. package/src/utils/lang/index.ts +0 -14
  193. package/src/utils/murmur3/legacy.ts +48 -0
  194. package/src/utils/promise/timeout.ts +1 -1
  195. package/src/utils/settingsValidation/index.ts +1 -6
  196. package/src/utils/settingsValidation/runtime/browser.ts +6 -0
  197. package/src/utils/settingsValidation/runtime/node.ts +22 -0
  198. package/src/utils/settingsValidation/types.ts +6 -6
  199. package/types/integrations/ga/GaToSplitPlugin.d.ts +3 -0
  200. package/types/integrations/ga/SplitToGaPlugin.d.ts +4 -0
  201. package/types/logger/browser/{DebugLogger.d.ts → debugLogger.d.ts} +0 -0
  202. package/types/logger/browser/{ErrorLogger.d.ts → errorLogger.d.ts} +0 -0
  203. package/types/logger/browser/{InfoLogger.d.ts → infoLogger.d.ts} +0 -0
  204. package/types/logger/browser/{WarnLogger.d.ts → warnLogger.d.ts} +0 -0
  205. package/types/logger/codes.d.ts +2 -0
  206. package/types/logger/codesConstants.d.ts +117 -0
  207. package/types/logger/codesConstantsBrowser.d.ts +2 -0
  208. package/types/logger/codesConstantsNode.d.ts +14 -0
  209. package/types/logger/codesDebug.d.ts +1 -0
  210. package/types/logger/codesDebugBrowser.d.ts +1 -0
  211. package/types/logger/codesDebugNode.d.ts +1 -0
  212. package/types/logger/codesError.d.ts +1 -0
  213. package/types/logger/codesErrorNode.d.ts +1 -0
  214. package/types/logger/codesInfo.d.ts +1 -0
  215. package/types/logger/codesWarn.d.ts +1 -0
  216. package/types/logger/codesWarnNode.d.ts +1 -0
  217. package/types/logger/debugLogger.d.ts +2 -0
  218. package/types/logger/errorLogger.d.ts +2 -0
  219. package/types/logger/infoLogger.d.ts +2 -0
  220. package/types/logger/messages/debugBrowser.d.ts +1 -0
  221. package/types/logger/messages/debugNode.d.ts +1 -0
  222. package/types/logger/messages/errorNode.d.ts +1 -0
  223. package/types/logger/messages/warnNode.d.ts +1 -0
  224. package/types/logger/noopLogger.d.ts +2 -0
  225. package/types/logger/types.d.ts +4 -0
  226. package/types/logger/warnLogger.d.ts +2 -0
  227. package/types/sdkClient/clientAttributesDecoration.d.ts +1 -1
  228. package/types/sdkManager/sdkManagerMethod.d.ts +6 -0
  229. package/types/storages/getRegisteredSegments.d.ts +10 -0
  230. package/types/storages/inMemory/TelemetryCacheInMemory.d.ts +51 -0
  231. package/types/storages/inMemory/index.d.ts +10 -0
  232. package/types/storages/inRedis/TelemetryCacheInRedis.d.ts +0 -0
  233. package/types/storages/parseSegments.d.ts +6 -0
  234. package/types/storages/pluggable/TelemetryCachePluggable.d.ts +2 -0
  235. package/types/sync/polling/fetchers/mySegmentsFetcher.d.ts +1 -1
  236. package/types/sync/polling/fetchers/types.d.ts +1 -1
  237. package/types/sync/polling/pollingManagerCS.d.ts +2 -5
  238. package/types/sync/polling/pollingManagerSS.d.ts +2 -5
  239. package/types/sync/polling/syncTasks/splitsSyncTask.copy.d.ts +35 -0
  240. package/types/sync/polling/syncTasks/splitsSyncTask.morelikeoriginal.d.ts +35 -0
  241. package/types/sync/polling/types.d.ts +0 -11
  242. package/types/sync/polling/updaters/mySegmentsUpdater.d.ts +1 -1
  243. package/types/sync/streaming/AuthClient/indexV1.d.ts +12 -0
  244. package/types/sync/streaming/AuthClient/indexV2.d.ts +8 -0
  245. package/types/sync/streaming/UpdateWorkers/SegmentsUpdateWorker.d.ts +1 -1
  246. package/types/sync/streaming/pushManager.d.ts +3 -7
  247. package/types/sync/streaming/pushManagerCS.d.ts +1 -0
  248. package/types/sync/streaming/pushManagerNoUsers.d.ts +13 -0
  249. package/types/sync/streaming/pushManagerSS.d.ts +1 -0
  250. package/types/sync/streaming/types.d.ts +3 -23
  251. package/types/sync/submitters/submitterManager.d.ts +2 -4
  252. package/types/sync/submitters/telemetrySyncTask.d.ts +17 -0
  253. package/types/sync/syncManagerFromFile.d.ts +2 -0
  254. package/types/sync/syncManagerFromObject.d.ts +2 -0
  255. package/types/sync/syncManagerOffline.d.ts +9 -0
  256. package/types/sync/syncManagerOnline.d.ts +3 -3
  257. package/types/trackers/telemetryRecorder.d.ts +0 -0
  258. package/types/types.d.ts +1 -0
  259. package/types/utils/EventEmitter.d.ts +4 -0
  260. package/types/utils/lang/errors.d.ts +10 -0
  261. package/types/utils/lang/index.d.ts +0 -4
  262. package/types/utils/murmur3/commons.d.ts +12 -0
  263. package/types/utils/murmur3/legacy.d.ts +2 -0
  264. package/types/utils/settingsValidation/buildMetadata.d.ts +3 -0
  265. package/types/utils/settingsValidation/localhost/index.d.ts +9 -0
  266. package/types/utils/settingsValidation/logger.d.ts +11 -0
  267. package/types/utils/settingsValidation/runtime/browser.d.ts +4 -0
  268. package/types/utils/settingsValidation/runtime/node.d.ts +5 -0
  269. package/types/utils/settingsValidation/types.d.ts +6 -6
@@ -2,4 +2,4 @@ import { ISplitChangesResponse, ISegmentChangesResponse } from '../../../dtos/ty
2
2
  import { IResponse } from '../../../services/types';
3
3
  export declare type ISplitChangesFetcher = (since: number, noCache?: boolean, decorator?: (promise: Promise<IResponse>) => Promise<IResponse>) => Promise<ISplitChangesResponse>;
4
4
  export declare type ISegmentChangesFetcher = (since: number, segmentName: string, noCache?: boolean, decorator?: (promise: Promise<ISegmentChangesResponse[]>) => Promise<ISegmentChangesResponse[]>) => Promise<ISegmentChangesResponse[]>;
5
- export declare type IMySegmentsFetcher = (noCache?: boolean, decorator?: (promise: Promise<IResponse>) => Promise<IResponse>) => Promise<string[]>;
5
+ export declare type IMySegmentsFetcher = (userMatchingKey: string, noCache?: boolean, decorator?: (promise: Promise<IResponse>) => Promise<IResponse>) => Promise<string[]>;
@@ -1,10 +1,7 @@
1
1
  import { IPollingManagerCS } from './types';
2
- import { IReadinessManager } from '../../readiness/types';
3
- import { ISplitApi } from '../../services/types';
4
- import { IStorageSync } from '../../storages/types';
5
- import { ISettings } from '../../types';
2
+ import { ISyncManagerFactoryParams } from '../types';
6
3
  /**
7
4
  * Expose start / stop mechanism for polling data from services.
8
5
  * For client-side API with multiple clients.
9
6
  */
10
- export declare function pollingManagerCSFactory(splitApi: ISplitApi, storage: IStorageSync, readiness: IReadinessManager, settings: ISettings): IPollingManagerCS;
7
+ export declare function pollingManagerCSFactory(params: ISyncManagerFactoryParams): IPollingManagerCS;
@@ -1,9 +1,6 @@
1
- import { IStorageSync } from '../../storages/types';
2
- import { IReadinessManager } from '../../readiness/types';
3
- import { ISplitApi } from '../../services/types';
4
- import { ISettings } from '../../types';
5
1
  import { IPollingManager } from './types';
2
+ import { ISyncManagerFactoryParams } from '../types';
6
3
  /**
7
4
  * Expose start / stop mechanism for pulling data from services.
8
5
  */
9
- export declare function pollingManagerSSFactory(splitApi: ISplitApi, storage: IStorageSync, readiness: IReadinessManager, settings: ISettings): IPollingManager;
6
+ export declare function pollingManagerSSFactory(params: ISyncManagerFactoryParams): IPollingManager;
@@ -0,0 +1,35 @@
1
+ import { ISet } from '../../../utils/lang/sets';
2
+ import { ISegmentsCacheSync, ISplitsCacheSync, IStorageSync } from '../../../storages/types';
3
+ import { ISplitChangesFetcher } from '../fetchers/types';
4
+ import { ISplit } from '../../../dtos/types';
5
+ import { IReadinessManager, ISplitsEventEmitter } from '../../../readiness/types';
6
+ import { ISplitsSyncTask } from '../types';
7
+ import { IFetchSplitChanges } from '../../../services/types';
8
+ import { ISettings } from '../../../types';
9
+ declare type ISplitChangesUpdater = (noCache?: boolean) => Promise<boolean>;
10
+ /**
11
+ * Collect segments from a raw split definition.
12
+ * Exported for testing purposes.
13
+ */
14
+ export declare function parseSegments({ conditions }: ISplit): ISet<string>;
15
+ interface ISplitMutations {
16
+ added: [string, string][];
17
+ removed: string[];
18
+ segments: string[];
19
+ }
20
+ /**
21
+ * Given the list of splits from /splitChanges endpoint, it returns the mutations,
22
+ * i.e., an object with added splits, removed splits and used segments.
23
+ * Exported for testing purposes.
24
+ */
25
+ export declare function computeSplitsMutation(entries: ISplit[]): ISplitMutations;
26
+ /**
27
+ * factory of SplitChanges updater (a.k.a, SplitsSyncTask), a task that:
28
+ * - fetches split changes using `splitChangesFetcher`
29
+ * - updates `splitsCache`
30
+ * - uses `splitsEventEmitter` to emit events related to split data updates
31
+ * Exported for testing purposes.
32
+ */
33
+ export declare function splitChangesUpdaterFactory(splitChangesFetcher: ISplitChangesFetcher, splitsCache: ISplitsCacheSync, segmentsCache: ISegmentsCacheSync, splitsEventEmitter: ISplitsEventEmitter, requestTimeoutBeforeReady: number, retriesOnFailureBeforeReady: number): ISplitChangesUpdater;
34
+ export default function splitsSyncTaskFactory(fetchSplitChanges: IFetchSplitChanges, storage: IStorageSync, readiness: IReadinessManager, settings: ISettings): ISplitsSyncTask;
35
+ export {};
@@ -0,0 +1,35 @@
1
+ import { ISet } from '../../../utils/lang/sets';
2
+ import { ISegmentsCacheSync, ISplitsCacheSync, IStorageSync } from '../../../storages/types';
3
+ import { ISplitChangesFetcher } from '../fetchers/types';
4
+ import { ISplit } from '../../../dtos/types';
5
+ import { IReadinessManager, ISplitsEventEmitter } from '../../../readiness/types';
6
+ import { ISplitsSyncTask } from '../types';
7
+ import { IFetchSplitChanges } from '../../../services/types';
8
+ import { ISettings } from '../../../types';
9
+ declare type ISplitChangesUpdater = (noCache?: boolean) => Promise<boolean>;
10
+ /**
11
+ * Collect segments from a raw split definition.
12
+ * Exported for testing purposes.
13
+ */
14
+ export declare function parseSegments({ conditions }: ISplit): ISet<string>;
15
+ interface ISplitMutations {
16
+ added: [string, string][];
17
+ removed: string[];
18
+ segments: string[];
19
+ }
20
+ /**
21
+ * Given the list of splits from /splitChanges endpoint, it returns the mutations,
22
+ * i.e., an object with added splits, removed splits and used segments.
23
+ * Exported for testing purposes.
24
+ */
25
+ export declare function computeSplitsMutation(entries: ISplit[]): ISplitMutations;
26
+ /**
27
+ * factory of SplitChanges updater (a.k.a, SplitsSyncTask), a task that:
28
+ * - fetches split changes using `splitChangesFetcher`
29
+ * - updates `splitsCache`
30
+ * - uses `splitsEventEmitter` to emit events related to split data updates
31
+ * Exported for testing purposes.
32
+ */
33
+ export declare function splitChangesUpdaterFactory(splitChangesFetcher: ISplitChangesFetcher, splitsCache: ISplitsCacheSync, segmentsCache: ISegmentsCacheSync, splitsEventEmitter: ISplitsEventEmitter, requestTimeoutBeforeReady: number, retriesOnFailureBeforeReady: number): ISplitChangesUpdater;
34
+ export default function splitsSyncTaskFactory(fetchSplitChanges: IFetchSplitChanges, storage: IStorageSync, readiness: IReadinessManager, settings: ISettings): ISplitsSyncTask;
35
+ export {};
@@ -1,7 +1,5 @@
1
1
  import { IReadinessManager } from '../../readiness/types';
2
- import { ISplitApi } from '../../services/types';
3
2
  import { IStorageSync } from '../../storages/types';
4
- import { ISettings } from '../../types';
5
3
  import { SegmentsData } from '../streaming/SSEHandler/types';
6
4
  import { ITask, ISyncTask } from '../types';
7
5
  export interface ISplitsSyncTask extends ISyncTask<[noCache?: boolean], boolean> {
@@ -21,12 +19,3 @@ export interface IPollingManagerCS extends IPollingManager {
21
19
  remove(matchingKey: string): void;
22
20
  get(matchingKey: string): ISegmentsSyncTask | undefined;
23
21
  }
24
- /**
25
- * Signature of polling manager factory/constructor
26
- */
27
- export declare type IPollingManagerFactoryParams = [
28
- splitApi: ISplitApi,
29
- storage: IStorageSync,
30
- readiness: IReadinessManager,
31
- settings: ISettings
32
- ];
@@ -9,5 +9,5 @@ declare type IMySegmentsUpdater = (segmentList?: string[], noCache?: boolean) =>
9
9
  * - updates `mySegmentsCache`
10
10
  * - uses `segmentsEventEmitter` to emit events related to segments data updates
11
11
  */
12
- export declare function mySegmentsUpdaterFactory(log: ILogger, mySegmentsFetcher: IMySegmentsFetcher, splitsCache: ISplitsCacheSync, mySegmentsCache: ISegmentsCacheSync, segmentsEventEmitter: ISegmentsEventEmitter, requestTimeoutBeforeReady: number, retriesOnFailureBeforeReady: number): IMySegmentsUpdater;
12
+ export declare function mySegmentsUpdaterFactory(log: ILogger, mySegmentsFetcher: IMySegmentsFetcher, splitsCache: ISplitsCacheSync, mySegmentsCache: ISegmentsCacheSync, segmentsEventEmitter: ISegmentsEventEmitter, requestTimeoutBeforeReady: number, retriesOnFailureBeforeReady: number, matchingKey: string): IMySegmentsUpdater;
13
13
  export {};
@@ -0,0 +1,12 @@
1
+ import { IFetchAuth } from '../../../services/types';
2
+ import { IAuthenticate } from './types';
3
+ /**
4
+ * Factory of authentication function.
5
+ *
6
+ * @param fetchAuth `SplitAPI.fetchAuth` endpoint
7
+ */
8
+ export declare function authenticateFactory(fetchAuth: IFetchAuth): IAuthenticate;
9
+ /**
10
+ * Returns the hash of a given user key
11
+ */
12
+ export declare function hashUserKey(userKey: string): string;
@@ -0,0 +1,8 @@
1
+ import { IFetchAuthV2 } from '../../../services/types';
2
+ import { IAuthenticateV2 } from './types';
3
+ /**
4
+ * Factory of authentication function.
5
+ *
6
+ * @param fetchAuth `SplitAPI.fetchAuth` endpoint
7
+ */
8
+ export declare function authenticateFactory(fetchAuthV2: IFetchAuthV2): IAuthenticateV2;
@@ -16,7 +16,7 @@ export declare class SegmentsUpdateWorker implements IUpdateWorker {
16
16
  * @param {Object} segmentsCache segments data cache
17
17
  * @param {Object} segmentsSyncTask task for syncing segments data
18
18
  */
19
- constructor(segmentsCache: ISegmentsCacheSync, segmentsSyncTask: ISegmentsSyncTask);
19
+ constructor(segmentsSyncTask: ISegmentsSyncTask, segmentsCache: ISegmentsCacheSync);
20
20
  __handleSegmentUpdateCall(): void;
21
21
  /**
22
22
  * Invoked by NotificationProcessor on SEGMENT_UPDATE event
@@ -1,13 +1,9 @@
1
- import { IPushManagerCS } from './types';
2
- import { IStorageSync } from '../../storages/types';
3
- import { IReadinessManager } from '../../readiness/types';
1
+ import { IPushManager } from './types';
4
2
  import { IPollingManager } from '../polling/types';
5
- import { IFetchAuth } from '../../services/types';
6
- import { ISettings } from '../../types';
7
- import { IPlatform } from '../../sdkFactory/types';
3
+ import { ISyncManagerFactoryParams } from '../types';
8
4
  /**
9
5
  * PushManager factory:
10
6
  * - for server-side if key is not provided in settings.
11
7
  * - for client-side, with support for multiple clients, if key is provided in settings
12
8
  */
13
- export declare function pushManagerFactory(pollingManager: IPollingManager, storage: IStorageSync, readiness: IReadinessManager, fetchAuth: IFetchAuth, platform: IPlatform, settings: ISettings): IPushManagerCS | undefined;
9
+ export declare function pushManagerFactory(params: ISyncManagerFactoryParams, pollingManager: IPollingManager): IPushManager | undefined;
@@ -0,0 +1 @@
1
+ export declare const pushManagerCSFactory: (params: import("../types").ISyncManagerFactoryParams, pollingManager: import("../polling/types").IPollingManager) => import("./types").IPushManager | undefined;
@@ -0,0 +1,13 @@
1
+ import { IPushManagerCS } from './types';
2
+ import { IStorageSync } from '../../storages/types';
3
+ import { IReadinessManager } from '../../readiness/types';
4
+ import { IPollingManager } from '../polling/types';
5
+ import { IFetchAuthV2 } from '../../services/types';
6
+ import { ISettings } from '../../types';
7
+ import { IPlatform } from '../../sdkFactory/types';
8
+ /**
9
+ * PushManager factory:
10
+ * - for server-side if key is not provided in settings.
11
+ * - for client-side, with support for multiple clients, if key is provided in settings
12
+ */
13
+ export default function pushManagerFactory(pollingManager: IPollingManager, storage: IStorageSync, readiness: IReadinessManager, fetchAuthV2: IFetchAuthV2, platform: IPlatform, settings: ISettings): IPushManagerCS | undefined;
@@ -0,0 +1 @@
1
+ export declare const pushManagerSSFactory: (params: import("../types").ISyncManagerFactoryParams, pollingManager: import("../polling/types").IPollingManager) => import("./types").IPushManager | undefined;
@@ -1,11 +1,7 @@
1
1
  import { IMySegmentsUpdateData, IMySegmentsUpdateV2Data, ISegmentUpdateData, ISplitUpdateData, ISplitKillData } from './SSEHandler/types';
2
2
  import { ITask } from '../types';
3
- import { IPollingManager, ISegmentsSyncTask } from '../polling/types';
4
- import { IReadinessManager } from '../../readiness/types';
5
- import { IFetchAuth } from '../../services/types';
6
- import { IStorageSync } from '../../storages/types';
7
- import { IEventEmitter, ISettings } from '../../types';
8
- import { IPlatform } from '../../sdkFactory/types';
3
+ import { ISegmentsSyncTask } from '../polling/types';
4
+ import { IEventEmitter } from '../../types';
9
5
  import { ControlType } from './constants';
10
6
  export declare type PUSH_SUBSYSTEM_UP = 'PUSH_SUBSYSTEM_UP';
11
7
  export declare type PUSH_SUBSYSTEM_DOWN = 'PUSH_SUBSYSTEM_DOWN';
@@ -30,26 +26,10 @@ export interface IPushEventEmitter extends IEventEmitter {
30
26
  emit<T extends IPushEvent>(event: T, parsedData?: IParsedData<T>, channel?: T extends MY_SEGMENTS_UPDATE ? string : undefined): boolean;
31
27
  }
32
28
  /**
33
- * PushManager for server-side
29
+ * PushManager
34
30
  */
35
31
  export interface IPushManager extends ITask, IPushEventEmitter {
36
- }
37
- /**
38
- * PushManager for client-side with support for multiple clients
39
- */
40
- export interface IPushManagerCS extends IPushManager {
41
32
  add(userKey: string, mySegmentsSyncTask: ISegmentsSyncTask): void;
42
33
  remove(userKey: string): void;
43
34
  }
44
- /**
45
- * Signature of push manager factory/constructor
46
- */
47
- export declare type IPushManagerFactoryParams = [
48
- pollingManager: IPollingManager,
49
- storage: IStorageSync,
50
- readiness: IReadinessManager,
51
- fetchAuth: IFetchAuth,
52
- platform: IPlatform,
53
- settings: ISettings
54
- ];
55
35
  export {};
@@ -1,4 +1,2 @@
1
- import { ISplitApi } from '../../services/types';
2
- import { IStorageSync } from '../../storages/types';
3
- import { ISettings } from '../../types';
4
- export declare function submitterManagerFactory(settings: ISettings, storage: IStorageSync, splitApi: ISplitApi): import("../types").ISyncTask<[], any>;
1
+ import { ISyncManagerFactoryParams } from '../types';
2
+ export declare function submitterManagerFactory(params: ISyncManagerFactoryParams): import("../types").ISyncTask<[], any>;
@@ -0,0 +1,17 @@
1
+ import { ISyncTask, ITimeTracker } from '../types';
2
+ import { IPostMetricsUsage } from '../../services/types';
3
+ import { IStorageSync, TelemetryCacheSync } from '../../storages/types';
4
+ import { TelemetryStatsPayload } from './types';
5
+ import { ILogger } from '../../logger/types';
6
+ /**
7
+ * Converts `impressions` data from cache into request payload.
8
+ */
9
+ export declare function telemetryCacheAdapter(telemetryCache: TelemetryCacheSync, storage: IStorageSync): {
10
+ isEmpty(): boolean;
11
+ clear(): void;
12
+ state(): TelemetryStatsPayload;
13
+ };
14
+ /**
15
+ * Sync task that periodically posts impressions data
16
+ */
17
+ export declare function telemetrySyncTaskFactory(log: ILogger, postMetricsUsage: IPostMetricsUsage, telemetryCache: TelemetryCacheSync, telemetryRefreshRate: number, latencyTracker: ITimeTracker, storage: IStorageSync): ISyncTask;
@@ -0,0 +1,2 @@
1
+ import { SplitIO } from '../types';
2
+ export declare function LocalhostFromFile(): SplitIO.LocalhostFactory;
@@ -0,0 +1,2 @@
1
+ import { SplitIO } from '../types';
2
+ export declare function LocalhostFromObject(): SplitIO.LocalhostFactory;
@@ -0,0 +1,9 @@
1
+ import { ISyncManagerCS, ISyncManagerFactoryParams } from './types';
2
+ import { ISplitsParser } from './offline/splitsParser/types';
3
+ /**
4
+ * Offline SyncManager factory.
5
+ * Can be used for server-side API, and client-side API with or without multiple clients.
6
+ *
7
+ * @param splitsParser e.g., `splitsParserFromFile`, `splitsParserFromSettings`.
8
+ */
9
+ export declare function syncManagerOfflineFactory(splitsParserFactory: () => ISplitsParser): (params: ISyncManagerFactoryParams) => ISyncManagerCS;
@@ -1,6 +1,6 @@
1
1
  import { ISyncManagerCS, ISyncManagerFactoryParams } from './types';
2
- import { IPushManagerFactoryParams, IPushManager } from './streaming/types';
3
- import { IPollingManager, IPollingManagerFactoryParams } from './polling/types';
2
+ import { IPushManager } from './streaming/types';
3
+ import { IPollingManager } from './polling/types';
4
4
  /**
5
5
  * Online SyncManager factory.
6
6
  * Can be used for server-side API, and client-side API with or without multiple clients.
@@ -9,4 +9,4 @@ import { IPollingManager, IPollingManagerFactoryParams } from './polling/types';
9
9
  * `pollingManagerSSFactory` or `pollingManagerCSFactory` respectively.
10
10
  * @param pushManagerFactory optional to build a SyncManager with or without streaming support
11
11
  */
12
- export declare function syncManagerOnlineFactory(pollingManagerFactory?: (...args: IPollingManagerFactoryParams) => IPollingManager, pushManagerFactory?: (...args: IPushManagerFactoryParams) => IPushManager | undefined): (params: ISyncManagerFactoryParams) => ISyncManagerCS;
12
+ export declare function syncManagerOnlineFactory(pollingManagerFactory?: (params: ISyncManagerFactoryParams) => IPollingManager, pushManagerFactory?: (params: ISyncManagerFactoryParams, pollingManager: IPollingManager) => IPushManager | undefined): (params: ISyncManagerFactoryParams) => ISyncManagerCS;
File without changes
package/types/types.d.ts CHANGED
@@ -375,6 +375,7 @@ interface IBasicClient extends IStatusInterface {
375
375
  * @returns {Promise<void>}
376
376
  */
377
377
  destroy(): Promise<void>;
378
+ isBrowserClient: boolean;
378
379
  }
379
380
  /**
380
381
  * Common definitions between SDK instances for different environments interface.
@@ -0,0 +1,4 @@
1
+ import { IEventEmitter } from '../types';
2
+ export declare const EventEmitter: {
3
+ new (): IEventEmitter;
4
+ };
@@ -0,0 +1,10 @@
1
+ export declare class SplitError extends Error {
2
+ constructor(msg?: string);
3
+ }
4
+ export declare class SplitTimeoutError extends SplitError {
5
+ constructor(msg?: string);
6
+ }
7
+ export declare class SplitNetworkError extends SplitError {
8
+ statusCode?: number;
9
+ constructor(msg?: string, code?: number);
10
+ }
@@ -72,10 +72,6 @@ export declare function merge(target: {
72
72
  }, source: {
73
73
  [key: string]: any;
74
74
  }, ...rest: any[]): object;
75
- /**
76
- * Shallow clone an object
77
- */
78
- export declare function shallowClone(obj: any): any;
79
75
  /**
80
76
  * Checks if the target string starts with the sub string.
81
77
  */
@@ -0,0 +1,12 @@
1
+ export declare function UTF16ToUTF8(key: string): string | undefined;
2
+ /*!
3
+ * +----------------------------------------------------------------------------------+
4
+ * | murmurHash3.js v3.0.0 (http://github.com/karanlyons/murmurHash3.js) |
5
+ * | A TypeScript/JavaScript implementation of MurmurHash3's hashing algorithms. |
6
+ * |----------------------------------------------------------------------------------|
7
+ * | Copyright (c) 2012-2020 Karan Lyons. Freely distributable under the MIT license. |
8
+ * +----------------------------------------------------------------------------------+
9
+ */
10
+ export declare function x86Multiply(m: number, n: number): number;
11
+ export declare function x86Rotl(m: number, n: number): number;
12
+ export declare function x86Fmix(h: number): number;
@@ -0,0 +1,2 @@
1
+ export declare function hash(str: string, seed: number): number;
2
+ export declare function bucket(str: string, seed: number): number;
@@ -0,0 +1,3 @@
1
+ import { IMetadata } from '../../dtos/types';
2
+ import { ISettings } from '../../types';
3
+ export default function buildMetadata(settings: ISettings): IMetadata;
@@ -0,0 +1,9 @@
1
+ import { ISettings } from '../../../types';
2
+ /**
3
+ * This function validates `settings.storage` object
4
+ *
5
+ * @param {any} settings config object provided by the user to initialize the sdk
6
+ *
7
+ * @returns {Object} valid storage factory. It might be the default `InMemoryStorageCSFactory` if the provided storage is invalid.
8
+ */
9
+ export declare function validateLocalhost(settings: ISettings): import("../../../types").SplitIO.LocalhostFactory | undefined;
@@ -0,0 +1,11 @@
1
+ import { ILogger } from '../../logger/types';
2
+ /**
3
+ * Validates the `log` (logger) property at config.
4
+ *
5
+ * @param settings user config object
6
+ * @returns the provided logger or a no-op logger if no one is provided
7
+ * @throws throws an error if a logger was provided but is invalid
8
+ */
9
+ export default function logger(settings: {
10
+ log: unknown;
11
+ }): ILogger;
@@ -0,0 +1,4 @@
1
+ export declare function validateRuntime(): {
2
+ ip: boolean;
3
+ hostname: boolean;
4
+ };
@@ -0,0 +1,5 @@
1
+ import { ISettings } from '../../../types';
2
+ export declare function validateRuntime(settings: ISettings): {
3
+ ip: string | false;
4
+ hostname: string | false;
5
+ };
@@ -5,19 +5,19 @@ import { ISettings } from '../../types';
5
5
  */
6
6
  export interface ISettingsValidationParams {
7
7
  /**
8
- * Object of values to overwrite default settings.
9
- * Version and startup properties are mandatory, because these values are not part of the base setting.
8
+ * Object of values to overwrite base settings.
9
+ * Version and startup properties are required, because they are not defined in the base settings.
10
10
  */
11
11
  defaults: Partial<ISettings> & {
12
12
  version: string;
13
13
  } & {
14
14
  startup: ISettings['startup'];
15
15
  };
16
- /** Function to overwrite runtime values (ip and hostname) which are false by default */
17
- runtime?: (settings: ISettings) => ISettings['runtime'];
18
- /** Storage validator */
16
+ /** Function to define runtime values (`settings.runtime`) */
17
+ runtime: (settings: ISettings) => ISettings['runtime'];
18
+ /** Storage validator (`settings.storage`) */
19
19
  storage?: (settings: ISettings) => ISettings['storage'];
20
- /** Integrations validator */
20
+ /** Integrations validator (`settings.integrations`) */
21
21
  integrations?: (settings: ISettings) => ISettings['integrations'];
22
22
  /** Logger validator (`settings.debug`) */
23
23
  logger: (settings: ISettings) => ISettings['log'];