UNPKG

@splitsoftware/splitio-commons

Version:
29 lines (28 loc) 1.35 kB
"use strict"; 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;