75 lines
2.1 KiB
JavaScript
75 lines
2.1 KiB
JavaScript
/*
|
|
* Extracted from browser-delivered Turbopack chunk: 5d5b47876e53e564.da1ba52a93.js
|
|
* Module id: 232077
|
|
* For reading/searching only; this factory depends on the original Turbopack runtime.
|
|
*/
|
|
|
|
const moduleFactory = (e, t, r) => {
|
|
"use strict";
|
|
Object.defineProperty(r, "__esModule", { value: !0 }),
|
|
Object.defineProperty(r, "BloomFilter", {
|
|
enumerable: !0,
|
|
get: function () {
|
|
return n;
|
|
},
|
|
});
|
|
class n {
|
|
constructor(e, t = 1e-4) {
|
|
(this.numItems = e),
|
|
(this.errorRate = t),
|
|
(this.numBits = Math.ceil(
|
|
-(e * Math.log(t)) / (Math.log(2) * Math.log(2)),
|
|
)),
|
|
(this.numHashes = Math.ceil((this.numBits / e) * Math.log(2))),
|
|
(this.bitArray = Array(this.numBits).fill(0));
|
|
}
|
|
static from(e, t = 1e-4) {
|
|
let r = new n(e.length, t);
|
|
for (let t of e) r.add(t);
|
|
return r;
|
|
}
|
|
export() {
|
|
return {
|
|
numItems: this.numItems,
|
|
errorRate: this.errorRate,
|
|
numBits: this.numBits,
|
|
numHashes: this.numHashes,
|
|
bitArray: this.bitArray,
|
|
};
|
|
}
|
|
import(e) {
|
|
(this.numItems = e.numItems),
|
|
(this.errorRate = e.errorRate),
|
|
(this.numBits = e.numBits),
|
|
(this.numHashes = e.numHashes),
|
|
(this.bitArray = e.bitArray);
|
|
}
|
|
add(e) {
|
|
this.getHashValues(e).forEach((e) => {
|
|
this.bitArray[e] = 1;
|
|
});
|
|
}
|
|
contains(e) {
|
|
return this.getHashValues(e).every((e) => this.bitArray[e]);
|
|
}
|
|
getHashValues(e) {
|
|
let t = [];
|
|
for (let r = 1; r <= this.numHashes; r++) {
|
|
let n =
|
|
(function (e) {
|
|
let t = 0;
|
|
for (let r = 0; r < e.length; r++)
|
|
(t = Math.imul(t ^ e.charCodeAt(r), 0x5bd1e995)),
|
|
(t ^= t >>> 13),
|
|
(t = Math.imul(t, 0x5bd1e995));
|
|
return t >>> 0;
|
|
})(`${e}${r}`) % this.numBits;
|
|
t.push(n);
|
|
}
|
|
return t;
|
|
}
|
|
}
|
|
};
|
|
|
|
export default moduleFactory;
|