@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.
- package/CHANGES.txt +4 -0
- package/cjs/evaluator/index.js +2 -0
- package/cjs/listeners/browser.js +4 -6
- package/cjs/sdkClient/client.js +13 -13
- package/cjs/sdkClient/sdkClient.js +1 -1
- package/cjs/sdkFactory/index.js +9 -14
- package/cjs/sdkManager/index.js +2 -1
- package/cjs/storages/inLocalStorage/index.js +4 -3
- package/cjs/storages/inMemory/InMemoryStorage.js +3 -3
- package/cjs/storages/inMemory/InMemoryStorageCS.js +4 -3
- package/cjs/storages/inRedis/index.js +9 -13
- package/cjs/storages/pluggable/index.js +15 -19
- package/cjs/sync/submitters/impressionCountsSubmitter.js +2 -4
- package/cjs/sync/submitters/submitterManager.js +3 -6
- package/cjs/trackers/impressionsTracker.js +17 -18
- package/cjs/trackers/strategy/strategyDebug.js +4 -11
- package/cjs/trackers/strategy/strategyNone.js +11 -16
- package/cjs/trackers/strategy/strategyOptimized.js +11 -21
- package/esm/evaluator/index.js +2 -0
- package/esm/listeners/browser.js +1 -3
- package/esm/sdkClient/client.js +13 -13
- package/esm/sdkClient/sdkClient.js +1 -1
- package/esm/sdkFactory/index.js +10 -15
- package/esm/sdkManager/index.js +2 -1
- package/esm/storages/inLocalStorage/index.js +5 -4
- package/esm/storages/inMemory/InMemoryStorage.js +4 -4
- package/esm/storages/inMemory/InMemoryStorageCS.js +5 -4
- package/esm/storages/inRedis/index.js +10 -14
- package/esm/storages/pluggable/index.js +16 -20
- package/esm/sync/submitters/impressionCountsSubmitter.js +2 -4
- package/esm/sync/submitters/submitterManager.js +3 -6
- package/esm/trackers/impressionsTracker.js +17 -18
- package/esm/trackers/strategy/strategyDebug.js +4 -11
- package/esm/trackers/strategy/strategyNone.js +11 -16
- package/esm/trackers/strategy/strategyOptimized.js +11 -21
- package/package.json +1 -1
- package/src/dtos/types.ts +2 -1
- package/src/evaluator/index.ts +2 -0
- package/src/evaluator/types.ts +1 -1
- package/src/listeners/browser.ts +1 -3
- package/src/sdkClient/client.ts +11 -11
- package/src/sdkClient/sdkClient.ts +1 -1
- package/src/sdkFactory/index.ts +11 -16
- package/src/sdkFactory/types.ts +1 -1
- package/src/sdkManager/index.ts +2 -1
- package/src/storages/inLocalStorage/index.ts +5 -4
- package/src/storages/inMemory/InMemoryStorage.ts +4 -4
- package/src/storages/inMemory/InMemoryStorageCS.ts +5 -4
- package/src/storages/inRedis/index.ts +10 -10
- package/src/storages/pluggable/index.ts +16 -20
- package/src/storages/types.ts +2 -2
- package/src/sync/submitters/impressionCountsSubmitter.ts +2 -4
- package/src/sync/submitters/submitterManager.ts +3 -4
- package/src/sync/submitters/uniqueKeysSubmitter.ts +2 -3
- package/src/trackers/impressionsTracker.ts +17 -18
- package/src/trackers/strategy/strategyDebug.ts +4 -11
- package/src/trackers/strategy/strategyNone.ts +11 -17
- package/src/trackers/strategy/strategyOptimized.ts +10 -20
- package/src/trackers/types.ts +2 -8
- 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
|
|
12
|
-
* @returns
|
|
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
|
-
|
|
16
|
+
impressionCounts: IImpressionCountsCacheBase,
|
|
17
17
|
): IStrategy {
|
|
18
18
|
|
|
19
19
|
return {
|
|
20
|
-
process(
|
|
21
|
-
|
|
22
|
-
impressions.forEach((impression) => {
|
|
23
|
-
impression.pt = impressionsObserver.testAndSet(impression);
|
|
20
|
+
process(impression: SplitIO.ImpressionDTO) {
|
|
21
|
+
impression.pt = impressionsObserver.testAndSet(impression);
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
const now = Date.now();
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
// Increments impression counter per featureName
|
|
26
|
+
if (impression.pt) impressionCounts.track(impression.feature, now, 1);
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
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
|
}
|
package/src/trackers/types.ts
CHANGED
|
@@ -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(
|
|
74
|
+
process(impression: SplitIO.ImpressionDTO): boolean
|
|
81
75
|
}
|
package/types/splitio.d.ts
CHANGED
|
@@ -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.
|