UNPKG

@splitsoftware/splitio-commons

Version:
41 lines (40 loc) 1.54 kB
"use strict"; 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;