UNPKG

@splitsoftware/splitio-commons

Version:
28 lines (27 loc) 1.43 kB
"use strict"; 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;