@libp2p/utils 7.0.15-90100be0c → 7.0.15-b30baa93a
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/index.min.js +4 -4
- package/dist/index.min.js.map +4 -4
- package/dist/src/queue/index.d.ts +2 -1
- package/dist/src/queue/index.d.ts.map +1 -1
- package/dist/src/queue/index.js +3 -2
- package/dist/src/queue/index.js.map +1 -1
- package/dist/src/queue/job.d.ts +3 -2
- package/dist/src/queue/job.d.ts.map +1 -1
- package/dist/src/queue/job.js +9 -4
- package/dist/src/queue/job.js.map +1 -1
- package/dist/src/queue/recipient.d.ts +5 -2
- package/dist/src/queue/recipient.d.ts.map +1 -1
- package/dist/src/queue/recipient.js +4 -2
- package/dist/src/queue/recipient.js.map +1 -1
- package/package.json +7 -6
- package/src/queue/index.ts +7 -3
- package/src/queue/job.ts +11 -5
- package/src/queue/recipient.ts +7 -3
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TypedEventEmitter } from 'main-event';
|
|
2
2
|
import { Job } from './job.js';
|
|
3
3
|
import type { AbortOptions, Metrics } from '@libp2p/interface';
|
|
4
|
+
import type { ProgressOptions } from 'progress-events';
|
|
4
5
|
export type { Job, JobTimeline } from './job.js';
|
|
5
6
|
export type { JobRecipient } from './recipient.js';
|
|
6
7
|
export interface Comparator<T> {
|
|
@@ -92,7 +93,7 @@ export interface QueueEvents<JobReturnType, JobOptions extends AbortOptions = Ab
|
|
|
92
93
|
* 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
|
|
93
94
|
* 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
|
|
94
95
|
*/
|
|
95
|
-
export declare class Queue<JobReturnType = unknown, JobOptions extends AbortOptions = AbortOptions> extends TypedEventEmitter<QueueEvents<JobReturnType, JobOptions>> {
|
|
96
|
+
export declare class Queue<JobReturnType = unknown, JobOptions extends AbortOptions & ProgressOptions = AbortOptions> extends TypedEventEmitter<QueueEvents<JobReturnType, JobOptions>> {
|
|
96
97
|
concurrency: number;
|
|
97
98
|
maxSize: number;
|
|
98
99
|
queue: Array<Job<JobOptions, JobReturnType>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAI9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;
|
|
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
|
@@ -120,8 +120,7 @@ export class Queue extends TypedEventEmitter {
|
|
|
120
120
|
const job = new Job(fn, options);
|
|
121
121
|
this.enqueue(job);
|
|
122
122
|
this.safeDispatchEvent('add');
|
|
123
|
-
|
|
124
|
-
return job.join(options)
|
|
123
|
+
const result = job.join(options)
|
|
125
124
|
.then(result => {
|
|
126
125
|
this.safeDispatchEvent('completed', { detail: result });
|
|
127
126
|
this.safeDispatchEvent('success', { detail: { job, result } });
|
|
@@ -140,6 +139,8 @@ export class Queue extends TypedEventEmitter {
|
|
|
140
139
|
this.safeDispatchEvent('failure', { detail: { job, error: err } });
|
|
141
140
|
throw err;
|
|
142
141
|
});
|
|
142
|
+
this.tryToStartAnother();
|
|
143
|
+
return result;
|
|
143
144
|
}
|
|
144
145
|
/**
|
|
145
146
|
* Clear the queue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;
|
|
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
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { JobRecipient } from './recipient.js';
|
|
2
2
|
import type { JobStatus } from './index.js';
|
|
3
3
|
import type { AbortOptions } from '@libp2p/interface';
|
|
4
|
+
import type { ProgressOptions } from 'progress-events';
|
|
4
5
|
export interface JobTimeline {
|
|
5
6
|
created: number;
|
|
6
7
|
started?: number;
|
|
7
8
|
finished?: number;
|
|
8
9
|
}
|
|
9
|
-
export declare class Job<JobOptions extends AbortOptions = AbortOptions, JobReturnType = unknown> {
|
|
10
|
+
export declare class Job<JobOptions extends AbortOptions & ProgressOptions = AbortOptions, JobReturnType = unknown> {
|
|
10
11
|
id: string;
|
|
11
12
|
fn: (options: JobOptions) => Promise<JobReturnType>;
|
|
12
13
|
options: JobOptions;
|
|
@@ -17,7 +18,7 @@ export declare class Job<JobOptions extends AbortOptions = AbortOptions, JobRetu
|
|
|
17
18
|
constructor(fn: (options: JobOptions) => Promise<JobReturnType>, options: any);
|
|
18
19
|
abort(err: Error): void;
|
|
19
20
|
onAbort(): void;
|
|
20
|
-
join(options?:
|
|
21
|
+
join(options?: Partial<Pick<JobOptions, 'signal' | 'onProgress'>>): Promise<JobReturnType>;
|
|
21
22
|
run(): Promise<void>;
|
|
22
23
|
cleanup(): void;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"AAGA,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;
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"AAGA,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;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAStD,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,eAAe,GAAG,YAAY,EAAE,aAAa,GAAG,OAAO;IAClG,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,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAS3F,GAAG,IAAK,OAAO,CAAC,IAAI,CAAC;IAkC3B,OAAO,IAAK,IAAI;CAMjB"}
|
package/dist/src/queue/job.js
CHANGED
|
@@ -42,10 +42,10 @@ export class Job {
|
|
|
42
42
|
this.cleanup();
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
async join(options
|
|
46
|
-
const recipient = new JobRecipient(options
|
|
45
|
+
async join(options) {
|
|
46
|
+
const recipient = new JobRecipient(options);
|
|
47
47
|
this.recipients.push(recipient);
|
|
48
|
-
options
|
|
48
|
+
options?.signal?.addEventListener('abort', this.onAbort);
|
|
49
49
|
return recipient.deferred.promise;
|
|
50
50
|
}
|
|
51
51
|
async run() {
|
|
@@ -55,7 +55,12 @@ export class Job {
|
|
|
55
55
|
this.controller.signal.throwIfAborted();
|
|
56
56
|
const result = await raceSignal(this.fn({
|
|
57
57
|
...(this.options ?? {}),
|
|
58
|
-
signal: this.controller.signal
|
|
58
|
+
signal: this.controller.signal,
|
|
59
|
+
onProgress: (evt) => {
|
|
60
|
+
this.recipients.forEach(recipient => {
|
|
61
|
+
recipient.onProgress?.(evt);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
59
64
|
}), this.controller.signal);
|
|
60
65
|
this.recipients.forEach(recipient => {
|
|
61
66
|
recipient.deferred.resolve(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/queue/job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C;;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,UAAU,CAAoC;IAC9C,MAAM,CAAW;IACR,QAAQ,CAAa;IACpB,UAAU,CAAiB;IAE5C,YAAa,EAAmD,EAAE,OAAY;QAC5E,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG;YACd,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;SACpB,CAAA;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACvC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAEjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAE,GAAU;QACf,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACtD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;QAC/C,CAAC,EAAE,IAAI,CAAC,CAAA;QAER,iEAAiE;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC,CAAA;YACvC,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,OAA4D;QACtE,MAAM,SAAS,GAAG,IAAI,YAAY,CAAgB,OAAO,CAAC,CAAA;QAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE/B,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAExD,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAElC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;YAEvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;gBAC9B,UAAU,EAAE,CAAC,GAAQ,EAAQ,EAAE;oBAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;wBAClC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;oBAC7B,CAAC,CAAC,CAAA;gBACJ,CAAC;aACF,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAE3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAClC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACpC,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,GAAG,UAAU,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAClC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACzB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACnC,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAClC,SAAS,CAAC,OAAO,EAAE,CAAA;YACnB,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import type { AbortOptions } from '@libp2p/interface';
|
|
1
2
|
import type { DeferredPromise } from 'p-defer';
|
|
2
|
-
|
|
3
|
+
import type { ProgressOptions, ProgressEventListener } from 'progress-events';
|
|
4
|
+
export declare class JobRecipient<JobReturnType, JobOptions extends AbortOptions & ProgressOptions = any> {
|
|
3
5
|
deferred: DeferredPromise<JobReturnType>;
|
|
4
6
|
signal?: AbortSignal;
|
|
5
|
-
|
|
7
|
+
onProgress?: ProgressEventListener;
|
|
8
|
+
constructor(options?: Partial<Pick<JobOptions, 'signal' | 'onProgress'>>);
|
|
6
9
|
onAbort(): void;
|
|
7
10
|
cleanup(): void;
|
|
8
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipient.d.ts","sourceRoot":"","sources":["../../../src/queue/recipient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"recipient.d.ts","sourceRoot":"","sources":["../../../src/queue/recipient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAE7E,qBAAa,YAAY,CAAC,aAAa,EAAE,UAAU,SAAS,YAAY,GAAG,eAAe,GAAG,GAAG;IACvF,QAAQ,EAAE,eAAe,CAAC,aAAa,CAAC,CAAA;IACxC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,qBAAqB,CAAA;gBAE5B,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC;IASzE,OAAO,IAAK,IAAI;IAIhB,OAAO,IAAK,IAAI;CAGjB"}
|
|
@@ -3,8 +3,10 @@ import pDefer from 'p-defer';
|
|
|
3
3
|
export class JobRecipient {
|
|
4
4
|
deferred;
|
|
5
5
|
signal;
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
onProgress;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.signal = options?.signal;
|
|
9
|
+
this.onProgress = options?.onProgress;
|
|
8
10
|
this.deferred = pDefer();
|
|
9
11
|
this.onAbort = this.onAbort.bind(this);
|
|
10
12
|
this.signal?.addEventListener('abort', this.onAbort);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipient.js","sourceRoot":"","sources":["../../../src/queue/recipient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,MAAM,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"recipient.js","sourceRoot":"","sources":["../../../src/queue/recipient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,MAAM,MAAM,SAAS,CAAA;AAK5B,MAAM,OAAO,YAAY;IAChB,QAAQ,CAAgC;IACxC,MAAM,CAAc;IACpB,UAAU,CAAwB;IAEzC,YAAa,OAA4D;QACvE,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAA;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAA;QACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAA;QAExB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/utils",
|
|
3
|
-
"version": "7.0.15-
|
|
3
|
+
"version": "7.0.15-b30baa93a",
|
|
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",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@chainsafe/is-ip": "^2.1.0",
|
|
48
48
|
"@chainsafe/netmask": "^2.0.0",
|
|
49
|
-
"@libp2p/crypto": "5.1.15-
|
|
50
|
-
"@libp2p/interface": "3.2.0-
|
|
51
|
-
"@libp2p/logger": "6.2.4-
|
|
49
|
+
"@libp2p/crypto": "5.1.15-b30baa93a",
|
|
50
|
+
"@libp2p/interface": "3.2.0-b30baa93a",
|
|
51
|
+
"@libp2p/logger": "6.2.4-b30baa93a",
|
|
52
52
|
"@multiformats/multiaddr": "^13.0.1",
|
|
53
53
|
"@sindresorhus/fnv1a": "^3.1.0",
|
|
54
54
|
"any-signal": "^4.1.1",
|
|
55
|
-
"cborg": "^
|
|
55
|
+
"cborg": "^5.1.0",
|
|
56
56
|
"delay": "^7.0.0",
|
|
57
57
|
"is-loopback-addr": "^2.0.2",
|
|
58
58
|
"it-length-prefixed": "^10.0.1",
|
|
@@ -63,13 +63,14 @@
|
|
|
63
63
|
"netmask": "^2.0.2",
|
|
64
64
|
"p-defer": "^4.0.1",
|
|
65
65
|
"p-event": "^7.0.0",
|
|
66
|
+
"progress-events": "^1.1.0",
|
|
66
67
|
"race-signal": "^2.0.0",
|
|
67
68
|
"uint8-varint": "^2.0.4",
|
|
68
69
|
"uint8arraylist": "^2.4.8",
|
|
69
70
|
"uint8arrays": "^5.1.0"
|
|
70
71
|
},
|
|
71
72
|
"devDependencies": {
|
|
72
|
-
"@libp2p/peer-id": "6.0.6-
|
|
73
|
+
"@libp2p/peer-id": "6.0.6-b30baa93a",
|
|
73
74
|
"@types/netmask": "^2.0.5",
|
|
74
75
|
"aegir": "^47.0.22",
|
|
75
76
|
"benchmark": "^2.1.4",
|
package/src/queue/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { debounce } from '../debounce.js'
|
|
|
6
6
|
import { QueueFullError } from '../errors.js'
|
|
7
7
|
import { Job } from './job.js'
|
|
8
8
|
import type { AbortOptions, Metrics } from '@libp2p/interface'
|
|
9
|
+
import type { ProgressOptions } from 'progress-events'
|
|
9
10
|
|
|
10
11
|
export type { Job, JobTimeline } from './job.js'
|
|
11
12
|
export type { JobRecipient } from './recipient.js'
|
|
@@ -118,7 +119,7 @@ export interface QueueEvents<JobReturnType, JobOptions extends AbortOptions = Ab
|
|
|
118
119
|
* 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
|
|
119
120
|
* 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
|
|
120
121
|
*/
|
|
121
|
-
export class Queue<JobReturnType = unknown, JobOptions extends AbortOptions = AbortOptions> extends TypedEventEmitter<QueueEvents<JobReturnType, JobOptions>> {
|
|
122
|
+
export class Queue<JobReturnType = unknown, JobOptions extends AbortOptions & ProgressOptions = AbortOptions> extends TypedEventEmitter<QueueEvents<JobReturnType, JobOptions>> {
|
|
122
123
|
public concurrency: number
|
|
123
124
|
public maxSize: number
|
|
124
125
|
public queue: Array<Job<JobOptions, JobReturnType>>
|
|
@@ -257,9 +258,8 @@ export class Queue<JobReturnType = unknown, JobOptions extends AbortOptions = Ab
|
|
|
257
258
|
const job = new Job<JobOptions, JobReturnType>(fn, options)
|
|
258
259
|
this.enqueue(job)
|
|
259
260
|
this.safeDispatchEvent('add')
|
|
260
|
-
this.tryToStartAnother()
|
|
261
261
|
|
|
262
|
-
|
|
262
|
+
const result = job.join(options)
|
|
263
263
|
.then(result => {
|
|
264
264
|
this.safeDispatchEvent('completed', { detail: result })
|
|
265
265
|
this.safeDispatchEvent('success', { detail: { job, result } })
|
|
@@ -281,6 +281,10 @@ export class Queue<JobReturnType = unknown, JobOptions extends AbortOptions = Ab
|
|
|
281
281
|
|
|
282
282
|
throw err
|
|
283
283
|
})
|
|
284
|
+
|
|
285
|
+
this.tryToStartAnother()
|
|
286
|
+
|
|
287
|
+
return result
|
|
284
288
|
}
|
|
285
289
|
|
|
286
290
|
/**
|
package/src/queue/job.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { raceSignal } from 'race-signal'
|
|
|
4
4
|
import { JobRecipient } from './recipient.js'
|
|
5
5
|
import type { JobStatus } from './index.js'
|
|
6
6
|
import type { AbortOptions } from '@libp2p/interface'
|
|
7
|
+
import type { ProgressOptions } from 'progress-events'
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Returns a random string
|
|
@@ -18,7 +19,7 @@ export interface JobTimeline {
|
|
|
18
19
|
finished?: number
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
export class Job <JobOptions extends AbortOptions = AbortOptions, JobReturnType = unknown> {
|
|
22
|
+
export class Job <JobOptions extends AbortOptions & ProgressOptions = AbortOptions, JobReturnType = unknown> {
|
|
22
23
|
public id: string
|
|
23
24
|
public fn: (options: JobOptions) => Promise<JobReturnType>
|
|
24
25
|
public options: JobOptions
|
|
@@ -59,11 +60,11 @@ export class Job <JobOptions extends AbortOptions = AbortOptions, JobReturnType
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
async join (options
|
|
63
|
-
const recipient = new JobRecipient<JobReturnType>(options
|
|
63
|
+
async join (options?: Partial<Pick<JobOptions, 'signal' | 'onProgress'>>): Promise<JobReturnType> {
|
|
64
|
+
const recipient = new JobRecipient<JobReturnType>(options)
|
|
64
65
|
this.recipients.push(recipient)
|
|
65
66
|
|
|
66
|
-
options
|
|
67
|
+
options?.signal?.addEventListener('abort', this.onAbort)
|
|
67
68
|
|
|
68
69
|
return recipient.deferred.promise
|
|
69
70
|
}
|
|
@@ -77,7 +78,12 @@ export class Job <JobOptions extends AbortOptions = AbortOptions, JobReturnType
|
|
|
77
78
|
|
|
78
79
|
const result = await raceSignal(this.fn({
|
|
79
80
|
...(this.options ?? {}),
|
|
80
|
-
signal: this.controller.signal
|
|
81
|
+
signal: this.controller.signal,
|
|
82
|
+
onProgress: (evt: any): void => {
|
|
83
|
+
this.recipients.forEach(recipient => {
|
|
84
|
+
recipient.onProgress?.(evt)
|
|
85
|
+
})
|
|
86
|
+
}
|
|
81
87
|
}), this.controller.signal)
|
|
82
88
|
|
|
83
89
|
this.recipients.forEach(recipient => {
|
package/src/queue/recipient.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { AbortError } from '@libp2p/interface'
|
|
2
2
|
import pDefer from 'p-defer'
|
|
3
|
+
import type { AbortOptions } from '@libp2p/interface'
|
|
3
4
|
import type { DeferredPromise } from 'p-defer'
|
|
5
|
+
import type { ProgressOptions, ProgressEventListener } from 'progress-events'
|
|
4
6
|
|
|
5
|
-
export class JobRecipient<JobReturnType> {
|
|
7
|
+
export class JobRecipient<JobReturnType, JobOptions extends AbortOptions & ProgressOptions = any> {
|
|
6
8
|
public deferred: DeferredPromise<JobReturnType>
|
|
7
9
|
public signal?: AbortSignal
|
|
10
|
+
public onProgress?: ProgressEventListener
|
|
8
11
|
|
|
9
|
-
constructor (
|
|
10
|
-
this.signal = signal
|
|
12
|
+
constructor (options?: Partial<Pick<JobOptions, 'signal' | 'onProgress'>>) {
|
|
13
|
+
this.signal = options?.signal
|
|
14
|
+
this.onProgress = options?.onProgress
|
|
11
15
|
this.deferred = pDefer()
|
|
12
16
|
|
|
13
17
|
this.onAbort = this.onAbort.bind(this)
|