@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
29 lines (28 loc) • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.eventsSubmitterFactory = void 0;
var submitter_1 = require("./submitter");
var constants_1 = require("../../logger/constants");
var DATA_NAME = 'events';
/**
* Submitter that periodically posts tracked events
*/
function eventsSubmitterFactory(params) {
var _a = params.settings, log = _a.log, eventsPushRate = _a.scheduler.eventsPushRate, eventsFirstPushWindow = _a.startup.eventsFirstPushWindow, postEventsBulk = params.splitApi.postEventsBulk, events = params.storage.events;
// don't retry events.
var submitter = (0, submitter_1.submitterFactory)(log, postEventsBulk, events, eventsPushRate, DATA_NAME);
// Set a timer for the first push window of events.
if (eventsFirstPushWindow > 0)
submitter = (0, submitter_1.firstPushWindowDecorator)(submitter, eventsFirstPushWindow);
// register events submitter to be executed when events cache is full
events.setOnFullQueueCb(function () {
if (submitter.isRunning()) {
log.info(constants_1.SUBMITTERS_PUSH_FULL_QUEUE, [DATA_NAME]);
submitter.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 submitter;
}
exports.eventsSubmitterFactory = eventsSubmitterFactory;