@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
41 lines (40 loc) • 1.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniqueKeysTrackerFactory = void 0;
var constants_1 = require("../logger/constants");
var noopFilterAdapter = {
add: function () { return true; },
contains: function () { return true; },
clear: function () { }
};
/**
* Tracks uniques keys
* Unique Keys Tracker will be in charge of checking if the MTK was already sent to the BE in the last period
* or schedule to be sent; if not it will be added in an internal cache and sent in the next post.
*
* @param log - Logger instance
* @param uniqueKeysCache - cache to save unique keys
* @param filterAdapter - filter adapter
*/
function uniqueKeysTrackerFactory(log, uniqueKeysCache, filterAdapter) {
if (filterAdapter === void 0) { filterAdapter = noopFilterAdapter; }
var intervalId;
return {
track: function (key, featureName) {
if (!filterAdapter.add(key, featureName)) {
log.debug(constants_1.LOG_PREFIX_UNIQUE_KEYS_TRACKER + "The feature " + featureName + " and key " + key + " exist in the filter");
return;
}
uniqueKeysCache.track(key, featureName);
},
start: function () {
if (filterAdapter.refreshRate) {
intervalId = setInterval(filterAdapter.clear, filterAdapter.refreshRate);
}
},
stop: function () {
clearInterval(intervalId);
}
};
}
exports.uniqueKeysTrackerFactory = uniqueKeysTrackerFactory;
;