@peerbit/stream 4.4.0-780f7ce → 4.4.0-9b0640c

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,79 +11,53 @@ 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.
15
- * If an error is passed, the buffer is cleared immediately and the next
16
- * iteration will throw the passed error.
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
17
17
  */
18
18
  end(err?: Error): this;
19
19
  /**
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).
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.
22
22
  */
23
23
  push(value: T, lane?: number): this;
24
24
  /**
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.
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.
28
30
  */
29
31
  onEmpty(options?: AbortOptions): Promise<void>;
30
- /** Total number of bytes buffered (across all lanes). */
32
+ /**
33
+ * This property contains the total number of bytes in the queue ready to be read.
34
+ *
35
+ */
31
36
  get readableLength(): number;
32
37
  /**
33
- * Get readable length for a specific lane (bytes) or total when `lane` is undefined.
38
+ * Get readable length for specific lane
39
+ * @param lane
40
+ * @returns readable length for the lane
34
41
  */
35
42
  getReadableLength(lane?: number): number;
36
43
  }
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";
41
44
  export interface Options {
42
45
  /**
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.
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.
45
49
  */
46
50
  onEnd?(err?: Error): void;
47
51
  /**
48
- * Number of lanes. Lane 0 is the "fastest"/most preferred lane.
49
- * Default: 1
52
+ * How many lanes, lane 0 is fastest and will drain before lane 1 is consumed
50
53
  */
51
54
  lanes?: number;
52
55
  /**
53
- * Optional hook invoked on every successful push with the value and lane.
54
- * Useful for metrics/telemetry.
56
+ * Optional hook invoked on every successful push with the value and lane
55
57
  */
56
58
  onPush?(value: {
57
59
  byteLength: number;
58
60
  }, 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;
87
61
  }
88
62
  export interface DoneResult {
89
63
  done: true;
@@ -1 +1 @@
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
+ {"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,30 +1,5 @@
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.
23
1
  import GenericFIFO from "fast-fifo";
24
2
  import defer from "p-defer";
25
- // -----------------------------
26
- // Errors & shared option types
27
- // -----------------------------
28
3
  export class AbortError extends Error {
29
4
  type;
30
5
  code;
@@ -35,160 +10,80 @@ export class AbortError extends Error {
35
10
  }
36
11
  }
37
12
  /**
38
- * FIFO that tracks the total readable bytes (`.size`) of queued values.
13
+ * Fifo but with total readableLength counter
39
14
  */
40
- class ByteFifo extends GenericFIFO {
15
+ class Uint8ArrayFifo extends GenericFIFO {
41
16
  size = 0;
42
17
  push(val) {
43
- if (val.value)
18
+ if (val.value) {
44
19
  this.size += val.value.byteLength;
20
+ }
45
21
  return super.push(val);
46
22
  }
47
23
  shift() {
48
24
  const shifted = super.shift();
49
- if (shifted?.value)
25
+ if (shifted?.value) {
50
26
  this.size -= shifted.value.byteLength;
27
+ }
51
28
  return shifted;
52
29
  }
53
30
  }
54
31
  /**
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.
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"
58
36
  */
59
- class LaneQueue {
37
+ class Uint8arrayPriorityQueue {
60
38
  lanes;
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);
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();
86
43
  }
87
44
  }
88
45
  get size() {
89
46
  let sum = 0;
90
- for (const lane of this.lanes)
47
+ for (const lane of this.lanes) {
91
48
  sum += lane.size;
49
+ }
92
50
  return sum;
93
51
  }
94
- /** Enqueue a value into a specific lane. */
95
52
  push(val, lane) {
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;
53
+ return this.lanes[lane].push(val);
105
54
  }
106
- /**
107
- * Dequeue the next value by fairness rules.
108
- * Ensures progress even if some schedule slots map to empty lanes.
109
- */
110
55
  shift() {
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;
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;
119
62
  }
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;
136
63
  }
137
64
  return undefined;
138
65
  }
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);
66
+ isEmpty() {
67
+ for (const lane of this.lanes) {
68
+ if (!lane.isEmpty()) {
69
+ return false;
70
+ }
71
+ }
72
+ return true;
148
73
  }
149
- return w;
150
74
  }
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
- // -----------------------------
164
75
  export function pushableLanes(options = {}) {
165
76
  return _pushable(options);
166
77
  }
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.
78
+ // Modified from https://github.com/alanshaw/it-pushable
174
79
  function _pushable(options) {
175
80
  options = options ?? {};
176
81
  let onEnd = options.onEnd;
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;
82
+ let buffer = new Uint8arrayPriorityQueue(options.lanes ? { lanes: options.lanes } : undefined);
186
83
  let pushable;
187
84
  let onNext;
188
- let ended = false;
85
+ let ended;
189
86
  let drain = defer();
190
- const maxBytes = options.maxBufferedBytes;
191
- const overflow = options.overflow ?? "throw";
192
87
  const getNext = () => {
193
88
  const next = buffer.shift();
194
89
  if (next == null) {
@@ -226,8 +121,9 @@ function _pushable(options) {
226
121
  });
227
122
  }
228
123
  finally {
229
- // If buffer is empty after this turn, resolve the drain promise (in a microtask)
230
124
  if (buffer.isEmpty()) {
125
+ // settle promise in the microtask queue to give consumers a chance to
126
+ // await after calling .push
231
127
  queueMicrotask(() => {
232
128
  drain.resolve();
233
129
  drain = defer();
@@ -243,38 +139,19 @@ function _pushable(options) {
243
139
  return pushable;
244
140
  };
245
141
  const bufferError = (err) => {
246
- // swap to ByteFifo to deliver a single terminal error
247
- buffer = new ByteFifo();
142
+ buffer = new Uint8ArrayFifo();
248
143
  if (onNext != null) {
249
144
  return onNext({ error: err }, 0);
250
145
  }
251
146
  buffer.push({ error: err });
252
147
  return pushable;
253
148
  };
254
- const totalBufferedBytes = () => {
255
- if (isLaneQueue(buffer))
256
- return buffer.size;
257
- return buffer.size;
258
- };
259
149
  const push = (value, lane = 0) => {
260
150
  if (ended) {
261
- // Ignore pushes after end() for safety (consistent with it-pushable).
262
151
  return pushable;
263
152
  }
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
- }
276
153
  const out = bufferNext({ done: false, value }, lane);
277
- options?.onPush?.(value, clampLane(lane, isLaneQueue(buffer) ? buffer.lanes.length : 1));
154
+ options?.onPush?.(value, lane);
278
155
  return out;
279
156
  };
280
157
  const end = (err) => {
@@ -284,8 +161,7 @@ function _pushable(options) {
284
161
  return err != null ? bufferError(err) : bufferNext({ done: true }, 0);
285
162
  };
286
163
  const _return = () => {
287
- // Ensure prompt termination
288
- buffer = new ByteFifo();
164
+ buffer = new Uint8ArrayFifo();
289
165
  end();
290
166
  return { done: true };
291
167
  };
@@ -303,28 +179,30 @@ function _pushable(options) {
303
179
  push,
304
180
  end,
305
181
  get readableLength() {
306
- return totalBufferedBytes();
182
+ return buffer.size;
307
183
  },
308
184
  getReadableLength(lane) {
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;
185
+ if (lane == null) {
186
+ return buffer.size;
314
187
  }
315
- // After end/error we swap to a ByteFifo: only "total" makes sense.
316
- return buffer.size;
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
317
192
  },
318
- onEmpty: async (opts) => {
319
- const signal = opts?.signal;
320
- signal?.throwIfAborted?.();
321
- if (buffer.isEmpty())
193
+ onEmpty: async (options) => {
194
+ const signal = options?.signal;
195
+ signal?.throwIfAborted();
196
+ if (buffer.isEmpty()) {
322
197
  return;
198
+ }
323
199
  let cancel;
324
200
  let listener;
325
201
  if (signal != null) {
326
- cancel = new Promise((_, reject) => {
327
- listener = () => reject(new AbortError());
202
+ cancel = new Promise((resolve, reject) => {
203
+ listener = () => {
204
+ reject(new AbortError());
205
+ };
328
206
  signal.addEventListener("abort", listener);
329
207
  });
330
208
  }
@@ -332,7 +210,7 @@ function _pushable(options) {
332
210
  await Promise.race([drain.promise, cancel]);
333
211
  }
334
212
  finally {
335
- if (listener != null) {
213
+ if (listener != null && signal != null) {
336
214
  signal?.removeEventListener("abort", listener);
337
215
  }
338
216
  }
@@ -341,7 +219,6 @@ function _pushable(options) {
341
219
  if (onEnd == null) {
342
220
  return pushable;
343
221
  }
344
- // Wrap with onEnd notifier
345
222
  const _pushable = pushable;
346
223
  pushable = {
347
224
  [Symbol.asyncIterator]() {
@@ -378,10 +255,7 @@ function _pushable(options) {
378
255
  get readableLength() {
379
256
  return _pushable.readableLength;
380
257
  },
381
- getReadableLength(lane) {
382
- return _pushable.getReadableLength(lane);
383
- },
384
- onEmpty(opts) {
258
+ onEmpty: (opts) => {
385
259
  return _pushable.onEmpty(opts);
386
260
  },
387
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-780f7ce",
3
+ "version": "4.4.0-9b0640c",
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-780f7ce",
79
+ "@peerbit/libp2p-test-utils": "2.1.20-9b0640c",
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-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",
87
+ "@peerbit/cache": "2.1.4-9b0640c",
88
+ "@peerbit/crypto": "2.3.11-9b0640c",
89
+ "@peerbit/stream-interface": "5.2.5-9b0640c",
90
+ "@peerbit/time": "2.2.0-9b0640c",
91
+ "@peerbit/logger": "1.0.4-9b0640c",
92
92
  "libp2p": "^2.10.0",
93
93
  "yallist": "^4.0.0",
94
94
  "abortable-iterator": "^5.0.1"