@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
28 lines (27 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniqueKeysSubmitterFactory = void 0;
var constants_1 = require("../../logger/constants");
var submitter_1 = require("./submitter");
var DATA_NAME = 'unique keys';
var UNIQUE_KEYS_RATE = 900000; // 15 minutes
/**
* Submitter that periodically posts impression counts
*/
function uniqueKeysSubmitterFactory(params) {
var _a = params.settings, log = _a.log, key = _a.core.key, _b = params.splitApi, postUniqueKeysBulkCs = _b.postUniqueKeysBulkCs, postUniqueKeysBulkSs = _b.postUniqueKeysBulkSs, uniqueKeys = params.storage.uniqueKeys;
var isClientSide = key !== undefined;
var postUniqueKeysBulk = isClientSide ? postUniqueKeysBulkCs : postUniqueKeysBulkSs;
var syncTask = (0, submitter_1.submitterFactory)(log, postUniqueKeysBulk, uniqueKeys, UNIQUE_KEYS_RATE, DATA_NAME);
// register unique keys submitter to be executed when uniqueKeys cache is full
uniqueKeys.setOnFullQueueCb(function () {
if (syncTask.isRunning()) {
log.info(constants_1.SUBMITTERS_PUSH_FULL_QUEUE, [DATA_NAME]);
syncTask.execute();
}
// If submitter is stopped (e.g., user consent declined or unknown, or app state offline), we don't send the data.
// Data will be sent when submitter is resumed.
});
return syncTask;
}
exports.uniqueKeysSubmitterFactory = uniqueKeysSubmitterFactory;