@peerbit/stream 4.4.0-33643d9 → 4.4.0-58d3d09
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/index.d.ts +2 -10
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -79
- package/dist/src/index.js.map +1 -1
- package/dist/src/pushable-lanes.d.ts +27 -48
- package/dist/src/pushable-lanes.d.ts.map +1 -1
- package/dist/src/pushable-lanes.js +66 -180
- package/dist/src/pushable-lanes.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +11 -108
- package/src/pushable-lanes.ts +127 -281
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export declare class AbortError extends Error {
|
|
2
|
+
type: string;
|
|
3
|
+
code: string;
|
|
4
|
+
constructor(message?: string, code?: string);
|
|
5
|
+
}
|
|
1
6
|
export interface AbortOptions {
|
|
2
7
|
signal?: AbortSignal;
|
|
3
8
|
}
|
|
@@ -6,79 +11,53 @@ export interface AbortOptions {
|
|
|
6
11
|
*/
|
|
7
12
|
export interface PushableLanes<T, R = void, N = unknown> extends AsyncGenerator<T, R, N> {
|
|
8
13
|
/**
|
|
9
|
-
* End the iterable after all values in the buffer (if any) have been yielded.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
14
|
+
* End the iterable after all values in the buffer (if any) have been yielded. If an
|
|
15
|
+
* error is passed the buffer is cleared immediately and the next iteration will
|
|
16
|
+
* throw the passed error
|
|
12
17
|
*/
|
|
13
18
|
end(err?: Error): this;
|
|
14
19
|
/**
|
|
15
|
-
* Push a value into the iterable. Values are yielded in
|
|
16
|
-
* Values not yet consumed
|
|
20
|
+
* Push a value into the iterable. Values are yielded from the iterable in the order
|
|
21
|
+
* they are pushed. Values not yet consumed from the iterable are buffered.
|
|
17
22
|
*/
|
|
18
23
|
push(value: T, lane?: number): this;
|
|
19
24
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
25
|
+
* Returns a promise that resolves when the underlying queue becomes empty (e.g.
|
|
26
|
+
* this.readableLength === 0).
|
|
27
|
+
*
|
|
28
|
+
* If an AbortSignal is passed as an option and that signal aborts, it only
|
|
29
|
+
* causes the returned promise to reject - it does not end the pushable.
|
|
23
30
|
*/
|
|
24
31
|
onEmpty(options?: AbortOptions): Promise<void>;
|
|
25
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* This property contains the total number of bytes in the queue ready to be read.
|
|
34
|
+
*
|
|
35
|
+
*/
|
|
26
36
|
get readableLength(): number;
|
|
27
37
|
/**
|
|
28
|
-
* Get readable length for
|
|
38
|
+
* Get readable length for specific lane
|
|
39
|
+
* @param lane
|
|
40
|
+
* @returns readable length for the lane
|
|
29
41
|
*/
|
|
30
42
|
getReadableLength(lane?: number): number;
|
|
31
43
|
}
|
|
32
|
-
/** How to distribute turns between lanes. */
|
|
33
|
-
export type FairnessMode = "priority" | "wrr";
|
|
34
|
-
/** What to do when buffer would exceed `maxBufferedBytes`. */
|
|
35
|
-
export type OverflowPolicy = "throw" | "drop-newest";
|
|
36
44
|
export interface Options {
|
|
37
45
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
46
|
+
* A function called after *all* values have been yielded from the iterator (including
|
|
47
|
+
* buffered values). In the case when the iterator is ended with an error it will be
|
|
48
|
+
* passed the error as a parameter.
|
|
40
49
|
*/
|
|
41
50
|
onEnd?(err?: Error): void;
|
|
42
51
|
/**
|
|
43
|
-
*
|
|
44
|
-
* Default: 1
|
|
52
|
+
* How many lanes, lane 0 is fastest and will drain before lane 1 is consumed
|
|
45
53
|
*/
|
|
46
54
|
lanes?: number;
|
|
47
55
|
/**
|
|
48
|
-
* Optional hook invoked on every successful push with the value and lane
|
|
49
|
-
* Useful for metrics/telemetry.
|
|
56
|
+
* Optional hook invoked on every successful push with the value and lane
|
|
50
57
|
*/
|
|
51
58
|
onPush?(value: {
|
|
52
59
|
byteLength: number;
|
|
53
60
|
}, lane: number): void;
|
|
54
|
-
/**
|
|
55
|
-
* Fairness mode:
|
|
56
|
-
* - 'priority': strict priority (original behavior).
|
|
57
|
-
* - 'wrr': weighted round-robin (starvation-free).
|
|
58
|
-
* Default: 'wrr'
|
|
59
|
-
*/
|
|
60
|
-
fairness?: FairnessMode;
|
|
61
|
-
/**
|
|
62
|
-
* Weights per lane if fairness === 'wrr'. Larger weight = more service.
|
|
63
|
-
* Must have length === lanes and each weight >= 1.
|
|
64
|
-
* If omitted, weights are auto-generated from `bias`.
|
|
65
|
-
*/
|
|
66
|
-
weights?: number[];
|
|
67
|
-
/**
|
|
68
|
-
* Bias factor for auto-generated weights when fairness === 'wrr'.
|
|
69
|
-
* For lanes L, weight[i] = floor(bias^(L-1-i)) with a minimum of 1.
|
|
70
|
-
* Default: 2 (e.g., lanes=4 -> [8,4,2,1])
|
|
71
|
-
*/
|
|
72
|
-
bias?: number;
|
|
73
|
-
/**
|
|
74
|
-
* Optional high-water mark in **bytes** across all lanes.
|
|
75
|
-
* If a `push` would exceed this many buffered bytes:
|
|
76
|
-
* - overflow: 'throw' -> throw an Error (default policy)
|
|
77
|
-
* - overflow: 'drop-newest' -> silently drop this pushed item
|
|
78
|
-
*/
|
|
79
|
-
maxBufferedBytes?: number;
|
|
80
|
-
/** Overflow policy when `maxBufferedBytes` would be exceeded. Default: 'throw' */
|
|
81
|
-
overflow?: OverflowPolicy;
|
|
82
61
|
}
|
|
83
62
|
export interface DoneResult {
|
|
84
63
|
done: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushable-lanes.d.ts","sourceRoot":"","sources":["../../src/pushable-lanes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pushable-lanes.d.ts","sourceRoot":"","sources":["../../src/pushable-lanes.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAW,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAED,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAK3C;AAED,MAAM,WAAW,YAAY;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CACtD,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/B;;;;OAIG;IACH,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAEvB;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;OAGG;IAEH,IAAI,cAAc,IAAI,MAAM,CAAC;IAE7B;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,OAAO;IACvB;;;;OAIG;IACH,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,IAAI,CAAC;CACX;AACD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC7B,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;CACT;AACD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,IAAI,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,CAAC;CACV;AAuED,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,EAC1E,OAAO,GAAE,OAAY,GACnB,aAAa,CAAC,CAAC,CAAC,CAElB"}
|
|
@@ -1,182 +1,89 @@
|
|
|
1
|
-
// A multi-lane async pushable with starvation-free scheduling.
|
|
2
|
-
// Inspired by it-pushable (MIT) and extended for multi-lane fairness.
|
|
3
|
-
//
|
|
4
|
-
// Features:
|
|
5
|
-
// - Async iterator you can .push() into
|
|
6
|
-
// - N lanes (priorities) with starvation-free scheduling (Weighted Round-Robin)
|
|
7
|
-
// - Optional strict priority mode for legacy behavior
|
|
8
|
-
// - Optional high-water mark (bytes) with overflow policy
|
|
9
|
-
//
|
|
10
|
-
// Usage:
|
|
11
|
-
// const p = pushableLanes<Uint8Array>({ lanes: 2 }); // default fairness = 'wrr'
|
|
12
|
-
// p.push(new Uint8Array([1]), 1); // slower lane
|
|
13
|
-
// p.push(new Uint8Array([0]), 0); // faster lane
|
|
14
|
-
// for await (const chunk of p) { ... }
|
|
15
|
-
//
|
|
16
|
-
// // Backpressure example (throw if > 8MB buffered):
|
|
17
|
-
// const q = pushableLanes<Uint8Array>({ lanes: 3, maxBufferedBytes: 8 * 1024 * 1024, overflow: 'throw' });
|
|
18
|
-
//
|
|
19
|
-
// Notes:
|
|
20
|
-
// - T must have a .byteLength number property (e.g. Uint8Array).
|
|
21
|
-
// - Lane indices are 0..(lanes-1). Defaults to lane 0.
|
|
22
|
-
import { AbortError } from "@peerbit/time";
|
|
23
1
|
import GenericFIFO from "fast-fifo";
|
|
24
2
|
import defer from "p-defer";
|
|
3
|
+
export class AbortError extends Error {
|
|
4
|
+
type;
|
|
5
|
+
code;
|
|
6
|
+
constructor(message, code) {
|
|
7
|
+
super(message ?? "The operation was aborted");
|
|
8
|
+
this.type = "aborted";
|
|
9
|
+
this.code = code ?? "ABORT_ERR";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
25
12
|
/**
|
|
26
|
-
*
|
|
13
|
+
* Fifo but with total readableLength counter
|
|
27
14
|
*/
|
|
28
|
-
class
|
|
15
|
+
class Uint8ArrayFifo extends GenericFIFO {
|
|
29
16
|
size = 0;
|
|
30
17
|
push(val) {
|
|
31
|
-
if (val.value)
|
|
18
|
+
if (val.value) {
|
|
32
19
|
this.size += val.value.byteLength;
|
|
20
|
+
}
|
|
33
21
|
return super.push(val);
|
|
34
22
|
}
|
|
35
23
|
shift() {
|
|
36
24
|
const shifted = super.shift();
|
|
37
|
-
if (shifted?.value)
|
|
25
|
+
if (shifted?.value) {
|
|
38
26
|
this.size -= shifted.value.byteLength;
|
|
27
|
+
}
|
|
39
28
|
return shifted;
|
|
40
29
|
}
|
|
41
30
|
}
|
|
42
31
|
/**
|
|
43
|
-
* A
|
|
44
|
-
*
|
|
45
|
-
*
|
|
32
|
+
* A queue consisting of multiple 'lanes' with different priority to be emptied.
|
|
33
|
+
* The lane with index 0 will empty before lane with index 1 etc..
|
|
34
|
+
* TODO add an additional proprty to control whether we we pick objects from slower lanes
|
|
35
|
+
* so no lane get really "stuck"
|
|
46
36
|
*/
|
|
47
|
-
class
|
|
37
|
+
class Uint8arrayPriorityQueue {
|
|
48
38
|
lanes;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const L = Math.max(1, init.lanes | 0);
|
|
54
|
-
this.mode = init.fairness ?? "wrr";
|
|
55
|
-
this.lanes = Array.from({ length: L }, () => new ByteFifo());
|
|
56
|
-
if (this.mode === "wrr") {
|
|
57
|
-
const bias = init.bias ?? 2;
|
|
58
|
-
const auto = Array.from({ length: L }, (_, i) => Math.max(1, Math.floor(Math.pow(bias, L - 1 - i))));
|
|
59
|
-
const w = normalizeWeights(init.weights ?? auto, L);
|
|
60
|
-
// Build a simple round-robin schedule by repeating lanes according to weight.
|
|
61
|
-
this.schedule = [];
|
|
62
|
-
for (let i = 0; i < L; i++) {
|
|
63
|
-
for (let k = 0; k < w[i]; k++)
|
|
64
|
-
this.schedule.push(i);
|
|
65
|
-
}
|
|
66
|
-
// Edge case: if all weights collapsed to zero (shouldn't), fall back to priority.
|
|
67
|
-
if (this.schedule.length === 0) {
|
|
68
|
-
this.schedule = Array.from({ length: L }, (_, i) => i);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
// strict priority
|
|
73
|
-
this.schedule = Array.from({ length: L }, (_, i) => i);
|
|
39
|
+
constructor(options = { lanes: 1 }) {
|
|
40
|
+
this.lanes = new Array(options.lanes);
|
|
41
|
+
for (let i = 0; i < this.lanes.length; i++) {
|
|
42
|
+
this.lanes[i] = new Uint8ArrayFifo();
|
|
74
43
|
}
|
|
75
44
|
}
|
|
76
45
|
get size() {
|
|
77
46
|
let sum = 0;
|
|
78
|
-
for (const lane of this.lanes)
|
|
47
|
+
for (const lane of this.lanes) {
|
|
79
48
|
sum += lane.size;
|
|
49
|
+
}
|
|
80
50
|
return sum;
|
|
81
51
|
}
|
|
82
|
-
/** Enqueue a value into a specific lane. */
|
|
83
52
|
push(val, lane) {
|
|
84
|
-
|
|
85
|
-
this.lanes[idx].push(val);
|
|
53
|
+
return this.lanes[lane].push(val);
|
|
86
54
|
}
|
|
87
|
-
/** True if all lanes are empty. */
|
|
88
|
-
isEmpty() {
|
|
89
|
-
for (const lane of this.lanes)
|
|
90
|
-
if (!lane.isEmpty())
|
|
91
|
-
return false;
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Dequeue the next value by fairness rules.
|
|
96
|
-
* Ensures progress even if some schedule slots map to empty lanes.
|
|
97
|
-
*/
|
|
98
55
|
shift() {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (item)
|
|
106
|
-
return item;
|
|
56
|
+
// fetch the first non undefined item.
|
|
57
|
+
// by iterating from index 0 up we define that lanes with lower index have higher prioirity
|
|
58
|
+
for (const lane of this.lanes) {
|
|
59
|
+
const element = lane.shift();
|
|
60
|
+
if (element) {
|
|
61
|
+
return element;
|
|
107
62
|
}
|
|
108
|
-
return undefined;
|
|
109
|
-
}
|
|
110
|
-
// WRR mode: use rotating schedule
|
|
111
|
-
const L = this.schedule.length;
|
|
112
|
-
for (let probes = 0; probes < L; probes++) {
|
|
113
|
-
const laneIdx = this.schedule[this.cursor];
|
|
114
|
-
this.cursor = (this.cursor + 1) % L;
|
|
115
|
-
const item = this.lanes[laneIdx].shift();
|
|
116
|
-
if (item)
|
|
117
|
-
return item;
|
|
118
|
-
}
|
|
119
|
-
// (very unlikely) nothing was found despite size>0 – linear scan fallback
|
|
120
|
-
for (let i = 0; i < this.lanes.length; i++) {
|
|
121
|
-
const item = this.lanes[i].shift();
|
|
122
|
-
if (item)
|
|
123
|
-
return item;
|
|
124
63
|
}
|
|
125
64
|
return undefined;
|
|
126
65
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
// ensure at least 1 for all lanes to retain progress guarantees
|
|
135
|
-
return Array.from({ length: lanes }, () => 1);
|
|
66
|
+
isEmpty() {
|
|
67
|
+
for (const lane of this.lanes) {
|
|
68
|
+
if (!lane.isEmpty()) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
136
73
|
}
|
|
137
|
-
return w;
|
|
138
|
-
}
|
|
139
|
-
function clampLane(lane, lanes) {
|
|
140
|
-
if (!Number.isFinite(lane))
|
|
141
|
-
return 0;
|
|
142
|
-
lane = lane | 0;
|
|
143
|
-
if (lane < 0)
|
|
144
|
-
return 0;
|
|
145
|
-
if (lane >= lanes)
|
|
146
|
-
return lanes - 1;
|
|
147
|
-
return lane;
|
|
148
74
|
}
|
|
149
|
-
// -----------------------------
|
|
150
|
-
// Factory
|
|
151
|
-
// -----------------------------
|
|
152
75
|
export function pushableLanes(options = {}) {
|
|
153
76
|
return _pushable(options);
|
|
154
77
|
}
|
|
155
|
-
//
|
|
156
|
-
// Core implementation
|
|
157
|
-
// -----------------------------
|
|
158
|
-
// Based on it-pushable, adapted to multi-lane buffered queues with fairness.
|
|
159
|
-
// Important invariants:
|
|
160
|
-
// - We resolve the internal "drain" promise whenever the buffer *becomes empty*.
|
|
161
|
-
// - After end(err), the iterator finishes; push() becomes a no-op.
|
|
78
|
+
// Modified from https://github.com/alanshaw/it-pushable
|
|
162
79
|
function _pushable(options) {
|
|
163
80
|
options = options ?? {};
|
|
164
81
|
let onEnd = options.onEnd;
|
|
165
|
-
|
|
166
|
-
let buffer = new LaneQueue({
|
|
167
|
-
lanes: options.lanes ?? 1,
|
|
168
|
-
fairness: options.fairness ?? "wrr",
|
|
169
|
-
weights: options.weights,
|
|
170
|
-
bias: options.bias ?? 2,
|
|
171
|
-
});
|
|
172
|
-
// After end(err) we may swap buffer to a simple ByteFifo to deliver the terminal signal/error.
|
|
173
|
-
const isLaneQueue = (buffer) => buffer instanceof LaneQueue;
|
|
82
|
+
let buffer = new Uint8arrayPriorityQueue(options.lanes ? { lanes: options.lanes } : undefined);
|
|
174
83
|
let pushable;
|
|
175
84
|
let onNext;
|
|
176
|
-
let ended
|
|
85
|
+
let ended;
|
|
177
86
|
let drain = defer();
|
|
178
|
-
const maxBytes = options.maxBufferedBytes;
|
|
179
|
-
const overflow = options.overflow ?? "throw";
|
|
180
87
|
const getNext = () => {
|
|
181
88
|
const next = buffer.shift();
|
|
182
89
|
if (next == null) {
|
|
@@ -214,8 +121,9 @@ function _pushable(options) {
|
|
|
214
121
|
});
|
|
215
122
|
}
|
|
216
123
|
finally {
|
|
217
|
-
// If buffer is empty after this turn, resolve the drain promise (in a microtask)
|
|
218
124
|
if (buffer.isEmpty()) {
|
|
125
|
+
// settle promise in the microtask queue to give consumers a chance to
|
|
126
|
+
// await after calling .push
|
|
219
127
|
queueMicrotask(() => {
|
|
220
128
|
drain.resolve();
|
|
221
129
|
drain = defer();
|
|
@@ -231,38 +139,19 @@ function _pushable(options) {
|
|
|
231
139
|
return pushable;
|
|
232
140
|
};
|
|
233
141
|
const bufferError = (err) => {
|
|
234
|
-
|
|
235
|
-
buffer = new ByteFifo();
|
|
142
|
+
buffer = new Uint8ArrayFifo();
|
|
236
143
|
if (onNext != null) {
|
|
237
144
|
return onNext({ error: err }, 0);
|
|
238
145
|
}
|
|
239
146
|
buffer.push({ error: err });
|
|
240
147
|
return pushable;
|
|
241
148
|
};
|
|
242
|
-
const totalBufferedBytes = () => {
|
|
243
|
-
if (isLaneQueue(buffer))
|
|
244
|
-
return buffer.size;
|
|
245
|
-
return buffer.size;
|
|
246
|
-
};
|
|
247
149
|
const push = (value, lane = 0) => {
|
|
248
150
|
if (ended) {
|
|
249
|
-
// Ignore pushes after end() for safety (consistent with it-pushable).
|
|
250
151
|
return pushable;
|
|
251
152
|
}
|
|
252
|
-
// Simple backpressure: enforce HWM if configured
|
|
253
|
-
if (maxBytes != null && maxBytes > 0) {
|
|
254
|
-
const wouldBe = totalBufferedBytes() + value.byteLength;
|
|
255
|
-
if (wouldBe > maxBytes) {
|
|
256
|
-
if (overflow === "drop-newest") {
|
|
257
|
-
// silently drop this item
|
|
258
|
-
return pushable;
|
|
259
|
-
}
|
|
260
|
-
// default 'throw'
|
|
261
|
-
throw new Error(`pushableLanes buffer overflow: ${wouldBe} bytes > maxBufferedBytes=${maxBytes}`);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
153
|
const out = bufferNext({ done: false, value }, lane);
|
|
265
|
-
options?.onPush?.(value,
|
|
154
|
+
options?.onPush?.(value, lane);
|
|
266
155
|
return out;
|
|
267
156
|
};
|
|
268
157
|
const end = (err) => {
|
|
@@ -272,8 +161,7 @@ function _pushable(options) {
|
|
|
272
161
|
return err != null ? bufferError(err) : bufferNext({ done: true }, 0);
|
|
273
162
|
};
|
|
274
163
|
const _return = () => {
|
|
275
|
-
|
|
276
|
-
buffer = new ByteFifo();
|
|
164
|
+
buffer = new Uint8ArrayFifo();
|
|
277
165
|
end();
|
|
278
166
|
return { done: true };
|
|
279
167
|
};
|
|
@@ -291,28 +179,30 @@ function _pushable(options) {
|
|
|
291
179
|
push,
|
|
292
180
|
end,
|
|
293
181
|
get readableLength() {
|
|
294
|
-
return
|
|
182
|
+
return buffer.size;
|
|
295
183
|
},
|
|
296
184
|
getReadableLength(lane) {
|
|
297
|
-
if (lane == null)
|
|
298
|
-
return
|
|
299
|
-
if (isLaneQueue(buffer)) {
|
|
300
|
-
const idx = clampLane(lane, buffer.lanes.length);
|
|
301
|
-
return buffer.lanes[idx].size;
|
|
185
|
+
if (lane == null) {
|
|
186
|
+
return buffer.size;
|
|
302
187
|
}
|
|
303
|
-
|
|
304
|
-
|
|
188
|
+
if (buffer instanceof Uint8arrayPriorityQueue) {
|
|
189
|
+
return buffer.lanes[lane].size;
|
|
190
|
+
}
|
|
191
|
+
return buffer.size; // we can only arrive here if we are "done" or "err" or "end" where we reasign the buffer to a simple one and put 1 message into it
|
|
305
192
|
},
|
|
306
|
-
onEmpty: async (
|
|
307
|
-
const signal =
|
|
308
|
-
signal?.throwIfAborted
|
|
309
|
-
if (buffer.isEmpty())
|
|
193
|
+
onEmpty: async (options) => {
|
|
194
|
+
const signal = options?.signal;
|
|
195
|
+
signal?.throwIfAborted();
|
|
196
|
+
if (buffer.isEmpty()) {
|
|
310
197
|
return;
|
|
198
|
+
}
|
|
311
199
|
let cancel;
|
|
312
200
|
let listener;
|
|
313
201
|
if (signal != null) {
|
|
314
|
-
cancel = new Promise((
|
|
315
|
-
listener = () =>
|
|
202
|
+
cancel = new Promise((resolve, reject) => {
|
|
203
|
+
listener = () => {
|
|
204
|
+
reject(new AbortError());
|
|
205
|
+
};
|
|
316
206
|
signal.addEventListener("abort", listener);
|
|
317
207
|
});
|
|
318
208
|
}
|
|
@@ -320,7 +210,7 @@ function _pushable(options) {
|
|
|
320
210
|
await Promise.race([drain.promise, cancel]);
|
|
321
211
|
}
|
|
322
212
|
finally {
|
|
323
|
-
if (listener != null) {
|
|
213
|
+
if (listener != null && signal != null) {
|
|
324
214
|
signal?.removeEventListener("abort", listener);
|
|
325
215
|
}
|
|
326
216
|
}
|
|
@@ -329,7 +219,6 @@ function _pushable(options) {
|
|
|
329
219
|
if (onEnd == null) {
|
|
330
220
|
return pushable;
|
|
331
221
|
}
|
|
332
|
-
// Wrap with onEnd notifier
|
|
333
222
|
const _pushable = pushable;
|
|
334
223
|
pushable = {
|
|
335
224
|
[Symbol.asyncIterator]() {
|
|
@@ -366,10 +255,7 @@ function _pushable(options) {
|
|
|
366
255
|
get readableLength() {
|
|
367
256
|
return _pushable.readableLength;
|
|
368
257
|
},
|
|
369
|
-
|
|
370
|
-
return _pushable.getReadableLength(lane);
|
|
371
|
-
},
|
|
372
|
-
onEmpty(opts) {
|
|
258
|
+
onEmpty: (opts) => {
|
|
373
259
|
return _pushable.onEmpty(opts);
|
|
374
260
|
},
|
|
375
261
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushable-lanes.js","sourceRoot":"","sources":["../../src/pushable-lanes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pushable-lanes.js","sourceRoot":"","sources":["../../src/pushable-lanes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/stream",
|
|
3
|
-
"version": "4.4.0-
|
|
3
|
+
"version": "4.4.0-58d3d09",
|
|
4
4
|
"description": "A building block for direct streaming protocols",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"dao.xyz"
|
|
77
77
|
],
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@peerbit/libp2p-test-utils": "2.1.20-
|
|
79
|
+
"@peerbit/libp2p-test-utils": "2.1.20-58d3d09",
|
|
80
80
|
"@types/yallist": "^4.0.4",
|
|
81
81
|
"@types/fast-fifo": "^1.0.2"
|
|
82
82
|
},
|
|
@@ -84,11 +84,11 @@
|
|
|
84
84
|
"p-queue": "^8.0.1",
|
|
85
85
|
"fast-fifo": "^1.3.2",
|
|
86
86
|
"@dao-xyz/borsh": "^5.2.3",
|
|
87
|
-
"@peerbit/cache": "2.1.4-
|
|
88
|
-
"@peerbit/crypto": "2.3.11-
|
|
89
|
-
"@peerbit/stream-interface": "5.2.5-
|
|
90
|
-
"@peerbit/time": "2.2.0-
|
|
91
|
-
"@peerbit/logger": "1.0.4-
|
|
87
|
+
"@peerbit/cache": "2.1.4-58d3d09",
|
|
88
|
+
"@peerbit/crypto": "2.3.11-58d3d09",
|
|
89
|
+
"@peerbit/stream-interface": "5.2.5-58d3d09",
|
|
90
|
+
"@peerbit/time": "2.2.0-58d3d09",
|
|
91
|
+
"@peerbit/logger": "1.0.4-58d3d09",
|
|
92
92
|
"libp2p": "^2.10.0",
|
|
93
93
|
"yallist": "^4.0.0",
|
|
94
94
|
"abortable-iterator": "^5.0.1"
|