@splitsoftware/splitio-commons 2.0.2 → 2.0.3-rc.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 (60) hide show
  1. package/CHANGES.txt +4 -0
  2. package/cjs/evaluator/index.js +2 -0
  3. package/cjs/listeners/browser.js +4 -6
  4. package/cjs/sdkClient/client.js +13 -13
  5. package/cjs/sdkClient/sdkClient.js +1 -1
  6. package/cjs/sdkFactory/index.js +9 -14
  7. package/cjs/sdkManager/index.js +2 -1
  8. package/cjs/storages/inLocalStorage/index.js +4 -3
  9. package/cjs/storages/inMemory/InMemoryStorage.js +3 -3
  10. package/cjs/storages/inMemory/InMemoryStorageCS.js +4 -3
  11. package/cjs/storages/inRedis/index.js +9 -13
  12. package/cjs/storages/pluggable/index.js +15 -19
  13. package/cjs/sync/submitters/impressionCountsSubmitter.js +2 -4
  14. package/cjs/sync/submitters/submitterManager.js +3 -6
  15. package/cjs/trackers/impressionsTracker.js +17 -18
  16. package/cjs/trackers/strategy/strategyDebug.js +4 -11
  17. package/cjs/trackers/strategy/strategyNone.js +11 -16
  18. package/cjs/trackers/strategy/strategyOptimized.js +11 -21
  19. package/esm/evaluator/index.js +2 -0
  20. package/esm/listeners/browser.js +1 -3
  21. package/esm/sdkClient/client.js +13 -13
  22. package/esm/sdkClient/sdkClient.js +1 -1
  23. package/esm/sdkFactory/index.js +10 -15
  24. package/esm/sdkManager/index.js +2 -1
  25. package/esm/storages/inLocalStorage/index.js +5 -4
  26. package/esm/storages/inMemory/InMemoryStorage.js +4 -4
  27. package/esm/storages/inMemory/InMemoryStorageCS.js +5 -4
  28. package/esm/storages/inRedis/index.js +10 -14
  29. package/esm/storages/pluggable/index.js +16 -20
  30. package/esm/sync/submitters/impressionCountsSubmitter.js +2 -4
  31. package/esm/sync/submitters/submitterManager.js +3 -6
  32. package/esm/trackers/impressionsTracker.js +17 -18
  33. package/esm/trackers/strategy/strategyDebug.js +4 -11
  34. package/esm/trackers/strategy/strategyNone.js +11 -16
  35. package/esm/trackers/strategy/strategyOptimized.js +11 -21
  36. package/package.json +1 -1
  37. package/src/dtos/types.ts +2 -1
  38. package/src/evaluator/index.ts +2 -0
  39. package/src/evaluator/types.ts +1 -1
  40. package/src/listeners/browser.ts +1 -3
  41. package/src/sdkClient/client.ts +11 -11
  42. package/src/sdkClient/sdkClient.ts +1 -1
  43. package/src/sdkFactory/index.ts +11 -16
  44. package/src/sdkFactory/types.ts +1 -1
  45. package/src/sdkManager/index.ts +2 -1
  46. package/src/storages/inLocalStorage/index.ts +5 -4
  47. package/src/storages/inMemory/InMemoryStorage.ts +4 -4
  48. package/src/storages/inMemory/InMemoryStorageCS.ts +5 -4
  49. package/src/storages/inRedis/index.ts +10 -10
  50. package/src/storages/pluggable/index.ts +16 -20
  51. package/src/storages/types.ts +2 -2
  52. package/src/sync/submitters/impressionCountsSubmitter.ts +2 -4
  53. package/src/sync/submitters/submitterManager.ts +3 -4
  54. package/src/sync/submitters/uniqueKeysSubmitter.ts +2 -3
  55. package/src/trackers/impressionsTracker.ts +17 -18
  56. package/src/trackers/strategy/strategyDebug.ts +4 -11
  57. package/src/trackers/strategy/strategyNone.ts +11 -17
  58. package/src/trackers/strategy/strategyOptimized.ts +10 -20
  59. package/src/trackers/types.ts +2 -8
  60. package/types/splitio.d.ts +4 -0
@@ -8,35 +8,25 @@ import { IStrategy } from '../types';
8
8
  * Optimized strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds
9
9
  *
10
10
  * @param impressionsObserver - impression observer. previous time (pt property) is included in impression instances
11
- * @param impressionsCounter - cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
12
- * @returns IStrategyResult
11
+ * @param impressionCounts - cache to save impressions count. impressions will be deduped (OPTIMIZED mode)
12
+ * @returns Optimized strategy
13
13
  */
14
14
  export function strategyOptimizedFactory(
15
15
  impressionsObserver: IImpressionObserver,
16
- impressionsCounter: IImpressionCountsCacheBase,
16
+ impressionCounts: IImpressionCountsCacheBase,
17
17
  ): IStrategy {
18
18
 
19
19
  return {
20
- process(impressions: SplitIO.ImpressionDTO[]) {
21
- const impressionsToStore: SplitIO.ImpressionDTO[] = [];
22
- impressions.forEach((impression) => {
23
- impression.pt = impressionsObserver.testAndSet(impression);
20
+ process(impression: SplitIO.ImpressionDTO) {
21
+ impression.pt = impressionsObserver.testAndSet(impression);
24
22
 
25
- const now = Date.now();
23
+ const now = Date.now();
26
24
 
27
- // Increments impression counter per featureName
28
- if (impression.pt) impressionsCounter.track(impression.feature, now, 1);
25
+ // Increments impression counter per featureName
26
+ if (impression.pt) impressionCounts.track(impression.feature, now, 1);
29
27
 
30
- // Checks if the impression should be added in queue to be sent
31
- if (!impression.pt || impression.pt < truncateTimeFrame(now)) {
32
- impressionsToStore.push(impression);
33
- }
34
- });
35
- return {
36
- impressionsToStore: impressionsToStore,
37
- impressionsToListener: impressions,
38
- deduped: impressions.length - impressionsToStore.length
39
- };
28
+ // Checks if the impression should be added in queue to be sent
29
+ return (!impression.pt || impression.pt < truncateTimeFrame(now)) ? true : false;
40
30
  }
41
31
  };
42
32
  }
@@ -18,7 +18,7 @@ export interface IImpressionsHandler {
18
18
  }
19
19
 
20
20
  export interface IImpressionsTracker {
21
- track(impressions: SplitIO.ImpressionDTO[], attributes?: SplitIO.Attributes): void
21
+ track(impressions: [impression: SplitIO.ImpressionDTO, track?: boolean][], attributes?: SplitIO.Attributes): void
22
22
  }
23
23
 
24
24
  /** Telemetry tracker */
@@ -70,12 +70,6 @@ export interface IUniqueKeysTracker {
70
70
  track(key: string, featureName: string): void;
71
71
  }
72
72
 
73
- export interface IStrategyResult {
74
- impressionsToStore: SplitIO.ImpressionDTO[],
75
- impressionsToListener: SplitIO.ImpressionDTO[],
76
- deduped: number
77
- }
78
-
79
73
  export interface IStrategy {
80
- process(impressions: SplitIO.ImpressionDTO[]): IStrategyResult
74
+ process(impression: SplitIO.ImpressionDTO): boolean
81
75
  }
@@ -862,6 +862,10 @@ declare namespace SplitIO {
862
862
  * The default treatment of the feature flag.
863
863
  */
864
864
  defaultTreatment: string;
865
+ /**
866
+ * Whether the feature flag has impressions tracking enabled or not.
867
+ */
868
+ trackImpressions: boolean;
865
869
  };
866
870
  /**
867
871
  * A promise that resolves to a feature flag view or null if the feature flag is not found.