UNPKG

@splitsoftware/splitio-commons

Version:
25 lines (24 loc) 1.17 kB
import { truncateTimeFrame } from '../../utils/time'; /** * Optimized strategy for impressions tracker. Wraps impressions to store and adds previousTime if it corresponds * * @param impressionsObserver - impression observer. previous time (pt property) is included in impression instances * @param impressionCounts - cache to save impressions count. impressions will be deduped (OPTIMIZED mode) * @returns Optimized strategy */ export function strategyOptimizedFactory(impressionsObserver, impressionCounts) { return { process: function (impression) { // DEBUG mode without previous time, for impressions with properties if (impression.properties) return true; impression.pt = impressionsObserver.testAndSet(impression); var now = Date.now(); // Increments impression counter per featureName if (impression.pt) impressionCounts.track(impression.feature, now, 1); // Checks if the impression should be added in queue to be sent return (!impression.pt || impression.pt < truncateTimeFrame(now)) ? true : false; } }; }