#jsbloom
A fast bloom filter implementation in JavaScript using the djb2 and sdbm algorithms. Uses a port of pieroxy's lz-string
From Less Hashing, Same Performance: Building a Better Bloom Filter by Adam Kirsch et al, it is possible to build k hash values from only 2 unique values. Hence, it is sufficient to have two unique hashes generated.
const filter = JSBloom(items, false_probability_chance);
filter.addEntry("xyz");
filter.checkEntry("xyz"); // returns true
filter.checkEntry("yz"); // returns false
Testing is done with mocha and chai
npm install mocha chai
mocha
items: ceiling of entries to add
false_probability_chance: chance of false positives to occur, values between 0 and 1
JSBloom will automatically generate the needed bit array and amount of hashes needed to meet your requirements.
addEntry(str): adds str to bloom filter. expects typeof str === 'string'
addEntries(arr): iterates over arr and adds every entry within
checkEntry(str): checks if str in filter, returns false if definitely not, true if maybe
importData(base64, [number_of_hashes]): loads a base 64 LZW compressed Uint8Array
exportData(): returns base 64 encoded Uint8Array LZW as string
exportData(callback): returns the base 64 encoded Uint8Array LZW compressed to provided (optional) callback