@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
29 lines (28 loc) • 1.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.strategyOptimizedFactory = void 0;
var time_1 = require("../../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
*/
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 < (0, time_1.truncateTimeFrame)(now)) ? true : false;
}
};
}
exports.strategyOptimizedFactory = strategyOptimizedFactory;
;