UNPKG

@splitsoftware/splitio-commons

Version:
34 lines (33 loc) 1.25 kB
// 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 import { BloomFilter } from 'bloom-filters'; var EXPECTED_INSERTIONS = 10000000; var ERROR_RATE = 0.01; var REFRESH_RATE = 24 * 60 * 60000; // 24HS export 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 = 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 = BloomFilter.create(expectedInsertions, errorRate); } }; }