@libp2p/utils 5.3.2 → 5.4.0-43046b9ae
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/abort-options.d.ts +7 -0
- package/dist/src/abort-options.d.ts.map +1 -0
- package/dist/src/abort-options.js +14 -0
- package/dist/src/abort-options.js.map +1 -0
- package/dist/src/adaptive-timeout.d.ts +35 -0
- package/dist/src/adaptive-timeout.d.ts.map +1 -0
- package/dist/src/adaptive-timeout.js +63 -0
- package/dist/src/adaptive-timeout.js.map +1 -0
- package/dist/src/close.d.ts +21 -0
- package/dist/src/close.d.ts.map +1 -0
- package/dist/src/close.js +49 -0
- package/dist/src/close.js.map +1 -0
- package/dist/src/filters/bloom-filter.d.ts +34 -0
- package/dist/src/filters/bloom-filter.d.ts.map +1 -0
- package/dist/src/filters/bloom-filter.js +113 -0
- package/dist/src/filters/bloom-filter.js.map +1 -0
- package/dist/src/filters/bucket.d.ts +10 -0
- package/dist/src/filters/bucket.d.ts.map +1 -0
- package/dist/src/filters/bucket.js +53 -0
- package/dist/src/filters/bucket.js.map +1 -0
- package/dist/src/filters/cuckoo-filter.d.ts +41 -0
- package/dist/src/filters/cuckoo-filter.d.ts.map +1 -0
- package/dist/src/filters/cuckoo-filter.js +134 -0
- package/dist/src/filters/cuckoo-filter.js.map +1 -0
- package/dist/src/filters/fingerprint.d.ts +11 -0
- package/dist/src/filters/fingerprint.d.ts.map +1 -0
- package/dist/src/filters/fingerprint.js +34 -0
- package/dist/src/filters/fingerprint.js.map +1 -0
- package/dist/src/filters/hashes.d.ts +8 -0
- package/dist/src/filters/hashes.d.ts.map +1 -0
- package/dist/src/filters/hashes.js +29 -0
- package/dist/src/filters/hashes.js.map +1 -0
- package/dist/src/filters/index.d.ts +9 -0
- package/dist/src/filters/index.d.ts.map +1 -0
- package/dist/src/filters/index.js +4 -0
- package/dist/src/filters/index.js.map +1 -0
- package/dist/src/filters/scalable-cuckoo-filter.d.ts +24 -0
- package/dist/src/filters/scalable-cuckoo-filter.d.ts.map +1 -0
- package/dist/src/filters/scalable-cuckoo-filter.js +87 -0
- package/dist/src/filters/scalable-cuckoo-filter.js.map +1 -0
- package/dist/src/filters/utils.d.ts +2 -0
- package/dist/src/filters/utils.d.ts.map +1 -0
- package/dist/src/filters/utils.js +4 -0
- package/dist/src/filters/utils.js.map +1 -0
- package/dist/src/moving-average.d.ts +18 -0
- package/dist/src/moving-average.d.ts.map +1 -0
- package/dist/src/moving-average.js +43 -0
- package/dist/src/moving-average.js.map +1 -0
- package/dist/src/peer-queue.d.ts +3 -3
- package/dist/src/peer-queue.d.ts.map +1 -1
- package/dist/src/peer-queue.js +0 -1
- package/dist/src/peer-queue.js.map +1 -1
- package/dist/src/priority-queue.d.ts +10 -0
- package/dist/src/priority-queue.d.ts.map +1 -0
- package/dist/src/priority-queue.js +18 -0
- package/dist/src/priority-queue.js.map +1 -0
- package/dist/src/queue/index.d.ts +14 -14
- package/dist/src/queue/index.d.ts.map +1 -1
- package/dist/src/queue/index.js +6 -24
- package/dist/src/queue/index.js.map +1 -1
- package/dist/src/queue/job.d.ts +1 -2
- package/dist/src/queue/job.d.ts.map +1 -1
- package/dist/src/queue/job.js +1 -3
- package/dist/src/queue/job.js.map +1 -1
- package/package.json +36 -7
- package/src/abort-options.ts +20 -0
- package/src/adaptive-timeout.ts +94 -0
- package/src/close.ts +65 -0
- package/src/filters/bloom-filter.ts +142 -0
- package/src/filters/bucket.ts +64 -0
- package/src/filters/cuckoo-filter.ts +197 -0
- package/src/filters/fingerprint.ts +44 -0
- package/src/filters/hashes.ts +38 -0
- package/src/filters/index.ts +9 -0
- package/src/filters/scalable-cuckoo-filter.ts +111 -0
- package/src/filters/utils.ts +3 -0
- package/src/moving-average.ts +45 -0
- package/src/peer-queue.ts +3 -5
- package/src/priority-queue.ts +26 -0
- package/src/queue/index.ts +21 -45
- package/src/queue/job.ts +1 -3
- package/dist/typedoc-urls.json +0 -76
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Hash } from './hashes';
|
|
2
|
+
export declare const MAX_FINGERPRINT_SIZE = 64;
|
|
3
|
+
export declare class Fingerprint {
|
|
4
|
+
private readonly fp;
|
|
5
|
+
private readonly h;
|
|
6
|
+
private readonly seed;
|
|
7
|
+
constructor(buf: Uint8Array, hash: Hash, seed: number, fingerprintSize?: number);
|
|
8
|
+
hash(): number;
|
|
9
|
+
equals(other?: any): boolean;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/filters/fingerprint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAEpC,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAM;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEhB,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,GAAE,MAAU;IAqBnF,IAAI,IAAK,MAAM;IAIf,MAAM,CAAE,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO;CAO9B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc';
|
|
2
|
+
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
3
|
+
export const MAX_FINGERPRINT_SIZE = 64;
|
|
4
|
+
export class Fingerprint {
|
|
5
|
+
fp;
|
|
6
|
+
h;
|
|
7
|
+
seed;
|
|
8
|
+
constructor(buf, hash, seed, fingerprintSize = 2) {
|
|
9
|
+
if (fingerprintSize > MAX_FINGERPRINT_SIZE) {
|
|
10
|
+
throw new TypeError('Invalid Fingerprint Size');
|
|
11
|
+
}
|
|
12
|
+
const fnv = hash.hashV(buf, seed);
|
|
13
|
+
const fp = uint8ArrayAlloc(fingerprintSize);
|
|
14
|
+
for (let i = 0; i < fp.length; i++) {
|
|
15
|
+
fp[i] = fnv[i];
|
|
16
|
+
}
|
|
17
|
+
if (fp.length === 0) {
|
|
18
|
+
fp[0] = 7;
|
|
19
|
+
}
|
|
20
|
+
this.fp = fp;
|
|
21
|
+
this.h = hash;
|
|
22
|
+
this.seed = seed;
|
|
23
|
+
}
|
|
24
|
+
hash() {
|
|
25
|
+
return this.h.hash(this.fp, this.seed);
|
|
26
|
+
}
|
|
27
|
+
equals(other) {
|
|
28
|
+
if (!(other?.fp instanceof Uint8Array)) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return uint8ArrayEquals(this.fp, other.fp);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../src/filters/fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAEtC,MAAM,OAAO,WAAW;IACL,EAAE,CAAY;IACd,CAAC,CAAM;IACP,IAAI,CAAQ;IAE7B,YAAa,GAAe,EAAE,IAAU,EAAE,IAAY,EAAE,kBAA0B,CAAC;QACjF,IAAI,eAAe,GAAG,oBAAoB,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAA;QACjD,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACjC,MAAM,EAAE,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAChB,CAAC;QAED,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CAAE,KAAW;QACjB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,YAAY,UAAU,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface Hash {
|
|
2
|
+
hash(input: Uint8Array, seed: number): number;
|
|
3
|
+
hashV(input: Uint8Array, seed: number): Uint8Array;
|
|
4
|
+
}
|
|
5
|
+
export declare const murmur3: Hash;
|
|
6
|
+
export declare const fnv1a: Hash;
|
|
7
|
+
export declare function numberToBuffer(num: bigint | number): Uint8Array;
|
|
8
|
+
//# sourceMappingURL=hashes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import fnv1aHash from '@sindresorhus/fnv1a';
|
|
2
|
+
import mur from 'murmurhash3js-revisited';
|
|
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
|
+
};
|
|
12
|
+
export const fnv1a = {
|
|
13
|
+
hash: (input) => {
|
|
14
|
+
return Number(fnv1aHash(input, {
|
|
15
|
+
size: 32
|
|
16
|
+
}));
|
|
17
|
+
},
|
|
18
|
+
hashV: (input, seed) => {
|
|
19
|
+
return numberToBuffer(fnv1a.hash(input, seed));
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export function numberToBuffer(num) {
|
|
23
|
+
let hex = num.toString(16);
|
|
24
|
+
if (hex.length % 2 === 1) {
|
|
25
|
+
hex = `0${hex}`;
|
|
26
|
+
}
|
|
27
|
+
return uint8ArrayFromString(hex, 'base16');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=hashes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { BloomFilter, createBloomFilter, type BloomFilterOptions } from './bloom-filter.js';
|
|
2
|
+
export { CuckooFilter, createCuckooFilter, type CuckooFilterInit } from './cuckoo-filter.js';
|
|
3
|
+
export { ScalableCuckooFilter, createScalableCuckooFilter, type ScalableCuckooFilterInit } from './scalable-cuckoo-filter.js';
|
|
4
|
+
export interface Filter {
|
|
5
|
+
add(item: Uint8Array | string): void;
|
|
6
|
+
has(item: Uint8Array | string): boolean;
|
|
7
|
+
remove?(buf: Uint8Array | string): boolean;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAE7H,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAA;IACpC,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;IACvC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;CAC3C"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { BloomFilter, createBloomFilter } from './bloom-filter.js';
|
|
2
|
+
export { CuckooFilter, createCuckooFilter } from './cuckoo-filter.js';
|
|
3
|
+
export { ScalableCuckooFilter, createScalableCuckooFilter } from './scalable-cuckoo-filter.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAyB,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAiC,MAAM,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type CuckooFilterInit } from './cuckoo-filter.js';
|
|
2
|
+
import type { Filter } from './index.js';
|
|
3
|
+
export interface ScalableCuckooFilterInit extends CuckooFilterInit {
|
|
4
|
+
/**
|
|
5
|
+
* A number to multiply maxItems by when adding new sub-filters
|
|
6
|
+
*/
|
|
7
|
+
scale?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class ScalableCuckooFilter implements Filter {
|
|
10
|
+
private readonly filterSize;
|
|
11
|
+
private readonly bucketSize;
|
|
12
|
+
private readonly fingerprintSize;
|
|
13
|
+
private readonly scale;
|
|
14
|
+
private readonly filterSeries;
|
|
15
|
+
private readonly hash;
|
|
16
|
+
private readonly seed;
|
|
17
|
+
constructor(init: ScalableCuckooFilterInit);
|
|
18
|
+
add(item: Uint8Array | string): boolean;
|
|
19
|
+
has(item: Uint8Array | string): boolean;
|
|
20
|
+
remove(item: Uint8Array | string): boolean;
|
|
21
|
+
get count(): number;
|
|
22
|
+
}
|
|
23
|
+
export declare function createScalableCuckooFilter(maxItems: number, errorRate?: number, options?: Pick<ScalableCuckooFilterInit, 'hash' | 'seed' | 'scale'>): Filter;
|
|
24
|
+
//# sourceMappingURL=scalable-cuckoo-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalable-cuckoo-filter.d.ts","sourceRoot":"","sources":["../../../src/filters/scalable-cuckoo-filter.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGlF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,oBAAqB,YAAW,MAAM;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEhB,IAAI,EAAE,wBAAwB;IAkB3C,GAAG,CAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO;IA8BxC,GAAG,CAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO;IAcxC,MAAM,CAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO;IAc3C,IAAI,KAAK,IAAK,MAAM,CAInB;CACF;AAED,wBAAgB,0BAA0B,CAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,CAKpK"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
2
|
+
import { CuckooFilter, optimize } from './cuckoo-filter.js';
|
|
3
|
+
import { fnv1a } from './hashes.js';
|
|
4
|
+
import { getRandomInt } from './utils.js';
|
|
5
|
+
export class ScalableCuckooFilter {
|
|
6
|
+
filterSize;
|
|
7
|
+
bucketSize;
|
|
8
|
+
fingerprintSize;
|
|
9
|
+
scale;
|
|
10
|
+
filterSeries;
|
|
11
|
+
hash;
|
|
12
|
+
seed;
|
|
13
|
+
constructor(init) {
|
|
14
|
+
this.bucketSize = init.bucketSize ?? 4;
|
|
15
|
+
this.filterSize = init.filterSize ?? (1 << 18) / this.bucketSize;
|
|
16
|
+
this.fingerprintSize = init.fingerprintSize ?? 2;
|
|
17
|
+
this.scale = init.scale ?? 2;
|
|
18
|
+
this.hash = init.hash ?? fnv1a;
|
|
19
|
+
this.seed = init.seed ?? getRandomInt(0, Math.pow(2, 10));
|
|
20
|
+
this.filterSeries = [
|
|
21
|
+
new CuckooFilter({
|
|
22
|
+
filterSize: this.filterSize,
|
|
23
|
+
bucketSize: this.bucketSize,
|
|
24
|
+
fingerprintSize: this.fingerprintSize,
|
|
25
|
+
hash: this.hash,
|
|
26
|
+
seed: this.seed
|
|
27
|
+
})
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
add(item) {
|
|
31
|
+
if (typeof item === 'string') {
|
|
32
|
+
item = uint8ArrayFromString(item);
|
|
33
|
+
}
|
|
34
|
+
if (this.has(item)) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
let current = this.filterSeries.find((cuckoo) => {
|
|
38
|
+
return cuckoo.reliable;
|
|
39
|
+
});
|
|
40
|
+
if (current == null) {
|
|
41
|
+
const curSize = this.filterSize * Math.pow(this.scale, this.filterSeries.length);
|
|
42
|
+
current = new CuckooFilter({
|
|
43
|
+
filterSize: curSize,
|
|
44
|
+
bucketSize: this.bucketSize,
|
|
45
|
+
fingerprintSize: this.fingerprintSize,
|
|
46
|
+
hash: this.hash,
|
|
47
|
+
seed: this.seed
|
|
48
|
+
});
|
|
49
|
+
this.filterSeries.push(current);
|
|
50
|
+
}
|
|
51
|
+
return current.add(item);
|
|
52
|
+
}
|
|
53
|
+
has(item) {
|
|
54
|
+
if (typeof item === 'string') {
|
|
55
|
+
item = uint8ArrayFromString(item);
|
|
56
|
+
}
|
|
57
|
+
for (let i = 0; i < this.filterSeries.length; i++) {
|
|
58
|
+
if (this.filterSeries[i].has(item)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
remove(item) {
|
|
65
|
+
if (typeof item === 'string') {
|
|
66
|
+
item = uint8ArrayFromString(item);
|
|
67
|
+
}
|
|
68
|
+
for (let i = 0; i < this.filterSeries.length; i++) {
|
|
69
|
+
if (this.filterSeries[i].remove(item)) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
get count() {
|
|
76
|
+
return this.filterSeries.reduce((acc, curr) => {
|
|
77
|
+
return acc + curr.count;
|
|
78
|
+
}, 0);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function createScalableCuckooFilter(maxItems, errorRate = 0.001, options) {
|
|
82
|
+
return new ScalableCuckooFilter({
|
|
83
|
+
...optimize(maxItems, errorRate),
|
|
84
|
+
...(options ?? {})
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=scalable-cuckoo-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalable-cuckoo-filter.js","sourceRoot":"","sources":["../../../src/filters/scalable-cuckoo-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/filters/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/filters/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AACtD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implements exponential moving average. Ported from `moving-average`.
|
|
3
|
+
*
|
|
4
|
+
* @see https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average
|
|
5
|
+
* @see https://www.npmjs.com/package/moving-average
|
|
6
|
+
*/
|
|
7
|
+
export declare class MovingAverage {
|
|
8
|
+
movingAverage: number;
|
|
9
|
+
variance: number;
|
|
10
|
+
deviation: number;
|
|
11
|
+
forecast: number;
|
|
12
|
+
private readonly timespan;
|
|
13
|
+
private previousTime?;
|
|
14
|
+
constructor(timespan: number);
|
|
15
|
+
alpha(t: number, pt: number): number;
|
|
16
|
+
push(value: number, time?: number): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=moving-average.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moving-average.d.ts","sourceRoot":"","sources":["../../src/moving-average.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,aAAa;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,YAAY,CAAC,CAAQ;gBAEhB,QAAQ,EAAE,MAAM;IAQ7B,KAAK,CAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAIrC,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAmB,GAAG,IAAI;CAkBtD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implements exponential moving average. Ported from `moving-average`.
|
|
3
|
+
*
|
|
4
|
+
* @see https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average
|
|
5
|
+
* @see https://www.npmjs.com/package/moving-average
|
|
6
|
+
*/
|
|
7
|
+
export class MovingAverage {
|
|
8
|
+
movingAverage;
|
|
9
|
+
variance;
|
|
10
|
+
deviation;
|
|
11
|
+
forecast;
|
|
12
|
+
timespan;
|
|
13
|
+
previousTime;
|
|
14
|
+
constructor(timespan) {
|
|
15
|
+
this.timespan = timespan;
|
|
16
|
+
this.movingAverage = 0;
|
|
17
|
+
this.variance = 0;
|
|
18
|
+
this.deviation = 0;
|
|
19
|
+
this.forecast = 0;
|
|
20
|
+
}
|
|
21
|
+
alpha(t, pt) {
|
|
22
|
+
return 1 - (Math.exp(-(t - pt) / this.timespan));
|
|
23
|
+
}
|
|
24
|
+
push(value, time = Date.now()) {
|
|
25
|
+
if (this.previousTime != null) {
|
|
26
|
+
// calculate moving average
|
|
27
|
+
const a = this.alpha(time, this.previousTime);
|
|
28
|
+
const diff = value - this.movingAverage;
|
|
29
|
+
const incr = a * diff;
|
|
30
|
+
this.movingAverage = a * value + (1 - a) * this.movingAverage;
|
|
31
|
+
// calculate variance & deviation
|
|
32
|
+
this.variance = (1 - a) * (this.variance + diff * incr);
|
|
33
|
+
this.deviation = Math.sqrt(this.variance);
|
|
34
|
+
// calculate forecast
|
|
35
|
+
this.forecast = this.movingAverage + a * diff;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.movingAverage = value;
|
|
39
|
+
}
|
|
40
|
+
this.previousTime = time;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=moving-average.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moving-average.js","sourceRoot":"","sources":["../../src/moving-average.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IACjB,aAAa,CAAQ;IACrB,QAAQ,CAAQ;IAChB,SAAS,CAAQ;IACjB,QAAQ,CAAQ;IACN,QAAQ,CAAQ;IACzB,YAAY,CAAS;IAE7B,YAAa,QAAgB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,KAAK,CAAE,CAAS,EAAE,EAAU;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAE,KAAa,EAAE,OAAe,IAAI,CAAC,GAAG,EAAE;QAC5C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YAC9B,2BAA2B;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;YAC7C,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;YACvC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAA;YACrB,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAA;YAC7D,iCAAiC;YACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA;YACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACzC,qBAAqB;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;QAC5B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;CACF"}
|
package/dist/src/peer-queue.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Queue
|
|
1
|
+
import { Queue } from './queue/index.js';
|
|
2
2
|
import type { Job } from './queue/job.js';
|
|
3
|
-
import type { PeerId } from '@libp2p/interface';
|
|
4
|
-
export interface PeerQueueJobOptions extends
|
|
3
|
+
import type { AbortOptions, PeerId } from '@libp2p/interface';
|
|
4
|
+
export interface PeerQueueJobOptions extends AbortOptions {
|
|
5
5
|
peerId: PeerId;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-queue.d.ts","sourceRoot":"","sources":["../../src/peer-queue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer-queue.d.ts","sourceRoot":"","sources":["../../src/peer-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE7D,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,qBAAa,SAAS,CAAC,aAAa,GAAG,IAAI,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC;IACjJ,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAI7B,IAAI,CAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,SAAS;CAKlE"}
|
package/dist/src/peer-queue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-queue.js","sourceRoot":"","sources":["../../src/peer-queue.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"peer-queue.js","sourceRoot":"","sources":["../../src/peer-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAQxC;;GAEG;AACH,MAAM,OAAO,SAA8F,SAAQ,KAAgC;IACjJ,GAAG,CAAE,MAAc;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;IAClC,CAAC;IAED,IAAI,CAAE,MAAc;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Queue } from './queue/index.js';
|
|
2
|
+
import type { QueueInit } from './queue/index.js';
|
|
3
|
+
import type { AbortOptions } from '@libp2p/interface';
|
|
4
|
+
export interface PriorityQueueJobOptions extends AbortOptions {
|
|
5
|
+
priority: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class PriorityQueue<JobReturnType = void, JobOptions extends PriorityQueueJobOptions = PriorityQueueJobOptions> extends Queue<JobReturnType, JobOptions> {
|
|
8
|
+
constructor(init?: QueueInit<JobReturnType, JobOptions>);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=priority-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-queue.d.ts","sourceRoot":"","sources":["../../src/priority-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,aAAa,CAAE,aAAa,GAAG,IAAI,EAAE,UAAU,SAAS,uBAAuB,GAAG,uBAAuB,CAAE,SAAQ,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC;gBACjJ,IAAI,GAAE,SAAS,CAAC,aAAa,EAAE,UAAU,CAAM;CAgB7D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Queue } from './queue/index.js';
|
|
2
|
+
export class PriorityQueue extends Queue {
|
|
3
|
+
constructor(init = {}) {
|
|
4
|
+
super({
|
|
5
|
+
...init,
|
|
6
|
+
sort: (a, b) => {
|
|
7
|
+
if (a.options.priority > b.options.priority) {
|
|
8
|
+
return -1;
|
|
9
|
+
}
|
|
10
|
+
if (a.options.priority < b.options.priority) {
|
|
11
|
+
return 1;
|
|
12
|
+
}
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=priority-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-queue.js","sourceRoot":"","sources":["../../src/priority-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAQxC,MAAM,OAAO,aAA2G,SAAQ,KAAgC;IAC9J,YAAa,OAA6C,EAAE;QAC1D,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACb,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC5C,OAAO,CAAC,CAAC,CAAA;gBACX,CAAC;gBAED,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC5C,OAAO,CAAC,CAAA;gBACV,CAAC;gBAED,OAAO,CAAC,CAAA;YACV,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { TypedEventEmitter } from '@libp2p/interface';
|
|
2
2
|
import { Job } from './job.js';
|
|
3
3
|
import type { AbortOptions, Metrics } from '@libp2p/interface';
|
|
4
|
-
export interface
|
|
5
|
-
|
|
6
|
-
* Priority of operation. Operations with greater priority will be scheduled first.
|
|
7
|
-
*
|
|
8
|
-
* @default 0
|
|
9
|
-
*/
|
|
10
|
-
priority?: number;
|
|
4
|
+
export interface Comparator<T> {
|
|
5
|
+
(a: T, b: T): -1 | 0 | 1;
|
|
11
6
|
}
|
|
12
|
-
export interface QueueInit {
|
|
7
|
+
export interface QueueInit<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
13
8
|
/**
|
|
14
9
|
* Concurrency limit.
|
|
15
10
|
*
|
|
@@ -26,23 +21,27 @@ export interface QueueInit {
|
|
|
26
21
|
* An implementation of the libp2p Metrics interface
|
|
27
22
|
*/
|
|
28
23
|
metrics?: Metrics;
|
|
24
|
+
/**
|
|
25
|
+
* An optional function that will sort the queue after a job has been added
|
|
26
|
+
*/
|
|
27
|
+
sort?: Comparator<Job<JobOptions, JobReturnType>>;
|
|
29
28
|
}
|
|
30
29
|
export type JobStatus = 'queued' | 'running' | 'errored' | 'complete';
|
|
31
30
|
export interface RunFunction<Options = AbortOptions, ReturnType = void> {
|
|
32
31
|
(opts?: Options): Promise<ReturnType>;
|
|
33
32
|
}
|
|
34
|
-
export interface JobMatcher<JobOptions extends
|
|
33
|
+
export interface JobMatcher<JobOptions extends AbortOptions = AbortOptions> {
|
|
35
34
|
(options?: Partial<JobOptions>): boolean;
|
|
36
35
|
}
|
|
37
|
-
export interface QueueJobSuccess<JobReturnType, JobOptions extends
|
|
36
|
+
export interface QueueJobSuccess<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
38
37
|
job: Job<JobOptions, JobReturnType>;
|
|
39
38
|
result: JobReturnType;
|
|
40
39
|
}
|
|
41
|
-
export interface QueueJobFailure<JobReturnType, JobOptions extends
|
|
40
|
+
export interface QueueJobFailure<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
42
41
|
job: Job<JobOptions, JobReturnType>;
|
|
43
42
|
error: Error;
|
|
44
43
|
}
|
|
45
|
-
export interface QueueEvents<JobReturnType, JobOptions extends
|
|
44
|
+
export interface QueueEvents<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
46
45
|
/**
|
|
47
46
|
* A job is about to start running
|
|
48
47
|
*/
|
|
@@ -88,11 +87,12 @@ export interface QueueEvents<JobReturnType, JobOptions extends QueueAddOptions =
|
|
|
88
87
|
* 1. Items remain at the head of the queue while they are running so `queue.size` includes `queue.pending` items - this is so interested parties can join the results of a queue item while it is running
|
|
89
88
|
* 2. The options for a job are stored separately to the job in order for them to be modified while they are still in the queue
|
|
90
89
|
*/
|
|
91
|
-
export declare class Queue<JobReturnType = unknown, JobOptions extends
|
|
90
|
+
export declare class Queue<JobReturnType = unknown, JobOptions extends AbortOptions = AbortOptions> extends TypedEventEmitter<QueueEvents<JobReturnType, JobOptions>> {
|
|
92
91
|
concurrency: number;
|
|
93
92
|
queue: Array<Job<JobOptions, JobReturnType>>;
|
|
94
93
|
private pending;
|
|
95
|
-
|
|
94
|
+
private readonly sort?;
|
|
95
|
+
constructor(init?: QueueInit<JobReturnType, JobOptions>);
|
|
96
96
|
private tryToStartAnother;
|
|
97
97
|
private enqueue;
|
|
98
98
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG5E,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE9D,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/queue/index.js
CHANGED
|
@@ -2,24 +2,6 @@ import { AbortError, CodeError, TypedEventEmitter } from '@libp2p/interface';
|
|
|
2
2
|
import { pushable } from 'it-pushable';
|
|
3
3
|
import { raceEvent } from 'race-event';
|
|
4
4
|
import { Job } from './job.js';
|
|
5
|
-
// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
6
|
-
// Used to compute insertion index to keep queue sorted after insertion
|
|
7
|
-
function lowerBound(array, value, comparator) {
|
|
8
|
-
let first = 0;
|
|
9
|
-
let count = array.length;
|
|
10
|
-
while (count > 0) {
|
|
11
|
-
const step = Math.trunc(count / 2);
|
|
12
|
-
let it = first + step;
|
|
13
|
-
if (comparator(array[it], value) <= 0) {
|
|
14
|
-
first = ++it;
|
|
15
|
-
count -= step + 1;
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
count = step;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return first;
|
|
22
|
-
}
|
|
23
5
|
/**
|
|
24
6
|
* Heavily influence by `p-queue` with the following differences:
|
|
25
7
|
*
|
|
@@ -30,6 +12,7 @@ export class Queue extends TypedEventEmitter {
|
|
|
30
12
|
concurrency;
|
|
31
13
|
queue;
|
|
32
14
|
pending;
|
|
15
|
+
sort;
|
|
33
16
|
constructor(init = {}) {
|
|
34
17
|
super();
|
|
35
18
|
this.concurrency = init.concurrency ?? Number.POSITIVE_INFINITY;
|
|
@@ -45,6 +28,7 @@ export class Queue extends TypedEventEmitter {
|
|
|
45
28
|
}
|
|
46
29
|
});
|
|
47
30
|
}
|
|
31
|
+
this.sort = init.sort;
|
|
48
32
|
this.queue = [];
|
|
49
33
|
}
|
|
50
34
|
tryToStartAnother() {
|
|
@@ -94,19 +78,17 @@ export class Queue extends TypedEventEmitter {
|
|
|
94
78
|
return false;
|
|
95
79
|
}
|
|
96
80
|
enqueue(job) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
81
|
+
this.queue.push(job);
|
|
82
|
+
if (this.sort != null) {
|
|
83
|
+
this.queue.sort(this.sort);
|
|
100
84
|
}
|
|
101
|
-
const index = lowerBound(this.queue, job, (a, b) => b.priority - a.priority);
|
|
102
|
-
this.queue.splice(index, 0, job);
|
|
103
85
|
}
|
|
104
86
|
/**
|
|
105
87
|
* Adds a sync or async task to the queue. Always returns a promise.
|
|
106
88
|
*/
|
|
107
89
|
async add(fn, options) {
|
|
108
90
|
options?.signal?.throwIfAborted();
|
|
109
|
-
const job = new Job(fn, options
|
|
91
|
+
const job = new Job(fn, options);
|
|
110
92
|
const p = job.join(options)
|
|
111
93
|
.then(result => {
|
|
112
94
|
this.safeDispatchEvent('completed', { detail: result });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAsG9B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/queue/job.d.ts
CHANGED
|
@@ -10,12 +10,11 @@ export declare class Job<JobOptions extends AbortOptions = AbortOptions, JobRetu
|
|
|
10
10
|
id: string;
|
|
11
11
|
fn: (options: JobOptions) => Promise<JobReturnType>;
|
|
12
12
|
options: JobOptions;
|
|
13
|
-
priority: number;
|
|
14
13
|
recipients: Array<JobRecipient<JobReturnType>>;
|
|
15
14
|
status: JobStatus;
|
|
16
15
|
readonly timeline: JobTimeline;
|
|
17
16
|
private readonly controller;
|
|
18
|
-
constructor(fn: (options: JobOptions) => Promise<JobReturnType>, options: any
|
|
17
|
+
constructor(fn: (options: JobOptions) => Promise<JobReturnType>, options: any);
|
|
19
18
|
abort(err: Error): void;
|
|
20
19
|
onAbort(): void;
|
|
21
20
|
join(options?: AbortOptions): Promise<JobReturnType>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AASrD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,GAAG,CAAE,UAAU,SAAS,YAAY,GAAG,YAAY,EAAE,aAAa,GAAG,OAAO;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACnD,OAAO,EAAE,UAAU,CAAA;IACnB,
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AASrD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,GAAG,CAAE,UAAU,SAAS,YAAY,GAAG,YAAY,EAAE,aAAa,GAAG,OAAO;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACnD,OAAO,EAAE,UAAU,CAAA;IACnB,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAA;IAC9C,MAAM,EAAE,SAAS,CAAA;IACxB,SAAgB,QAAQ,EAAE,WAAW,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;gBAE/B,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG;IAgB9E,KAAK,CAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAIxB,OAAO,IAAK,IAAI;IAYV,IAAI,CAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IASzD,GAAG,IAAK,OAAO,CAAC,IAAI,CAAC;IA6B3B,OAAO,IAAK,IAAI;CAMjB"}
|