@peerbit/stream 4.4.0-58d3d09 → 4.4.0-780f7ce

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.
@@ -11,53 +11,79 @@ export interface AbortOptions {
11
11
  */
12
12
  export interface PushableLanes<T, R = void, N = unknown> extends AsyncGenerator<T, R, N> {
13
13
  /**
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
14
+ * End the iterable after all values in the buffer (if any) have been yielded.
15
+ * If an error is passed, the buffer is cleared immediately and the next
16
+ * iteration will throw the passed error.
17
17
  */
18
18
  end(err?: Error): this;
19
19
  /**
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.
20
+ * Push a value into the iterable. Values are yielded in a lane-aware order.
21
+ * Values not yet consumed are buffered. Optional `lane` is 0-based (default 0).
22
22
  */
23
23
  push(value: T, lane?: number): this;
24
24
  /**
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.
25
+ * Resolves when the underlying buffer becomes empty (no queued data).
26
+ * If an AbortSignal is given and it aborts, only this promise rejects;
27
+ * the pushable itself is not ended.
30
28
  */
31
29
  onEmpty(options?: AbortOptions): Promise<void>;
32
- /**
33
- * This property contains the total number of bytes in the queue ready to be read.
34
- *
35
- */
30
+ /** Total number of bytes buffered (across all lanes). */
36
31
  get readableLength(): number;
37
32
  /**
38
- * Get readable length for specific lane
39
- * @param lane
40
- * @returns readable length for the lane
33
+ * Get readable length for a specific lane (bytes) or total when `lane` is undefined.
41
34
  */
42
35
  getReadableLength(lane?: number): number;
43
36
  }
37
+ /** How to distribute turns between lanes. */
38
+ export type FairnessMode = "priority" | "wrr";
39
+ /** What to do when buffer would exceed `maxBufferedBytes`. */
40
+ export type OverflowPolicy = "throw" | "drop-newest";
44
41
  export interface Options {
45
42
  /**
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.
43
+ * Called after *all* values have been yielded from the iterator (including buffered values).
44
+ * If the iterator is ended with an error it will receive the error.
49
45
  */
50
46
  onEnd?(err?: Error): void;
51
47
  /**
52
- * How many lanes, lane 0 is fastest and will drain before lane 1 is consumed
48
+ * Number of lanes. Lane 0 is the "fastest"/most preferred lane.
49
+ * Default: 1
53
50
  */
54
51
  lanes?: number;
55
52
  /**
56
- * Optional hook invoked on every successful push with the value and lane
53
+ * Optional hook invoked on every successful push with the value and lane.
54
+ * Useful for metrics/telemetry.
57
55
  */
58
56
  onPush?(value: {
59
57
  byteLength: number;
60
58
  }, lane: number): void;
59
+ /**
60
+ * Fairness mode:
61
+ * - 'priority': strict priority (original behavior).
62
+ * - 'wrr': weighted round-robin (starvation-free).
63
+ * Default: 'wrr'
64
+ */
65
+ fairness?: FairnessMode;
66
+ /**
67
+ * Weights per lane if fairness === 'wrr'. Larger weight = more service.
68
+ * Must have length === lanes and each weight >= 1.
69
+ * If omitted, weights are auto-generated from `bias`.
70
+ */
71
+ weights?: number[];
72
+ /**
73
+ * Bias factor for auto-generated weights when fairness === 'wrr'.
74
+ * For lanes L, weight[i] = floor(bias^(L-1-i)) with a minimum of 1.
75
+ * Default: 2 (e.g., lanes=4 -> [8,4,2,1])
76
+ */
77
+ bias?: number;
78
+ /**
79
+ * Optional high-water mark in **bytes** across all lanes.
80
+ * If a `push` would exceed this many buffered bytes:
81
+ * - overflow: 'throw' -> throw an Error (default policy)
82
+ * - overflow: 'drop-newest' -> silently drop this pushed item
83
+ */
84
+ maxBufferedBytes?: number;
85
+ /** Overflow policy when `maxBufferedBytes` would be exceeded. Default: 'throw' */
86
+ overflow?: OverflowPolicy;
61
87
  }
62
88
  export interface DoneResult {
63
89
  done: true;
@@ -1 +1 @@
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
+ {"version":3,"file":"pushable-lanes.d.ts","sourceRoot":"","sources":["../../src/pushable-lanes.ts"],"names":[],"mappings":"AA6BA,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;AAMD;;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;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,yDAAyD;IACzD,IAAI,cAAc,IAAI,MAAM,CAAC;IAE7B;;OAEG;IACH,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzC;AAED,6CAA6C;AAC7C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC;AAE9C,8DAA8D;AAC9D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,aAAa,CAAC;AAErD,MAAM,WAAW,OAAO;IACvB;;;OAGG;IACH,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3D;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC1B;AAMD,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;AA8ID,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,EAC1E,OAAO,GAAE,OAAY,GACnB,aAAa,CAAC,CAAC,CAAC,CAElB"}
@@ -1,5 +1,30 @@
1
+ // pushable-lanes.ts
2
+ // A multi-lane async pushable with starvation-free scheduling.
3
+ // Inspired by it-pushable (MIT) and extended for multi-lane fairness.
4
+ //
5
+ // Features:
6
+ // - Async iterator you can .push() into
7
+ // - N lanes (priorities) with starvation-free scheduling (Weighted Round-Robin)
8
+ // - Optional strict priority mode for legacy behavior
9
+ // - Optional high-water mark (bytes) with overflow policy
10
+ //
11
+ // Usage:
12
+ // const p = pushableLanes<Uint8Array>({ lanes: 2 }); // default fairness = 'wrr'
13
+ // p.push(new Uint8Array([1]), 1); // slower lane
14
+ // p.push(new Uint8Array([0]), 0); // faster lane
15
+ // for await (const chunk of p) { ... }
16
+ //
17
+ // // Backpressure example (throw if > 8MB buffered):
18
+ // const q = pushableLanes<Uint8Array>({ lanes: 3, maxBufferedBytes: 8 * 1024 * 1024, overflow: 'throw' });
19
+ //
20
+ // Notes:
21
+ // - T must have a .byteLength number property (e.g. Uint8Array).
22
+ // - Lane indices are 0..(lanes-1). Defaults to lane 0.
1
23
  import GenericFIFO from "fast-fifo";
2
24
  import defer from "p-defer";
25
+ // -----------------------------
26
+ // Errors & shared option types
27
+ // -----------------------------
3
28
  export class AbortError extends Error {
4
29
  type;
5
30
  code;
@@ -10,80 +35,160 @@ export class AbortError extends Error {
10
35
  }
11
36
  }
12
37
  /**
13
- * Fifo but with total readableLength counter
38
+ * FIFO that tracks the total readable bytes (`.size`) of queued values.
14
39
  */
15
- class Uint8ArrayFifo extends GenericFIFO {
40
+ class ByteFifo extends GenericFIFO {
16
41
  size = 0;
17
42
  push(val) {
18
- if (val.value) {
43
+ if (val.value)
19
44
  this.size += val.value.byteLength;
20
- }
21
45
  return super.push(val);
22
46
  }
23
47
  shift() {
24
48
  const shifted = super.shift();
25
- if (shifted?.value) {
49
+ if (shifted?.value)
26
50
  this.size -= shifted.value.byteLength;
27
- }
28
51
  return shifted;
29
52
  }
30
53
  }
31
54
  /**
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"
55
+ * A multi-lane queue with configurable fairness.
56
+ * - 'priority': probe lanes in order 0..L-1 each shift.
57
+ * - 'wrr': service lanes according to weights in a repeating schedule.
36
58
  */
37
- class Uint8arrayPriorityQueue {
59
+ class LaneQueue {
38
60
  lanes;
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();
61
+ mode;
62
+ schedule; // WRR: repeated lane indices per weight
63
+ cursor = 0;
64
+ constructor(init) {
65
+ const L = Math.max(1, init.lanes | 0);
66
+ this.mode = init.fairness ?? "wrr";
67
+ this.lanes = Array.from({ length: L }, () => new ByteFifo());
68
+ if (this.mode === "wrr") {
69
+ const bias = init.bias ?? 2;
70
+ const auto = Array.from({ length: L }, (_, i) => Math.max(1, Math.floor(Math.pow(bias, L - 1 - i))));
71
+ const w = normalizeWeights(init.weights ?? auto, L);
72
+ // Build a simple round-robin schedule by repeating lanes according to weight.
73
+ this.schedule = [];
74
+ for (let i = 0; i < L; i++) {
75
+ for (let k = 0; k < w[i]; k++)
76
+ this.schedule.push(i);
77
+ }
78
+ // Edge case: if all weights collapsed to zero (shouldn't), fall back to priority.
79
+ if (this.schedule.length === 0) {
80
+ this.schedule = Array.from({ length: L }, (_, i) => i);
81
+ }
82
+ }
83
+ else {
84
+ // strict priority
85
+ this.schedule = Array.from({ length: L }, (_, i) => i);
43
86
  }
44
87
  }
45
88
  get size() {
46
89
  let sum = 0;
47
- for (const lane of this.lanes) {
90
+ for (const lane of this.lanes)
48
91
  sum += lane.size;
49
- }
50
92
  return sum;
51
93
  }
94
+ /** Enqueue a value into a specific lane. */
52
95
  push(val, lane) {
53
- return this.lanes[lane].push(val);
96
+ const idx = clampLane(lane, this.lanes.length);
97
+ this.lanes[idx].push(val);
98
+ }
99
+ /** True if all lanes are empty. */
100
+ isEmpty() {
101
+ for (const lane of this.lanes)
102
+ if (!lane.isEmpty())
103
+ return false;
104
+ return true;
54
105
  }
106
+ /**
107
+ * Dequeue the next value by fairness rules.
108
+ * Ensures progress even if some schedule slots map to empty lanes.
109
+ */
55
110
  shift() {
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;
111
+ if (this.isEmpty())
112
+ return undefined;
113
+ if (this.mode === "priority") {
114
+ // strict priority: always scan from lane 0
115
+ for (let i = 0; i < this.lanes.length; i++) {
116
+ const item = this.lanes[i].shift();
117
+ if (item)
118
+ return item;
62
119
  }
120
+ return undefined;
121
+ }
122
+ // WRR mode: use rotating schedule
123
+ const L = this.schedule.length;
124
+ for (let probes = 0; probes < L; probes++) {
125
+ const laneIdx = this.schedule[this.cursor];
126
+ this.cursor = (this.cursor + 1) % L;
127
+ const item = this.lanes[laneIdx].shift();
128
+ if (item)
129
+ return item;
130
+ }
131
+ // (very unlikely) nothing was found despite size>0 – linear scan fallback
132
+ for (let i = 0; i < this.lanes.length; i++) {
133
+ const item = this.lanes[i].shift();
134
+ if (item)
135
+ return item;
63
136
  }
64
137
  return undefined;
65
138
  }
66
- isEmpty() {
67
- for (const lane of this.lanes) {
68
- if (!lane.isEmpty()) {
69
- return false;
70
- }
71
- }
72
- return true;
139
+ }
140
+ function normalizeWeights(weights, lanes) {
141
+ if (weights.length !== lanes) {
142
+ throw new Error(`weights length (${weights.length}) must equal lanes (${lanes})`);
143
+ }
144
+ const w = weights.map((x) => (x && x > 0 ? Math.floor(x) : 0));
145
+ if (w.every((x) => x === 0)) {
146
+ // ensure at least 1 for all lanes to retain progress guarantees
147
+ return Array.from({ length: lanes }, () => 1);
73
148
  }
149
+ return w;
74
150
  }
151
+ function clampLane(lane, lanes) {
152
+ if (!Number.isFinite(lane))
153
+ return 0;
154
+ lane = lane | 0;
155
+ if (lane < 0)
156
+ return 0;
157
+ if (lane >= lanes)
158
+ return lanes - 1;
159
+ return lane;
160
+ }
161
+ // -----------------------------
162
+ // Factory
163
+ // -----------------------------
75
164
  export function pushableLanes(options = {}) {
76
165
  return _pushable(options);
77
166
  }
78
- // Modified from https://github.com/alanshaw/it-pushable
167
+ // -----------------------------
168
+ // Core implementation
169
+ // -----------------------------
170
+ // Based on it-pushable, adapted to multi-lane buffered queues with fairness.
171
+ // Important invariants:
172
+ // - We resolve the internal "drain" promise whenever the buffer *becomes empty*.
173
+ // - After end(err), the iterator finishes; push() becomes a no-op.
79
174
  function _pushable(options) {
80
175
  options = options ?? {};
81
176
  let onEnd = options.onEnd;
82
- let buffer = new Uint8arrayPriorityQueue(options.lanes ? { lanes: options.lanes } : undefined);
177
+ // Main buffer: multi-lane with fairness
178
+ let buffer = new LaneQueue({
179
+ lanes: options.lanes ?? 1,
180
+ fairness: options.fairness ?? "wrr",
181
+ weights: options.weights,
182
+ bias: options.bias ?? 2,
183
+ });
184
+ // After end(err) we may swap buffer to a simple ByteFifo to deliver the terminal signal/error.
185
+ const isLaneQueue = (buffer) => buffer instanceof LaneQueue;
83
186
  let pushable;
84
187
  let onNext;
85
- let ended;
188
+ let ended = false;
86
189
  let drain = defer();
190
+ const maxBytes = options.maxBufferedBytes;
191
+ const overflow = options.overflow ?? "throw";
87
192
  const getNext = () => {
88
193
  const next = buffer.shift();
89
194
  if (next == null) {
@@ -121,9 +226,8 @@ function _pushable(options) {
121
226
  });
122
227
  }
123
228
  finally {
229
+ // If buffer is empty after this turn, resolve the drain promise (in a microtask)
124
230
  if (buffer.isEmpty()) {
125
- // settle promise in the microtask queue to give consumers a chance to
126
- // await after calling .push
127
231
  queueMicrotask(() => {
128
232
  drain.resolve();
129
233
  drain = defer();
@@ -139,19 +243,38 @@ function _pushable(options) {
139
243
  return pushable;
140
244
  };
141
245
  const bufferError = (err) => {
142
- buffer = new Uint8ArrayFifo();
246
+ // swap to ByteFifo to deliver a single terminal error
247
+ buffer = new ByteFifo();
143
248
  if (onNext != null) {
144
249
  return onNext({ error: err }, 0);
145
250
  }
146
251
  buffer.push({ error: err });
147
252
  return pushable;
148
253
  };
254
+ const totalBufferedBytes = () => {
255
+ if (isLaneQueue(buffer))
256
+ return buffer.size;
257
+ return buffer.size;
258
+ };
149
259
  const push = (value, lane = 0) => {
150
260
  if (ended) {
261
+ // Ignore pushes after end() for safety (consistent with it-pushable).
151
262
  return pushable;
152
263
  }
264
+ // Simple backpressure: enforce HWM if configured
265
+ if (maxBytes != null && maxBytes > 0) {
266
+ const wouldBe = totalBufferedBytes() + value.byteLength;
267
+ if (wouldBe > maxBytes) {
268
+ if (overflow === "drop-newest") {
269
+ // silently drop this item
270
+ return pushable;
271
+ }
272
+ // default 'throw'
273
+ throw new Error(`pushableLanes buffer overflow: ${wouldBe} bytes > maxBufferedBytes=${maxBytes}`);
274
+ }
275
+ }
153
276
  const out = bufferNext({ done: false, value }, lane);
154
- options?.onPush?.(value, lane);
277
+ options?.onPush?.(value, clampLane(lane, isLaneQueue(buffer) ? buffer.lanes.length : 1));
155
278
  return out;
156
279
  };
157
280
  const end = (err) => {
@@ -161,7 +284,8 @@ function _pushable(options) {
161
284
  return err != null ? bufferError(err) : bufferNext({ done: true }, 0);
162
285
  };
163
286
  const _return = () => {
164
- buffer = new Uint8ArrayFifo();
287
+ // Ensure prompt termination
288
+ buffer = new ByteFifo();
165
289
  end();
166
290
  return { done: true };
167
291
  };
@@ -179,30 +303,28 @@ function _pushable(options) {
179
303
  push,
180
304
  end,
181
305
  get readableLength() {
182
- return buffer.size;
306
+ return totalBufferedBytes();
183
307
  },
184
308
  getReadableLength(lane) {
185
- if (lane == null) {
186
- return buffer.size;
309
+ if (lane == null)
310
+ return totalBufferedBytes();
311
+ if (isLaneQueue(buffer)) {
312
+ const idx = clampLane(lane, buffer.lanes.length);
313
+ return buffer.lanes[idx].size;
187
314
  }
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
315
+ // After end/error we swap to a ByteFifo: only "total" makes sense.
316
+ return buffer.size;
192
317
  },
193
- onEmpty: async (options) => {
194
- const signal = options?.signal;
195
- signal?.throwIfAborted();
196
- if (buffer.isEmpty()) {
318
+ onEmpty: async (opts) => {
319
+ const signal = opts?.signal;
320
+ signal?.throwIfAborted?.();
321
+ if (buffer.isEmpty())
197
322
  return;
198
- }
199
323
  let cancel;
200
324
  let listener;
201
325
  if (signal != null) {
202
- cancel = new Promise((resolve, reject) => {
203
- listener = () => {
204
- reject(new AbortError());
205
- };
326
+ cancel = new Promise((_, reject) => {
327
+ listener = () => reject(new AbortError());
206
328
  signal.addEventListener("abort", listener);
207
329
  });
208
330
  }
@@ -210,7 +332,7 @@ function _pushable(options) {
210
332
  await Promise.race([drain.promise, cancel]);
211
333
  }
212
334
  finally {
213
- if (listener != null && signal != null) {
335
+ if (listener != null) {
214
336
  signal?.removeEventListener("abort", listener);
215
337
  }
216
338
  }
@@ -219,6 +341,7 @@ function _pushable(options) {
219
341
  if (onEnd == null) {
220
342
  return pushable;
221
343
  }
344
+ // Wrap with onEnd notifier
222
345
  const _pushable = pushable;
223
346
  pushable = {
224
347
  [Symbol.asyncIterator]() {
@@ -255,7 +378,10 @@ function _pushable(options) {
255
378
  get readableLength() {
256
379
  return _pushable.readableLength;
257
380
  },
258
- onEmpty: (opts) => {
381
+ getReadableLength(lane) {
382
+ return _pushable.getReadableLength(lane);
383
+ },
384
+ onEmpty(opts) {
259
385
  return _pushable.onEmpty(opts);
260
386
  },
261
387
  };
@@ -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-58d3d09",
3
+ "version": "4.4.0-780f7ce",
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-58d3d09",
79
+ "@peerbit/libp2p-test-utils": "2.1.20-780f7ce",
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-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",
87
+ "@peerbit/cache": "2.1.4-780f7ce",
88
+ "@peerbit/crypto": "2.3.11-780f7ce",
89
+ "@peerbit/stream-interface": "5.2.5-780f7ce",
90
+ "@peerbit/time": "2.2.0-780f7ce",
91
+ "@peerbit/logger": "1.0.4-780f7ce",
92
92
  "libp2p": "^2.10.0",
93
93
  "yallist": "^4.0.0",
94
94
  "abortable-iterator": "^5.0.1"