@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
43 lines (42 loc) • 2.05 kB
JavaScript
import { eventsSubmitterFactory } from './eventsSubmitter';
import { impressionsSubmitterFactory } from './impressionsSubmitter';
import { impressionCountsSubmitterFactory } from './impressionCountsSubmitter';
import { telemetrySubmitterFactory } from './telemetrySubmitter';
import { uniqueKeysSubmitterFactory } from './uniqueKeysSubmitter';
export function submitterManagerFactory(params) {
var submitters = [
impressionsSubmitterFactory(params),
eventsSubmitterFactory(params),
impressionCountsSubmitterFactory(params),
uniqueKeysSubmitterFactory(params)
];
var telemetrySubmitter = telemetrySubmitterFactory(params);
return {
// `onlyTelemetry` true if SDK is created with userConsent not GRANTED
start: function (onlyTelemetry) {
if (!onlyTelemetry)
submitters.forEach(function (submitter) { return submitter.start(); });
if (telemetrySubmitter)
telemetrySubmitter.start();
},
// `allExceptTelemetry` true if userConsent is changed to DECLINED
stop: function (allExceptTelemetry) {
submitters.forEach(function (submitter) { return submitter.stop(); });
if (!allExceptTelemetry && telemetrySubmitter)
telemetrySubmitter.stop();
},
isRunning: function () {
return submitters.some(function (submitter) { return submitter.isRunning(); });
},
// Flush data. Called with `onlyTelemetry` true if SDK is destroyed with userConsent not GRANTED
execute: function (onlyTelemetry) {
var promises = onlyTelemetry ? [] : submitters.map(function (submitter) { return submitter.execute(); });
if (telemetrySubmitter)
promises.push(telemetrySubmitter.execute());
return Promise.all(promises).then(function () { });
},
isExecuting: function () {
return submitters.some(function (submitter) { return submitter.isExecuting(); });
}
};
}