@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
37 lines (36 loc) • 1.55 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.impressionCountsSubmitterFactory = exports.fromImpressionCountsCollector = void 0;
var submitter_1 = require("./submitter");
/**
* Converts `impressionCounts` data from cache into request payload.
*/
function fromImpressionCountsCollector(impressionsCount) {
var pf = [];
var keys = Object.keys(impressionsCount);
for (var i = 0; i < keys.length; i++) {
var splitted = keys[i].split('::');
if (splitted.length !== 2)
continue;
var featureName = splitted[0];
var timeFrame = splitted[1];
var impressionsInTimeframe = {
f: featureName,
m: Number(timeFrame),
rc: impressionsCount[keys[i]] // Count
};
pf.push(impressionsInTimeframe);
}
return { pf: pf };
}
exports.fromImpressionCountsCollector = fromImpressionCountsCollector;
var IMPRESSIONS_COUNT_RATE = 1800000; // 30 minutes
/**
* Submitter that periodically posts impression counts
*/
function impressionCountsSubmitterFactory(params) {
var log = params.settings.log, postTestImpressionsCount = params.splitApi.postTestImpressionsCount, impressionCounts = params.storage.impressionCounts;
// retry impressions counts only once.
return (0, submitter_1.submitterFactory)(log, postTestImpressionsCount, impressionCounts, IMPRESSIONS_COUNT_RATE, 'impression counts', fromImpressionCountsCollector, 1);
}
exports.impressionCountsSubmitterFactory = impressionCountsSubmitterFactory;
;