@libp2p/utils 6.5.0-96f14e429 → 6.5.0-d72b51184
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/filters/bloom-filter.js +3 -3
- package/dist/src/filters/bloom-filter.js.map +1 -1
- package/dist/src/filters/hashes.d.ts +1 -0
- package/dist/src/filters/hashes.d.ts.map +1 -1
- package/dist/src/filters/hashes.js +9 -0
- package/dist/src/filters/hashes.js.map +1 -1
- package/package.json +7 -5
- package/src/filters/bloom-filter.ts +3 -3
- package/src/filters/hashes.ts +10 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// ported from xxbloom - https://github.com/ceejbot/xxbloom/blob/master/LICENSE
|
|
2
2
|
import { randomBytes } from '@libp2p/crypto';
|
|
3
|
+
import mur from 'murmurhash3js-revisited';
|
|
3
4
|
import { Uint8ArrayList } from 'uint8arraylist';
|
|
4
5
|
import { alloc } from 'uint8arrays/alloc';
|
|
5
6
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
6
|
-
import { fnv1a } from './hashes.js';
|
|
7
7
|
const LN2_SQUARED = Math.LN2 * Math.LN2;
|
|
8
8
|
export class BloomFilter {
|
|
9
9
|
seeds;
|
|
@@ -27,7 +27,7 @@ export class BloomFilter {
|
|
|
27
27
|
item = uint8ArrayFromString(item);
|
|
28
28
|
}
|
|
29
29
|
for (let i = 0; i < this.seeds.length; i++) {
|
|
30
|
-
const hash =
|
|
30
|
+
const hash = mur.x86.hash32(item, this.seeds[i]);
|
|
31
31
|
const bit = hash % this.bits;
|
|
32
32
|
this.setbit(bit);
|
|
33
33
|
}
|
|
@@ -42,7 +42,7 @@ export class BloomFilter {
|
|
|
42
42
|
item = uint8ArrayFromString(item);
|
|
43
43
|
}
|
|
44
44
|
for (let i = 0; i < this.seeds.length; i++) {
|
|
45
|
-
const hash =
|
|
45
|
+
const hash = mur.x86.hash32(item, this.seeds[i]);
|
|
46
46
|
const bit = hash % this.bits;
|
|
47
47
|
const isSet = this.getbit(bit);
|
|
48
48
|
if (!isSet) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bloom-filter.js","sourceRoot":"","sources":["../../../src/filters/bloom-filter.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"bloom-filter.js","sourceRoot":"","sources":["../../../src/filters/bloom-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ export interface Hash {
|
|
|
2
2
|
hash(input: Uint8Array, seed: number): number;
|
|
3
3
|
hashV(input: Uint8Array, seed: number): Uint8Array;
|
|
4
4
|
}
|
|
5
|
+
export declare const murmur3: Hash;
|
|
5
6
|
export declare const fnv1a: Hash;
|
|
6
7
|
export declare function numberToBuffer(num: bigint | number): Uint8Array;
|
|
7
8
|
//# sourceMappingURL=hashes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashes.d.ts","sourceRoot":"","sources":["../../../src/filters/hashes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hashes.d.ts","sourceRoot":"","sources":["../../../src/filters/hashes.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,IAAI;IACnB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CACnD;AAED,eAAO,MAAM,OAAO,EAAE,IAOrB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,IASnB,CAAA;AAED,wBAAgB,cAAc,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAQhE"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import fnv1aHash from '@sindresorhus/fnv1a';
|
|
2
|
+
import mur from 'murmurhash3js-revisited';
|
|
2
3
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
4
|
+
export const murmur3 = {
|
|
5
|
+
hash: (input, seed) => {
|
|
6
|
+
return mur.x86.hash32(input, seed);
|
|
7
|
+
},
|
|
8
|
+
hashV: (input, seed) => {
|
|
9
|
+
return numberToBuffer(murmur3.hash(input, seed));
|
|
10
|
+
}
|
|
11
|
+
};
|
|
3
12
|
export const fnv1a = {
|
|
4
13
|
hash: (input) => {
|
|
5
14
|
return Number(fnv1aHash(input, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashes.js","sourceRoot":"","sources":["../../../src/filters/hashes.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAO5E,MAAM,CAAC,MAAM,KAAK,GAAS;IACzB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;QACd,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;YAC7B,IAAI,EAAE,EAAE;SACT,CAAC,CAAC,CAAA;IACL,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAChD,CAAC;CACF,CAAA;AAED,MAAM,UAAU,cAAc,CAAE,GAAoB;IAClD,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAE1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,OAAO,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"hashes.js","sourceRoot":"","sources":["../../../src/filters/hashes.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,GAAG,MAAM,yBAAyB,CAAA;AACzC,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAO5E,MAAM,CAAC,MAAM,OAAO,GAAS;IAC3B,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAClD,CAAC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAS;IACzB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;QACd,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;YAC7B,IAAI,EAAE,EAAE;SACT,CAAC,CAAC,CAAA;IACL,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAChD,CAAC;CACF,CAAA;AAED,MAAM,UAAU,cAAc,CAAE,GAAoB;IAClD,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAE1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,OAAO,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/utils",
|
|
3
|
-
"version": "6.5.0-
|
|
3
|
+
"version": "6.5.0-d72b51184",
|
|
4
4
|
"description": "Package to aggregate shared logic and dependencies for the libp2p ecosystem",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/utils#readme",
|
|
@@ -181,11 +181,12 @@
|
|
|
181
181
|
"dependencies": {
|
|
182
182
|
"@chainsafe/is-ip": "^2.0.2",
|
|
183
183
|
"@chainsafe/netmask": "^2.0.0",
|
|
184
|
-
"@libp2p/crypto": "5.0.10-
|
|
185
|
-
"@libp2p/interface": "2.4.1-
|
|
186
|
-
"@libp2p/logger": "5.1.7-
|
|
184
|
+
"@libp2p/crypto": "5.0.10-d72b51184",
|
|
185
|
+
"@libp2p/interface": "2.4.1-d72b51184",
|
|
186
|
+
"@libp2p/logger": "5.1.7-d72b51184",
|
|
187
187
|
"@multiformats/multiaddr": "^12.3.3",
|
|
188
188
|
"@sindresorhus/fnv1a": "^3.1.0",
|
|
189
|
+
"@types/murmurhash3js-revisited": "^3.0.3",
|
|
189
190
|
"any-signal": "^4.1.1",
|
|
190
191
|
"delay": "^6.0.0",
|
|
191
192
|
"get-iterator": "^2.0.1",
|
|
@@ -194,6 +195,7 @@
|
|
|
194
195
|
"it-pipe": "^3.0.1",
|
|
195
196
|
"it-pushable": "^3.2.3",
|
|
196
197
|
"it-stream-types": "^2.0.2",
|
|
198
|
+
"murmurhash3js-revisited": "^3.0.0",
|
|
197
199
|
"netmask": "^2.0.2",
|
|
198
200
|
"p-defer": "^4.0.1",
|
|
199
201
|
"race-event": "^1.3.0",
|
|
@@ -202,7 +204,7 @@
|
|
|
202
204
|
"uint8arrays": "^5.1.0"
|
|
203
205
|
},
|
|
204
206
|
"devDependencies": {
|
|
205
|
-
"@libp2p/peer-id": "5.0.11-
|
|
207
|
+
"@libp2p/peer-id": "5.0.11-d72b51184",
|
|
206
208
|
"@types/netmask": "^2.0.5",
|
|
207
209
|
"aegir": "^45.0.5",
|
|
208
210
|
"benchmark": "^2.1.4",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// ported from xxbloom - https://github.com/ceejbot/xxbloom/blob/master/LICENSE
|
|
2
2
|
import { randomBytes } from '@libp2p/crypto'
|
|
3
|
+
import mur from 'murmurhash3js-revisited'
|
|
3
4
|
import { Uint8ArrayList } from 'uint8arraylist'
|
|
4
5
|
import { alloc } from 'uint8arrays/alloc'
|
|
5
6
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
6
|
-
import { fnv1a } from './hashes.js'
|
|
7
7
|
import type { Filter } from './index.js'
|
|
8
8
|
|
|
9
9
|
const LN2_SQUARED = Math.LN2 * Math.LN2
|
|
@@ -39,7 +39,7 @@ export class BloomFilter implements Filter {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
for (let i = 0; i < this.seeds.length; i++) {
|
|
42
|
-
const hash =
|
|
42
|
+
const hash = mur.x86.hash32(item, this.seeds[i])
|
|
43
43
|
const bit = hash % this.bits
|
|
44
44
|
|
|
45
45
|
this.setbit(bit)
|
|
@@ -57,7 +57,7 @@ export class BloomFilter implements Filter {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
for (let i = 0; i < this.seeds.length; i++) {
|
|
60
|
-
const hash =
|
|
60
|
+
const hash = mur.x86.hash32(item, this.seeds[i])
|
|
61
61
|
const bit = hash % this.bits
|
|
62
62
|
|
|
63
63
|
const isSet = this.getbit(bit)
|
package/src/filters/hashes.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fnv1aHash from '@sindresorhus/fnv1a'
|
|
2
|
+
import mur from 'murmurhash3js-revisited'
|
|
2
3
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
3
4
|
|
|
4
5
|
export interface Hash {
|
|
@@ -6,6 +7,15 @@ export interface Hash {
|
|
|
6
7
|
hashV(input: Uint8Array, seed: number): Uint8Array
|
|
7
8
|
}
|
|
8
9
|
|
|
10
|
+
export const murmur3: Hash = {
|
|
11
|
+
hash: (input, seed) => {
|
|
12
|
+
return mur.x86.hash32(input, seed)
|
|
13
|
+
},
|
|
14
|
+
hashV: (input, seed) => {
|
|
15
|
+
return numberToBuffer(murmur3.hash(input, seed))
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
9
19
|
export const fnv1a: Hash = {
|
|
10
20
|
hash: (input) => {
|
|
11
21
|
return Number(fnv1aHash(input, {
|