@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
38 lines (37 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.bloomFilterFactory = void 0;
// bloom-filters is supported on the following platforms:
// - Node.js: v4.0.0 or higher
// - Google Chrome: v41 or higher
// - Mozilla Firefox: v34 or higher
// - Microsoft Edge: v12 or higher
var bloom_filters_1 = require("bloom-filters");
var EXPECTED_INSERTIONS = 10000000;
var ERROR_RATE = 0.01;
var REFRESH_RATE = 24 * 60 * 60000; // 24HS
function bloomFilterFactory(expectedInsertions, errorRate, refreshRate) {
if (expectedInsertions === void 0) { expectedInsertions = EXPECTED_INSERTIONS; }
if (errorRate === void 0) { errorRate = ERROR_RATE; }
if (refreshRate === void 0) { refreshRate = REFRESH_RATE; }
var filter = bloom_filters_1.BloomFilter.create(expectedInsertions, errorRate);
return {
refreshRate: refreshRate,
add: function (key, value) {
var data = "".concat(key, ":").concat(value);
if (filter.has(data)) {
return false;
}
filter.add(data);
return true;
},
contains: function (key, value) {
var data = "".concat(key, ":").concat(value);
return filter.has(data);
},
clear: function () {
filter = bloom_filters_1.BloomFilter.create(expectedInsertions, errorRate);
}
};
}
exports.bloomFilterFactory = bloomFilterFactory;