{"_id":"bloomfilter","_rev":"49-09fb3a3614fb7c8d174e56e3c62b121d","name":"bloomfilter","dist-tags":{"latest":"1.2.0"},"versions":{"0.0.4":{"name":"bloomfilter","version":"0.0.4","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.4","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"cbf4921ae32d057dfb19480ed867f4548f6a1de7","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.4.tgz","integrity":"sha512-vrnCNl4x6wDzQOPBBB3mRQrs3YFWaJx7yrnp3KTiYdnVdkwUJIZLXeeMS6TbqnyjPa+TwEwkgorvzSmuv2th9Q==","signatures":[{"sig":"MEQCIAq9bsRyrmmxFTmuIvGZSihvU61t5eKBbRh9X4ZFcIxWAiA8aziaBEZ6hAlB4790Ffg+uTd5neKtz7MaEYnZLNpuoQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","engines":{"node":"*"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.1.0-alpha-2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"v0.6.3","dependencies":{"vows":"0.6.0"},"_defaultsLoaded":true,"devDependencies":{},"_engineSupported":true},"0.0.5":{"name":"bloomfilter","version":"0.0.5","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.5","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"4f28cd9c9647c9fbeb5a25450ab5fbb598cd05a9","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.5.tgz","integrity":"sha512-BFRE1sKn3FwNxPtqNqUY7j9SrqIU4vBkRwbgI9fG/YiX7LdsMjwP/jUdYDhkfhxNxPOXkFlCgAlKbbd6C9oYig==","signatures":[{"sig":"MEUCIAk0F4BUcRqi2wIVJsqQcXidd71GqXgPVAA5D5kt7Er2AiEAj7h/urZTO0OoDUSid/fLWljnKrluVQfnjruL/nbXWnU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","engines":{"node":"*"},"scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.1.0-alpha-2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"v0.6.3","dependencies":{},"_defaultsLoaded":true,"devDependencies":{"vows":"0.6.0"},"_engineSupported":true},"0.0.6":{"name":"bloomfilter","version":"0.0.6","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.6","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"76b53e33e82913380d747150dcb2035462607247","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.6.tgz","integrity":"sha512-1tvTDeAY+eQCaUkJorAAp7U8GTXaxNQuh0kgtSH1REC7QuVZQSV7QC4bm3QVCxKYnAXtdet8BCvJqqB/AgvFTg==","signatures":[{"sig":"MEUCIQCjyvl7VsPa/XyfO+U3II/ltMsbY0aWX2QV1Kj4O2nnFwIgMxWvM4JTCSP2kHLFQwZhJC5WLUzVVXcQv3F/nm2d3as=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","engines":{"node":"*"},"scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.1.0-alpha-2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"v0.6.3","dependencies":{},"_defaultsLoaded":true,"devDependencies":{"vows":"0.6.0"},"_engineSupported":true},"0.0.7":{"name":"bloomfilter","version":"0.0.7","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.7","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"bb8e389649922600791378b852d09b2ed1928497","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.7.tgz","integrity":"sha512-e51BLtZEtkQLpkybd0+cel/Fn9U2thlegoldS6MwDWJoY/69pT26lRAmEySOUloTqDTDFOOVvUmWxizruDq4bQ==","signatures":[{"sig":"MEQCIH1YvVuL9RuzIlnuA19szQ7T1G7hpLFShjwYn3aW5NqLAiAUXkHg+QTHPerS9vSfNQ33GZ7kUYMhHMDwUhyW3wGK1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","engines":{"node":"*"},"scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.1.0-alpha-2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"v0.6.3","dependencies":{},"_defaultsLoaded":true,"devDependencies":{"vows":"0.6.0"},"_engineSupported":true},"0.0.8":{"name":"bloomfilter","version":"0.0.8","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.8","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"7786fce6f792eac6ce1569725b1e9b0bc5a6d255","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.8.tgz","integrity":"sha512-8iHuwIXBncJTpDCEyCO9wwEAeaaM8gdEb/bYVuV64zKl5kb2oZ+qat1RV9sm8qLPWwpDXylk0F4hmaCnUP16Hg==","signatures":[{"sig":"MEUCIQCFmAqpK5RNveIvGE3Fz9cS4FB7ZKm4qNjVTdvivyAkswIgGgRagCV6/rjMO0pkQDHiikZb9Hw6KabIX/D0FO+YcC8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","engines":{"node":"*"},"scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.1.0-alpha-2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"v0.6.3","dependencies":{},"_defaultsLoaded":true,"devDependencies":{"vows":"0.6.0"},"_engineSupported":true},"0.0.9":{"name":"bloomfilter","version":"0.0.9","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.9","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"e679429860425866549fb6cc9fdeda0707a323e3","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.9.tgz","integrity":"sha512-qiJdwdVs/GuCWIbqlY2BZDYvpjqrP+fOHWk644zYAB/zereZ77ScaRf883dJLjI72tmAs2bJQVeUtn0xXjFnRg==","signatures":[{"sig":"MEUCIHyGil1ShrTLxnyVklHLpZhQBFeGB2hmSlmU/8ITeYyxAiEA5mIxHsnp4J0w74x/BU94FPJ0xGZax4ch1txMnRvKHv8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","engines":{"node":"*"},"scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.1.0-alpha-2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"v0.6.3","dependencies":{},"_defaultsLoaded":true,"devDependencies":{"vows":"0.6.0"},"_engineSupported":true},"0.0.10":{"name":"bloomfilter","version":"0.0.10","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.10","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"2e4cdf81fadaddfd287e5e3371256e32c2027be0","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.10.tgz","integrity":"sha512-AfR/dPyIOCzdlY1JvmZgfqfYIQn/p/JQgfRnnF2Md/w/Yi7YFZm3KOp+u/FcLgRjp0jlSutgRPQWKX7NH0TQHQ==","signatures":[{"sig":"MEYCIQDw0DtkOTMcrPYyDN+C9ILfBjrigpoQeufEKfN1AGI91gIhAPOgIJmt0YR9e1DYEP7rNVdfhrcEAYPPzvM/DArcAPZ1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","scripts":{"test":"./node_modules/vows/bin/vows"},"repository":{"url":"http://github.com/jasondavies/bloomfilter.js.git","type":"git"},"description":"Fast bloom filter in JavaScript.","directories":{},"devDependencies":{"vows":"0.6.0"}},"0.0.11":{"name":"bloomfilter","version":"0.0.11","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.11","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"1a3f8fc67e4ab97e22829127d6c046b8f3895cc8","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.11.tgz","integrity":"sha512-PQBZU5M3vp7yKAeySHNJpic09tdsCy6X3wxcN90tE4tM6IuEvrkzh4LnZFHsq6oARWOFZ1fOYA0BgnDKhRAiyw==","signatures":[{"sig":"MEUCIBJxMRtPWav1jrHgcZ1Bzuei5UXX50BcSWt7VaB0Qw5bAiEAqLLdD5jc60GcoET3kM/Q1HGCBmlQ8h6Nkq5i1KNcaSg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"http://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.1.59","description":"Fast bloom filter in JavaScript.","directories":{},"devDependencies":{"vows":"0.6.0"}},"0.0.12":{"name":"bloomfilter","version":"0.0.12","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.12","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","dist":{"shasum":"d9afbab92c2df0c4ec1d4fcb316cbb659cf43b5e","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.12.tgz","integrity":"sha512-9rhrR9/aUpq4KXUQirFkwZ1Aj/BT19act+5bCpArhDH24wMJvPINQGYczjHOsdrF8SM22D10RlOxLGUg/VnPrw==","signatures":[{"sig":"MEYCIQC+WvTBMxgHkIMSYv0SG6K7P+hPmmSrcUB4OssfwcUavAIhANu7BLUmi3VmCSicfWRBkxrFQEiLZlqrcmWB1fszG1bI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","_from":".","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"http://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.2.18","description":"Fast bloom filter in JavaScript.","directories":{},"devDependencies":{"vows":"0.7.0"}},"0.0.14":{"name":"bloomfilter","version":"0.0.14","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.14","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"e994cbcca94153cc8657aa0daf5756958944ae5e","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.14.tgz","integrity":"sha512-b1t8JoW7f0gd4KLKnqfDUsepkZi0gNneKrL4IJ6pQTaulINfYs8Szwb9Y2EYFAOgYh2ctBxe3imsFk7+3eOaFA==","signatures":[{"sig":"MEUCIQCpiMXCmUpv/FVWMuLUS8lpf3/Gt9nHowAIlUBZi1A5XgIgLixFBhtcJB49v+65BZQbvgt2fp2W3vl9yAKEVAPJEAo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","_from":".","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"http://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"1.4.3","description":"Fast bloom filter in JavaScript.","directories":{},"devDependencies":{"vows":"0.7.0"}},"0.0.15":{"name":"bloomfilter","version":"0.0.15","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.15","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"320d10d223ce2125a1af6c70ea5ad8ac1283ace3","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.15.tgz","integrity":"sha512-zyUVAf0voJyPXA9qm8Tc+11l1pQ7PBn07b9Cg9sJzUEzWa8FFmwm6tooxwB6vCH/xsaEMvIFVgXmoDokLkhYrQ==","signatures":[{"sig":"MEYCIQDbgcOnttHJnqO+g/TTk52zKEaHMprAIYbSmtvqaY47iAIhANPCk3eZEMDNLx0sMns7Q+UxMuy96PXmnkG19/XwLyai","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","_from":".","_shasum":"320d10d223ce2125a1af6c70ea5ad8ac1283ace3","gitHead":"27a37d87c2e168770e7709329a099ab13354764d","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"http://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"2.5.1","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"0.12.0","devDependencies":{"vows":"0.7.0"}},"0.0.16":{"name":"bloomfilter","version":"0.0.16","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.16","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"42602390c7466bdd39048494782d3e1a6a0f2af3","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.16.tgz","integrity":"sha512-dJG+f666ZYoqodStymR+Es0hE/yBGjaNv/1A/UqerflS/Krgzfv+AhyRNG4CDKlSuhpWHbbaVju8hzedyLz2Iw==","signatures":[{"sig":"MEUCIBFHt+PItOvcZboUYJbbAfOHqEGPBP0r63qrBNXpY6S0AiEAjXyH5Vv7p0/WZG5Dosfan4K3imW2E8oWjWJkZozvwNM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"bloomfilter.js","_from":".","_shasum":"42602390c7466bdd39048494782d3e1a6a0f2af3","gitHead":"27b1760b940482ab4d994ac13aeac8a214723cef","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"http://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"2.5.1","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"0.12.0","devDependencies":{"vows":"0.7.0"}},"0.0.17":{"name":"bloomfilter","version":"0.0.17","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"_id":"bloomfilter@0.0.17","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"a7032027af2333d40fabf6afcebb2e2299050c1b","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.17.tgz","fileCount":4,"integrity":"sha512-HuRj3KGHCYRpiBrMZig6dRDy9gHD4rSCiWcKWZtCHAqc2WYk6AbV+vp0VCAvhR26hXoAoKJftyQSaAnJBuMKqw==","signatures":[{"sig":"MEUCIDxfmELrvjCcud7RolbD+s043hIWiNuwsYBpWbnH3j/1AiEAzFWp2Cs6ULZgcXwSVngtsr6nfsUT2Om/3XZBJ9syF0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2GMDCRA9TVsSAnZWagAA/dwQAIxqZiiJPtcvfFIS7PEN\nS1M6Q7XqEjhn+cR+0pOoFNagTHMcEHH+WhYOCkjvXTm9VsSJEp9Xupa8mSS1\nZCtlW3fvWusVnP8oqE7WU8dkKyb+DtyXZpLTb/Mw5r/S9EwJOM+QN5UGorm2\n4AV+uJMpbjZ6rZuuXfDdu6onT6XHIBaj58Pf1qFrptOQiQM8c7KQkqndUZgh\n/19rrt5eGLmVyKTwxjdXYK9FTGV5NUqBj8GFa1BtuP9JP08naRwhvOQbc+fQ\nf+bHFBbK8EKNTX6O3MttGVP6zETumZUJSPv8JOVchQ5/AvjSZ9bddGcXgp97\nRndj0dWSh0EopPlUkkQCrJkvNlufpX5tAfx6jrcXKFoWyoH5Rf5FMpGCKQtk\nxPnNhSBDODbwVNwBZmEbeM0qyYZy8aI+tgSlM53qxNzEJCu3FFFta6tzbAnx\nuEFkuOgcTOSasvb049VQOhBUWc3SxwuHR82N09RT/AfLXS3UpPDh0YytPe/6\n1l+QviubomA569P88SUphEdFv5dPThFjzNV/0nCqBXhCyyQrgLgCgq7JH0ku\nJIOGIdQ0pEjymSTK8prRbndAMrDGnD3J/BztmoR+1Hj5KmtVFUelgYgWa8Wk\ns5NdddjdSjxElW0YdOc9eUh2LWXUjChj2fkem2k/JqvwYO2COI2HFNAx/D9h\nHu7q\r\n=lZT3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"bloomfilter.js","gitHead":"ea32aabee23086ff68f42f60a48197bb07d3450d","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+ssh://git@github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"5.6.0","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"9.11.1","_hasShrinkwrap":false,"devDependencies":{"vows":"0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_0.0.17_1524130562596_0.5397809499652775","host":"s3://npm-registry-packages"}},"0.0.18":{"name":"bloomfilter","version":"0.0.18","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"http://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@0.0.18","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"6d55d34f0a214b235287b4eac9203ac623413dab","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.18.tgz","fileCount":4,"integrity":"sha512-CbnyHE78gY1tpXS/Ap+B0RJxKdRWCDzjBnX97UJSG8rdLv1PK8GiTWc/CCQyWu6PWVD4lUceeFrqC6Mf3nMgOA==","signatures":[{"sig":"MEQCIEUGE3r+5Sw4zgkP0X5pAusiGTHsmdBoqdCLSpzZRZl/AiBCElUzOO7VYSRRBOrCZrSS+1ZlTApH8kcDC4OqTmrF9A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4hIpCRA9TVsSAnZWagAAG/0P+QHRjHUC4kGHxUm04dcy\nj9yT0z1mhbzrO/dXDKODXNU34AW0XmtgEzErQQeN8Ygf2/Poy8vBocVOJrxW\nom59tkNcCpU7Hl63pw0L2jlzEcR5BtigovkHPK3SCijshG8j9v4VFZmGRqP5\nqbDPCjJX2F1uvikX1wi+PM3hfzsxIwDjj3GfFHk+eQYQGg9HpFAc87JulYwO\n0oeh1gJfGKq/WGLMakqJskqsfLIdNNf6bJubHQl+5TKrWshFai+AFetmvpGN\nWnwgwoNHfQdUlGzf8nnRYg0mCZ721OWNzS0uSrSus0XLkYoMPanX3oGUHzTf\nUcMwpNgIW5ue88NdW0V8+33SzJEkcut+k/XpV7a/1LhMp4Mf7lVqMrQejY2y\nEk53hAw453z4LNaV1HWlij/zuGNgB66rUG6R5SMNdtxW4e96+3FzT3qzGlCr\nZTic018Jw6XjxALRSyHJfVGY2xHxQ/X/jadEWOwikVWDyhQrINqMQQBF1UQL\n/ts6HXRNFYjGYdeMZaNDlXdfcWIV+UZ9RBLSQ0XONlev7ipmGIJzpI0b3dGc\nl/Fp7/reENhzTIowrPimHjtmH9JyEqgSgCV0ThfsjCfeFjilys6dS4BbPxgy\nV8d2WeaBmzAWWjbXXNdSW4n3hqoCKStCO7Y2JES20++/UVYF++Q5XwGx4cAk\nXNGB\r\n=HPXT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"bloomfilter.js","gitHead":"649e43e60ded806a3f0d1ca88d6a42c6dffba2db","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+ssh://git@github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"5.6.0","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"10.0.0","_hasShrinkwrap":false,"devDependencies":{"vows":"0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_0.0.18_1524765224891_0.47444669079326074","host":"s3://npm-registry-packages"}},"0.0.19":{"name":"bloomfilter","version":"0.0.19","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@0.0.19","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"3d0e62ce41fc8fe402533902cd27e09e6a738d43","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.19.tgz","fileCount":5,"integrity":"sha512-WPhd8qNG79Gnz3i3Uk/wx/Dm6ghYV5sUsTmWGbiQNV7WvnsC8OTGZSe0WNXfPPsKDdxV2g6Q7JiO6af1BOGmXA==","signatures":[{"sig":"MEYCIQCyBtyp4AldN3j9tSH3XlG/UhY3542Zw4O8b9W9PYb+GgIhAMZBF5dXyvVy4QmV5CaLwoMT6W2JKt0CiST8N8E6DyNE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7667},"main":"bloomfilter.js","gitHead":"8b3c4a22e8e8c6067ac81c6e15aed17f0f4665a9","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"10.8.2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"18.20.5","_hasShrinkwrap":false,"devDependencies":{"vows":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_0.0.19_1734519446464_0.05425315428777999","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"bloomfilter","version":"0.0.20","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@0.0.20","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"f973d5abdb9c1e7b482a9b4812706e710ed29b60","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.20.tgz","fileCount":5,"integrity":"sha512-OLl/yZPNVDGXdNLzi07ClT09GqMPmMLUq1ft2cp244mwPccll6I9ZXiJCEk7kwYX3EwqWZdsCDOw8CixbD/+1g==","signatures":[{"sig":"MEQCIEHRVgcMOx504bE/hI+28928A3EMOwybj1LBLWjDlS0LAiBgPEFb7vh6Me3XHTYQmvhLN0G2I933aPQX4Q2TNbF8IA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7546},"main":"bloomfilter.js","gitHead":"c3dae79c7de789d09ee3603ca123c77001e2c731","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"10.8.2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"18.20.5","_hasShrinkwrap":false,"devDependencies":{"vows":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_0.0.20_1734528405991_0.725089482148696","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"bloomfilter","version":"0.0.21","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@0.0.21","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"f6d5a063ba779d97030ca5c20ea488158b363800","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-0.0.21.tgz","fileCount":5,"integrity":"sha512-80QsnSRgvoQC2MgfIz0hWWcNU04PjSUm7I0lesMRULAW4ty6H4P58+gvDGhQXQ+bgHDLf2r+uwfSpTXF2GO3Uw==","signatures":[{"sig":"MEYCIQC+HbCrHX8kdoN5s0999kZ5aRHnozwyD2EvD/9YGZw3ZwIhAJM1u1DKwZyYN43xu40SRVydiJh2FYuY09r+UM7Ufpod","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8997},"main":"bloomfilter.js","gitHead":"ad00141adf586e39cdde5ea6bedbccc5fbf507f8","scripts":{"test":"./node_modules/vows/bin/vows"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"10.8.2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"18.20.5","_hasShrinkwrap":false,"devDependencies":{"vows":"0.8.3"},"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_0.0.21_1734542063400_0.46442745060711266","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"bloomfilter","version":"1.0.0","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@1.0.0","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"33ca59c0004af91a543a42c48dac1d360e1954bb","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-1.0.0.tgz","fileCount":4,"integrity":"sha512-O74WN5vp5gWP4/X00ZT7y64ZGEuxPYemRXSkGIcH7wEPXaYUsONJEC7z08zCGL0p8x1iQRerE64aCNC5qDUgbg==","signatures":[{"sig":"MEYCIQDnTEZ3cIk0Y4CdCiTVNmod5xoisHmsx4YVi/LygiSd4QIhAPWLKynOP9qvftLRTwkNGJn8VqcaL8Rrr+ECWuhNn2Ip","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7995},"main":"bloomfilter.js","type":"module","engines":{"node":">=18.0.0"},"exports":"./bloomfilter.js","gitHead":"757f4adb23ec5046cc60f3675556536beddbac8f","scripts":{"test":"node --test"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"10.9.2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_1.0.0_1764092470009_0.6981157219032399","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"bloomfilter","version":"1.0.1","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@1.0.1","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"c583ab3717eabbc7eda955e0e8d7787bac26c7ae","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-1.0.1.tgz","fileCount":4,"integrity":"sha512-/5AwPz5IX1225ptq5AImp58lR8LeSJJCNoVlgpcuBf1acOCWV/693I96FNp+o7wgsG+9SouQyVA8OjiR3RAJ5g==","signatures":[{"sig":"MEYCIQDoMgvs75J3gNrUtjLMzvVgypfMlzAVJYtJfEILBb4PfAIhAPSagzylKmN5JhA8tl0WITt/2o/mXjz4FwcQ23W5IPan","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9571},"main":"bloomfilter.js","type":"module","engines":{"node":">=18.0.0"},"exports":"./bloomfilter.js","gitHead":"4d663aae44f400a3b653595456458f7afc0a67ed","scripts":{"test":"node --test"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"10.9.2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_1.0.1_1772898124666_0.5942337488852629","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"bloomfilter","version":"1.1.0","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@1.1.0","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"7aab64dcb0942a8b49f1889e9723e0d744893b60","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-1.1.0.tgz","fileCount":4,"integrity":"sha512-J3KbJUaahkuo2MbqTFS75Bk7XBpjPvNwZbtolNY2cQiiJFX3WyFyaVtbjaF6mbmzYbzLaZeYE0SMO7e0MEORDg==","signatures":[{"sig":"MEUCIQDRgu7ZcYqgRAdiuWFPK/EaQ1D7zLXaUjBO08DojZcNjgIgaKjm9zUEvt5WR3pP7Vh3l/Dn4vpD8nkv48oOIUjDF8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10445},"main":"bloomfilter.js","type":"module","engines":{"node":">=18.0.0"},"exports":"./bloomfilter.js","gitHead":"3703d8a40c9e3f3ad5a3ee3071888a793b69471b","scripts":{"test":"node --test"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"10.9.2","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_1.1.0_1772898779727_0.6065373466880297","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"bloomfilter","version":"1.1.1","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@1.1.1","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"18291632ab423f0ae74954052b62a62ffcbb79dc","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-1.1.1.tgz","fileCount":6,"integrity":"sha512-H768DyAAFL38mc9sVkO//ugCv2RINGM0zuEqfnKdfg1eu2z77SYU0WddUcywpuRi5Z25kmX5gRzUEd2uQBfXIA==","signatures":[{"sig":"MEUCIB+8dunTxfJh6eDWtf21ldeaSA59/4inL+Un9MQK7/kPAiEAkWThrS7IyHbG/i0NDePREx00qNL31bBC9EcTqRtdvws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICbhmbN8YyAa+F7lhBBidrmKvBeuPtsR4A1q9hLT2+/8AiAUw1vybqQOpFJqr6PCnH6guXv6ZhaafxRjfdoTh8WhnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22619},"main":"bloomfilter.js","type":"module","_from":"file:/tmp/bloomfilter-release.ZQRK6a/bloomfilter-1.1.1.tgz","engines":{"node":">=18.0.0"},"exports":"./bloomfilter.js","scripts":{"test":"node --test","benchmark":"node benchmark.js","benchmark:compare":"node benchmark-compare.js"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"_resolved":"/tmp/bloomfilter-release.ZQRK6a/bloomfilter-1.1.1.tgz","_integrity":"sha512-H768DyAAFL38mc9sVkO//ugCv2RINGM0zuEqfnKdfg1eu2z77SYU0WddUcywpuRi5Z25kmX5gRzUEd2uQBfXIA==","repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_1.1.1_1790066731685_0.3579194395713843","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"bloomfilter","version":"1.1.2","keywords":["bloom filter","probabilistic data structure"],"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","_id":"bloomfilter@1.1.2","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"homepage":"https://github.com/jasondavies/bloomfilter.js","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"6137f14bb1ac52ef16ff6b9d572fc12e6f4a00da","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-1.1.2.tgz","fileCount":6,"integrity":"sha512-lwTsgsO5UHrWJbq6+ywxcvetcloRMDCkE0j5WzAf8tD9p4U2U5UeJTNAWv23etREbcSbBVtk9VyVZdf5h3kuiQ==","signatures":[{"sig":"MEUCIQDmdfH5sBueo9j2o1ktDcAFe/CpWXGXY3ro0z+YT/kZ+gIgDBrYiQ0apqfmn+Z73sz4rOEAYffBn7Y6fMcX+6TtwDY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCX3O3GLSNlXoZQXXGO4EYqcyRYYpSz0blMsk9y99j4iQIhAPBYh7IZ6P3QV4M4y7wiW7T3uTw+En+iV5C4YxTZ/Y6T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22285},"main":"bloomfilter.js","type":"module","_from":"file:/tmp/bloomfilter-release-1.1.2.7mqxkl/bloomfilter-1.1.2.tgz","engines":{"node":">=18.0.0"},"exports":"./bloomfilter.js","scripts":{"test":"node --test","benchmark":"node --expose-gc benchmark.js","benchmark:compare":"node benchmark-compare.js"},"_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"_resolved":"/tmp/bloomfilter-release-1.1.2.7mqxkl/bloomfilter-1.1.2.tgz","_integrity":"sha512-lwTsgsO5UHrWJbq6+ywxcvetcloRMDCkE0j5WzAf8tD9p4U2U5UeJTNAWv23etREbcSbBVtk9VyVZdf5h3kuiQ==","repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast bloom filter in JavaScript.","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/bloomfilter_1.1.2_1790076806336_0.09421220232013017","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"_id":"bloomfilter@1.2.0","bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"dist":{"shasum":"95c59a695bcaec38d2be5a277945bfe9bdda67ad","tarball":"https://registry.npmjs.org/bloomfilter/-/bloomfilter-1.2.0.tgz","fileCount":4,"integrity":"sha512-Rl1HkW3+y04bPIlSRavUicD67C8fCBEWou7v1DQp2phBw7lMleXSf398TXXNgPPvStj0me4Uc5xd1/M+L/drsA==","signatures":[{"sig":"MEUCIQCJ8YJvdP7iklZbABEHtSv9g2AyJlSEgEY6wG3MvLzA2gIgb2OTIrtBOXFmutu9paTqo1OMsVRqqUppA67nrnmHib0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDGZOQNhqJYpS8edvvOAIXdzg06bJqU5M4XZE/dybB+1wIhAO5qBK/c3h3wCD22IrqYgSNbKMfVUBeZ9LJ9sKan51iH"}],"unpackedSize":25948},"main":"bloomfilter.js","name":"bloomfilter","type":"module","_from":"file:/tmp/bloomfilter-publish-1.2.0-pksc4gja/bloomfilter-1.2.0.tgz","author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"engines":{"node":">=18.0.0"},"exports":"./bloomfilter.js","license":"BSD-3-Clause","scripts":{"test":"node test/bloomfilter-test.js","benchmark":"node --expose-gc benchmark.js"},"version":"1.2.0","_npmUser":{"name":"jasondavies","email":"jason@jasondavies.com"},"homepage":"https://github.com/jasondavies/bloomfilter.js","keywords":["bloom filter","probabilistic data structure"],"_resolved":"/tmp/bloomfilter-publish-1.2.0-pksc4gja/bloomfilter-1.2.0.tgz","_integrity":"sha512-Rl1HkW3+y04bPIlSRavUicD67C8fCBEWou7v1DQp2phBw7lMleXSf398TXXNgPPvStj0me4Uc5xd1/M+L/drsA==","repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast bloom filter in JavaScript.","directories":{},"maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bloomfilter_1.2.0_1792314071201_0.6616537367491533"}}},"time":{"created":"2011-12-07T11:54:53.297Z","modified":"2026-10-18T09:01:11.487Z","0.0.4":"2011-12-07T11:54:54.895Z","0.0.5":"2011-12-07T12:07:38.952Z","0.0.6":"2011-12-07T21:57:13.197Z","0.0.7":"2011-12-07T23:11:08.032Z","0.0.8":"2011-12-08T18:44:29.724Z","0.0.9":"2011-12-08T21:31:24.313Z","0.0.10":"2012-07-09T14:02:25.165Z","0.0.11":"2012-09-06T08:21:26.926Z","0.0.12":"2013-04-30T11:07:56.465Z","0.0.14":"2014-02-28T15:42:34.665Z","0.0.15":"2015-06-04T17:52:23.544Z","0.0.16":"2015-06-04T18:29:12.818Z","0.0.17":"2018-04-19T09:36:02.742Z","0.0.18":"2018-04-26T17:53:45.028Z","0.0.19":"2024-12-18T10:57:26.622Z","0.0.20":"2024-12-18T13:26:46.175Z","0.0.21":"2024-12-18T17:14:23.574Z","1.0.0":"2025-11-25T17:41:10.200Z","1.0.1":"2026-03-07T15:42:04.798Z","1.1.0":"2026-03-07T15:52:59.883Z","1.1.1":"2026-09-22T08:45:31.769Z","1.1.2":"2026-09-22T11:33:26.432Z","1.2.0":"2026-10-18T09:01:11.289Z"},"bugs":{"url":"https://github.com/jasondavies/bloomfilter.js/issues"},"author":{"url":"https://www.jasondavies.com/","name":"Jason Davies"},"license":"BSD-3-Clause","homepage":"https://github.com/jasondavies/bloomfilter.js","keywords":["bloom filter","probabilistic data structure"],"repository":{"url":"git+https://github.com/jasondavies/bloomfilter.js.git","type":"git"},"description":"Fast bloom filter in JavaScript.","maintainers":[{"name":"jasondavies","email":"jason@jasondavies.com"}],"readme":"Bloom Filter\n============\n\nThis JavaScript bloom filter implementation uses the non-cryptographic\n[Fowler–Noll–Vo hash function][1] for speed.\n\nUsage\n-----\n\n```javascript\nimport { BloomFilter } from 'bloomfilter';\n\nconst bloom = new BloomFilter(\n  32 * 256, // number of bits to allocate.\n  16        // number of hash functions.\n);\n\n// Add some elements to the filter.\nbloom.add(\"foo\");\nbloom.add(\"bar\");\n\n// Test if an item is in our filter.\n// Returns true if an item is probably in the set,\n// or false if an item is definitely not in the set.\nbloom.test(\"foo\");\nbloom.test(\"bar\");\nbloom.test(\"blah\");\n\n// Serialisation.\nconst json = JSON.stringify(bloom);\n\n// Deserialisation.\nconst loadedBloom = BloomFilter.fromJSON(json);\n\n// Automatically pick {m, k} based on number of elements and target false\n// positive error rate.\nconst autoBloom = BloomFilter.withTargetError(1_000_000, 1e-6);\n```\n\nAPI reference\n-------------\n\n### `new BloomFilter(m, k)`\n\nCreates an empty filter. `m` is a positive finite number of bits, at most\n4,294,967,296 (2³²), rounded up to a multiple of 32. `k` is an integer from 1 to\n2,048 specifying the number of hash locations per value. Invalid parameters throw\n`RangeError`. The limit on `k` bounds the working locations buffer to at most\n8 KiB and limits the number of bit operations per inserted value.\n\n### `new BloomFilter(buckets, k)`\n\nCreates a filter by copying a non-empty array-like collection of unsigned 32-bit\nintegers. Arrays and `Uint32Array` instances are accepted. Each bucket stores 32\nbits, so the resulting `m` is `buckets.length * 32`. There may be at most\n134,217,728 buckets; each value must be an integer from 0 to 4,294,967,295.\n`k` must be an integer from 1 to 2,048. Invalid parameters throw `RangeError`.\n\n`Uint32Array` inputs are copied directly, using their actual typed-array length.\nOther inputs are read once into validated chunks before allocating the final\nbucket buffer. Temporary storage grows with the number of validated values,\nnot just the declared length. For more than 16,384 buckets, these chunks can\ntemporarily require roughly one extra bucket buffer's worth of memory: up to\n512 MiB at the maximum filter size, in addition to the input and final filter.\nThis also applies when restoring a large filter from JSON. A `Uint32Array`\ninput avoids that extra copy. The filter owns its copy: later changes to the\ninput buckets do not affect it.\n\n### `BloomFilter.withTargetError(n, error)`\n\nReturns an empty filter sized for `n` expected distinct values and a target\nfalse-positive probability of `error`. `n` must be a positive finite number;\n`error` must be finite and strictly between 0 and 1. The method chooses `m` and\n`k` automatically, subject to the constructor's limits. Invalid parameters or a\ncomputed bit size or hash count beyond those limits throw `RangeError`.\n\nThe target is an estimate, not a guarantee. Inserting more values than expected\nincreases the false-positive probability.\n\n### Filter properties\n\n| Property | Meaning |\n| --- | --- |\n| `m` | Allocated number of bits, after rounding. |\n| `k` | Number of hash locations computed per value. |\n| `buckets` | The live `Uint32Array` containing the filter's bits. |\n\nTreat `m` and `k` as read-only configuration. Changes to `buckets` immediately\nchange the filter. Bit position `p` is stored in bucket `p >>> 5`, with mask\n`1 << (p & 31)`. Clearing bits can introduce false negatives for inserted values.\n\n### `filter.add(value)`\n\nInserts a value by setting its hash locations. Existing bits are preserved;\ninserting the same value again has no additional effect. Returns `undefined`.\n\n`add`, `test` and `locations` all coerce values using `value + \"\"` before hashing.\nFor example, `42` and `\"42\"` are the same value to the filter. Symbols throw\n`TypeError`, and exceptions from an object's conversion are propagated.\n\n### `filter.test(value)`\n\nReturns `false` if any required bit is missing, or `true` if all are set. For a\nfilter populated with `add` or complete, compatible sparse updates, `false`\nmeans the value is definitely absent; `true` means it may be present because\nfalse positives are possible. Does not change the filter.\n\n### `filter.locations(value)`\n\nReturns the `k` hash positions for a value as a `Uint8Array`, `Uint16Array` or\n`Uint32Array`, depending on the filter's size. Positions are in `[0, m)` and may\ninclude duplicates. This method **does not insert the value or set any bits**.\n\nThe returned array is reused by the next call to `locations` on the same filter.\nCopy it with `Array.from(filter.locations(value))` if you need to retain the\npositions. `add` and `test` do not overwrite this array.\n\nFor JSON transport, use `JSON.stringify(Array.from(filter.locations(value)))`.\nSerialising the typed array directly produces an object with numeric keys, not\nan array, so the parsed result cannot be passed to `addLocations`.\n\n### `filter.addLocations(locations)`\n\nSets the supplied bit positions, preserves existing bits and returns `this` for\nchaining. Accepts an iterable of numeric integers, including arrays, typed arrays,\nsets and generators. Every position must be at least zero and less than `m`.\n\nA batch may contain positions for multiple values, and its length need not equal\n`k`. Duplicates are harmless; an empty iterable changes nothing. Positions are\ncopied and validated before any bits are changed, so invalid input or an\nexception while reading it leaves the buckets unchanged.\n\nInvalid positions, including non-number entries, throw `RangeError`. Strings\nand non-iterable collections throw `TypeError`. A JSON string must first be\nparsed into an array.\n\n### `BloomFilter.fromLocations(m, k, locations)`\n\nReturns a new filter with the supplied positions set and all other bits clear.\n`m` and `k` have the same requirements as the numeric constructor. Positions\nhave the same requirements as `addLocations` and are validated before allocating\nthe filter. Bounds use the rounded size: `m = 33` allocates 64 bits and accepts\npositions 0 through 63.\n\n### `filter.countBits()`\n\nReturns the exact number of set bits, from 0 to `m`. This is not the number of\ninserted values: their hash locations may overlap.\n\n### `filter.size()`\n\nReturns an estimate of the number of distinct inserted values, based on the\nnumber of set bits. The result may be fractional and is `Infinity` when every\nbit is set. It is not an insertion counter; arbitrary manually set bits may not\nrepresent valid inserted values.\n\n### `filter.error()`\n\nReturns an estimated current false-positive probability, calculated as\n`(filter.countBits() / filter.m) ** filter.k`. The result is 0 for an empty\nfilter and 1 for a filter with every bit set. As with `size`, this is an estimate\nbased on occupancy and the hashing assumptions, not a measured error rate.\n\n`countBits`, `size` and `error` each scan the full bucket array.\n\n### `filter.toJSON()`\n\nReturns a plain object containing `{ version: 1, m, k, buckets }`. `buckets` is a\nnew array of unsigned 32-bit integers, independent of the live filter. This\nmethod is called automatically by `JSON.stringify(filter)`; it does not itself\nreturn a JSON string.\n\n### `BloomFilter.fromJSON(value)`\n\nReturns a new filter restored from a JSON string or an object. `k` and `buckets`\nare required and follow the constructor's validation rules. `version` may be\nomitted or must equal `1`; `m` may be omitted or must equal `buckets.length * 32`.\nThe bucket data is copied.\n\nInvalid filter data or an unsupported version throws `RangeError`. Malformed\nJSON text throws `SyntaxError` from `JSON.parse`.\n\n### `BloomFilter.union(a, b)`\n\nReturns a new filter whose buckets are the bitwise OR of `a` and `b`. It\nrecognises values inserted into either input, with possible false positives.\nCombining filters increases occupancy and may increase the false-positive rate.\n\nBoth inputs must have matching `m`, `k` and bucket lengths, otherwise the method\nthrows `Error`. They must also use the same hashing scheme. Neither input is\nmodified, and the result has independent storage.\n\n### `BloomFilter.intersection(a, b)`\n\nReturns a new filter whose buckets are the bitwise AND of `a` and `b`. It has\nthe same compatibility requirements and ownership behaviour as `union`.\n\nValues inserted into both inputs remain recognisable, but the result is only a\nprobabilistic approximation of set intersection: it can report a value present\neven if that value was not inserted into both inputs.\n\nSparse updates between processes\n--------------------------------\n\nFor small incremental changes, transmit the positions to set instead of the\nentire bitmap. Copy each call's positions before computing the next value's\nlocations, then serialise the combined batch:\n\n```javascript\nconst source = new BloomFilter(1024, 4);\nconst target = new BloomFilter(source.m, source.k);\nconst positions = [];\n\nfor (const value of [\"foo\", \"bar\"]) {\n  source.add(value);\n  for (const position of source.locations(value)) {\n    positions.push(position);\n  }\n}\n\nconst message = JSON.stringify(positions);\n// In the receiving process, using an existing compatible filter:\ntarget.addLocations(JSON.parse(message));\ntarget.test(\"foo\"); // true\ntarget.test(\"bar\"); // true\n```\n\nThe sender and receiver must use the same `m`, `k` and hashing scheme; raw\npositions do not carry that metadata, so compatibility cannot be checked by\n`addLocations`. Repeated batches and out-of-order delivery are harmless because\nupdates only set bits. Missing updates can cause false negatives at the receiver;\nthe application is responsible for delivery or resynchronisation.\n\n1.2.0 release notes\n-------------------\n\n- Added `addLocations` and `fromLocations` for sparse bit updates.\n- `locations(value)` now uses the same string coercion as `add` and `test`.\n  Positions previously saved from non-string arguments to `locations` may\n  differ; recompute them from the original values. Inputs such as `null`,\n  `undefined` and `[1, 2]`, which previously threw, now return positions for\n  their string representations. String positions and the\n  hashing used by `add` and `test` are unchanged.\n- Hash counts are now limited to 2,048 to prevent excessive allocation and work.\n  This rejects previously accepted configurations and serialised filters with\n  larger `k` values. Positive fractional expected sizes remain accepted by\n  `withTargetError`, subject to the bit-size and hash-count limits.\n- Development benchmarks are no longer included in the npm package.\n  `benchmark.js` remains available in a repository checkout;\n  `benchmark-compare.js` has been removed.\n- `Uint32Array` bucket inputs now use their actual typed-array length, ignoring\n  an overridden `length` property. For such inputs, the resulting `m` may differ\n  from version 1.1.2.\n\nBenchmark\n---------\n\nRun the benchmark from a checkout of this repository. The script is a\ndevelopment tool and is not included in the npm package.\n\n```sh\nnpm run benchmark\n```\n\nThe benchmark uses 100,000 16-byte ASCII keys and fills filters to their expected\ncapacity. It verifies filter contents and query results outside the timings.\n\nEach operation warms up for at least 100 ms and three batches, followed by nine\nmeasurement samples of at least 5 ms each. Results show medians and ranges in\nmicroseconds per operation. Setup, input generation, module startup, and result\nverification are excluded. Garbage collection may occur during timed operations;\nit is forced only before warmup. These are local microbenchmarks, so small\nperformance differences should be treated cautiously.\n\nImplementation\n--------------\n\nAlthough the bloom filter requires *k* hash functions, we can simulate this\nusing enhanced double hashing with a single 64-bit FNV-1a hash computation for\nperformance.  The 64-bit hash is split into two 32-bit halves to obtain the two\nindependent hash functions required for enhanced double hashing.\n\nInsertion and membership testing generate each location as it is used, avoiding\nan intermediate locations array and allowing unsuccessful lookups to stop early.\nThe location recurrence uses conditional subtraction in place of remainder\nwhere possible. Hashing retains the original UTF-16 code-unit semantics and\nversion-1 serialisation format.\n\nThanks to Will Fitzgerald for his [help and inspiration][2] with the hashing\noptimisation.\n\n[1]: http://isthe.com/chongo/tech/comp/fnv/\n[2]: http://willwhim.wordpress.com/2011/09/03/producing-n-hash-functions-by-hashing-only-once/\n","readmeFilename":"README.md","users":{"detj":true,"meeh":true,"aaz15":true,"syzer":true,"ugcode":true,"gavinning":true,"kolomiichenko":true}}