@libp2p/utils 5.4.0-7ae6063df → 5.4.0-83c14d08f
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/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 +9 -5
- 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/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"}
|
package/dist/src/queue/job.js
CHANGED
|
@@ -11,16 +11,14 @@ export class Job {
|
|
|
11
11
|
id;
|
|
12
12
|
fn;
|
|
13
13
|
options;
|
|
14
|
-
priority;
|
|
15
14
|
recipients;
|
|
16
15
|
status;
|
|
17
16
|
timeline;
|
|
18
17
|
controller;
|
|
19
|
-
constructor(fn, options
|
|
18
|
+
constructor(fn, options) {
|
|
20
19
|
this.id = randomId();
|
|
21
20
|
this.status = 'queued';
|
|
22
21
|
this.fn = fn;
|
|
23
|
-
this.priority = priority;
|
|
24
22
|
this.options = options;
|
|
25
23
|
this.recipients = [];
|
|
26
24
|
this.timeline = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C;;GAEG;AACH,SAAS,QAAQ;IACf,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;AACjF,CAAC;AAQD,MAAM,OAAO,GAAG;IACP,EAAE,CAAQ;IACV,EAAE,CAAiD;IACnD,OAAO,CAAY;IACnB,
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/utils",
|
|
3
|
-
"version": "5.4.0-
|
|
3
|
+
"version": "5.4.0-83c14d08f",
|
|
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",
|
|
@@ -100,6 +100,10 @@
|
|
|
100
100
|
"types": "./dist/src/peer-queue.d.ts",
|
|
101
101
|
"import": "./dist/src/peer-queue.js"
|
|
102
102
|
},
|
|
103
|
+
"./priority-queue": {
|
|
104
|
+
"types": "./dist/src/priority-queue.d.ts",
|
|
105
|
+
"import": "./dist/src/priority-queue.js"
|
|
106
|
+
},
|
|
103
107
|
"./private-ip": {
|
|
104
108
|
"types": "./dist/src/private-ip.d.ts",
|
|
105
109
|
"import": "./dist/src/private-ip.js"
|
|
@@ -148,9 +152,9 @@
|
|
|
148
152
|
},
|
|
149
153
|
"dependencies": {
|
|
150
154
|
"@chainsafe/is-ip": "^2.0.2",
|
|
151
|
-
"@libp2p/crypto": "4.1.1-
|
|
152
|
-
"@libp2p/interface": "1.3.1-
|
|
153
|
-
"@libp2p/logger": "4.0.12-
|
|
155
|
+
"@libp2p/crypto": "4.1.1-83c14d08f",
|
|
156
|
+
"@libp2p/interface": "1.3.1-83c14d08f",
|
|
157
|
+
"@libp2p/logger": "4.0.12-83c14d08f",
|
|
154
158
|
"@multiformats/multiaddr": "^12.2.1",
|
|
155
159
|
"@multiformats/multiaddr-matcher": "^1.2.0",
|
|
156
160
|
"@sindresorhus/fnv1a": "^3.1.0",
|
|
@@ -170,7 +174,7 @@
|
|
|
170
174
|
"uint8arrays": "^5.0.3"
|
|
171
175
|
},
|
|
172
176
|
"devDependencies": {
|
|
173
|
-
"@libp2p/peer-id-factory": "4.1.1-
|
|
177
|
+
"@libp2p/peer-id-factory": "4.1.1-83c14d08f",
|
|
174
178
|
"@types/netmask": "^2.0.5",
|
|
175
179
|
"aegir": "^42.2.5",
|
|
176
180
|
"delay": "^6.0.0",
|
package/src/peer-queue.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { Queue, type QueueAddOptions } from './queue/index.js'
|
|
1
|
+
import { Queue } from './queue/index.js'
|
|
4
2
|
import type { Job } from './queue/job.js'
|
|
5
|
-
import type { PeerId } from '@libp2p/interface'
|
|
3
|
+
import type { AbortOptions, PeerId } from '@libp2p/interface'
|
|
6
4
|
|
|
7
|
-
export interface PeerQueueJobOptions extends
|
|
5
|
+
export interface PeerQueueJobOptions extends AbortOptions {
|
|
8
6
|
peerId: PeerId
|
|
9
7
|
}
|
|
10
8
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Queue } from './queue/index.js'
|
|
2
|
+
import type { QueueInit } from './queue/index.js'
|
|
3
|
+
import type { AbortOptions } from '@libp2p/interface'
|
|
4
|
+
|
|
5
|
+
export interface PriorityQueueJobOptions extends AbortOptions {
|
|
6
|
+
priority: number
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export class PriorityQueue <JobReturnType = void, JobOptions extends PriorityQueueJobOptions = PriorityQueueJobOptions> extends Queue<JobReturnType, JobOptions> {
|
|
10
|
+
constructor (init: QueueInit<JobReturnType, JobOptions> = {}) {
|
|
11
|
+
super({
|
|
12
|
+
...init,
|
|
13
|
+
sort: (a, b) => {
|
|
14
|
+
if (a.options.priority > b.options.priority) {
|
|
15
|
+
return -1
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (a.options.priority < b.options.priority) {
|
|
19
|
+
return 1
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return 0
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
}
|
package/src/queue/index.ts
CHANGED
|
@@ -4,16 +4,11 @@ import { raceEvent } from 'race-event'
|
|
|
4
4
|
import { Job } from './job.js'
|
|
5
5
|
import type { AbortOptions, Metrics } from '@libp2p/interface'
|
|
6
6
|
|
|
7
|
-
export interface
|
|
8
|
-
|
|
9
|
-
* Priority of operation. Operations with greater priority will be scheduled first.
|
|
10
|
-
*
|
|
11
|
-
* @default 0
|
|
12
|
-
*/
|
|
13
|
-
priority?: number
|
|
7
|
+
export interface Comparator<T> {
|
|
8
|
+
(a: T, b: T): -1 | 0 | 1
|
|
14
9
|
}
|
|
15
10
|
|
|
16
|
-
export interface QueueInit {
|
|
11
|
+
export interface QueueInit<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
17
12
|
/**
|
|
18
13
|
* Concurrency limit.
|
|
19
14
|
*
|
|
@@ -32,6 +27,11 @@ export interface QueueInit {
|
|
|
32
27
|
* An implementation of the libp2p Metrics interface
|
|
33
28
|
*/
|
|
34
29
|
metrics?: Metrics
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* An optional function that will sort the queue after a job has been added
|
|
33
|
+
*/
|
|
34
|
+
sort?: Comparator<Job<JobOptions, JobReturnType>>
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export type JobStatus = 'queued' | 'running' | 'errored' | 'complete'
|
|
@@ -40,21 +40,21 @@ export interface RunFunction<Options = AbortOptions, ReturnType = void> {
|
|
|
40
40
|
(opts?: Options): Promise<ReturnType>
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
export interface JobMatcher<JobOptions extends
|
|
43
|
+
export interface JobMatcher<JobOptions extends AbortOptions = AbortOptions> {
|
|
44
44
|
(options?: Partial<JobOptions>): boolean
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export interface QueueJobSuccess<JobReturnType, JobOptions extends
|
|
47
|
+
export interface QueueJobSuccess<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
48
48
|
job: Job<JobOptions, JobReturnType>
|
|
49
49
|
result: JobReturnType
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
export interface QueueJobFailure<JobReturnType, JobOptions extends
|
|
52
|
+
export interface QueueJobFailure<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
53
53
|
job: Job<JobOptions, JobReturnType>
|
|
54
54
|
error: Error
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export interface QueueEvents<JobReturnType, JobOptions extends
|
|
57
|
+
export interface QueueEvents<JobReturnType, JobOptions extends AbortOptions = AbortOptions> {
|
|
58
58
|
/**
|
|
59
59
|
* A job is about to start running
|
|
60
60
|
*/
|
|
@@ -103,39 +103,19 @@ export interface QueueEvents<JobReturnType, JobOptions extends QueueAddOptions =
|
|
|
103
103
|
'failure': CustomEvent<QueueJobFailure<JobReturnType, JobOptions>>
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
107
|
-
// Used to compute insertion index to keep queue sorted after insertion
|
|
108
|
-
function lowerBound<T> (array: readonly T[], value: T, comparator: (a: T, b: T) => number): number {
|
|
109
|
-
let first = 0
|
|
110
|
-
let count = array.length
|
|
111
|
-
|
|
112
|
-
while (count > 0) {
|
|
113
|
-
const step = Math.trunc(count / 2)
|
|
114
|
-
let it = first + step
|
|
115
|
-
|
|
116
|
-
if (comparator(array[it], value) <= 0) {
|
|
117
|
-
first = ++it
|
|
118
|
-
count -= step + 1
|
|
119
|
-
} else {
|
|
120
|
-
count = step
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return first
|
|
125
|
-
}
|
|
126
|
-
|
|
127
106
|
/**
|
|
128
107
|
* Heavily influence by `p-queue` with the following differences:
|
|
129
108
|
*
|
|
130
109
|
* 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
|
|
131
110
|
* 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
|
|
132
111
|
*/
|
|
133
|
-
export class Queue<JobReturnType = unknown, JobOptions extends
|
|
112
|
+
export class Queue<JobReturnType = unknown, JobOptions extends AbortOptions = AbortOptions> extends TypedEventEmitter<QueueEvents<JobReturnType, JobOptions>> {
|
|
134
113
|
public concurrency: number
|
|
135
114
|
public queue: Array<Job<JobOptions, JobReturnType>>
|
|
136
115
|
private pending: number
|
|
116
|
+
private readonly sort?: Comparator<Job<JobOptions, JobReturnType>>
|
|
137
117
|
|
|
138
|
-
constructor (init: QueueInit = {}) {
|
|
118
|
+
constructor (init: QueueInit<JobReturnType, JobOptions> = {}) {
|
|
139
119
|
super()
|
|
140
120
|
|
|
141
121
|
this.concurrency = init.concurrency ?? Number.POSITIVE_INFINITY
|
|
@@ -153,6 +133,7 @@ export class Queue<JobReturnType = unknown, JobOptions extends QueueAddOptions =
|
|
|
153
133
|
})
|
|
154
134
|
}
|
|
155
135
|
|
|
136
|
+
this.sort = init.sort
|
|
156
137
|
this.queue = []
|
|
157
138
|
}
|
|
158
139
|
|
|
@@ -215,16 +196,11 @@ export class Queue<JobReturnType = unknown, JobOptions extends QueueAddOptions =
|
|
|
215
196
|
}
|
|
216
197
|
|
|
217
198
|
private enqueue (job: Job<JobOptions, JobReturnType>): void {
|
|
218
|
-
|
|
219
|
-
this.queue.push(job)
|
|
220
|
-
return
|
|
221
|
-
}
|
|
199
|
+
this.queue.push(job)
|
|
222
200
|
|
|
223
|
-
|
|
224
|
-
this.queue
|
|
225
|
-
|
|
226
|
-
)
|
|
227
|
-
this.queue.splice(index, 0, job)
|
|
201
|
+
if (this.sort != null) {
|
|
202
|
+
this.queue.sort(this.sort)
|
|
203
|
+
}
|
|
228
204
|
}
|
|
229
205
|
|
|
230
206
|
/**
|
|
@@ -233,7 +209,7 @@ export class Queue<JobReturnType = unknown, JobOptions extends QueueAddOptions =
|
|
|
233
209
|
async add (fn: RunFunction<JobOptions, JobReturnType>, options?: JobOptions): Promise<JobReturnType> {
|
|
234
210
|
options?.signal?.throwIfAborted()
|
|
235
211
|
|
|
236
|
-
const job = new Job<JobOptions, JobReturnType>(fn, options
|
|
212
|
+
const job = new Job<JobOptions, JobReturnType>(fn, options)
|
|
237
213
|
|
|
238
214
|
const p = job.join(options)
|
|
239
215
|
.then(result => {
|
package/src/queue/job.ts
CHANGED
|
@@ -21,17 +21,15 @@ export class Job <JobOptions extends AbortOptions = AbortOptions, JobReturnType
|
|
|
21
21
|
public id: string
|
|
22
22
|
public fn: (options: JobOptions) => Promise<JobReturnType>
|
|
23
23
|
public options: JobOptions
|
|
24
|
-
public priority: number
|
|
25
24
|
public recipients: Array<JobRecipient<JobReturnType>>
|
|
26
25
|
public status: JobStatus
|
|
27
26
|
public readonly timeline: JobTimeline
|
|
28
27
|
private readonly controller: AbortController
|
|
29
28
|
|
|
30
|
-
constructor (fn: (options: JobOptions) => Promise<JobReturnType>, options: any
|
|
29
|
+
constructor (fn: (options: JobOptions) => Promise<JobReturnType>, options: any) {
|
|
31
30
|
this.id = randomId()
|
|
32
31
|
this.status = 'queued'
|
|
33
32
|
this.fn = fn
|
|
34
|
-
this.priority = priority
|
|
35
33
|
this.options = options
|
|
36
34
|
this.recipients = []
|
|
37
35
|
this.timeline = {
|