{"_id":"@ably/bloomit","_rev":"20-4a1a2125f6a6035db789e73c8f7bbdc8","name":"@ably/bloomit","dist-tags":{"latest":"1.4.2"},"versions":{"1.3.0":{"name":"@ably/bloomit","version":"1.3.0","keywords":["bloom-filter","bloom","filter"],"author":{"name":"Kolja Blauhut"},"license":"MIT","_id":"@ably/bloomit@1.3.0","maintainers":[{"name":"ably-realtime","email":"support@ably.io"},{"name":"quintinwillison","email":"quintin@ably.io"},{"name":"simonw_ably","email":"simon.woolf@ably.com"},{"name":"owenpearson","email":"owen.pearson@ably.com"},{"name":"mattesch","email":"matt@mattesch.info"}],"contributors":[{"name":"Thomas Minier & Arnaud Grall"},{"name":"Kolja Blauhut"},{"name":"Simon Woolf"}],"homepage":"https://github.com/ably-forks/bloomit#readme","bugs":{"url":"https://github.com/ably-forks/bloomit/issues"},"dist":{"shasum":"5fbbe505f0b02421b06a3cc1b3696ea2b6173a2c","tarball":"https://registry.npmjs.org/@ably/bloomit/-/bloomit-1.3.0.tgz","fileCount":23,"integrity":"sha512-shjOfF1vYw55kDrnUXiRQyKMVlFo5l2IibSr82Gr5647aE4tefy8yjABHZM49gGg4Fi+c/UCnecjg8RYMip2aw==","signatures":[{"sig":"MEYCIQDE70Q8t/OL8KKo9uoV4HycJYrDRRZIeEy2um7SFWPs7QIhAO3NAemoZx6Q6IQwaUV/Ff2tFHX9Ia5s79XddtkfhQV1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoTM1CRA9TVsSAnZWagAA+rQP/1NQuOcoWv52mhD+xZnR\nQJdVJgFNDnsfzmJxPdrGmsSogWt7gLdgn1gj4iJE7ZFmnrLkeSNllG0N32Tu\nacAc2sxMpYhJUZsi4xDFhsajymSbLeN7FuRVmw0HNPuRDH0z26RFqvZIwhnO\nrtmMzntAYUKH+NUmopQsX6YimIKQf4i1KNm/fSbkz22mA8Mb5ggTyApkiQkK\nP33WT1oEFrAcqakNVvg3Jcx3jvuz4T7Uw6R1cvgC3PFHr5YzMO3krDlQKR7b\n0/wR0xBtpoj0c6N/8Hfx13MQHrZGdeRBEpICLKPFlr0FPcHconn7dTdXcYMx\nhbQvCLEwSQ/azAEVKVC6ir4kH9KKEAA/iEW+V028fL8TOgBMJsXO+T7R9oZZ\n0UOP1oO+nAGsK29pE3Ti/E3IHqNOQKFXtZOmfKuD6o0yBb6qeKQwMDrqnitN\nF8hT5nGiNj9RTup3Tq3CpIntZrfkEGmZhiBfvKRoSu3mT7NSkLMOXsrEfBti\n+0lRftQK4TqT1bMuxmmIJglMpKIc4cQVRr2dBd8QUwJf+P3zoKstx6S+jgLp\nkU7uSgg1Yi+50xEz5UY+YZpzxaVoa6PJB3JvRcN8rcVEnNjud39r6v9Zh6EK\ngBs6ObZ312vA/vzbqA0k5b/sgXjY4oj4n4HpFajkJV+Mvl9QBOVT/uS/x5Z4\nlkHe\r\n=jjip\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"1abd98f01cd36a2ed17ff5cb4fbda97c3afcb1c0","scripts":{"test":"mocha test/**/*-test.js --trace-deprecation --timeout=30000","build":"tsc","pretest":"yarn build"},"_npmUser":{"name":"simonw_ably","email":"simon.woolf@ably.com"},"repository":{"url":"git+https://github.com/ably-forks/bloomit.git","type":"git"},"_npmVersion":"8.0.0","description":"Space efficient bloom filter based on the bloom-filters npm package.","directories":{"test":"test"},"_nodeVersion":"16.11.1","dependencies":{"farmhash":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","mocha":"^9.0.0","typescript":"^4.3.2"},"_npmOperationalInternal":{"tmp":"tmp/bloomit_1.3.0_1637954357168_0.4248555911363836","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"@ably/bloomit","version":"1.3.1","keywords":["bloom-filter","bloom","filter"],"author":{"name":"Kolja Blauhut"},"license":"MIT","_id":"@ably/bloomit@1.3.1","maintainers":[{"name":"ably-realtime","email":"support@ably.io"},{"name":"quintinwillison","email":"quintin@ably.io"},{"name":"simonw_ably","email":"simon.woolf@ably.com"},{"name":"owenpearson","email":"owen.pearson@ably.com"},{"name":"mattesch","email":"matt@mattesch.info"}],"contributors":[{"name":"Thomas Minier & Arnaud Grall"},{"name":"Kolja Blauhut"},{"name":"Simon Woolf"}],"homepage":"https://github.com/ably-forks/bloomit#readme","bugs":{"url":"https://github.com/ably-forks/bloomit/issues"},"dist":{"shasum":"b6467d8098b5bc64f5589af0e987456520c14eeb","tarball":"https://registry.npmjs.org/@ably/bloomit/-/bloomit-1.3.1.tgz","fileCount":23,"integrity":"sha512-veHLIyTVk16wwuktFNdw2wZkW2+uP069Xb4KAo2E35gr8jPrEzuARovEWrUTyNqF0Cpnlj6fgSOiWhy7oPmQIw==","signatures":[{"sig":"MEQCIGSleF4e4ExGf2qZF0KSes6WWPXKP4ZnLGrkrZFjIJhqAiA1oUeWMO79eNaO8ovgHScRfxE7gJO/eJn8Ns1JOdmggw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoTXRCRA9TVsSAnZWagAA8roP/1I+isMJsa447pFUolUi\nXBk5gTwh4nz8L5lXCiQlOq67VYtkVTSciU576ww7uGwfcBaVrPvijlqu6QCA\n5OsXbPF6MYfrOA/uDiUIj6K+QnnTBSzJedbSqLFXZAe2T7oRFoRQr8+iBSVK\naGt72L+QXi4+qUZmv1LQtA3L0RgnX+FeR4DHWPY3wafm9brmBfaD5pubzls5\nm1NTFZvpDES2bCCmDS7OQOqydJpemNysGufPUXyUsrJzrdyQGPVMEaUUlyBV\nfMt7L06mHbNg/kUdnuty9g94Ov1cwCtfERd7JVPCS5q8PvB+zxDRrNrEUp0a\nMsR5vWnr1xKDxCu1pAcPUfHNLCbP9bg78JKij9m/3iBj5e9aZRJQtg8GDdGF\nyI6NRqtR/Zc8mcA+FF+1amOq5uJGK/E7+znajCY2u876fxon1D/07CbmW7UP\nQUAB1yrZ3I4i4rMYQq1UVT0ZAF/fK4cjU3t7ZCc9FOYjzR8RPjkJXo2OA8Xk\n/ugunRKq6/naaW54CtxmfukOFU0Y6OwRu/RpKOSQIODblvVlQaZb5TJ+ZH1A\nUby1jqjN/0ovl3Vy6gUva6YHs2AdUiBAOHTm/Ve9Y2aHWoDObcQX1xvRMoVu\nN8YGv4XPZ7+iszBHzKYo7xOa2R43JC8iJhsVlfBmUcR37Qprr3Vv8hgc7TDr\nuN+E\r\n=0OB5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"a767d20fe0fb7a56e90403b40c029eef3e7b735c","scripts":{"test":"mocha test/**/*-test.js --trace-deprecation --timeout=30000","build":"tsc","pretest":"yarn build"},"_npmUser":{"name":"simonw_ably","email":"simon.woolf@ably.com"},"repository":{"url":"git+https://github.com/ably-forks/bloomit.git","type":"git"},"_npmVersion":"8.0.0","description":"Space efficient bloom filter based on the bloom-filters npm package.","directories":{"test":"test"},"_nodeVersion":"16.11.1","dependencies":{"farmhash":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","mocha":"^9.0.0","typescript":"^4.3.2","@types/node":"^16.11.10"},"_npmOperationalInternal":{"tmp":"tmp/bloomit_1.3.1_1637955024892_0.057015052405412936","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@ably/bloomit","version":"1.4.0","keywords":["bloom-filter","bloom","filter"],"author":{"name":"Kolja Blauhut"},"license":"MIT","_id":"@ably/bloomit@1.4.0","maintainers":[{"name":"ably-realtime","email":"support@ably.io"},{"name":"quintinwillison","email":"quintin@ably.io"},{"name":"simonw_ably","email":"simon.woolf@ably.com"},{"name":"owenpearson","email":"owen.pearson@ably.com"},{"name":"mattesch","email":"matt@mattesch.info"}],"contributors":[{"name":"Thomas Minier & Arnaud Grall"},{"name":"Kolja Blauhut"},{"name":"Simon Woolf"}],"homepage":"https://github.com/ably-forks/bloomit#readme","bugs":{"url":"https://github.com/ably-forks/bloomit/issues"},"dist":{"shasum":"c073f33faf0d13e3b77c1027ecb1ee684f6e4446","tarball":"https://registry.npmjs.org/@ably/bloomit/-/bloomit-1.4.0.tgz","fileCount":24,"integrity":"sha512-dDOsCCu9IMubi9rS53S6kBcxouCZL4A4BjPEhVYEJsdWUIlI2/2orSgcu477F0cSC8acbztR65K2t7PheuY7rA==","signatures":[{"sig":"MEQCIFdU/hKY2C8xyT/+/61gYCW6rJw0ZRxulXQHRBLyaHzoAiB5gtDdP6z/3dWBX0mheWNb5pz0nJnhEHD3Yzg6ywNPmg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqQKyCRA9TVsSAnZWagAAd/oP/0CCJr3XDgEvX3Oc4htx\nCkBQrbc8PR9RuMp6nBBvRmNXnJi/Ra1whcX3QbiRuSzxP5kRjtaiZK+sCtYF\n3OPusxvje6z8f442dRQrHnBkc2YG82dsfzQOgpptCz3GBgO7oMzyA5zCUGAP\nJXXM334MCW4En8gpDmj71lu0ZsUT9pgEoabGuWco2/3BNxGf3i6MfPs555S6\na+VREAvej28gmHnQ6xsYCsv9je/3MpRQ72lyP4IXs/uApVTv2dYON7tXB5FN\n1UhHfDJIOWkWH4/XU3x6LIdLFSEgRYC8O5xAm30y7HQgz5gT56eiyuzJVlJC\n6LAxICR866HN0+lG2oL87A/tYmBtnqJOyN/UkbrLtStZDm/vEaA3H/sJuB7s\nAS6UVx/gAtf+ELyB6C1l88UKLpD2n8ZAIFeNoPZzSMzS+d1C7fZC2dbdYUpb\nai9hsdwrigkLquzOJ8qjJ+T7IEX67rmWLT+KxqBWoeuegteueD71d2Uh5MJ9\n59X931FW+KLhpfyJcmqsBDKd8Myv+nUr7iJIz70km5me19bw9BPy6CHTnP+o\n90lg3cNqveV0nSsvZmv5vECnUG0Pd5e/l9/JUvUP8n6QXBlLuxcqS+SgngU8\n2CNQMvHE3EyvZnn5Xw9WPHwbjPA7GLDX6505BM255/PA1drdahy12JUEZDey\nVVpa\r\n=Zr67\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"bc1b81daa178c049667c1d52227c748a6b64abd9","scripts":{"test":"mocha test/**/*-test.js --trace-deprecation --timeout=30000","build":"tsc","pretest":"yarn build"},"_npmUser":{"name":"simonw_ably","email":"simon.woolf@ably.com"},"repository":{"url":"git+https://github.com/ably-forks/bloomit.git","type":"git"},"_npmVersion":"8.0.0","description":"Space efficient bloom filter based on the bloom-filters npm package.","directories":{"test":"test"},"_nodeVersion":"16.11.1","dependencies":{"farmhash":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","mocha":"^9.0.0","typescript":"^4.3.2","@types/node":"^16.11.10"},"_npmOperationalInternal":{"tmp":"tmp/bloomit_1.4.0_1638466226049_0.21384926888642286","host":"s3://npm-registry-packages"}},"1.4.2":{"name":"@ably/bloomit","version":"1.4.2","keywords":["bloom-filter","bloom","filter"],"author":{"name":"Kolja Blauhut"},"license":"MIT","_id":"@ably/bloomit@1.4.2","maintainers":[{"name":"ably-realtime","email":"support@ably.io"},{"name":"quintinwillison","email":"quintin@ably.io"},{"name":"simonw_ably","email":"simon.woolf@ably.com"},{"name":"owenpearson","email":"owen.pearson@ably.com"},{"name":"mattesch","email":"matt@mattesch.info"}],"contributors":[{"name":"Thomas Minier & Arnaud Grall"},{"name":"Kolja Blauhut"},{"name":"Simon Woolf"}],"homepage":"https://github.com/ably-forks/bloomit#readme","bugs":{"url":"https://github.com/ably-forks/bloomit/issues"},"dist":{"shasum":"989055fbe75f1c52ba1db0fbc797e561c9fb4ba4","tarball":"https://registry.npmjs.org/@ably/bloomit/-/bloomit-1.4.2.tgz","fileCount":24,"integrity":"sha512-rCpxKPt/GcZTpD8xkznmzrx1AkQl7vUyrIMImamrbCd2ynNOoHO7FuE8qXao4L2zCvLiDk1i9qpSFDmdZpOj7g==","signatures":[{"sig":"MEUCIQCJN5XiiNogot/4FMH9Hi4J4Xd7RvTBHKKCtcWXMr+CNQIgIQRLwwjHTdME7K3utnnT82FKyiEkHTHKh+n/ovS/kSM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzHBLCRA9TVsSAnZWagAANokP/2zPmxp6RrDm6CsXKT71\nQrw1fX8TvG9elvvzyDTdwGdycVOU0RmqCLiwJz4FhKZ1OWpRlWVgCjgycZO+\n61TuHrrk73VVLgY3esuNljETk/nFdu57vmhY9yV8ODJQi+aaC2ECl7d9w4S2\nNDBI1kQ2PbX2Ot3J3+GrUOR2MydYDohCDcGfvmd63GmjCgwIv+outHQv2DnO\n9Rx6/y5iYLHFvwuGEg3G94WgZ9SIzEydddQmZoddFcjlV8aM0AQc7o9Wb66a\nHktQpScjkNIH8xr6gFsMA0GY4glqbiTvnP1ze8yb6bIHCJ20Q2FmBXLoeEsi\nZOjN1fsAlKSLU2wt74IPTLYfmtlkG0e7KwgDkarwQiJKggo4TrxWDkXwHJEU\n3aLEpX8K7WzJc9VLeKBerfsZJO0XRgp+hO+clmF2TfRkfti8l+8ahND1Akav\nxdTCDqm0njqFAhNpboIxFL4MN6f/3stjl+G6dZvDXU/H31COlJePdPnDds31\nZ/NZSr+SSnS9rIUaIgzcHgEPeT97ZIIBd+pgbDmS10hTEOhYJjnHKaoThPa8\nJRNj1sz3CZ9gEyjW/WMtjNpXLXWvk+/RwUoFBgaxwpLIOqzZILqa/8Tlqoxy\nCtdp7oXzmusYZbkiWbEICDjWC/LKniOKYvBzHn21caUfsGTXD3Rs6a4MGwwR\nPN9D\r\n=jbAH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"fb6b7ca359d0c87c9a70bf7d28a925d7fa09cdd0","scripts":{"test":"mocha test/**/*-test.js --trace-deprecation --timeout=30000","build":"tsc","pretest":"yarn build"},"_npmUser":{"name":"simonw_ably","email":"simon.woolf@ably.com"},"repository":{"url":"git+https://github.com/ably-forks/bloomit.git","type":"git"},"_npmVersion":"7.6.0","description":"Space efficient bloom filter based on the bloom-filters npm package.","directories":{"test":"test"},"_nodeVersion":"12.18.3","dependencies":{"farmhash":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","mocha":"^9.0.0","typescript":"^4.3.2","@types/node":"^16.11.10"},"_npmOperationalInternal":{"tmp":"tmp/bloomit_1.4.2_1640788043255_0.4940908116432232","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-11-26T19:19:17.105Z","modified":"2026-03-18T18:56:49.570Z","1.3.0":"2021-11-26T19:19:17.332Z","1.3.1":"2021-11-26T19:30:25.082Z","1.4.0":"2021-12-02T17:30:26.283Z","1.4.1":"2021-12-29T14:24:35.185Z","1.4.2":"2021-12-29T14:27:23.462Z"},"bugs":{"url":"https://github.com/ably-forks/bloomit/issues"},"author":{"name":"Kolja Blauhut"},"license":"MIT","homepage":"https://github.com/ably-forks/bloomit#readme","keywords":["bloom-filter","bloom","filter"],"repository":{"url":"git+https://github.com/ably-forks/bloomit.git","type":"git"},"description":"Space efficient bloom filter based on the bloom-filters npm package.","contributors":[{"name":"Thomas Minier & Arnaud Grall"},{"name":"Kolja Blauhut"},{"name":"Simon Woolf"}],"maintainers":[{"email":"mike@christensen.codes","name":"mschristensen"},{"email":"account.owners@ably.com","name":"ably-realtime"},{"email":"simon.woolf@ably.com","name":"simonw_ably"},{"email":"owen.pearson@ably.com","name":"owenpearson"},{"email":"khokhlov.e.n@gmail.com","name":"ttypic"},{"email":"lawrence.forooghian@ably.com","name":"lawrence.forooghian.ably"},{"email":"andrii.bulat@ably.com","name":"andrii.bulat.ably"},{"email":"andyford993@gmail.com","name":"andytwf"},{"email":"steven.lindsay@ably.com","name":"splind06"},{"email":"chris.bannister@ably.com","name":"zariel-ably"},{"email":"matthew.oriordan@gmail.com","name":"mattheworiordan"},{"email":"vlad.velici@ably.com","name":"vlad.velici.ably"}],"readme":"# `@ably/bloomit`\n\nA fork of the bloomit package to fix a few issues (eg\nhttps://github.com/kblauhut/bloomit/issues/4 ) and switch from xxhash to\nfarmhash.\n\nOriginal readme follows below.\n\n# bloomit\n\nbloomit is a Space efficient bloom filter based on the\n[bloom-filters npm package](https://www.npmjs.com/package/bloom-filters).\n\nThe main motivation for this package was to reduce the memory usage of the bloom\nfilter by using a bitmap instead of an array of javascript numbers. This should\nresult in a theoretical memory reduction by a factor of 64.\n\nI have also edited the export to use a Uint8Array which encodes all needed\nvalues and can be used to send it over the web efficiently.\n\n#### Methods\n\n- `add(element: string) -> void`: add an element into the filter.\n- `has(element: string) -> boolean`: Test an element for membership, returning\n  False if the element is definitively not in the filter and True is the element\n  might be in the filter.\n- `equals(other: BloomFilter) -> boolean`: Test if two filters are equals.\n- `rate() -> number`: compute the filter's false positive rate (or error rate).\n- `export() -> Uint8Array`: export the filter as an Uint8Array\n- `inport(filterUint8Array: Uint8Array) -> BloomFilter`: Create a filter from a\n  exporterd Uint8Array\n\n```javascript\nconst { BloomFilter } = require('bloomit');\n// create a Bloom Filter with a size of 10 and 4 hash functions\nlet filter = new BloomFilter(10, 4);\n// insert data\nfilter.add('paul');\nfilter.add('kolja');\nfilter.add('carl');\n\n// lookup for some data\nconsole.log(filter.has('paul')); // output: true\nconsole.log(filter.has('xiaomei')); // output: false\n\n// print the error rate\nconsole.log(filter.rate());\n\n// alternatively, create a bloom filter optimal for a number of items and a desired error rate\nconst items = ['paul', 'kolja', 'carl'];\nconst errorRate = 0.04; // 4 % error rate\nfilter = BloomFilter.create(items.length, errorRate);\n\n// or create a bloom filter optimal for a collections of items and a desired error rate\nfilter = BloomFilter.from(items, errorRate);\n\n// Export the filter\nconst exportedFilter = filter.export();\n\n// Import the filter\nfilter = BloomFilter.import(exportedFilter);\n```\n","readmeFilename":"README.md"}